2015-05-16 7 views
7

क्या कोई "if" कथन को स्ट्रिंग स्वीकार करने का कोई त्वरित तरीका है चाहे यह लोअर-केस, ऊपरी-केस या दोनों पायथन में हों?यदि अन्यथा पूंजी और लोअर-केस अक्षरों में स्ट्रिंग को स्वीकार करते हैं तो

मैं कोड का एक टुकड़ा लिखने का प्रयास कर रहा हूं जहां नंबर "3" दर्ज किया जा सकता है और साथ ही "तीन" या "तीन" या पूंजी और लोअर केस के किसी अन्य मिश्रण को भी दर्ज किया जा सकता है और यह अभी भी होगा कोड में "if" कथन द्वारा स्वीकार किया गया। मुझे पता है कि मैं "3" को स्वीकार करने के लिए "या" किसी भी अन्य स्ट्रिंग को स्वीकार करने के लिए उपयोग कर सकता हूं, हालांकि यह नहीं जानता कि इसे एक से अधिक मामलों में स्ट्रिंग को स्वीकार करने के लिए कैसे प्राप्त किया जाए। अब तक मेरे पास है:

if (Class == "3" or Class=="three"): 
    f=open("class3.txt", "a+") 
+1

उपयोगकर्ता द्वारा आपूर्ति किए गए मान को सामान्य करने के लिए '.lower()' का उपयोग करें? –

+0

या यदि आपके पास बहुत कुछ है/तो मैं एक func foo होने का सुझाव दूंगा जो 3 से तीन में परिवर्तित हो जाता है ... – therealprashant

उत्तर

8

बस str.lower() का उपयोग कर लोअरकेस और यह परीक्षण करने के लिए Class परिवर्तित।

if Class == "3" or Class.lower() == "three": 
    f=open("class3.txt", "a+") 

बेशक, आप str.upper() भी उपयोग कर सकते हैं।

if Class == "3" or Class.upper() == "THREE": 
    f=open("class3.txt", "a+") 

एक आखिरी बात यह है कि आप in का उपयोग कर एक ही समय में "3" और "three" के लिए जाँच कर सकते हैं।

if Class.lower() in {"3", "three"}: 
    f=open("class3.txt", "a+") 

जब एक if बयान के लिए in उपयोग कर, आप कई विकल्प हैं। आप एक सेट, {"3", "three"} का उपयोग कर सकते हैं, जिसका मैंने उपयोग किया था, एक सूची, ["3", "three"], या एक ट्यूपल, ("3", "three")

नोट करने के लिए एक आखिरी बात यह है कि फोन करने str.lower() या str.upper()"3" पर आप "3" दे देंगे, लेकिन पूर्णांक 3 पर बुला रहे हैं, एक त्रुटि फेंक होगा, ताकि आप अगर 3in उपयोग नहीं कर सकते एक पूर्णांक के रूप में एक संभवतः है Class के लिए मूल्य।

+0

मैंने आपकी पोस्ट को बेहतर कोड शैली के लिए संपादित किया है। – orlp

+2

आपके आखिरी उदाहरण में, आप इसके बजाय सेट का उपयोग करने पर विचार करना चाहेंगे: '{'3', 'three'}'। न केवल यह तेजी से दिखता है, यह नौकरी के लिए सही डेटा प्रकार है। –

+0

@HaiVu धन्यवाद, संपादित किया गया है कि – michaelpri

2

यदि आप string.lower() का उपयोग करते हैं तो आप पूरे स्ट्रिंग को कम मामले में बदल सकते हैं ताकि आप इसे किसी कथन में देख सकें। बस अपनी वास्तविक स्ट्रिंग के साथ स्ट्रिंग को प्रतिस्थापित करें। तो Class.lower()

1

स्ट्रिंग लोअर केस .:

Class.lower() == "three" 
4

बनाओ तुम बस को लोअर केस में और केवल इस तरह लोअर केस की जांच सभी स्ट्रिंग्स के लिए मजबूर कर सकते हैं:

if (Class == "3" or Class.lower() == "three"): 
    f=open("class3.txt", "a+") 
2

आम तौर पर एक असंवेदनशील करने के लिए तुलना करें मैं अपना परिवर्तनीय लोअरकेस बनाउंगा। हालांकि Class क्योंकि class उपयोग करने के लिए एक जोखिम भरा नाम है रों कीवर्ड है तुम कर सकते हो निम्नलिखित

Class = Class.lower() 
if(Class =="3" or Class=="three"): 

और इसके आगे

मैं कम के रूप में सहेज चाहते हैं केवल यदि आप मामले को संरक्षित करने की जरूरत नहीं है बाद में कुछ भी, और विशेष रूप से यदि आपके पास "चार" के साथ अन्य तुलनाएं हैं जैसे

+1

ठीक है, इससे पहले कि कम है, लेकिन आपकी 'कक्षा == 3' कभी भी मेल नहीं खाएगी क्योंकि यह स्ट्रिंग 3 में int 3 से मिलान करने का प्रयास कर रहा है।' कक्षा == "3" ' – JGreenwell

+0

@ जेग्रीनवेल अच्छा पकड़, धन्यवाद –

11

आप के साथ in ऑपरेटर का उपयोग कर सकते हैं।

if Class.lower() in ['3', 'three']: 

बस संदर्भ '3'.lower() रिटर्न स्ट्रिंग 3 के लिए

>>> '3'.lower() 
'3' 
संबंधित मुद्दे