我有一个程序来测试行星离太阳有多远。唯一的问题是,不管我给出什么答案,结果总是正确的。下面是我的代码链接: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
的计算结果是True
(它总是这样),或者当mercury2 in ans
是True
,那么这个if语句将是True
。你知道吗mercury
是一个非空字符串(mercury = "57.9"
),它将计算为True
。例如,尝试bool("57.9")
查看Python总是为非空字符串计算True
。如果字符串是空的,那么它将是False
。你知道吗所以不管用户回答什么,你的代码总是会说它是正确的。你可以这样写:
但最好是这样写(见下面评论中的讨论):
你有这个:
而不是这样:
然而,你有一个更深层次的问题。像这样的代码
最终会导致堆栈溢出。这是因为您正在调用函数,但从未从函数返回!
您应该重新构造代码以使用^{} 循环
您还应该考虑从程序中删除一些重复项
你可以用这样的函数
通过将行星数据存储在
list
相关问题 更多 >
编程相关推荐