假设成年人的体重和身高存在此种关系: 身高(厘米)-100=标准体重(千克)。 编写程序实现:如果一个人的体重与其标准体重的差值在正负5%之间,显示“体重正常”,体重大于标准体重的5%则显示“体重超标”,体重小于标准体重的5%则显示“体重不达标”。 要求能处理用户输入的异常,并且使用“自定义异常类”来处理身高小于30CM、大于250CM的异常情况。
时间: 2023-11-28 08:49:21 浏览: 48
可以使用以下代码来实现:
```python
class HeightOutOfRange(Exception):
pass
class WeightOutOfRange(Exception):
pass
def calculate_weight(height, weight):
if height < 30 or height > 250:
raise HeightOutOfRange("身高不在范围内")
standard_weight = height - 100
diff = weight - standard_weight
percent = abs(diff / standard_weight)
if percent <= 0.05:
print("体重正常")
elif diff > 0:
print("体重超标")
else:
print("体重不达标")
try:
height = int(input("请输入身高(厘米):"))
weight = int(input("请输入体重(千克):"))
calculate_weight(height, weight)
except ValueError:
print("输入的身高或体重格式不正确")
except HeightOutOfRange as e:
print(str(e))
except WeightOutOfRange as e:
print(str(e))
except Exception as e:
print(str(e))
```
这里定义了两个自定义异常类,分别用于处理身高小于30cm和大于250cm的异常情况。在`calculate_weight`函数中,首先判断身高是否在合理范围内,如果不是则抛出`HeightOutOfRange`异常。然后计算标准体重和体重差值的百分比,根据百分比判断体重是否正常,并输出相应的提示信息。
在主程序中,使用`input`函数获取用户输入的身高和体重,并使用`try...except`语句来处理可能出现的各种异常情况,包括输入格式不正确、身高超出范围、体重超出范围以及其他未知异常。
阅读全文