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
运行此代码时出现上述错误。相关部分如下。
当我自己运行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 :(得分:0)
你在大括号之后错过了s字符,你也在这一行中使用chara作为变量而不是hash的字符串键。
这就是为什么你有这个错误,说你没有定义chara变量。正确的行应如下所示:
print("%(chara)s has %(health)s HP." % {'chara':names[k], 'health':str(health[k])})