Python 为什么我的循环只返回一个答案,而不是整个列表的答案?
我正试着为兰姆达学校做一个课前作业,循环让我最头疼。我有一个2d名单,上面有身高和体重。高度以厘米为单位,所以我使用了一个循环将其转换为米。然后,为了计算体重指数,我试着跑l;哦,但它一直只给我最后一个。让我键入代码,使其更有意义Python 为什么我的循环只返回一个答案,而不是整个列表的答案?,python,loops,Python,Loops,我正试着为兰姆达学校做一个课前作业,循环让我最头疼。我有一个2d名单,上面有身高和体重。高度以厘米为单位,所以我使用了一个循环将其转换为米。然后,为了计算体重指数,我试着跑l;哦,但它一直只给我最后一个。让我键入代码,使其更有意义 person_data2 [['John', 84.5, 184], ['Ryan', 81.8, 177], ['Bobby', 86.1, 190], ['Pete', 92.2, 188], ['Esther', 69.6, 159], ['Jane
person_data2
[['John', 84.5, 184],
['Ryan', 81.8, 177],
['Bobby', 86.1, 190],
['Pete', 92.2, 188],
['Esther', 69.6, 159],
['Jane', 72.0, 166],
['Samantha', 51.3, 162]]
使用下面的循环将高度从厘米改为米,效果良好
for i, person in enumerate(person_data2):
person_data2[i][2] = person_data2[i][2] / 100
print(person_data2)
[['John', 84.5, 1.84],
['Ryan', 81.8, 1.77],
['Bobby', 86.1, 1.9],
['Pete', 92.2, 1.88],
['Esther', 69.6, 1.59],
['Jane', 72.0, 1.66],
['Samantha', 51.3, 1.62]]
体重指数=体重/(身高^2)
所以我做了这个
for i, person in enumerate(person_data2):
BMI2 = ((person_data2[i][1])/(person_data2[i][2]**2))
print (BMI2)
19.547325102880652
为什么它只运行最后一个嵌套列表BMI,即Samanthas BMI,而不运行其余的?TBH我不完全理解循环,从cm到m的转换有点复制粘贴和反复试验。有人能指出我做错了什么吗?如果您知道我可以使用哪些资源来帮助我解决这个问题,我也会非常感激。欢迎来到StackOverflow。
您的print()
已超出循环,只需将代码更改为此,然后将print()
放入循环:
for i, person in enumerate(person_data2):
BMI2 = ((person_data2[i][1])/(person_data2[i][2]**2))
print (BMI2)
如果只想打印值,在循环内使用“打印”将有助于:
for i, person in enumerate(person_data2):
BMI2 = ((person_data2[i][1])/(person_data2[i][2]**2))
print (BMI2)
输出:
24.958648393194707
26.109993935331477
23.850415512465375
26.086464463558173
27.530556544440483
26.1286108288576
19.547325102880652
[24.958648393194707,
26.109993935331477,
23.850415512465375,
26.086464463558173,
27.530556544440483,
26.1286108288576,
19.547325102880652]
但如果要在循环结束时返回列表,请尝试将值存储在如下列表中:
BMI2=[]
for i, person in enumerate(person_data2):
x = ((person_data2[i][1])/(person_data2[i][2]**2))
BMI2.append(x)
print (BMI2)
输出:
24.958648393194707
26.109993935331477
23.850415512465375
26.086464463558173
27.530556544440483
26.1286108288576
19.547325102880652
[24.958648393194707,
26.109993935331477,
23.850415512465375,
26.086464463558173,
27.530556544440483,
26.1286108288576,
19.547325102880652]
BMI2
在每个循环迭代中被覆盖。由于您的打印
在循环之外,因此输出将是上次计算的BMI2
(上次迭代的输出)
尝试以下操作以打印数据集中每个人的bmi:
for i, person in enumerate(person_data2):
BMI2 = ((person_data2[i][1])/(person_data2[i][2]**2))
print (BMI2)
在循环内打印。按照你的方式,你只打印最后一个值。你想让BMI2成为一个列表吗?是的,我想让BMI2返回一个包含所有人的列表。我想,这件小事让我毛骨悚然。我刚开始学习Python,但慢慢掌握了窍门。谢谢@Chiamakaezaeamama祝你学习python好运,并一直努力提高你的技能。你棒极了!非常感谢你!谢谢,这就是我所要做的!