2017-12-05 7 views
2

Eine einfache Madlibs Übung:Gibt es in Python eine Methode zum Drucken von Listen in einen String mit .format-Notation?

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) 

Es ist es eine Möglichkeit, dass die letzte Zeile mit .format Notation zu erreichen?

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) 

Dies schlägt den folgenden Fehler zurück:

Traceback (most recent call last): 
    File "Madlibs.py", line 12, in <module> 
    print STORY.format(WORD_values) 
IndexError: tuple index out of range 

Antwort

4

Sie können * verwenden, um die Liste zu entpacken:

print STORY.format(*WORD_values) 

Ausgabe:

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. 

Hier ist die relevante Dokumentation: und Format examples.

Verwandte Themen