问题:
您的任务是编写一个程序,该程序将身高(米)和体重(公斤)作为输入,并输出相应的BMI类别。
BMI是您的体重与身高之比的量度。对于许多人来说,它已过时且不准确,但这并不重要!
BMI可以使用以下公式计算:
BMI = (mass in kilograms) / (height in meters)^2
类别将定义如下:
BMI <18.5:“体重不足”
18.5 <= BMI <25:“正常”
25 <= BMI:“超重”
为了挑战,我忽略了所有“极端”类别。另外,由于某些数字(例如“ 25”)位于2个类别之间,因此我略微调整了界限,因此有明确的答案。
您可以编写函数或完整程序。
输入:
输入可以采用任何合理的形式。两个数字(或字符串),可以是2个单独的参数,也可以是一个字符串。包含2个数字的数组/列表,带有“ weight”和“ height”键的字典...应该支持十进制值。您可以假设输入将始终有效(没有负值,并且高度永远不会为0)。
输出:
输出将是一个字符串,其中包含不区分大小写的类别名称。字符串必须与上面的类别名称完全匹配,忽略大小写。可以将其输出到stdout,返回(对于函数)或写入文件。
测试用例(体重,身高=>结果):
80, 1 => "Overweight"
80, 2 => "Normal"
80, 3 => "Underweight"
50, 1 => "Overweight"
50, 1.5 => "Normal"
50, 2 => "Underweight"
Edge Cases:
41, 1.5 => "Underweight" (18.2 BMI)
42, 1.5 => "Normal" (18.667 BMI)
56, 1.5 => "Normal" (24.889 BMI)
57, 1.5 => "Overweight" (25.3 BMI)
73, 2 => "Underweight" (18.25 BMI)
74, 2 => "Normal" (18.5 BMI)
99, 2 => "Normal" (24.75 BMI)
100, 2 => "Overweight" (25 BMI)
这是一些伪代码,显示了示例实现:
function bmi_category(weight, height):
var bmi = (weight / (height**2))
if (bmi < 18.5):
return "Underweight"
if (18.5 <= bmi < 25):
return "Normal"
if (25 <= bmi):
return "Overweight"
这是代码高尔夫球,因此获胜的字节数最少。
(是的,在大多数语言中,这项任务极其琐碎。最近的大多数挑战似乎比平时要难,因此我认为我会发布一个更易于访问的挑战)。
注意!发布此挑战后一个小时,由于注释中指出的范围存在“漏洞”,因此我不得不稍作修改范围。请查看新范围。