问题描述
python的新手,并尝试学习循环。尝试从两个列表中获取值来计算每个人的BMI,但一直得到一个空白列表。
heights = [184,177,190,188,159,166]
weights = [84.9,81.8,86.1,92.2,69.6,72.0 ]
BMIS = []
for i,bmi in BMIS:
BMIS.append(weights[i] / heights[i])
print(BMIS)
解决方法
您正在遍历BMIS,这是一个空列表。遍历高点或权重
heights = [184,177,190,188,159,166]
weights = [84.9,81.8,86.1,92.2,69.6,72.0 ]
BMIS = []
for i in range(len(heights)):
BMIS.append(weights[i] / heights[i])
print(BMIS)
,
您要遍历的列表中没有任何内容。 for循环主体中的代码将永远不会执行。您可以将for循环更改为:
for height,weight in zip(heights,weights):
BMIS.append(weight/height)
,
您正在遍历一个空列表。只需使用zip
一次遍历每个列表即可。
for height,weights):
BMIS.append(weight / height)
此理解将产生相同的列表:
BMIS = [weight/height for height,weights)]
,
假设权重列表的高度始终具有相同的len(),则可以循环使用它作为范围
heights = [184,166]
weights = [84.9,72.0 ]
BMIS = []
for i in range(len(heights)):
BMIS.append(weights[i] / heights[i])
print(BMIS)
,
欢迎使用StackOverFlow。让我们检查一下您的main for循环:
for i,bmi in BMIS:
BMIS.append(weights[i] / heights[i])
自初始化BMIS = []
以来,您正在遍历一个空列表。更好的方法是在如下范围内进行迭代:
for i in range(0,len(heights)):
BMIS.append(weights[i] / heights[i])
这样,您将获得每个列表的第i个位置,进行除法并将结果添加到BMIS
列表中。