gpt4 book ai didi

python - 如何避免 IndexError

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:35 26 4
gpt4 key购买 nike

一些背景知识:

我正在编写一个基于单词的小型迷宫游戏,从一个由 X、O 和 F 组成的简单迷宫开始。

我的迷宫是代表迷宫本身的列表列表,其中 X 是一堵墙,O 是一个开放点,F 是终点线。

我正在尝试编写一个函数,它采用迷宫的名称和用户的当前位置,并返回从该位置(N、S、E 或 W)开始的所有合法移动的列表。

这是我的练习迷宫和函数。

def get_legal_directions(maze, position):
x = position[0]
y = position[1]
legal = []
if maze[x-1][y] == 'O' or maze[x-1][y] == 'F':
legal.append('N')
if maze[x+1][y] == 'O' or maze[x+1][y] == 'F':
legal.append('S')
if maze[x][y+1] == 'O' or maze[x][y+1] == 'F':
legal.append('E')
if maze[x][y-1] == 'O' or maze[x][y-1] == 'F':
legal.append('W')
return legal


>>> maze1 = [['X', 'X', 'X', 'X', 'X'], ['X', 'O', 'X', 'F', 'X'], ['X', 'O', 'X', 'O', 'X'], ['X', 'O', 'O', 'O', 'X'], ['X', 'X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X', 'X']]
>>>

输入:get_legal_directions(maze1, (1,1))

输出:['S']

所以该函数在这里似乎正常工作,但是当我在另一个函数中使用该函数以便用户与迷宫交互时,我得到了这个:

def interact():
maze = raw_input('Maze File: ')
x = maze[0]
y = maze[1]
pos = (1,1)
history = [pos]
while 1:
print 'You are at position', pos
command = raw_input('Command: ')
if command == 'Q':
com = raw_input('Are you sure you want to quit? [y] or [n]: ')
if com =='y':
print 'Thank you for playing - Goodbye!'
break
else: continue
elif command == 'L':
get_legal_directions(maze, pos)
else: print 'invalid command'

我得到以下信息:

>>> interact()

Maze File: maze1

You are at position (1, 1)

Command: L

" if maze[x-1][y] == 'O' or maze[x-1][y] == 'F':
IndexError: string index out of range"

我编写 if 语句的方式有问题还是其他原因?感谢任何可以提供帮助的人。

如何让命令 L 调用函数 get_legal_directions()

最佳答案

这使得 maze 成为一个字符串:

maze = raw_input('Maze File: ')

您的函数需要一个列表列表。

关于python - 如何避免 IndexError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9988057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com