我有一个程序来测试行星离太阳有多远。唯一的问题是,不管我怎么回答,它总是显示为正确的。这里有一个链接指向我的代码: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(它总是这样)或Truemercury2 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]:

10-07 12:34