Как сделать так, чтобы каждый город записывался в отдельный лист
У меня есть код, в который пользователь пишет количество стран, их названия, количество городов и их названия. На данный момент он выглядит так:
n = int(input('Напиши количество стран: \n'))
A = []
x = 1
while x != n+1:
w = input('Напиши название страны ')
A.append(w)
print (x, ' из ', n)
x += 1
print(A)
q = int(input('Введите количество городов в странах(к примеру если у тебя 4 города в Украине и 4 в России, сюда ты тоже пишешь 4)'))
Y = []
v = 1
while v != q+1:
for i in range(len(A)):
print('Введите название ', v,' из ', q, ' города в стране', A[i])
rt = input()
Y.append(rt)
v += 1
И при вводе данных:
2
Россия
Китай
2
Мой код говорит:
Введите название 1 из 2 города в стране Россия
Введите название 2 из 2 города в стране Китай
Я же хочу, чтобы он просил у пользователя сначала ввести 2 российских города, а потом 2 китайских и всё это записывал в общий лист скажем k, либо в идеале чтобы у каждой страны был свой лист, но я не знаю как это реализовать. Что я делаю не так?
Ответы (2 шт):
Рекомендую использовать циклы for вместо while в случае итераций с константным шагом Для хранения городов именно в списках можно для каждой страны создать список с его городами, на позиции i в листе Y будет список с городами страны i.
n = int(input('Напиши количество стран: \n'))
A = []
for x in range(n):
w = input('Напиши название страны ')
A.append(w)
print (x+1, ' из ', n)
print(A)
q = int(input('Введите количество городов в странах(к примеру если у тебя 4 города в Украине и 4 в России, сюда ты тоже пишешь 4)'))
Y = [[] for i in range(n)]
for i in range(len(A)):
for j in range(q):
print('Введите название ', j+1,' из ', q, ' города в стране', A[i])
rt = input()
Y[i].append(rt)
Можно сделать ввод списками
list_country = [lc.strip() for lc in input('Введите список стран (через запятую): \n').split(',')]
data = {}
for lc in list_country:
list_city = [lc.strip() for lc in input('Введите список городов страны '+lc+' (через запятую): \n').split(',')]
data[lc] = list_city
или так
cnt_country = int(input('Количество стран: \n'))
list_country = {input('Введите страну №'+str(lc+1)+': \n'):input('Кол-во городов: \n') for lc in range(cnt_country)}
for key, value in list_country.items():
list_city = [input('Город №'+str(i)+' страны '+str(key)+': \n') for val, i in enumerate(range(int(value)))]
list_country[key] = list_city
print(list_country)