2012-11-01 109 views
2

我正在創建一個madlibs遊戲,需要用戶輸入並返回故事。我使用%s來存儲輸入。當我得到這個錯誤,我改變了%s到每以前的職位,但錯誤%%的遺體Python不支持的格式字符「w」

print "What is your name?" 
a = raw_input() 
print "Hello", a, "Lets see if you like you can do MadLibs!" 
print "HEAD KNIGHT OF NI: %s \n KNIGHTS OF NI : %s \n ARTHUR : Who are you ? \n HEAD KNIGHT : We are the %s who say. %s \n RANDOM : %s \n ARTHUR : No ! Not the %s who say %s \n Head Knight: The Same! \n Bedevere: Who are they? \n Head Knight: We are the keepers of the %s words : %%s %%s and %%s \n Random: %%s \n Arthur: Those who %s them seldom live to tell the tale. \n Head Knight: The %%s who say %%s demand a sacrifice \n Arthur: %s of %s we are but %s travellers who seek the % who lives beyong these woods \n Head Knight: %s \n Knights of Ni: %s \n Arthur: Ow Agh \n Head Knight: We shall say %s again to you if you don't appease us \n Arthur: Well what is it you want? \n Head Knight: We want a %%s \n Arthur: A what? \n Knights of Ni: %%s \n Arthur and Party: OWWW, AHHH \n Arthur: Please, No More! We will find you a %%s \n Head Knight: You must return here with a %%s or else, you will never pass through these woods alive. \n Arthur: O %%s of %%s you are %%s and %%s and we will return with a %%s. \n Head Knight: One that looks %%s \n Arthur: Of Course \n Head Knight: and not too %%s \n Arthur: Yes" % (raw_input("Nonsense Word"), raw_input("Nonsense Word "), raw_input("Occupation"),raw_input("Nonsense Word"), 
         raw_input("Nonsense Word"), raw_input("Occupation"), raw_input("Nonsense Word"), raw_input("Adjective"), raw_input("Nonsense Word"), 

錯誤是ValueError異常:不支持的格式字符「W」(0x77)的指數466

+3

你在'who'之前有一個單獨的'%'。在那之後你也拼寫錯誤'beyong'。 – mtrw

回答

3

你有字符串中的文字%;一倍,以防止Python從試圖把它解釋爲一個格式字符串:

"... very long string ... who seek the %% who lives beyong ..." 

或者你上一個s錯過了那裏,而不是:

"... very long string ... who seek the %s who lives beyong ..." 

你真的想看看特里普爾,引用您的字符串雖然。 Python中讓你用"""作爲字符串分隔符,這樣的文字串換行符被保留:

MADLIBS = """\ 
HEAD KNIGHT OF NI: %s 
KNIGHTS OF NI : %s 
ARTHUR : Who are you ? 
HEAD KNIGHT : We are the %s who say. %s 
RANDOM : %s 
ARTHUR : No ! Not the %s who say %s 
Head Knight: The Same! 
Bedevere: Who are they? 
Head Knight: We are the keepers of the %s words : %%s %%s and %%s 
Random: %%s 
Arthur: Those who %s them seldom live to tell the tale. 
Head Knight: The %%s who say %%s demand a sacrifice 
Arthur: %s of %s we are but %s travellers who seek the %% who lives beyong these woods 
Head Knight: %s 
Knights of Ni: %s 
Arthur: Ow Agh 
Head Knight: We shall say %s again to you if you don't appease us 
Arthur: Well what is it you want? 
Head Knight: We want a %%s 
Arthur: A what? 
Knights of Ni: %%s 
Arthur and Party: OWWW, AHHH 
Arthur: Please, No More! We will find you a %%s 
Head Knight: You must return here with a %%s or else, you will never pass through these woods alive. 
Arthur: O %%s of %%s you are %%s and %%s and we will return with a %%s. 
Head Knight: One that looks %%s 
Arthur: Of Course 
Head Knight: and not too %%s 
Arthur: Yes 
""" 

這樣你可以更加清楚地表明你有幾個一倍,你的字符串%%的痕跡,可能需要修正。

1

我不認爲你真的想要那裏的任何%% s字符串。而且,如果「ni」這樣的詞可以始終保持一致,那麼它就更有意義。所以,我用重點佔位符重寫了它:

print "What is your name?" 
a = raw_input() 
print "Hello", a, "Let's see if you can do MadLibs!" 
categories = { 'ni':'Nonsense word','knights':'Occupation', 
       'sacred':'Adjective','peng':'Nonsense word', 
       'nee-wom':'Nonsense word','hear':'Verb', 
       'simple':'Adjective','enchanter':'Occupation', 
       'shrubbery':'Noun','just':'Adjective', 
       'fair':'Adjective','nice':'Adjective', 
       'expensive':'Adjective'} 
input_words = {} 
for key,description in categories.items(): 
    input_words[key] = raw_input('Enter a(n) '+description+': ') 
print '''HEAD KNIGHT OF NI: %(ni)s 
KNIGHTS OF NI : %(ni)s 
ARTHUR : Who are you ? 
HEAD KNIGHT : We are the %(knights)s who say. %(ni)s 
RANDOM : %(ni)s 
ARTHUR : No ! Not the %(knights)s who say %(ni)s 
Head Knight: The Same! 
Bedevere: Who are they? 
Head Knight: We are the keepers of the %(sacred)s words : %(ni)s %(peng)s and %(nee-wom)s 
Random: %(nee-wom)s 
Arthur: Those who %(hear)s them seldom live to tell the tale. 
Head Knight: The %(knights)s who say %(ni)s demand a sacrifice 
Arthur: %(knights)s of %(ni)s we are but %(simple)s travellers who seek the %(enchanter)s who lives beyond these woods 
Head Knight: %(ni)s 
Knights of Ni: %(ni)s 
Arthur: Ow Agh 
Head Knight: We shall say %(ni)s again to you if you don't appease us 
Arthur: Well what is it you want? 
Head Knight: We want a %(shrubbery)s 
Arthur: A what? 
Knights of Ni: %(ni)s 
Arthur and Party: OWWW, AHHH 
Arthur: Please, No More! We will find you a %(shrubbery)s 
Head Knight: You must return here with a %(shrubbery)s or else, you will never pass through these woods alive. 
Arthur: O %(knights)s of %(ni)s you are %(just)s and %(fair)s and we will return with a %(shrubbery)s. 
Head Knight: One that looks %(nice)s 
Arthur: Of Course 
Head Knight: and not too %(expensive)s 
Arthur: Yes''' % input_words 
相關問題