Python“;索引器:列表索引超出范围“;列表项不存在时出错
问题:当下面显示的代码是从我的代码的另一部分(显示在下面)运行时,它会产生一个索引错误,并在明显不在范围内时说“列表索引超出范围” 代码(Python版本3.6.3):Python“;索引器:列表索引超出范围“;列表项不存在时出错,python,python-3.x,python-3.6,Python,Python 3.x,Python 3.6,问题:当下面显示的代码是从我的代码的另一部分(显示在下面)运行时,它会产生一个索引错误,并在明显不在范围内时说“列表索引超出范围” 代码(Python版本3.6.3): def canwin(XoY): LookingForNum = True openspaces = [] dupeboard = board[:] a = 0 for i in range(9): if board[a
def canwin(XoY):
LookingForNum = True
openspaces = []
dupeboard = board[:]
a = 0
for i in range(9):
if board[a] == " ":
openspaces = openspaces + [a]
a = a + 1
a = 0
for i in range(len(openspaces)):
e = openspaces[a]
dupeboard = [:]
dupeboard[e] = XoY
if dupeboard[0] == XoY and dupeboard[1] == XoY and dupeboard[2] == XoY:
return True
elif dupeboard[3] == XoY and dupeboard[4] == XoY and dupeboard[5] == XoY:
return True
elif dupeboard[6] == XoY and dupeboard[7] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[0] == XoY and dupeboard[3] == XoY and dupeboard[6] == XoY:
return True
elif dupeboard[1] == XoY and dupeboard[4] == XoY and dupeboard[7] == XoY:
return True
elif dupeboard[2] == XoY and dupeboard[5] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[0] == XoY and dupeboard[4] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[2] == XoY and dupeboard[4] == XoY and dupeboard[6] == XoY:
return True
else:
return False
a = a + 1
if canwin("O"):
move = findmove("O")
board[move] = "O"
ShowBoard(board)
FindingNum = False
elif canwin("X"):
move = findmove("X")
board[move] = "O"
ShowBoard(board)
FindingNum = False
Traceback (most recent call last):
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 316, in <module>
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 283, in AIPlay
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 283, in AIPlay
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 259, in AIPlay
if canwin("O"):
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 70, in canwin
elif dupeboard[2] == XoY and dupeboard[5] == XoY and dupeboard[8] == XoY:
IndexError: list index out of range
从以下位置运行:
def canwin(XoY):
LookingForNum = True
openspaces = []
dupeboard = board[:]
a = 0
for i in range(9):
if board[a] == " ":
openspaces = openspaces + [a]
a = a + 1
a = 0
for i in range(len(openspaces)):
e = openspaces[a]
dupeboard = [:]
dupeboard[e] = XoY
if dupeboard[0] == XoY and dupeboard[1] == XoY and dupeboard[2] == XoY:
return True
elif dupeboard[3] == XoY and dupeboard[4] == XoY and dupeboard[5] == XoY:
return True
elif dupeboard[6] == XoY and dupeboard[7] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[0] == XoY and dupeboard[3] == XoY and dupeboard[6] == XoY:
return True
elif dupeboard[1] == XoY and dupeboard[4] == XoY and dupeboard[7] == XoY:
return True
elif dupeboard[2] == XoY and dupeboard[5] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[0] == XoY and dupeboard[4] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[2] == XoY and dupeboard[4] == XoY and dupeboard[6] == XoY:
return True
else:
return False
a = a + 1
if canwin("O"):
move = findmove("O")
board[move] = "O"
ShowBoard(board)
FindingNum = False
elif canwin("X"):
move = findmove("X")
board[move] = "O"
ShowBoard(board)
FindingNum = False
Traceback (most recent call last):
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 316, in <module>
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 283, in AIPlay
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 283, in AIPlay
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 259, in AIPlay
if canwin("O"):
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 70, in canwin
elif dupeboard[2] == XoY and dupeboard[5] == XoY and dupeboard[8] == XoY:
IndexError: list index out of range
我尝试过的内容:我尝试过检查python文档中的索引错误,但没有成功。我还检查了其他堆栈溢出问题,但运气不好
完全回溯:
def canwin(XoY):
LookingForNum = True
openspaces = []
dupeboard = board[:]
a = 0
for i in range(9):
if board[a] == " ":
openspaces = openspaces + [a]
a = a + 1
a = 0
for i in range(len(openspaces)):
e = openspaces[a]
dupeboard = [:]
dupeboard[e] = XoY
if dupeboard[0] == XoY and dupeboard[1] == XoY and dupeboard[2] == XoY:
return True
elif dupeboard[3] == XoY and dupeboard[4] == XoY and dupeboard[5] == XoY:
return True
elif dupeboard[6] == XoY and dupeboard[7] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[0] == XoY and dupeboard[3] == XoY and dupeboard[6] == XoY:
return True
elif dupeboard[1] == XoY and dupeboard[4] == XoY and dupeboard[7] == XoY:
return True
elif dupeboard[2] == XoY and dupeboard[5] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[0] == XoY and dupeboard[4] == XoY and dupeboard[8] == XoY:
return True
elif dupeboard[2] == XoY and dupeboard[4] == XoY and dupeboard[6] == XoY:
return True
else:
return False
a = a + 1
if canwin("O"):
move = findmove("O")
board[move] = "O"
ShowBoard(board)
FindingNum = False
elif canwin("X"):
move = findmove("X")
board[move] = "O"
ShowBoard(board)
FindingNum = False
Traceback (most recent call last):
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 316, in <module>
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 283, in AIPlay
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 283, in AIPlay
PlayerPlay()
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 301, in PlayerPlay
AIPlay(board)
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 259, in AIPlay
if canwin("O"):
File "C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py", line 70, in canwin
elif dupeboard[2] == XoY and dupeboard[5] == XoY and dupeboard[8] == XoY:
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py”,第316行,在
PlayerPlay()
文件“C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py”,第301行,在PlayerPlay中
游戏(棋盘)
文件“C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py”,第283行,在AIPlay中
PlayerPlay()
文件“C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py”,第301行,在PlayerPlay中
游戏(棋盘)
文件“C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py”,第283行,在AIPlay中
PlayerPlay()
文件“C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py”,第301行,在PlayerPlay中
游戏(棋盘)
文件“C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py”,第259行,在AIPlay中
如果能赢(“O”):
文件“C:\Users\user\Desktop\Pu\Testing Tic Tac Toe AI.py”,第70行,在canwin中
elif双面板[2]==XoY和双面板[5]==XoY和双面板[8]==XoY:
索引器:列表索引超出范围
在访问板之前检查板的大小(len
)当您使用“双面板”时,您遗漏了板[4]
。您应该像这样复制列表:dupeboard=board[:]
请发布完整的回溯,格式为code。您是否尝试捕获错误并在except suite中打印相关数据你发现了什么。或者只是在有问题的行之前打印。发生了什么?编辑您的问题并添加回溯。不要发表多条评论dupeboard=[board[0]、board[1]、board[2]、board[3]、board[5]、board[6]、board[7]、board[8]
你是想删掉board[4]
?