假设成年人的体重和身高存在此种关系: 身高(厘米)-100=标准体重(千克)。 编写程序实现:如果一个人的体重与其标准体重的差值在正负5%之间,显示“体重正常”,体重大于标准体重的5%则显示“体重超标”,体重小于标准体重的5%则显示“体重不达标”。 要求能处理用户输入的异常,并且使用“自定义异常类”来处理身高小于30CM、大于250CM的异常情况。
时间: 2023-11-28 08:49:18 浏览: 117
可以使用以下的代码实现:
```python
class HeightOutOfRange(Exception):
pass
class WeightOutOfRange(Exception):
pass
def calculate_weight(height, weight):
if height < 30 or height > 250:
raise HeightOutOfRange("身高应在30-250CM之间")
standard_weight = height - 100
diff = weight - standard_weight
if abs(diff) <= 0.05 * standard_weight:
print("体重正常")
elif diff > 0:
print("体重超标")
else:
print("体重不达标")
try:
height = float(input("请输入您的身高(单位:厘米):"))
weight = float(input("请输入您的体重(单位:千克):"))
calculate_weight(height, weight)
except ValueError:
print("输入错误,请输入数字")
except HeightOutOfRange as e:
print(e)
except WeightOutOfRange as e:
print(e)
```
这段代码中,我们定义了两个自定义异常类 `HeightOutOfRange` 和 `WeightOutOfRange`,分别用来处理身高和体重的异常情况。如果用户输入的身高小于30或大于250,则抛出 `HeightOutOfRange` 异常;如果用户输入的体重小于0或大于500,则抛出 `WeightOutOfRange` 异常。
在 `calculate_weight` 函数中,首先判断身高是否在正常范围内,如果不在则抛出 `HeightOutOfRange` 异常。然后计算标准体重并计算实际体重与标准体重的差值,根据差值的大小判断体重是否达标。
最后,在主程序中使用 `try-except` 结构来处理异常。如果用户输入的不是数字,则抛出 `ValueError` 异常,并提示输入错误。如果输入的身高或体重超出范围,则分别抛出 `HeightOutOfRange` 和 `WeightOutOfRange` 异常,并打印出错误信息。
阅读全文