В Python, есть ли способ, чтобы распечатать списки в строку, используя.обозначение формата?
Простое упражнение Madlibs:
STORY = "This morning I woke up and felt %s because %s was going to finally %s over the big %s %s."
WORD_types = ('an adjective','a pronoun','a verb','an adjective','a noun')
WORD_values = []
for s in WORD_types:
print "Please give {}.".format(s)
s = raw_input()
WORD_values.append(s)
print STORY % tuple(WORD_values)
Есть способ выполнить эту последнюю строку .обозначение формата?
STORY = "This morning I woke up and felt {} because {} was going to finally {} over the big {} {}."
WORD_types = ('an adjective','a pronoun','a verb','an adjective','a noun')
WORD_values = []
for s in WORD_types:
print "Please give {}.".format(s)
s = raw_input()
WORD_values.append(s)
print STORY.format(WORD_values)
Это приводит к следующей ошибке:
Traceback (most recent call last):
File "Madlibs.py", line 12, in <module>
print STORY.format(WORD_values)
IndexError: tuple index out of range
1 ответ:
Вы можете использовать
*
, чтобы распаковать список:print STORY.format(*WORD_values)
Пример Вывода:
Please give an adjective optimistic Please give a pronoun I Please give a verb drive Please give an adjective scary Please give a noun hill This morning I woke up and felt optimistic because I was going to finally drive over the big scary hill.
Вот соответствующая документация: распаковка списков аргументов и еще примеры форматов.