2016-02-08 16 views
2

我正在通過這套教程工作。在第3.2a節 - 循環時,下面的代碼應該循環,直到用戶輸入目標編號(7),然後顯示一條祝賀消息,但是無論輸入什麼數字,Python都會給出正確答案或錯誤答案,甚至7有時會標記錯誤的答案。我知道還有其他方法可以執行這種任務,但我希望從教程中獲得代碼。Python 3.5.1 Python簡介2.1 Mark Clarkson - while循環問題

targetNumber = 7 
guess = input("Guess a number between 1 and 10 ") 
while guess != targetNumber: 
    print("Wrong, try again ") 
    guess = input("Guess a number between 1 and 10 ") 
    print("Congratulations - that's right!") 

回答

2

您應該在比較之前將目標numger轉換爲字符串。此外,您應該從循環中排除祝賀消息。我會建議:

targetNumber = str(7) 
guess = input("Guess a number between 1 and 10 ") 
while guess != targetNumber: 
    print("Wrong, try again ") 
    guess = input("Guess a number between 1 and 10 ") 
print("Congratulations - that's right!") 

詳細信息是輸入返回一個字符串,如果您將字符串與整數進行比較,它將始終返回false。

+0

輸入7個仍然標誌「錯了,再試一次」 – MBM

+0

這是因爲我犯了一個錯誤;)。我編輯帖子,它應該閱讀'''while guess!= targetNumber:''' – alpha1554

+0

賓果!沒有提及將數字轉換爲字符串,但代碼在沒有它的情況下無法使用!鑑於我正在遵循一個似乎是主要監督的教程! – MBM

1

Python的輸入函數(或Python 2.x中的raw_input)返回用戶輸入的字符串。另一方面,targetNumber是一個整數。在Python解釋器,請嘗試:

>>> 7 == "7" 
False 

您需要用戶輸入第一個強制轉換爲整數。

try: 
    guess = int(input("Please enter a number: ")) 
except ValueError: 
    print("That is not a valid number!") 
+1

這個例子在2.x中工作,因爲2.x輸入在'eval'後面進行了轉換(這是潛在的危險)。 –