Skip to main content
 首页 » 编程设计

Python 不返回预期值

2025年05月04日12findumars

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

我正在尝试读取一个字符串...它可以是一个数字或一组命令。
我将仅举一个非常小的例子来说明我正在尝试做什么以及出了什么问题。

    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) 

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

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

请您参考如下方法:

如果您进入except block ,函数validate() 使用递归调用 来调用自身。当这个调用返回时,它返回到函数被调用的地方,即进入 except block 。 validate() 的返回值此时被忽略,控制到达外部调用的末尾而没有命中 return 语句,所以 None 隐式返回。

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