Python找不到密钥值

2024-09-27 09:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我代码的一个节选,我有麻烦了。问题很简单,代码找不到字典中的键,如错误所述:

Traceback (most recent call last):
File "G:\Game.py", line 386, in <module>
battle()
File "G:\Game.py", line 197, in battle
if int(playerStats["playerExperience"]) > int(levels['{0}'.format("{0}".format(playerStats['level']))]):
KeyError: 'level'

以下是适用的代码的两个部分:

^{pr2}$

以及

global playerStats
playerStats={
 "playerMaxHp":"0",
 "playerCurrentHp":"0",
 "playerAtk":"0",
 "playerDef":"0",
 "playerDefending":"0",
 "playerRunAblility":"0",
 "playerExperience":"0",
 "level":"1"
 }

编辑:这里的“级别”是指:

levels={ #"Level"="Experience"
 "2":"5",
 "3":"12",
 "4":"20",
 }

编辑2:为级别添加了另一个值:

levels={ #"Level"="Experience"
 "1":"0",
 "2":"5",
 "3":"12",
 "4":"20",
 }

已解决: 问题是在前面的代码行中,我在替换字典,而不是添加字典。一旦我修复了这个问题,代码就可以正常工作了。在


Tags: 代码inpygameformat编辑字典line
3条回答

首先,什么是翻番:

'{0}'.format("{0}".format(playerStats['level']))

我想一种格式就够了。(实际上,由于playerStats['level']的值已经是一个字符串,所以可以完全忽略格式。)其次,levels是什么?是单子吗?一本字典?如果您将playerStats字典传递到该字典中,则计算结果如下:

^{pr2}$

所以如果levels['1']是一个有效的项目,它应该可以工作。但是如果levels是一个列表或元组,或者是一个没有'1'键的字典,它就不会了

尝试使用“而不是”:

playerStats={
'playerMaxHp': 0,
'playerCurrentHp': 0,
'playerAtk': 0,
'playerDef': 0,
'playerDefending': 0,
'playerRunAblility': 0,
'playerExperience': 0,
'level': 1
}

对于ACCESOR也是一样的:如果playerStats['playerExperience']>。。。。在

好吧,你的代码运行得很好。在

与其使用字符串,不如使用整数。像这样的东西

global playerStats
playerStats={
 "playerMaxHp": 0,
 "playerCurrentHp": 0,
 "playerAtk": 0,
 "playerDef": 0,
 "playerDefending": 0,
 "playerRunAblility": 0,
 "playerExperience": 0,
 "level": 1
 }

levels={ #"Level"="Experience"
 1: 0,
 2: 5,
 3: 12,
 4: 20
 }

if playerStats["playerExperience"] > levels[playerStats['level']]:
    pass
    # do something
else:
    pass
    # do something

相关问题 更多 >

    热门问题