###### 问题遇到的现象和发生背景
###### 问题相关代码,请勿粘贴截图
###### 运行结果及报错内容
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果
本练习的总体目标是:
读取文件中的数据,并以患者列表的形式存储;每个患者将由一个字典表示,具有三个键:"name", "weight"和"height"。
计算每位患者的BMI(身体质量指数),以及患者的平均BMI;检测哪些患者是正常的,哪些不是。
将结果写入另一个文件。
第 1 部分:导入数据并将其放入正确的数据结构中
编写一个import_lignes函数 ,该函数将文件名作为参数并返回文件的行列表,即字符串列表,其中列表的每个元素对应于文件的一行。请记住在执行 return 之前关闭文件。
编写一个函数separe ,它将一行(字符串)作为参数,并返回与该行患者对应的字典。为此,请使用提供给您的单独(行)函数并返回一个包含三个字符串的列表,该列表通过沿空格分隔线获得。在将它们存储在字典中之前,考虑将重量和高度转换为浮动。
例子:
separe ("Liliane 62 1.67 \ n") 返回 ['Liliane', '62', '1.67']。
separe( "Liliane 62 1.67 \ n" ) 必须返回 {'name': 'Liliane', 'weight': 62.0, 'height': 1.67}
编写一个list_patients_from_nom_fichier函数 ,该函数将文件名作为参数,并返回与该文件对应的患者列表(其中每个患者由一个字典表示)。
第 2 部分:处理数据
编写一个函数imc ,它将患者(字典)作为参数,并返回他的 BMI 舍入到小数点后两位数(记住round (number, 2)的存在和功能 )。BMI 计算如下:BMI = 体重/(尺寸2)。
编写一个函数imc_moyen ,它将患者列表作为参数,并返回患者的平均 BMI,四舍五入到小数点后两位。
编写一个list_names_patients_en_corpulence_normale函数,该函数将患者列表作为参数,并返回包含BMI 指示正常肥胖的患者姓名的列表,也就是说 BMI 是否在 18.5 和 25 之间(包括 )。
第 3 部分:将结果写入文件
警告:Caseine 的操作不允许您保留程序对文件所做的修改:在运行或评估结束时,一切都将重置为零。因此,要测试这部分,您需要从以下选项中进行选择:
要么在空闲下工作(见开头的段落),然后上传你的提交
要么使用 提供给您的display_console (file_name) 函数,该函数允许您向控制台显示其名称作为参数传递的文件的内容(请参阅主程序中的使用示例)。
写入函数produire_chaine 接受患者的参数,该患者返回由患者姓名组成的字符串,后跟一个空格,后跟四舍五入到两位小数的 BMI,后跟一个换行符。
编写一个函数ecrite_imc ,它将患者列表和目标文件的名称作为参数,并在文件中写入:
对于每个患者,一行包含他们的姓名,然后是他们的 BMI,用空格分隔(记住使用生产字符串函数),
然后我们写“Average BMI:”,后面是患者的平均BMI,四舍五入到小数点后两位。
然后,我们写“正常体型的患者姓名:”,然后回车,然后是体型正常的患者的姓名(每行一个名称)
您可以查阅 data -results1.txt文件以查看预期结果的示例(此示例使用的数据来自data1.txt文件)。
写入函数traitement_complet_donnees 以包含数据的文件名作为参数,然后写入结果并进行完整数据处理的文件名(也就是说,他读取,处理数据,并写入结果根据上一个问题中给出的说明)。您可以查阅results-data1.txt文件以查看对 complete_data_processing (“data1.txt”、“data-results1.txt”)的调用应该产生什么。
没有数据文件? 自己编?
这种题目,应该有训练数据吧?
这个部分不难吧,步骤以及告诉你了,自己动手丰衣足食