Не проходит нужное количество итераций в цикле for
d1 = {i:'-' for i in range(1,12)}
d2 = {}
n = input().split()
for j in n:
d2[n[0]] = [int(n[2])]
if d2 in d2[n[0]]:
d2[n[0]] += [int(n[2])]
n = input().split()
print(d2)
Надо ввести условно:
4 Quincy 135
6 Bootman 151
2 Audley 126
6 Sheldon 156
5 Bootman 147
4 Quincy 141
7 Pass 161
6 Foster 159
6 Larkins 151
5 Dowman 145
11 Kennett 174
7 Brooks 161
4 Warren 138
4 Hodges 136
Но цикл почему то проходит только 3 строки, и завершает выполнение. Как сделать чтобы цикл обрабатывал столько строк, сколько я введу?
Ответы (2 шт):
Автор решения: Dmitry
→ Ссылка
Ответ на вопрос: почему всего 3 итерации?
Потому что длина n = 3, и вы запускаете for для этих 3 членов списка.
Как исправить:
Вариант 1
использовать while до тех пор пока не будет пустой строки или проще, пока не нажмете Enter при стандартном вводе. Пример:
while True:
n = input()
if n:
# do something
s = n.split()
print(s)
else:
break
Вариант 2 (менее предпочтителен)
Определить количество строк в начале и использовать конструкцию for. Менее гибкий вариант, поскольку изначально надо знать сколько раз вы будете вводить данные. Пример:
how_many_rows = int(input("Введите количество строк (целое число)\n"))
for i in range(how_many_rows):
n = input().split()
# do something
print(n)
Автор решения: Namerek
→ Ссылка
from pprint import pprint
data = dict()
while line := input('Введите данне: '):
index, *_, code = line.split()
data[index] = data.get(index, []) + [int(code)]
pprint(data)
#{'11': [174],
# '2': [126],
# '4': [135, 141, 138, 136],
# '5': [147, 145],
# '6': [151, 156, 159, 151],
# '7': [161, 161]}