2015-11-14 38 views
-1

我不確定爲什麼這不起作用,但我有一種感覺,它與我如何構建while循環有關。只有當用戶輸入的東西不是他們所擁有的兩種選擇時,我纔想要循環繼續。但是,即使我在將兩個正確選項中的任一個進行測試時,while循環仍然繼續。Python - 使用while循環與if/elif語句

prompt = "> " 

print "Welcome to the converter. What would you like \ 
to convert? (temp or distance)" 
choice = raw_input(prompt) 

while (choice != "temp" or choice != "distance"): 
    print "Sorry, that's not an option" 
    choice = raw_input(prompt) 
if choice == "temp": 
    print "temp" 
elif choice == "distance": 
    print "distance" 

我在這裏錯過了什麼?提前致謝。

+1

如果您希望'if'語句成爲while循環的一部分,您需要將它放在相同的縮進級別。 – SethMMorton

+1

它看起來像你剛剛開始學習python,你應該真的學習python 3,它已經有10年了,更少的怪癖和更多的功能。 – simonzack

+0

@SethMMorton這不是他想要的。 while循環只是不斷要求一個新的值,直到提供有效的 – dietbacon

回答

2

你希望選擇是「溫度」還是「距離」,所以你的條件應該是它不能(不是「溫度」而不是「距離」)。只需在while條件下將or替換爲and即可。

prompt = "> " 

print "Welcome to the converter. What would you like \ 
to convert? (temp or distance)" 
choice = raw_input(prompt) 

while (choice != "temp" and choice != "distance"): 
    print "Sorry, that's not an option" 
    choice = raw_input(prompt) 
if choice == "temp": 
    print "temp" 
elif choice == "distance": 
    print "distance" 

你的條件之前有它的方式將始終是真實的

每低於其他方法,你可以寫的,而條件也將工作的建議:

while not (choice == "temp" or choice == "distance"): 

while (choice not in ('temp', 'distance')): 

請選擇。

+2

ospst:德摩根的法律將會使條件更具可讀性。 – Makoto

+6

而且,當然,另一個選項是'不選擇'('temp','distance')' – bereal

+0

@Makoto加入回答。感謝您的建議 – dietbacon