2016-03-08 40 views
-4

它不會告訴你問題是否正確(當它應該),並且它沒有按照它在所有問題被問到時所應該做的。它應該在最後說:「你得分」+ str(correctQuestions)+「/ 10個問題。」 下面是代碼:Python隨機數學公式不起作用

import random 

name = input("What is your name: ") 

finish = False 
questionNumber = 0 
correctQuestions = 0 

while finish == False: 
    op = ['+','-','*'] 
    choice = random.choice(op) 
    if questionNumber < 10 and questionNumber >= 0: 
     number1 = random.randrange(1,10) 
     number2 = random.randrange(1,10) 
     print((number1),(choice),(number2)) 
     answer=int(input("What is the answer?")) 
     questionNumber = questionNumber + 1 

if choice==("+"): 
    realAnswer = number1+number2 
elif answer==realAnswer: 
    print("That's the correct answer") 
    correctQuestions = correctQuestions + 1 
else: 
    print("Wrong answer") 

if choice==("*"): 
    realAnswer = number1*number2 
elif answer==realAnswer: 
    print("That's the correct answer") 
    correctQuestions = correctQuestions + 1 
else: 
    print("Wrong answer") 

if choice==("-"): 
    realAnswer = number1-number2 
elif answer==realAnswer: 
    print("That's the correct answer") 
    correctQuestions = correctQuestions + 1 
else: 
    print("Wrong answer") 

if finish == True: 
    print("You scored " + str(correctQuestions) + "/10 questions.") 
+0

這看起來很像一個家庭作業問題。 –

+0

@CalleDybedahl它看起來像家庭問題,我可以提出新的標籤'數學測驗在python'? – gboffi

回答

0

由於這看起來像一個課外練習你需要一些時間來想想我不會解決這個問題。然而,這裏有一些提示:

變量finish始終是False,它永遠不會更新,所以它也難怪遊戲永遠不會完成。對此做些事情。

第二個在if choice==("+"):有可能變量choice不存在(也不是number1number2)。考慮一下你在while循環下放的東西以及你不知道的東西。

此外,您還沒有在之前聲明它的elif聲明中有一個變量realAnswer。由於該變量不存在,如果它被評估,它會給你一個NameError

0

比方說choice*。 Python得到if choice==("+"):。結果是:False,所以它檢查elifelif answer==realAnswer:此時realAnswer尚未定義。您在if塊中定義了realAnswer,但if塊未執行。你需要從每個choice取出elifelse塊,而是把他們在最後:

if answer == realAnswer: 
    print("That's the correct answer") 
    correctQuestions = correctQuestions + 1 
else: 
    print("Wrong answer") 

而且,你永遠無法定義finish,只能作爲False。您使用if questionNumber < 10 and questionNumber >= 0:,但是您不說如果questionNumber而不是010之間該怎麼辦。你需要一個else塊,它會跳出循環。