3 回答
TA贡献1859条经验 获得超6个赞
您认为为什么0 % 2应该提高ZeroDivisionError?简直就是0。
检查数字是否为偶数时不需要例外,这绝对不是目的assert。相反,只需使用if:
if num % 2 == 0:
try:
reciprocal = 1/num
print(reciprocal)
except ZeroDivisionError as err:
print(err)
else:
print("Not an even number!")
是否应该使用异常来处理这种情况num == 0是一个风格问题(我个人也只是if在这里使用一个声明)。在 Python 中,对这种情况使用异常处理比大多数其他语言更惯用。
TA贡献1993条经验 获得超5个赞
“reciprocal = 1/num”行必须位于 try 部分。像这样的东西:
# program to print the reciprocal of even numbers
num = int(input("Enter a number: "))
try:
assert num % 2 == 0
reciprocal = 1/num
print(reciprocal)
except ZeroDivisionError:
print(err)
except:
print("Not an even number!")
TA贡献1853条经验 获得超9个赞
您没有用...包装正确的代码try/except...num % 2 == 0不会引发 a ZeroDivisionError(因为没有任何东西被零除...)并且无论如何它都在语句中assert...正如您从错误消息中看到的,错误来自reciprocal = 1/num这是在else部分中。
您应该使用错误处理包装正确的代码,assert可以单独进行:
num = int(input("Enter a number: "))
assert num % 2 == 0, "Not an even number!"
try:
reciprocal = 1/num
print(reciprocal)
except ZeroDivisionError as err:
print(err)
除非您不希望引发(断言)错误,否则您可以执行以下操作:
num = int(input("Enter a number: "))
try:
assert num % 2 == 0
reciprocal = 1/num
print(reciprocal)
except ZeroDivisionError as err:
print(err)
except AssertionError:
print("Not an even number!")
添加回答
举报