如何解决为什么在索引字典时会出现“字符串索引必须是整数”错误?
我正在尝试编写 Python 控制台游戏框架。我是如何设计它的,有一个名为 game_state 的字典,它由传递给循环函数的函数更新。在循环的一次迭代之后,它给出错误“字符串索引必须是整数”。堆栈跟踪显示错误发生在 if game_state["running"] == false
行。打印出来game_state的时候,好像是一个空字符串。为什么会发生这种情况,我该如何解决?
def run_loop(calculate,draw,initial_state):
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tty.setraw(sys.stdin)
game_state = initial_state
with raw(sys.stdin):
with nonblocking(sys.stdin):
try:
while True:
try:
c = sys.stdin.read(1)
game_state = calculate(c,game_state)
print_map(draw(game_state))
if game_state["running"] == False:
break
except IOError:
print('not ready')
time.sleep(.1)
finally:
termios.tcsetattr(fd,termios.TCSADRAIN,old_settings)
def game(state,press):
mut_state = state
if press == "q":
mut_state["running"] = False
return mut_state
def display(game_state):
return [["Yay!"]]
run_loop(game,display,{"running": True})
解决方法
答案就在我眼前。我首先传入输入,这意味着空输入会覆盖游戏状态。应该是calculate(game_state,c)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。