Я переделываю задание, по которому я не получил идеальный результат, и, похоже, я не понимаю, как пометить свой список цифрами, а также пытаюсь напечатать его в одной строке.

Я пытался добавить номера в свой список, чтобы классифицировать, но это было не так, как хочет мой наставник. Она просит, чтобы я нумеровал пункты в списке, используя счетчик цикла for.

games = ["Super Mario Maker 2", "Bayonetta 3", "Dark Souls 4", "Astral Chain", "Persona 5 Royale"]

for n in range(0, len(games)):
    print("Game: " + games[n])

В настоящее время это распечатывает все в списке от звезды до конца. Это начинается с игры: (1-й элемент в списке) и так далее. Я пытаюсь выяснить, как маркировать их по мере их появления, чтобы они печатали что-то вроде Game 1: (1st item), Game 2: (2nd item) и т. Д., Печатая все в одной строке с запятыми между ними.

-1
RUSSELL YANG 1 Май 2019 в 19:44

6 ответов

Лучший ответ

Добавьте n к выводу.

for n in range(0, len(games)): 
    print("Game {}: {}".format(n, games[n]))
0
Roman Alexandrovich 1 Май 2019 в 17:54

Это на самом деле очень просто, вы можете просто использовать:

  • enumerate с необязательным аргументом start чтобы получить индексы, начиная с 1

  • выражение генератора для циклического перемещения по значениям списка

  • f-string для вставки переменных в строку

  • str.join для объединения элементов в одну строку с запятыми между

games = ["Super Mario Maker 2", "Bayonetta 3", "Dark Souls 4", "Astral Chain", "Persona 5 Royale"]

print(', '.join(f'Game {i}: {game}' for i, game in (enumerate(games, start=1))))

Выход:

Game 1: Super Mario Maker 2, Game 2: Bayonetta 3, Game 3: Dark Souls 4, Game 4: Astral Chain, Game 5: Persona 5 Royale
0
ruohola 1 Май 2019 в 20:32

С enumerate:

for idx, val in enumerate(games): 
      print('{}: {}'.format(idx, val))
# Out:
# Game 0: Super Mario Maker 2
# Game 1: Bayonetta 3
# Game 2: Dark Souls 4
# Game 3: Astral Chain
# Game 4: Persona 5 Royale

Или с помощью enumerate варианта start :

for idx, val in enumerate(games, start=1): 
    print('{}: {}'.format(idx, val))
# Out:
# Game 1: Super Mario Maker 2
# Game 2: Bayonetta 3
# Game 3: Dark Souls 4
# Game 4: Astral Chain
# Game 5: Persona 5 Royale

В одной строке:

print(*['Game {}: {}'.format(i, v) for i,v in enumerate(games, start=1)], sep='\n')  
1
user2314737 1 Май 2019 в 17:21

Вы можете распечатать все элементы в списке, используя объединение и форматирование строки на основе индекса каждого элемента в списке.

', '.join(f'Game {i+1}: {games[i]}' for i in range(len(games)))

Результат:

'Game 1: Super Mario Maker 2, Game 2: Bayonetta 3, Game 3: Dark Souls 4, Game 4: Astral Chain, Game 5: Persona 5 Royale'
1
âńōŋŷXmoůŜ 1 Май 2019 в 17:54

Используйте enumerate:

for counter, value in enumerate(some_list):
    print(counter, value)

Итак, для вашего примера:

for i, game in enumerate(games):
   print("Game {0}: {1}".format(i+1, game))

Для Python 3.6 или новее:

for i, game in enumerate(games):
    print(f"Game {i + 1}: {game}")

Как вы можете видеть, f-строки очень полезны и пригодятся для того, что вы пытаетесь сделать!

РЕДАКТИРОВАТЬ: печатать одной строкой:

print(', '.join([f"Game {i + 1}: {game}" for i, game in enumerate(games)]))
1
xibalba1 1 Май 2019 в 22:31

Добавить это после игры в строке

str(n+1) 

Так должно быть так

'game '+str(n+1) +' rest of the string'
-1
Amr Bashir 1 Май 2019 в 17:02