首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建BMI表

创建BMI表
EN

Stack Overflow用户
提问于 2020-02-07 19:50:46
回答 2查看 95关注 0票数 0

我试图创建一个BMI表,列的高度从58英寸增加到76英寸,2英寸的增量是100磅到250磅,10磅的增量是100磅到250磅,我已经得到了行和列,但我不知道如何计算表中不同的BMI值。

这是我的密码:

代码语言:javascript
复制
header = '\t{}'.format('\t'.join(map(str, range(100, 260, 10))))
rows = []
for i in range(58, 78, 2):
  row = '\t'.join(map(str, (bmi for q in range(1, 17))))
  rows.append('{}\t{}'.format(i, row))
  print(header + '\n' + '\n'.join(rows))

这是输出:

代码语言:javascript
复制
  100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250
58 
60  
62  
64  
66  
68  
70  
72  
74  
76  

我要做的是填写图表。例如,58英寸和100磅的身高是22.4的BMI。58英寸和110磅的身高是24.7磅,依此类推。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-07 20:10:22

我不知道您是如何得到22.4和22.7的预期结果的,但是如果您将BMI定义为体重lb /(身高)^2* 703,您可以这样做:

代码语言:javascript
复制
In [16]: weights = range(100, 260, 10)
    ...: header = '\t' + '\t'.join(map(str, weights))
    ...: rows = [header]
    ...: for height in range(58, 78, 2):
    ...:     row = '\t'.join(f'{weight/height**2*703:.1f}' for weight in weights)
    ...:     rows.append(f'{height}\t{row}')
    ...: print('\n'.join(rows))
    ...:
        100     110     120     130     140     150     160     170     180     190     200     210     220     230     240     250
58      20.9    23.0    25.1    27.2    29.3    31.3    33.4    35.5    37.6    39.7    41.8    43.9    46.0    48.1    50.2    52.2
60      19.5    21.5    23.4    25.4    27.3    29.3    31.2    33.2    35.1    37.1    39.1    41.0    43.0    44.9    46.9    48.8
62      18.3    20.1    21.9    23.8    25.6    27.4    29.3    31.1    32.9    34.7    36.6    38.4    40.2    42.1    43.9    45.7
64      17.2    18.9    20.6    22.3    24.0    25.7    27.5    29.2    30.9    32.6    34.3    36.0    37.8    39.5    41.2    42.9
66      16.1    17.8    19.4    21.0    22.6    24.2    25.8    27.4    29.0    30.7    32.3    33.9    35.5    37.1    38.7    40.3
68      15.2    16.7    18.2    19.8    21.3    22.8    24.3    25.8    27.4    28.9    30.4    31.9    33.4    35.0    36.5    38.0
70      14.3    15.8    17.2    18.7    20.1    21.5    23.0    24.4    25.8    27.3    28.7    30.1    31.6    33.0    34.4    35.9
72      13.6    14.9    16.3    17.6    19.0    20.3    21.7    23.1    24.4    25.8    27.1    28.5    29.8    31.2    32.5    33.9
74      12.8    14.1    15.4    16.7    18.0    19.3    20.5    21.8    23.1    24.4    25.7    27.0    28.2    29.5    30.8    32.1
76      12.2    13.4    14.6    15.8    17.0    18.3    19.5    20.7    21.9    23.1    24.3    25.6    26.8    28.0    29.2    30.4

让您在自己的代码中保持下来的可能是for q in range(1, 17),您需要将它转换为权重;您可以用for q in range(100, 260, 10)替换它,如果您愿意,可以直接使用公式,但是在这里,我们只是通过引入weights来避免重复。

票数 0
EN

Stack Overflow用户

发布于 2020-02-07 20:00:12

首先,应该删除最后的缩进打印语句。在放入每一行时,使用缩进的方法运行此代码会打印出一个表。其次,您想要更改的代码片段是

(体重指数Q值为(1,17))

因为BMI是质量和身高的函数,我会把你的迭代器I改为高度,Q改为质量,范围(1,17)到范围(100,260,10)。这是为了提高可读性。然后,将bmi替换为使用返回bmi的质量和高度的表达式。例如,

(质量高度(100,260,10))

我不相信BMI=mass*height,但是用真正的公式代替这个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60120173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档