大家好,在“ try”子句中打印我的输出还是在“ except”子句后加上“ else:”将我的输出打印出来? 这是代码:
try:
Value1 = int(input("Type the first number: "))
Value2 = int(input("Type the second number: "))
Output = Value1 / Value2
except ZeroDivisionError:
print("Attempted to divide by zero!")
else:
print(Output)
还是这个?
try:
Value1 = int(input("Type the first number: "))
Value2 = int(input("Type the second number: "))
Output = Value1 / Value2
print(Output)
except ZeroDivisionError:
print("Attempted to divide by zero!")
我的意思是哪个更好?因为结果是一样的。 谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
第一个将按照您的期望正常工作(假设您不想显示python错误提示并暂停程序)。 它只是规定 IF 第二个数字为零,则它不会打印Python错误提示并将其传递给print命令(这就是应该的样子)。否则,在任何其他情况下,无论除数是多少,它都将始终提供输出,从而消除几乎所有漏洞。
建议: 保持输入类型为float而不是int,这样您就可以打印除以十进制数字形式的除法。前2/3
答案 2 :(得分:0)
就像您已经知道我们在使用try...except
时所讨论的错误处理一样。
当某个操作(或其他语句)生成错误时,Python将停止try块执行,并向下传递到与引发的异常匹配的第一个 except块。
如果没有匹配我们异常的except子句,则在外部try语句中传递它。直到处理完毕或未找到任何处理程序为止,引发的异常将成为 未处理的异常 ,并停止执行并显示错误回溯的消息。
除了except块,我们还可以使用 finally块,无论是否发生异常,都将执行该块,否则将执行else块。对于try子句未引发异常的必须执行的代码,最后一个有用。
您怎么说这两段代码可以得到相同的结果。但是,在Python的documentation页上阅读后,我们得到了以下确认:
” 使用 else 子句比在try子句中添加其他代码更好,因为它避免了意外捕获由<保护的代码未引发的异常。 strong>尝试...,语句除外。“
简单地说,如果您有引发相同错误的不同语句,但是对于其中一个您不希望捕获该语句,请将其移至else子句。查看此question on stack可以更好地理解。
因此,在您的情况下,可以让print
语句在try块中,因为您不会从中捕获某些特定的异常,并且在这种情况下,您放置print语句并没有太大区别。但是,我认为第二个示例是一个很好的逻辑分离,类型为“如果发现错误,则执行打印”。