цикл в питоне; создание списка, который содержит пропорции - PullRequest
0 голосов
/ 15 сентября 2018

В данный момент я застрял в колее, пытаясь создать цикл for.

Вот моя цель: я хочу создать список, содержащий долю людей в каждой возрастной группе, например: доля людей в возрастной группе 5-10 будет 500/2000 = 0,25

население людей = 2000. Из которых существует 3 возрастные группы: "5-10", "11-20", "21-30". Число людей в каждой возрастной группе соответственно: 500, 700, 800

* 1007.* это то, что я сделал:
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)

Не уверен, где я ошибся с кодом.

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Вы должны указать, каков ваш предполагаемый результат.Поскольку вы объявили proportion как пустой массив, я предполагаю, что вы хотите его заполнить.

Вы перезаписываете переменную proportion при каждой итерации цикла.

for i in range(len(sub_pop)):
    proportion = sub_pop[i]/ n_pop
    print(proportion)

Первая итерация цикла, например, когда i равен 0, proportion равен float, первая пропорция.Затем, когда оно равно 1, вы перезаписываете его, и оно равно пропорции секунда .То же самое относится и к третьему.

Как предложил Срути, вам нужно добавить в этот список (в отличие от перезаписи пустого списка новым значением) с помощью append.https://www.programiz.com/python-programming/methods/list/append

Я бы также переименовал proportion в proportions, если его использование предназначено для хранения всех ваших пропорций.Чистые имена переменных могут многое сделать, чтобы избежать путаницы.

0 голосов
/ 15 сентября 2018

Это было бы хорошим местом, чтобы попробовать использовать 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$ python3.7 loop_pop.py 
{'5-10': 25, '11-20': 35, '21-30': 40} 

Age group 5-10 is 25% of Population 2000
Age group 11-20 is 35% of Population 2000
Age group 21-30 is 40% of Population 2000
0 голосов
/ 15 сентября 2018

Ты почти у цели!

Просто добавьте значения в список proportion.append(sub_pop[i]/ n_pop) вместо назначения их в список

for i in range(len(sub_pop)):
    proportion.append(sub_pop[i]/ n_pop)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...