我的程序不打印我想要打印的内容

时间:2016-01-03 08:19:05

标签: python

我刚刚完成了这个代码,添加了我的最终打印行,现在我突然测试时,它没有打印出我想要打印的内容。

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。

2 个答案:

答案 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)

以下是您的代码存在的问题:

  1. 无论答案是否正确,您都在递增score。增加score += 1的缩进,使其与表示正确答案的print对齐。

  2. else绑定到for语句。缩进它以使其绑定到if语句。相应地缩进跟随它的print

  3. 您对answer的任务不仅仅是找到答案,而是将其与预期答案进行比较。因此它将是TrueFalse。然后,您将该布尔值再次与答案进行比较,因此当然是False的结果。将作业更改为:

    answer = int(input('What is:'+str(number1)+oper+str(number2)+'='))
    
  4. 可能前两项只是发布错误,最后一项是阻止您的代码工作的原因。