提问人:hyssopofluv 提问时间:7/6/2023 更新时间:7/9/2023 访问量:86
引发自定义异常 (Python)
Raising Custom Exceptions (Python)
问:
每当输入负值时,我都会尝试在代码中引发自定义异常,但我不断收到错误。我的代码是:
class LessThanZeroError(Exception):
pass
def get_BMI():
try:
height = int(input('Enter height in inches:'))
weight = int(input('Enter weight in pounds:'))
if height or weight < 0:
raise LessThanZeroError('height and weight must be positive values')
BMI = (weight * 703 // height**2)
return BMI
except ValueError:
print('Error, height and weight must be numbers')
print(get_BMI())
这是输出屏幕截图。输出
我尝试在用户的身高或体重值小于或等于零时引发异常,但我收到错误,我不确定为什么。
答:
3赞
Andrei Evtikheev
7/6/2023
#1
和 是条件语句中的两个独立语句。如果 ,它将返回 ,因此之后将传递缩进的代码。
因此,您需要将引发异常的条件更改为height
weight < 0
if...or...:
height == 0
True
if height < 0 or weight < 0:
3赞
404PersonNotFound
7/6/2023
#2
之所以引发错误,是因为引发异常的条件是 。对于整数,变量只要不等于 0。所以你的语句部分只要不是 0 就行了,这就是你的特殊错误被提出的原因。if height or weight < 0
True
height
if
True
另外,您可能希望将代码行更改为 ,
因为一个人没有身高或体重是没有意义的。
但是,如果您只是希望它不接受负数,那么您的代码将是:if height <= 0 or weight <= 0
if height < 0 or weight < 0:
评论
return
BMI