【问题标题】:try - except struggle尝试——除了挣扎
【发布时间】:2018-08-14 07:19:08
【问题描述】:

如果该人输入的数字不是 4 个数字长,我将尝试使用 try-except 结构停止此程序。例如,如果我输入 2 位或 3 位数字,我真的不明白为什么它会跳过 except 块。感谢所有帮助。

guess = int(input('Guess a 4 digit number:\n'))
guesslist = [int(x) for x in (str(guess))]
x = 0
y = 0

try:
    print(len(str(guess)))
    len(str(guess)) == 4

except:
    print('please enter a 4 digit number')
    quit()

print('past')

【问题讨论】:

  • try 不是ifexcept 仅在Error 被扔进try 时触发;如果测试失败,则不会。

标签: python try-catch except


【解决方案1】:

try/except 语法捕获异常(也称为错误)。如果try 子句中的代码没有引发错误,则跳过except 子句。您的try 子句中没有任何明显的错误。

来自try/except docs

首先,执行 try 子句(try 和 except 关键字之间的语句)。 如果没有发生异常,则跳过except子句,结束try语句的执行。

改用if/then 条件语法:

if len(str(guess)) == 4:
    print(len(str(guess)))
else:
    print('please enter a 4 digit number')
    quit()

【讨论】:

    【解决方案2】:

    尝试将assert 添加到len(str(guess)) == 4,这样它就是assert len(str(guess)) == 4

    原因是仅仅拥有len(str(guess)) == 4 是没有用的——它已经运行但你没有告诉 Python 对结果做任何事情。如果你assert,基本上就是验证下一个代码是否为真,否则抛出异常。

    【讨论】:

    【解决方案3】:

    您需要引发异常才能触发异常。试试这样:

    guess = int(input('Guess a 4 digit number:\n'))
    guesslist = [int(x) for x in (str(guess))]
    x = 0
    y = 0
    try:
        print(len(str(guess)))
        if(len(str(guess)) != 4):
            raise Exception("Invalud number")
    
    except:
        print('please enter a 4 digit number')
        quit()
    
    print('past')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-08
      • 2023-04-06
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 2015-08-24
      相关资源
      最近更新 更多