Creating a Quiz in Python - error
作为Python的新手,我在尝试开发测验程序时遇到了错误。 我发现当程序生成两个随机数加在一起,并且用户试图输入正确的问题值时,程序会跳起并仍然打印出来自用户的输入无效。
1 2 3 4 5 6 7 8 9 10 11 12 13 | def quiz(): print("The quiz will begin shortly") print(numberone) print("+") print(numbertwo) answerone=input("Answer:") if answerone==(numberone + numbertwo): print("Correct") score+1 print("You're score is", score,".") else: print("Incorrect") print(numberone+numbertwo) |
我不明白我做错了什么,所以任何帮助都会非常感激。
(注意:'numberone'和numbertwo'都是定义的)
您的代码中存在许多问题。让我们一个接一个地看。
- 你的缩进是错的。你应该先解决它。
-
在此范围内无法访问
numberone ,numbertwo 和score 。一个好主意是将它们作为函数参数传递。
像这样:
1 | def quiz(numberone,numbertwo,score): |
-
由于
answerone 应为整数,因此将输入转换为int
像这样:
1 | answerone=int(input("Answer:")) #if using python3 |
-
您正在使用
score 添加1 ,但不会将其分配回来。
使用
-
从函数返回
score 以使用score 的更新值进行下一次调用。
所以,工作代码可以是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def quiz(numberone,numbertwo,score): print("The quiz will begin shortly") print(numberone) print("+") print(numbertwo) answerone=int(input("Answer:")) if answerone==(numberone + numbertwo): print("Correct") score += 1 print("You're score is", score,".") else: print("Incorrect") print(numberone+numbertwo) return score |
您可以像下面这样调用它:
1 2 3 4 5 | score=0 while(score<10): score=quiz(someRandNumber,anotherRandNumber,score) else: print"Your score is 10" |
你忘了在增加时分配分数
是:
1 2 3 | print("Correct") score+1 print("You're score is", score,".") |
应该:
1 2 3 | print("Correct") score += 1 print("You're score is", score,".") |
您的问题是您的用户输入是一个字符串。在比较之前,您需要将其转换为整数。
1 | int(answerone) |
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 | def quiz(): print("The quiz will begin shortly") print(numberone) print("+") print(numbertwo) answerone=input("Answer:") if int(answerone)==(numberone + numbertwo): print("Correct") score += 1 print("You're score is {}.".format(str(score))) else: print("Incorrect") print(numberone+numbertwo) |
您需要在函数
1 2 3 | def quiz(): numberone = 6 numbertwo = 3 # etc. |
或者,将它们作为参数传递:
1 2 | def quiz(numberone, numbertwo): print numberone #etc |