2016-04-14 21 views
1

Kullanabileceğim/aldığım daha iyi bir şey var mı?Python'da "eşit değil" kullanılmasının en iyi yolu nedir?

while StrLevel != "low" or "medium" or "high": 
     StrLevel = input("Please enter low, medium, or high for the program to work; ") 
+0

ifadesi 'StrLevel = "düşük" veya "orta" veya "yüksek"' StrLevel 'gibi daha kısaca yazılabilir =" düşük "veya" orta ". –

+0

Şimdi yazdığınız şekilde sonsuz bir döngüdür, bu yüzden 'True' veya '1 iken bunu yapmak için daha basit bir yoldur ... ama beklediğim şey bu değil. – kindall

+0

Olası çoğaltılabilir [Birden çok değere karşı bir değişkeni nasıl test ederim?] (Http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values) –

cevap

6

not in'u kullanabilirsiniz. Nitekim

while strLevel not in ["low", "medium", "high"]: 
+0

Tamamen şerefe Bu cevabı 9 dakika içinde yapacağım ya da bunu yapabildiğimi söylediği her ne olursa olsun. "Bu cevabı 9 dakikada kabul edebilirsiniz" – Mitchell

+0

@Mitchell bu "cevap" notu. Bytecode'un nasıl söküleceğinden emin değilim (yani listeyi her döngüde başlatabilir). Bulmak için 'dis 'modülünü kullanabilir ve etkinliğin önemi varsa, seçenekleri döngüden önce bir değişken olarak saklamak daha iyi olabilir. –

+0

@JaredGoguen Okay, teşekkürler :) – Mitchell

0

, not in

önerilir Ama söz konusu gösterdi karşılaştırma yapmak ne demek? ... muhtemelen beklediğiniz gibi değil.

bunu biraz basitleştirmek için: Python önce gelen dilde boolean cebirsel ifadeler kullanılan konum

>>> 'foo' != 'bar' or 'medium' 
True 
>>> 'foo' != 'foo' or 'medium' 
'medium' 
>>> False or 'medium' 
'medium' 

Biraz kafa karıştırıcı. Python aritmetik karşılaştırmalar anlamlı kılmak için sorun gider Özellikle de zincirleme zaman:!

>>> x = 12 
>>> 10 < x < 14 
True 
>>> 10 < x < 11 
False 
İlgili konular