あなたはこれを持っています:
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