理解功能如何相互作用我怎么退出?

时间:2014-07-19 10:24:17

标签: python function python-3.x call

我的第一个问题,也是我的第一个更大的计划。 然而,我已经删除了程序,所以它只是处理我的问题:

功能如何互动?我不明白当我通过其他功能时如何退出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()

1 个答案:

答案 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循环 - 再次我不确定这是你想要的:有更好的方法再次提示用户输入(即使用循环,而不是重复)。