Receiving KeyError: ' ' for my text based rpg
Receiving KeyError: ' ' for my text based rpg
我正在开发基于文本的角色扮演游戏以及一本名为 "Make Your Python Text Adventure" 的书,但我 运行 遇到了一些问题。目前,游戏的地图存储在字典中。但是,当我尝试 运行 程序时,我在 world.py
文件中得到一个 KeyError: ' '
。
我试过确定 KeyError
可能来自哪里,因为我知道这通常与字典 IIRC 中的条目有关。我无法找到此错误的来源,并且通过查看错误引用的代码行,我看不出 KeyError
可能来自何处。
for y, dsl_row in enumerate(dsl_lines):
row = []
dsl_cells = dsl_row.split("|")
dsl_cells = [c for c in dsl_cells if c]
for x, dsl_cell in enumerate(dsl_cells):
tile_type = tile_type_dict[dsl_cell]
row.append(tile_type(x,y) if tile_type else None)
具体来说,错误是在 tile_type = tile_type_dict[dsl_cell] 行抛出的。
这是主游戏文件中也抛出错误的部分:
def play():
print("Escape from Cave Terror!")
world.parse_world_dsl()
player = Player()
while True:
room = world.tile_at(player.x, player.y)
print(room.intro_text())
room.modify_player(player)
choose_action(room,player)
此错误导致游戏在启动时崩溃。它会加载介绍行的文本,但是当游戏读取地图上的起始图块时,它会点击 KeyError
。如果您需要更多源代码以便对此提出 replicate/offer 建议,请告诉我。该游戏针对游戏的各个方面分为 5 个不同的文件,主要游戏循环不在包含我提供的代码的文件中。这个街区是我应该清理的地方,还是其他地方?
世界地图文件错误如下:
world.py", line 115, in parse_world_dsl
tile_type = tile_type_dict[dsl_cell]
KeyError: ' '
然后在主游戏文件中:
game.py", line 8, in play
world.parse_world_dsl()
不一定是错误,但它参考了 world.py
文件,所以我认为它可能值得包含。
提前感谢大家提供的任何帮助!
因此您的字典键存储在此列表中:
dsl_cells = [c for c in dsl_cells if c]
您收到关键字错误 KeyError: ' '
,这意味着您的密钥是 ' '
。这不会被列表理解的 if c]
部分捕获。我会尝试将此行更改为:
dsl_cells = [c for c in dsl_cells if c.strip()]
这将删除元素 ' '
,因为 ' '.strip()
是 ''
。
你可以试试:
dsl_cells = [c for c in dsl_cells if c.strip()]
我正在开发基于文本的角色扮演游戏以及一本名为 "Make Your Python Text Adventure" 的书,但我 运行 遇到了一些问题。目前,游戏的地图存储在字典中。但是,当我尝试 运行 程序时,我在 world.py
文件中得到一个 KeyError: ' '
。
我试过确定 KeyError
可能来自哪里,因为我知道这通常与字典 IIRC 中的条目有关。我无法找到此错误的来源,并且通过查看错误引用的代码行,我看不出 KeyError
可能来自何处。
for y, dsl_row in enumerate(dsl_lines):
row = []
dsl_cells = dsl_row.split("|")
dsl_cells = [c for c in dsl_cells if c]
for x, dsl_cell in enumerate(dsl_cells):
tile_type = tile_type_dict[dsl_cell]
row.append(tile_type(x,y) if tile_type else None)
具体来说,错误是在 tile_type = tile_type_dict[dsl_cell] 行抛出的。
这是主游戏文件中也抛出错误的部分:
def play():
print("Escape from Cave Terror!")
world.parse_world_dsl()
player = Player()
while True:
room = world.tile_at(player.x, player.y)
print(room.intro_text())
room.modify_player(player)
choose_action(room,player)
此错误导致游戏在启动时崩溃。它会加载介绍行的文本,但是当游戏读取地图上的起始图块时,它会点击 KeyError
。如果您需要更多源代码以便对此提出 replicate/offer 建议,请告诉我。该游戏针对游戏的各个方面分为 5 个不同的文件,主要游戏循环不在包含我提供的代码的文件中。这个街区是我应该清理的地方,还是其他地方?
世界地图文件错误如下:
world.py", line 115, in parse_world_dsl
tile_type = tile_type_dict[dsl_cell]
KeyError: ' '
然后在主游戏文件中:
game.py", line 8, in play
world.parse_world_dsl()
不一定是错误,但它参考了 world.py
文件,所以我认为它可能值得包含。
提前感谢大家提供的任何帮助!
因此您的字典键存储在此列表中:
dsl_cells = [c for c in dsl_cells if c]
您收到关键字错误 KeyError: ' '
,这意味着您的密钥是 ' '
。这不会被列表理解的 if c]
部分捕获。我会尝试将此行更改为:
dsl_cells = [c for c in dsl_cells if c.strip()]
这将删除元素 ' '
,因为 ' '.strip()
是 ''
。
你可以试试:
dsl_cells = [c for c in dsl_cells if c.strip()]