Как исправить это вложенный цикл в Python - PullRequest
0 голосов
/ 15 мая 2019

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

Я пытался изменить синтаксис, но ничего не работает.

states = ["virginia", "new jersey", "north carolina", "california"]
capitals = ["richmond", "trenton", "raleigh", "sacramento"]

for x, name in enumerate(states):
    for y name in enumerate(capitals):
        print("The capital of " + states[x] + "is " + capitals[y] + ".")

Это ошибка, которую я продолжаю получать.

File "<ipython-input-11-9f2d009ec38f>", line 2
    for y name in enumerate(capitals):
             ^
SyntaxError: invalid syntax

Ответы [ 5 ]

2 голосов
/ 15 мая 2019

Недопустимый синтаксис, потому что вам не хватает ',' между y и именем.

В любом случае, вы можете использовать встроенную функцию zip.

for state, capital in zip(states, capitals):
    print("The capital of " + state + "is " + capital)
0 голосов
/ 15 мая 2019

Здесь нет необходимости во вложенном цикле, так как в ваших данных есть отношение «один к одному» (у каждого штата есть 1 заглавная буква, а у каждого заглавная 1). Вы можете использовать zip для создания пар или если вы хотите использовать индексное значение внутри цикла, вы можете сделать:

states = ["virginia", "new jersey", "north carolina", "california"]
capitals = ["richmond", "trenton", "raleigh", "sacramento"]
for i in range(len(states)):
    print("The capital of "+states[i]+" is "+capitals[i])

или с использованием так называемых f-строк :

states = ["virginia", "new jersey", "north carolina", "california"]
capitals = ["richmond", "trenton", "raleigh", "sacramento"]
for i in range(len(states)):
    print(f"The capital of {states[i]} is {capitals[i]}")

В обоих случаях вывод:

The capital of virginia is richmond
The capital of new jersey is trenton
The capital of north carolina is raleigh
The capital of california is sacramento

Обратите внимание, что мой метод будет работать правильно, если количество элементов states равно количеству элементов capitals.

0 голосов
/ 15 мая 2019

Вы должны попробовать это:

states = ["virginia", "new jersey", "north carolina", "california"]
capitals = ["richmond", "trenton", "raleigh", "sacramento"]

for state, capital in zip(states, capitals):
    print("The capital of " + state + "is " + capital + ".")

вывод:

The capital of virginiais richmond.
The capital of new jerseyis trenton.
The capital of north carolinais raleigh.
The capital of californiais sacramento.
0 голосов
/ 15 мая 2019

Я не думаю, что здесь необходим вложенный цикл. Ваши списки имеют одинаковую длину, поэтому enumerate() уже сообщает вам индекс. Я бы упростил это до:

states = ["virginia", "new jersey", "north carolina", "california"]
capitals = ["richmond", "trenton", "raleigh", "sacramento"]

for x, name in enumerate(states):
    print("The capital of " + name + " is " + capitals[x] + ".")

Что дает:

Столица Вирджинии - Ричмонд.

Столица Нью-Джерси - Трентон.

Столица Северной Каролины - Роли.

Столица Калифорнии - Сакраменто.

0 голосов
/ 15 мая 2019

Вы пропустили "," во втором цикле for for y, name in enumerate(capitals):

...