我刚刚完成了这个代码,添加了我的最终打印行,现在我突然测试时,它没有打印出我想要打印的内容。
import random
name=input("Welcome to this Arithmetic quiz,please enter your name:")
score = 0
for i in range(10):
number1=random.randint(20,50)
number2=random.randint(1,20)
oper=random.choice('+-*')
correct_answer = eval(str(number1)+oper+str(number2))
answer = (int(input('What is:'+str(number1)+oper+str(number2)+'=')) == correct_answer)
if answer == correct_answer:
print('Correct!')
score +=1
else:
print('Incorrect!')
print("You got",score,"out of 10")
当我给出正确的答案时,它仍然给我错误,导致它告诉我我得到了0/10。
答案 0 :(得分:1)
为了匹配报告的症状,我相信您的代码实际上是:
import random
name=input("Welcome to this Arithmetic quiz,please enter your name:")
score = 0
for i in range(10):
number1=random.randint(20,50)
number2=random.randint(1,20)
oper=random.choice('+-*')
correct_answer = eval(str(number1)+oper+str(number2))
answer = (int(input('What is:'+str(number1)+oper+str(number2)+'=')) == correct_answer)
if answer == correct_answer:
print('Correct!')
score +=1
else:
print('Incorrect!')
print("You got",score,"out of 10")
请注意else
语句的缩进与if
一致,而不是for
。鉴于这一行:
answer = (int(input('What is:'+str(number1)+oper+str(number2)+'=')) == correct_answer
将布尔分配给变量answer
,而不是用户输入的答案。你可以做两件事:
删除导致的== correct_answer
部分:
answer = int(input('What is:'+str(number1)+oper+str(number2)+'='))
或
将if
语句更改为:
if answer:
答案 1 :(得分:0)
以下是您的代码存在的问题:
无论答案是否正确,您都在递增score
。增加score += 1
的缩进,使其与表示正确答案的print
对齐。
else
绑定到for
语句。缩进它以使其绑定到if
语句。相应地缩进跟随它的print
。
您对answer
的任务不仅仅是找到答案,而是将其与预期答案进行比较。因此它将是True
或False
。然后,您将该布尔值再次与答案进行比较,因此当然是False
的结果。将作业更改为:
answer = int(input('What is:'+str(number1)+oper+str(number2)+'='))
可能前两项只是发布错误,最后一项是阻止您的代码工作的原因。