假设成年人的体重和身高存在此种关系: 身高(厘米)-100=标准体重(千克)。 编写程序实现:如果一个人的体重与其标准体重的差值在正负5%之间,显示“体重正常”,体重大于标准体重的5%则显示“体重超标”,体重小于标准体重的5%则显示“体重不达标”。 要求能处理用户输入的异常,并且使用“自定义异常类”来处理身高小于30CM、大于250CM的异常情况
时间: 2024-02-09 10:09:23 浏览: 110
实现根据身高计算标准体重
好的,我可以帮你编写这个程序。以下是代码实现:
```python
# 自定义异常类
class HeightError(Exception):
def __init__(self, message):
self.message = message
# 计算标准体重
def get_standard_weight(height):
return (height - 100) * 0.9
# 判断体重是否正常
def check_weight(weight, standard_weight):
diff = weight - standard_weight
diff_ratio = diff / standard_weight
if abs(diff_ratio) <= 0.05:
return "体重正常"
elif diff_ratio > 0.05:
return "体重超标"
else:
return "体重不达标"
# 主程序
while True:
try:
height = float(input("请输入您的身高(厘米):"))
if height < 30 or height > 250:
raise HeightError("身高异常,请输入正确的身高值(30-250厘米)!")
weight = float(input("请输入您的体重(千克):"))
standard_weight = get_standard_weight(height)
result = check_weight(weight, standard_weight)
print(result)
break
except ValueError:
print("输入错误,请输入数字!")
except HeightError as e:
print(e.message)
```
程序中定义了一个自定义异常类 `HeightError`,用于处理身高输入异常的情况。在主程序中,通过 `try...except` 结构来捕获用户输入的异常,并根据输入的身高和体重计算标准体重,最后判断体重是否正常并输出结果。
运行程序后,如果用户输入的身高小于30或大于250,会抛出 `HeightError` 异常,并提示用户重新输入正确的身高值;如果用户输入的不是数字,则会提示输入错误;如果一切正常,则会输出体重的判断结果。
阅读全文