尝试-除了挣扎

时间:2018-08-14 07:19:08

标签: python try-catch except

如果尝试输入的数字不是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')

3 个答案:

答案 0 :(得分:0)

尝试将assert添加到len(str(guess)) == 4

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

答案 1 :(得分:0)

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 :(得分:0)

您需要引发异常才能触发例外。像这样尝试:

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')