如何为100名学生生成随机体重身高并循环计算BMI及状态?
问题解决与代码修正
需求明确
你需要完成的任务:
- 给100名学生生成100-300磅的随机体重
- 计算每位学生的BMI值及对应的健康状态
- 确认是否需要生成随机身高(英尺+英寸)并实现该功能
你的代码问题
你写的代码有几个明显问题:
- 不需要用
range()包裹randint(),randint()本身就返回单个随机整数,range()是用来生成序列的 - 多处缺少右括号,语法错误会导致代码无法运行
- 身高的生成逻辑没问题,但变量赋值方式错误
完整可运行代码
先导入random模块,结合你已有的BMI状态函数,完整实现如下:
import random # 替换成你自己的BMI状态判断函数 def get_bmi_status(bmi): if bmi < 18.5: return "体重过轻" elif 18.5 <= bmi < 24.9: return "正常体重" elif 25 <= bmi < 29.9: return "超重" else: return "肥胖" # 循环处理100名学生 for student_num in range(1, 101): # 生成100-300磅的随机体重 weight = random.randint(100, 300) # 生成随机身高:1-6英尺,0-11英寸(12英寸=1英尺,所以英寸取0-11更合理) feet = random.randint(1, 6) inches = random.randint(0, 11) # 转换为总英寸数 total_height_inches = feet * 12 + inches # 计算BMI(703是磅转千克、英寸转米的转换系数) bmi = 703 * weight / (total_height_inches ** 2) # 保留两位小数,结果更清晰 bmi = round(bmi, 2) # 获取状态 status = get_bmi_status(bmi) # 输出每个学生的信息 print(f"学生{student_num}: 体重{weight}磅,身高{feet}英尺{inches}英寸,BMI={bmi},状态:{status}")
关键说明
- 随机数生成:用
random.randint(min, max)直接生成指定范围的整数随机数,这是生成单个随机值的正确方式 - 循环逻辑:
range(1,101)会生成1到100的序号,刚好对应100名学生,循环内完成单个学生的体重、身高生成及BMI计算 - 身高处理:作业没给定固定身高,所以必须生成随机身高,先拆成英尺和英寸,再转换为总英寸数代入公式,符合BMI计算的单位要求
- BMI公式:你用的
703*weight/height**2是正确的,这个系数专门用于英制单位(磅、英寸)转公制单位的BMI计算
内容的提问来源于stack exchange,提问作者cheiveris
相关产品推荐
相关产品推荐

