Python没有返回预期值

Kal*_*lec 1 python

我根本无法理解这里发生了什么.这个问题对我的作业很重要(学习编程所以我是初学者......我的英语也不是那么好,对不起).

我正在尝试读取一个字符串......它可以是一个数字或一定数量的命令.
我只是给出一个很小的例子,说明我正在尝试做什么以及出了什么问题.

    def validate():
        choice = str(input(">>> "))
        if (choice == "exit"):
            return 0 # should exit validate
        else:
            try:
                aux = int(choice) # Tries converting to integer
            except:
                print("Insert integer or exit")
                validate() # If it can't convert, prompts me to try again through
                           # recursivity
            else:
                return aux
    rezult = validate()
    print (rezult)
Run Code Online (Sandbox Code Playgroud)

问题是这个小脚本返回完全随机的东西.

如果"退出",则返回"无".
如果第一次输入正确,则返回正确的数字.
如果第一个输入是"错误"而第二个输入是正确的,那么它再次是"无",我根本无法理解出现了什么问题......为什么它不想工作或我应该做什么(或者).

Sve*_*ach 5

如果您输入except块,该函数validate()使用递归调用来调用自身.当这个调用返回时,它返回到调用函数的位置,即进入except块.此时validate()忽略返回值,并且控制在没有命中return语句的情况下到达外部调用的末尾,因此None隐式返回.

不要在这里使用递归.使用循环.