eğer

2015-05-16 43 views
7

için hızlı bir yol var mı bir olursa olsun küçük harf, büyük harf veya Python ikisi de olsun bir dizi kabul etmek deyimi "eğer"?eğer

"3" veya "Üç" kelimelerinin veya başka herhangi bir sermaye ve küçük harf karışımının girilebildiği "3" sayısının girilebileceği bir kod parçası yazmaya çalışıyorum. kodda "if" ifadesiyle kabul edilir. Başka bir dize ancak birden fazla durumda dize kabul ettirmeye bilmiyorum ben buna da "3" kabul ettirmeye kullanmak "veya" biliyor. Şimdiye kadar var:

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

Kullanıcı tarafından sağlanan değeri normalleştirmek için '.lower()' kullanın? –

+0

Yoksa/else sonra yerine 3 ... – therealprashant

cevap

8

Sadece str.lower() kullanarak küçük harf ve bunu test etmek Class dönüştürün. Tabii

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

, ayrıca çok str.upper() kullanabilirsiniz.

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

Son bir şey in kullanarak aynı anda "3" ve "three" kontrol edebilirsiniz olmasıdır. Bir if deyimi için in kullanırken

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

, birkaç seçeneğiniz vardır. Ben, bir liste, ["3", "three"] veya kayıt düzeni ("3", "three") kullanılan bir dizi {"3", "three"} kullanabilirsiniz.

nota Son bir şey str.lower() veya "3" üzerinde str.upper() arayarak size "3" verecektir, ama tamsayı 3 üzerine çağıran bir hata atar, bu nedenle bir tamsayı bir olasılıkla olduğu gibi 3 eğer in kullanamazsınız olmasıdır Class için değer.

+0

üç ben daha iyi kod stili var için yayınınızı düzenlenmiş dönüştüren bir fonk foo sahip öneririz eğer bol varsa. Son örnekte – orlp

+2

, bunun yerine set kullanarak düşünebilirsiniz: '{ '3', 'üç'}'. Sadece o iş için doğru veri türüdür, daha hızlı bakmak yukarı sağlar. –

+0

@HaiVu sayesinde düzenlenebilir ki. – michaelpri

2

Eğer bir if açıklamada kontrol edebilirsiniz böylece küçük harfe tüm dizeyi açabilirsiniz string.lower() kullanın. Sadece dizgiyi gerçek dizginizle değiştirin.

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

Class.lower() sadece küçük harfe ve sadece böyle küçük harf kontrol etmek tüm dizeleri zorlayabilir dize küçük harf .:

Class.lower() == "three" 
4

olun Karşılaştırma değişkeni küçük harfli yapacağım. Classclass çünkü kullanmak riskli bir isim ler anahtar kelime olduğunu olmasına rağmen Yapabileceğin benzeri

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

Ve aşağıdaki

Davayı korumak gerekmez, sadece eğer daha düşük olarak kaydedin ediyorum Daha sonra herhangi bir şey için, ve özellikle de "dört" de olduğu gibi başka karşılaştırmalarınız varsa

2

duyarsız yapmak: Yani

+1

'iyi olmasına rağmen' Sınıf == 3 '== o 'Class olmalı dize 3. int 3 maç için çalışıyor olarak "3" maç asla eğer daha önce alt kullanılarak – JGreenwell

+0

@jgreenwell iyi yakalama, teşekkürler –

11

list ile in operatörünü kullanabilirsiniz.Sadece referans '3'.lower() döner dize 3 için

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

.

>>> '3'.lower() 
'3'