我正在尝试将来自多个‘患者’的数据加在一起,我需要能够为这组患者输出平均所需的蛋白质、碳水化合物、脂肪和千焦耳
我还在学习python,我已经阅读了大量的其他问题,但似乎都没有用。
我在第29行得到了sum_f的错误,但我认为sum_p和sum_f也可能有问题
我之前得到的int对象是不可订阅的,但我想我已经解决了这个问题
patient_input = int(input("Enter number of patients:"))
a = 1
patient_data=[]
if patient_input > 0:
while a <= patient_input :
a_str = str(a)
print ("Patient " + (a_str))
protein = int(input("Amount of protein (g) required:"))
while protein <= 0:
print ("Please enter a nonnegative number" )
carbohydrates = int(input("Amount of carbohydrates (g) required:"))
while carbohydrates <= 0:
print ("Please enter a nonnegative number" )
fat= int(input("Amount of fat (g) required:"))
while fat <= 0:
print ("Please enter a nonnegative number" )
kilojules = 4.18 * (4*protein + 4*carbohydrates + 9.30*fat)
a_str = [protein, carbohydrates, fat, kilojules]
patient_data.append(a_str)
a = a + 1
print(patient_data)
^这似乎很好我在过去的几个小时里一直在修复其中的错误
b = int((patient_input) + 1)
sum_p = sum(int(i)for i in patient_data [0][0:b])
average_p =(int(b))*(sum_p)
sum_c = sum(int(i)for i in patient_data [1][0:b])
average_c = str((b)*(sum_c))
sum_f = sum(int(i)for i in patient_data [2][0:b])
average_f = str((b)*(sum_f))
sum_k = sum(int(i)for i in patient_data [3][0:b])
average_k = str((b)*(sum_k))
print ("Averages:")
print ("Protein (g):" (average_p))
print ("Carbohydrates (g):" (average_c))
print ("Fats (g):" (average_f))
print ("Kilojules (kJ):" (average_k))
当sum_p相加时,它似乎是在我需要的时候将患者的蛋白质、碳水化合物、脂肪和千焦耳相加,这样我就可以除以患者的数量来得到平均值
发布于 2019-04-25 03:40:47
我敢肯定你把这里的索引顺序搞错了:
sum_p = sum(int(i)for i in patient_data [0][0:b])
第一个[0]
告诉您使用第一个患者,然后[0:b]
将为该患者进行不同的测量。尝试切换它们:
sum_p = sum(int(i)for i in patient_data[0:b][0])
注意:由于您拥有的患者多于每个患者的测量值,因此[0:b]
将超出当前患者的所有测量值,并给出超出范围的索引。
https://stackoverflow.com/questions/55837312
复制相似问题