2016-02-06 59 views
-1
Traceback (most recent call last): 
    File "C:\Users\Simon\Downloads\rpgbs.py", line 72, in <module> 
    print("%(chara) has %(health) HP." % {chara:names[k], health:str(health[k])}) 
NameError: name 'chara' is not defined 

運行此代碼時,我得到上述錯誤%格式的語法時。相關部分如下。NameError:名字「<name>」沒有定義,使用字符串

當我自己運行print(names["Enemy"], health["Enemy"])時,這似乎工作得很好。但是,當我使用格式化語法(來自我的理解print("%(author) likes spam.") % {author:"Simon"})時,它完全正確。這與我試圖迭代它的事實有什麼關係?

names = {'Player' : str(input("What's your name, hero?: ")),           
      'Enemy' : str(input("And who will you be duelling with?"))} 
if names["Enemy"]=="UNDERTALE": 
    names["Enemy"]=namechoose(["Froggit", "Sans", "Flowey", "Chara", "ASRIEL DREEMUR", "Toriel", "Undyne", "Mettaton"],1) 
elif names["Enemy"]=="POKEMON": 
    names["Enemy"]=namechoose(["Charizard","Blastoise", "Venusaur", "Arceus", "Dialga", "Palkia", "Groudon"],1) 
elif names["Enemy"]=="DRAGON QUEST": 
    names["Enemy"]=namechoose(["Corvus", "Aquila", "Hootingham-Gore", "Goresby-Purrvis", "Stella", "The Almighty", "Slime", "Metal Slime"],1)  

startinghealth=int(input("How much health do you wish to start with? 150 is recommended."))   
health = {'Player' : startinghealth,                 
      'Enemy' : startinghealth}                 


while health["Enemy"]>0 and health["Player"]>0: 
    for k in names: 
     print(names[k], health[k]) 
     print("%(chara) has %(health) HP." % {chara:names[k], health:str(health[k])})                       

回答

0

你錯過了大括號之後的字符,你也在這一行中使用chara作爲變量而不是字符串鍵作爲散列。 這就是爲什麼你有錯誤,說你沒有定義變量chara。正確的線應如下所示: print("%(chara)s has %(health)s HP." % {'chara':names[k], 'health':str(health[k])})

相關問題