你有这个:
if mercury or mercury2 in ans:
而不是这个:
if ans in (mercury, mercury2):
但是你有一个更深层次的问题。像这样的代码
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()
最终会导致stackoverflow。这是因为您正在调用函数,但从未从它们返回!
您应该重组代码以使用while
循环
您还应该考虑从程序中删除一些重复项
例如,您可以使用这样的功能
def main():
while True:
print "Planetary Distance from the Sun"
time.sleep(.5)
rand = random.randint(1,1)
if rand==1:
ask_planet_distance("Mercury", mercury, mercury2)
elif rand==2:
ask_planet_distance("Venus", venus, venus2)
...
def ask_planet_distance(planet_name, distance1, distance2):
while True:
ans = raw_input("How far is {} from the sun? ".format(planet_name))
if ans in (distance1, distance2):
break
else:
print "Incorrect!"
print "Correct!"
time.sleep(.5)
os.system("cls")
您可以通过将行星数据存储在一个list