我的第一个问题,也是我的第一个更大的计划。 然而,我已经删除了程序,所以它只是处理我的问题:
功能如何互动?我不明白当我通过其他功能时如何退出main()。按照代码,你就会理解我的意思
def main():
input("main root")
while 1:
try:
choice = int(input("choose 1 for second call, then follow to main and choose 4 to exit program "))
if choice == 1:
secondCall()
if choice == 4:
print("Program Exit (or it should anyway)!\n")
break
except:
input("main except, and i dont wan't to get here either")
ValueError
KeyboardInterrupt
input("main end, outside while-loop, \nwhy won't program ALWAYS end directly after this?")
def secondCall():
input("second call root")
myStacks = int(input("gimme a number: "))
if myStacks <= 0:
print("\nVälj minst en hög.\nBörja om!\n")
secondCall()
else:
while 1:
myCards = int(input("one more number: ((i don't want to get back here when trying to exit program! a valueError here gets me back to main's except))"))
input("calling on third")
thirdCall(myStacks, myCards)
def thirdCall(arg1, arg2):
print("third Call root, then calling on main(), but wont be able to exit the program right away when choosing 4 in main")
input()
main()
input("calling main")
main()
答案 0 :(得分:2)
问题是你有相互递归 - &#34;主要&#34;电话&#34; third_call&#34;然后调用&#34; main&#34;试。
我认为你的困惑可能来自于&#34; main&#34;从&#34; third_call&#34;调用,它不会回到&#34; main&#34;,它开始&#34; main&#34;再次,从一开始,使用一组全新的变量,然后启动另一个while循环。
当第二个&#34;主要&#34;退出,然后&#34; third_call&#34;完成后,它会回到&#34; third_call&#34;最初被调用 - 即在&#34; second_call&#34; - 这个循环是无限的 - 没有任何出路。
因为我不确定你到底要做什么 - 修复你的代码并不容易,但是直到你理解了recurssion(即函数调用自己,或者在你的情况下函数A,调用Func B,调用func C) ,调用函数A),你应该谨慎使用它。
您还可以在&#34; second_call&#34;中进行递归。你在哪里打电话&#34; second_call&#34;再次 - 这将形成一个潜在的infinte循环 - 再次我不确定这是你想要的:有更好的方法再次提示用户输入(即使用循环,而不是重复)。