Использование 2 для цикла - PullRequest
0 голосов
/ 17 октября 2019

Я хочу получить информацию от пользователя и показать ее с помощью цикла for. Я написал этот код:

name=["Name","Age","Gender"]
n=str(input())
a=int(input())
g=str(input())
nameinput=[n,a,g]
for i in name:
    for j in nameinput:
        print(i,j)

Я ожидаю, что выходной код будет:

Имя Фуад, Возраст 18, Пол M

, нофактический результат составляет

Имя Фуад Имя 18 Имя М Возраст Фуад Возраст 18 Возраст М Пол Фуад Пол 18 Пол М

Как я могу решить эту проблему, и, пожалуйста,объясните, почему мой код не работает

1 Ответ

4 голосов
/ 17 октября 2019

Вы делаете вложенные циклы, которые повторяют декартово произведение (каждый элемент name связан с каждым элементом nameinput). Вы хотите выполнить попарно итерацию нескольких итераций, что достигается с помощью zip:

for i, j in zip(name, nameinput):
    print(i,j)

Работа zip может быть проиллюстрированав следующем примере:

list(zip([1, 2, 3], [4, 5, 6]))
# [(1, 4), (2, 5), (3, 6)]

Тем не менее, вложенные циклы подойдут:

>>> [(i, j) for i in [1, 2, 3] for j in [4, 5, 6]]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]

Если вы шаг за шагом продумываете код цикла, эта логика должна проясниться.

...