2014-11-15 32 views
0
name = input('What is your name?') 
print('Welcome to my quiz', name) 

guess = 0 
tries = 0 
answer = 5 
score = 0 

while guess != answer and tries < 2: 
    guess = input('10/2 is...') 
    if guess == answer: 
     print("Correct") 
     score = score + 10 
    else: 
     print("Incorrect") 
     score = score - 3 
     tries = tries + 1 

guess = 0 
tries = 0 
answer = 25 

while guess != answer and tries < 2: 
    guess = input('5*5 is...') 
    if guess == answer: 
     print('Correct') 
     score = score + 10 
    else: 
     print('Incorrrect') 
     score = score - 3 
     tries = tries + 1 
print ('Thank you for playing',name) 

我遇到的問題是,當我測試代碼時,每當我回答問題時,即使答案正確,打印也不正確。我正在做一個測驗,但每次我測試測驗和答案,它說不正確,我不知道爲什麼?

+2

1.''While'!='while''和2.''5'!= 5' - 'input'總是一個字符串*。 – jonrsharpe

回答

1

嘗試:

guess = raw_input() 
    guess = int(guess) 

OR

guess = int(input('10/2 is...')) 

並請相應地縮進代碼。

您試圖將'5'(一個字符)等同於5(整數),因爲ASCII中的'5'不等於整數5.因此您必須輸入一個整數,而不是一個字符串/字符。

並且@johnrsharpe指出將'While'替換爲'while'。

+0

問題標籤爲Python 3.x,它沒有'''raw_input'''。大概不應該認爲這個字符串是ascii。 – wwii

+0

@wwii我更新了答案。 –

0

問題是:當您使用input()函數獲取用戶輸入時,返回的值將始終是一個字符串。這樣一來,「5」是不同於5。請參閱:

嘗試:

>>> a = input('type a number: ') 
3 
>>> type(a) 
<class 'str'> 
>>> b = 3 
>>> type(b) 
<class 'int'> 
>>> a == b 
False 

但如果用戶輸入轉換成int對象你可以做比較:

>>> converted_a = int(a) 
>>> type(converted_a) 
<class 'int'> 
>>> converter_a == b 
True 

所以,對於這個快捷方式是:

>>> a = int(input('Type a number: ')) 
>>> type(a) 
<class 'int'> 

在你的榜樣,你只需要嵌入裏面的用戶輸入int()函數:

guess = int(input('your question here: ')) 

但是要小心這種方法。如果用戶輸入一個可轉換值,它就會起作用,這意味着如果用戶鍵入一個字母,程序將無法工作。

>>> a = int(input('Type a number: ')) 
x 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: 'x' 

因此,在使用之前,您需要對用戶輸入進行一些驗證。

相關問題