【问题标题】:Except function is always executed when I try and give it a specific error当我尝试给它一个特定的错误时,总是会执行除函数
【发布时间】:2022-01-05 23:29:38
【问题描述】:

我希望这个程序做的是只去每个,除非出现特定的错误。现在它总是会进入 TypeError 异常,并且会循环询问请给我你的号码,即使我输入了一些东西。

numb1 = input('Give me a number')

def error(numb1):
    try:
        numb1 >= 0
        print('Your wait time is', 45 / numb1)
    except TypeError:
        numb1 = input('Please give a number')
        return error(numb1)
    except ZeroDivisionError:
        numb1 = input('Do not use zero for your answer. Please input a new number:') 

error(numb1)

【问题讨论】:

  • numb1 是一个字符串。将字符串与数字进行比较会产生 TypeError
  • 所以这总是会出现错误并且你会陷入循环。
  • 您正在从具有相同参数类型的错误处理程序中递归调用函数,这是启动永恒循环的创造性方式。
  • @Barmar 感谢您的帮助。你可能会说,我对编程有点陌生

标签: python exception


【解决方案1】:

这就是我认为你正在尝试的。请注意,我使用循环而不是递归。当我们成功时,我们会跳出循环。

def error(numb1):
    while True:
        try:
            numb1 = int(input('Give me a number'))
            print('Your wait time is', 45 / numb1)
            break
        except TypeError:
            print( "That's not a number." )
        except ZeroDivisionError:
            print('Do not use zero for your answer.') 

error(numb1)

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多