为什么Python if语句总是返回True?

时间:2014-09-17 17:20:37

标签: python if-statement return

我有这段代码:

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。我的代码是错的还是这是我没有遇到过的蟒蛇法?非常感谢。

4 个答案:

答案 0 :(得分:1)

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

real_answer = question

然后你在这里比较它们,而没有改变它们。

if real_answer == question:

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

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

real_answer = question

并且您永远不会更改real_answer,,因此当您稍后进行测试时,它仍然等于question

答案 3 :(得分:0)

你有:

real_answer = question

然后几行

if real_answer == question:

当然是真的。你自己设定它。

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