【问题描述】按照世卫组织的标准:
男性:(身高cm-80)×70%=标准体重
女性:(身高cm-70)×60%=标准体重
标准体重正负10%为正常体重(含10%)
标准体重正负10%~20%为体重过重或过轻(含20%)
标准体重正负20%以上为肥胖或体重不足
请分别计算输出男性和女性正常体重、体重过重、体重过轻、肥胖和体重不足的人数。
【输入形式】csv文件格式,文件名为whdata.csv。
【输出形式】标准输出。
输出
代码测试中我感觉出现了些小问题,因为测试结果与本编程下的测试结果出现相反的情况
在于这里的问题:
原本应该是这样的:
就先倒过来写,反正这样过了,就直接开始列表套娃:
import pandas as pd
if __name__ == '__main__':
[print(pd.DataFrame([[x.count('A1'), x.count('A0')], [x.count('B1'), x.count('B0')], [x.count('C1'), x.count('C0')], [x.count('E1'), x.count('E0')], [x.count('D1'), x.count('D0')]], index=['正常', '不足', '过轻', '过重', '肥胖'], columns=['男性','女性'])) for x in [[('A0' if 0.9<=x[2]/((x[1]-70)*0.6)<=1.1 else ('C0' if 0.8<=x[2]/((x[1]-70)*0.6)<0.9 else ('B0' if x[2]/((x[1]-70)*0.6)<0.8 else('D0' if 1.1<x[2]/((x[1]-70)*0.6)<=1.2 else 'E0')))) if x[0]==0 else ('A1' if 0.9<=x[2]/((x[1]-80)*0.7)<=1.1 else ('C1' if 0.8<=x[2]/((x[1]-80)*0.7)<0.9 else ('B1' if x[2]/((x[1]-80)*0.7)<0.8 else('D1' if 1.1<(x[2]/((x[1]-80)*0.7))<=1.2 else 'E1')))) for x in pd.read_csv('whdata.csv').values]]]
仅供参考,用选择结构来写更快