我有这段代码:
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。我的代码是错的还是这是我没有遇到过的蟒蛇法?非常感谢。
答案 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:
当然是真的。你自己设定它。
...现在您已对其进行了编辑,因此您的代码不再重现所述问题。