当前位置:首页>python>Python编程题:21.P5714 【深基3.例7】肥胖问题

Python编程题:21.P5714 【深基3.例7】肥胖问题

  • 2026-08-28 11:30:30
Python编程题:21.P5714 【深基3.例7】肥胖问题

点击蓝字 关注我们

今天要做的是来自洛谷网站的P5714 【深基3.例7】肥胖问题。

https://www.luogu.com.cn/problem/P5714

有账号的可以上去做做。

P5714 【深基3.例7】肥胖问题

题目描述

BMI 指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是m/h²,其中 m 是指体重(千克),h 是指身高(米)。不同体型范围与判定结果如下:

  • 小于 18.5:体重过轻,输出 Underweight;

  • 大于等于 18.5 且小于 24:正常体重,输出 Normal;

  • 大于等于 24:肥胖,不仅要输出 BMI 值(使用 cout 的默认精度),然后换行,还要输出 Overweight;

现在给出体重和身高数据,需要根据 BMI 指数判断体型状态并输出对应的判断。

对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 0,不要输出后缀 0。

请注意,保留六位有效数字不是保留六位小数。例如 123.4567 应该输出为 123.457,5432.10 应该输出为 5432.1。

输入格式

共一行。

第一行,共 2 个浮点数,m,h,分别表示体重(单位为 kg),身高(单位为 m)。

输出格式

输出一行一个字符串,表示根据 BMI 的对应判断。特别地,对于 Overweight 情况的特别处理请参照题目所述。

输入输出样例

说明/提示

对于所有数据,40≤m≤120,1.4≤h≤2.0。m 和 h 的小数点后不超过三位

解题思路

输入:身高和体重

处理:计算BMI值,判断BMI值大小。有三种情况,用多分支语句。

先输出 BMI 值:四舍五入保留 6 位有效数字,去掉末尾多余的 0

换行

再输出 Overweight

输出:不同的结果。

解题步骤:

1、获取输入的值:身高、体重。

2、计算BMI值大小。

3、判断BMI值。

4、输出结果。

知识点

  • 字符输入 input() 获取字符串,split()分割数据,再用map() float()转换成浮点数。

    a,b=map(float,input().split())

  • 多分支语句if-elif-else

  • %f:浮点数

  • %e:科学计数法(小写’e’)

  • %g:%f和%e的简写,会根据数值的大小选择最合适的表示方式。

  • 保留n位有效数字:%.ng

    常用的%.nf是保留小数点后n位。

%.ng会自动识别数值,若整数部分有m位,m不足n位就会保留n-m位小数。整数部分m大于n位了,那么就会采用科学技术法,保留n位数值。如下:

参考代码及解析

1、m, h = map(float, input().split())

读取两个浮点数:体重 m、身高 h。

2、bmi = m / (h ** 2):计算 BMI

3、if bmi < 18.5:    print("Underweight")elif 18.5 <= bmi < 24:    print("Normal")

前两类直接输出文字。

4、else:    print("{0:.6g}".format(bmi)) 

    print("Overweight")

%.6g / {:.6g} 是 Python 格式化符号:

6g:6 位有效数字

如果你觉得意犹未尽,那就趁热打铁,继续挑战一下吧!

在Python中,使用格式化输出时,关于%f和%g的区别,以下描述正确的是( )。

A. %f和%g都用于整数格式化输出,但%g会去除整数部分末尾的零

B. %f默认保留小数点后6位,而%g在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法

C. %f和%g在格式化输出浮点数时,默认都保留小数点后6位,但%g会去除小数部分末尾的零

D. %f用于科学计数法格式化输出,而%g用于普通小数格式化输出

点击空白处查看答案

B

最新文章

随机文章