Answer the question
In order to leave comments, you need to log in
Creating a dictionary with a loop in python, what's wrong?
Good afternoon!
I need to create a dictionary using a loop or a function so that this dictionary has keys from the numbers from 1 to 20, and the values should be the squares of the keys.
My code:
for z in range(1, 21):
new_dict = {z : z**2 }
y = z + 1
new_dict.update({y : y**2})
if z == 21:
break
new_dict
On the output is:
{20: 400, 21: 441}
I don’t understand why z is not equated alternately with numbers from 1 to 20 and new values are not added to the cycle, why the cycle did not stop when the value z = 21
It seems that everything should be like this:
{1: 1, 2:4, 3:9, 4:16 ... } etc up to 20:400
Answer the question
In order to leave comments, you need to log in
new_dict = {}
for z in range(1, 21):
new_dict[z] = z ** 2
print(new_dict)
У тебя очень сложное построение кода друг мой, вот так было бы удобнее:
dict = []
for a in range(21):
dict.append(f'{a}:{a**2}')
print(dict)
Лучше всего тебе поможет разобраться визуализатор python. Там код выполняется пошагово и ты видешь на каком шаге твоя программа работает не правильно.
Вот ссылка клик
Вкратце, в цикле for у тебя 20 итераций. И внутри цикла каждую итерацию у тебя перезаписывается новый словарь new_dict. Поэтому на выходе ты получаешь словарь с двумя ключами с последний итерации.
Нужно создание словаря вынести перед циклом for
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question