【问题标题】:My Program is not printing what I want it to print我的程序没有打印我希望它打印的内容
【发布时间】:2016-04-07 02:09:35
【问题描述】:

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

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。

【问题讨论】:

  • 你的代码有语法错误,所以你不能指望它做任何有用的事情。
  • 这是 Python。如果您的标签在您的帖子中正确显示,则您的循环正文为空,因为您没有缩进正文。
  • 没有缩进问题或语法错误(根本没有红线)只是我不知道如何对她进行缩进。
  • 使用空格键。如果要缩进 4 个空格,请按 4 次。如果您无法以人们可以阅读的方式格式化您的代码,那么就不要费心发布,真的没有意义。
  • 谢谢。

标签: python


【解决方案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

将 boolean 分配给变量 answer,而不是用户输入的答案。你可以做两件事:

删除 == correct_answer 部分导致:

answer = int(input('What is:'+str(number1)+oper+str(number2)+'='))

或

将if 语句更改为:

if answer:

【讨论】:

  • OMGG。非常感谢。我从 if 语句中删除了 '==correct_answer'。但是为什么 '==correct_answer' 会导致 if 语句出现问题?
  • 因为==correct_answer 表达式的计算结果是一个布尔值,然后将其与可能是 int 的预期答案进行比较。除非正确答案是 1 (==True) 或 0 (==False),否则比较将始终为 False,因此始终认为答案不正确。
  • 好的,非常感谢你对 mhawke 的帮助,不用我看到你为无关的事情哭泣咳嗽 咳嗽。 ;)
  • @PythonNooby: 咳咳 back :) 缩进在 Python 中是高度相关的。我认为这只是一个发布错误(这就是我能够推断出您的实际代码的方式),但是当您需要其他人的帮助时,他们需要能够理解并可能执行您的代码。因为缩进在 Python 中非常重要,所以您发布的代码与您的 实际 代码具有不同的语义。我怀疑任何工具都可以自动修复缩进,因为它无法判断缩进是故意的还是偶然的。
【解决方案2】:

您的代码存在以下问题:

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

  2. else 绑定到 for 语句。缩进它,使其绑定到if 语句。相应地缩进它后面的print。

  3. 你分配给answer 的任务不仅仅是找到答案,而是将它与预期的答案进行比较。所以它将是True 或False。然后,您再次将该布尔值与答案进行比较,因此当然是False 的结果。将分配更改为:

    answer = int(input('What is:'+str(number1)+oper+str(number2)+'='))
    

可能前两项只是发布错误,最后一项是阻止您的代码工作的原因。

【讨论】:

  • 这对于发布的代码是正确的,但这不可能是正确的,因为 OP 报告分数始终为 0。发布代码中的缩进不会发生这种情况。
  • 我知道,但我真的不想尝试第二次猜测这样的事情,尤其是当 OP 认为缩进无关紧要时。
  • 感谢您的回答,但是 mhawke 发现了我的问题,我的代码是缩进的,但它似乎在网站上不起作用。
猜你喜欢
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 2022-09-30
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
相关资源
最近更新 更多