2016-04-08 16 views
0

Doğrulama denetimlerini koduma eklemeye çalışıyorum, böylece yalnızca ("A"), ("B") or ("C") değerine izin verilir. len() bölümü kaldırılırsa, üç harften herhangi bir dizeye izin verilir, ancak bu harflerden biri kullanılmazsa, beklendiği gibi çalışır. len() eklerken, hiçbir etkisi olmayacak gibi görünüyor ve len() doğru değeri yazdırıyor olsa bile sadece atlar.Kullanılıyor ... değil ve bir len() işaret uygulanmadı

Bunu nasıl çözebilirim?

Teşekkürler!

classCheck = False 
studentclass=input("What class are you in?\n A\n B\n C\n ") 
print (len(studentclass)) 
while classCheck != True: 
    if ("a" or "b" or "c") not in studentclass.lower() and len(studentclass) != 1: 
     print ("You must enter a valid class") 
     studentclass=input("What class are you in?\n A\n B\n C\n ") 
    else: 
     classCheck = True 
+8

'("a" ya da "B" ya da "C") için de geçerlidir

"a" not in studentclass.lower() 

' için ' "a" 'sadece eşittir. – RemcoGerlich

cevap

1

Sana if studentclass.lower() not in ["a", "b", "c"]

Edit kullanmak anlamına düşünüyorum: Eğer bir tuplea atama hız kullanımda ("a", "b", "c") bir (bu durumda ihmal edilebilir) kazanç istiyorsanız comment (ler) Başına bir liste daha hızlıdır.

+0

Bu benim sorunumu çözdü, teşekkür ederim :) – OGBites

+1

Not (emin olmak için bir mikro optimizasyon), '('a', 'b', 'c')' içinde değil * biraz daha hızlı *. –

1

Yapabilirsin: Python İngilizce konuşmak değil, çünkü

classCheck = False 
studentclass=input("What class are you in?\n A\n B\n C\n ") 
print (len(studentclass)) 
while classCheck != True: 
    if studentclass.lower() not in ['a', 'b', 'c']: 
     print ("You must enter a valid class") 
     studentclass=input("What class are you in?\n A\n B\n C\n ") 
    else: 
     classCheck = True 

Sen çözüm işe yaramadı Python yüzden bunu yaptığında:

("a" or "b" or "c") not in studentclass.lower() 

Bu ilk defa eval:

("a" or "b" or "c") 

Her biri ile ilk ifadeyi döndüren bool (expr) == Burada doğrudur, bu nedenle burada "a" ile sonuçlanır. Piton değerlendirilmesi: 'b' ve 'c'