【问题标题】:Why Python if statement is always returning True?为什么 Python if 语句总是返回 True?
【发布时间】:2014-09-17 17:20:37
【问题描述】:

我有这个代码:

while no_questions < 10:
    # Creating question and random values
    question = ""  # Blanking the question for continues use of one variable
    num1 = randint(1, 10); num2 = randint(1, 10); op = choice(operators)
    question = op(num1, num2)
    real_answer = question
    # Change operator to string for use in format for later output
    if op == add:
        op = "plus"
    elif op == sub:
        op = "minus"
    elif op == mul:
        op = "times"
    answer = raw_input("What is {0} {1} {2}?".format(num1, op, num2))
    # Checking answer and updating score
    if answer == question:
        print "Well done {0}! You got that right!".format(usr_name)
        score += 1
    else:
        pass
    no_questions += 1

这是我在学校做的一个项目的一部分。但是,当我通过此循环时,最后一个 if 语句将返回 True,无论输入是什么。我的代码是错误的还是我没有遇到过的python 法?非常感谢。

【问题讨论】:

  • 查看 if 语句中的两个值并查看它们最初设置的位置。
  • @MatthewC,您已编辑问题以删除三个答案提供的错误。为什么?

标签: python if-statement return


【解决方案1】:

即使您修复了 real_answer 错误,您的代码也无法工作。

raw_input 返回一个字符串,但你将它与一个整数进行比较 - 你需要:

 answer = int(raw_input("What is {0} {1} {2}?".format(num1, op, num2)))

附:当有人指出错误时,编辑您的问题以删除错误并不是一种很好的形式,这意味着当其他人阅读问题时,他们的答案看起来是错误的。正确的做法是为正确的答案投票,如果您可以勾选答案以接受它为正确的答案。

【讨论】:

    【解决方案2】:

    您的real_answer 变量始终等于question,因为您在这一行代码中将它们设置为彼此相等。

    real_answer = question
    

    然后你在这里比较它们,而不用改变它们。

    if real_answer == question:
    

    【讨论】:

    • 令人讨厌的是,OP 现在已经编辑了问题以删除错误!但没有留下任何评论——所以现在任何读者都看到了你看到的东西:-(
    • 还有一个 raw_input 问题 - 正如我在回答中提到的那样。
    【解决方案3】:

    好吧,在这里你将它们设置为相同的值:

    real_answer = question
    

    而且你永远不会改变real_answer,,所以当然当你稍后测试它时,它仍然等于question

    【讨论】:

      【解决方案4】:

      你有:

      real_answer = question
      

      几行之后

      if real_answer == question:
      

      当然是真的。你自己设置的。

      ...现在您已经对其进行了编辑,因此您的代码不再重现所述问题。

      【讨论】:

        猜你喜欢
        • 2015-12-16
        • 2016-02-15
        • 2016-01-04
        • 2016-05-10
        • 1970-01-01
        • 1970-01-01
        • 2015-05-06
        • 2012-09-08
        • 1970-01-01
        相关资源
        最近更新 更多