我有一个程序来测试行星离太阳有多远。唯一的问题是,不管我怎么回答,它总是显示为正确的。这里有一个链接指向我的代码:http://pastebin.com/MimECyjm
如果可能的话,我想要一个更简单的答案,因为我还没有那么精通python
问题代码:
mercury = "57.9"
mercury2 = "57900000"
def Mercury():
ans = raw_input("How far is Mercury from the sun? ")
if mercury or mercury2 in ans:
print "Correct!"
time.sleep(.5)
os.system("cls")
main()
else:
print "Incorrect!"
Mercury()
最佳答案
问题是你有:
if mercury or mercury2 in ans:
如果
True
计算结果为mercury
(它总是这样)或True
为mercury2 in ans
时,此if语句将为True
。mercury
是一个非空字符串(mercury = "57.9"
),其计算结果为True
。例如,尝试bool("57.9")
查看python总是为非空字符串计算True
。如果字符串为空,则它将False
。所以不管用户回答什么,代码都会说它是正确的。以下是你可以写的:
if mercury in ans or mercury2 in ans:
但最好还是写下来(见下面评论中的讨论):
if ans in [mercury, mercury2]: