zjg121 发表于 2024-4-17 11:28

python:计算身高体重指数bmi

本帖最后由 zjg121 于 2024-4-17 15:07 编辑

输入身高和体重,可以得到bmi。
def bmi(score):
    if score >= 32:
      return '严重肥胖'
    elif score >= 28:
      return '肥胖'
    elif score >= 25:
      return '过重'
    elif score >= 18.5:
      return '正常'
    elif score >= 15:
      return '过轻'
    else:
      return '严重过轻'


# 测试示例
sg = input('请输入身高(米):')
tz = input('请输入体重(千克):')
score = float(tz) / float(sg) / float(sg)
print(f'根据您的身高({sg}m)和体重({tz}kg)可得身高体重指数bmi为:{score:.2f},等级为:{bmi(score)}')# 输出



https://static.52pojie.cn/static/image/hrline/4.gif

height = float(input('请输入身高(米): '))
weight = float(input('请输入体重(千克): '))

bmi = weight / (height ** 2)

bz =
ms = ['严重过轻', '过轻', '正常', '过重', '肥胖', '严重肥胖']
for i in bz:
    if bmi < i: a = '您的BMI指数为%.1f, 属于%s' % (bmi, ms)
if a:
    print(a)
else:
    print('您的BMI指数为%.1f, 属于%s' % (bmi, ms[-1]))

wjbg2022 发表于 2024-4-17 11:37

还可以出一个字典的版本,加油!

wjbg2022 发表于 2024-4-17 11:40

本帖最后由 wjbg2022 于 2024-4-17 11:42 编辑

height = float(input('请输入身高(米): '))
weight = float(input('请输入体重(千克): '))

bmi = weight / (height ** 2)

bmi_status = {
    (0, 15.5): '严重过轻',
    (15.5, 18.5): '过轻',
    (18.5, 25): '正常',
    (25, 28): '过重',
    (28, 32): '肥胖',
    (32, float('inf')): '严重肥胖'
}

for (lower, upper), status in bmi_status.items():
    if lower <= bmi < upper:
      print('您的BMI指数为%.1f, 属于%s' % (bmi, status))
      break
else:
    print('您的BMI指数为%.1f, 属于严重肥胖' % bmi)

dramatic36 发表于 2024-4-17 12:03

谢谢啦。学python的教程又多了一个案例

wkdxz 发表于 2024-4-17 12:12

wjbg2022 发表于 2024-4-17 11:40
height = float(input('请输入身高(米): '))
weight = float(input('请输入体 ...

这个解包写法很简洁,赞{:1_921:}

schoolclub 发表于 2024-4-17 13:22

height = float(input('请输入身高(cm): '))
weight = float(input('请输入体重(kg): '))

bmi = weight / (height ** 2)*10000

bmi_status = {
    (0, 15.5): '严重过轻',
    (15.5, 18.5): '过轻',
    (18.5, 25): '正常',
    (25, 28): '过重',
    (28, 32): '肥胖',
    (32, float('inf')): '严重肥胖'
}

for (lower, upper), status in bmi_status.items():
    if lower <= bmi < upper:
      print('您的BMI指数为%.1f, 属于%s' % (bmi, status))
      break
else:
    print('您的BMI指数为%.1f, 属于严重肥胖' % bmi)


给你把代码优化了下。你这个输入身高是米确实不太符合习惯

backaxe 发表于 2024-4-17 13:24

学习了,新的知识又增加了

不知道改成啥 发表于 2024-4-17 13:38

翻译了个js版本,我的体重竟然是严重过轻。。const height = parseFloat(prompt('请输入身高(米): '));
const weight = parseFloat(prompt('请输入体重(千克): '));

const bmi = weight / (height ** 2);

const bz = ;
const ms = ['严重过轻', '过轻', '正常', '过重', '肥胖', '严重肥胖'];
let a;
for (let i of bz) {
    if (bmi < i) {
      a = `您的BMI指数为${bmi.toFixed(1)}, 属于${ms}`;
      break;
    }
}

if (a) {
    console.log(a);
} else {
    console.log(`您的BMI指数为${bmi.toFixed(1)}, 属于${ms}`);
}

pastorcd 发表于 2024-4-17 13:45

谢谢楼主分享

hayakawa 发表于 2024-4-17 14:28

果然还是Python语言简洁
页: [1] 2
查看完整版本: python:计算身高体重指数bmi