我正在尝试将多个“患者”的数据相加,我需要能够输出一组患者的平均所需蛋白质,碳水化合物,脂肪和千焦耳
我仍在学习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加起来时,似乎需要增加患者的蛋白质,碳水化合物,脂肪和千卡的蛋白质时,就将患者的蛋白质加在一起,这样我就可以除以患者数以获得平均值。
答案 0 :(得分:0)
我很确定您在这里将索引排序错误:
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]
将超出当前病人的所有测量值,并给出索引超出范围的误差。