我现在陷入了创建一个for循环的泥潭。
以下是我的目标:我想创建一个列表,其中包含每个年龄组的人口比例,例如: 5-10年龄组的人口比例为500/2000 = 0.25
人口= 2000,其中存在3个年龄段:"5-10“、"11-20”、"21-30“No.每个年龄组的人数分别为: 500,700,800
这是我所做的:
n_pop = 2000
label_list = ['5-10', '11-20', '21-30']
sub_pop = [500, 700, 800]
proportion = []
for i in range(len(sub_pop)):
proportion = sub_pop[i]/ n_pop
print(proportion)不确定我的代码哪里出错了。
发布于 2018-09-15 12:07:17
你就快到了!
只需将值追加到列表proportion.append(sub_pop[i]/ n_pop),而不是将它们赋值给列表
for i in range(len(sub_pop)):
proportion.append(sub_pop[i]/ n_pop)发布于 2018-09-15 12:21:08
你应该指定你的预期结果是什么。因为您已经将proportion声明为一个空数组,所以我假设您想要填充它。
使用循环的每次迭代都会覆盖变量proportion。
for i in range(len(sub_pop)):
proportion = sub_pop[i]/ n_pop
print(proportion)循环的第一次迭代,例如,当i为0时,proportion等于浮点数,即第一个比例。然后,当它是1时,你覆盖它,然后它等于第二个比例。第三种情况也是如此。
正如Sruthi建议的那样,你需要用append添加这个列表(而不是用一个全新的值覆盖你的空列表)。https://www.programiz.com/python-programming/methods/list/append
如果proportion的用途是用来存储你所有的比例,我也会把它重命名为proportions。清晰的变量名可以做很多事情来避免混淆。
发布于 2018-09-16 00:35:50
这将是一个尝试使用dictionary的好地方,如下所示如何:
pop = 2000
age_groups = {'5-10': 500, '11-20': 700, '21-30': 800}
proportion = {}
for k, v in age_groups.items():
percentage = v/2000
proportion[k] = int(percentage * 100)
print(proportion, '\n')
for i in proportion:
print(f"Age group {i} is {proportion[i]}% of Population {pop}")我包含了两个print方法,以帮助您了解如何处理此代码
(xenial)vash@localhost:~/python/stack_overflow$
loop_pop.py 3.7
{' 5-10 ':25,' 11-20 ':35,' 21-30 ':40} 5-10年龄组占2000年人口的25%,11-20年龄组占人口的35%,21-30年龄组占人口的40%
https://stackoverflow.com/questions/52341439
复制相似问题