Python 列表索引超出范围,但我尝试调试它,我可以';我没有发现任何错误
我正在制作一个N皇后算法(八皇后难题是将八个国际象棋皇后放在一个8×8的棋盘上,这样就不会有两个皇后相互威胁;因此,解决方案要求两个皇后不共享同一行、列或对角线),这是“外部”,而不是算法: 但是它给了我一个错误(在巨大的代码后面列出),我打印了每一个东西,5在8之内Python 列表索引超出范围,但我尝试调试它,我可以';我没有发现任何错误,python,debugging,indexing,Python,Debugging,Indexing,我正在制作一个N皇后算法(八皇后难题是将八个国际象棋皇后放在一个8×8的棋盘上,这样就不会有两个皇后相互威胁;因此,解决方案要求两个皇后不共享同一行、列或对角线),这是“外部”,而不是算法: 但是它给了我一个错误(在巨大的代码后面列出),我打印了每一个东西,5在8之内 a = [0, 0, 0, 0, 0, 0, 0, 0] b = [0, 0, 0, 0, 0, 0, 0, 0] c = [0, 0, 0, 0, 0, 0, 0, 0] d = [0, 0, 0, 0, 0, 0, 0, 0]
a = [0, 0, 0, 0, 0, 0, 0, 0]
b = [0, 0, 0, 0, 0, 0, 0, 0]
c = [0, 0, 0, 0, 0, 0, 0, 0]
d = [0, 0, 0, 0, 0, 0, 0, 0]
e = [0, 0, 0, 0, 0, 0, 0, 0]
f = [0, 0, 0, 0, 0, 0, 0, 0]
g = [0, 0, 0, 0, 0, 0, 0, 0]
h = [0, 0, 0, 0, 0, 0, 0, 0]
board = [a,b,c,d,e,f,g,h]
for row in board:
for elem in row:
print(elem, end=' ')
print()
#ask for first queen position
firstq_x = int(input('What is x of first queen: '))
print(firstq_x)
firstq_y = int(input('What is y of first queen: '))
print(firstq_y)
#board[firstq_y] and board[firstq_y[firstq_x]]
y = board[int(firstq_y)-1] # y is the selection of a,b,c,d,e,f,g, or h.
y[int(firstq_x)-1] = 'Q' # y[int(firstq_x)-1] is the selection of 0's based on y.
for row in board:
for elem in row:
print(elem, end=' ')
print()
#horizontal
for floor in range(8):
if y[floor] == 0:
y[floor] = "X"
#vertical
board = [a,b,c,d,e,f,g,h]
count = 0
for vert in range(len(board)):
vertical = board[count]
if vertical[firstq_x-1] == 0:
vertical[firstq_x-1] = "X"
count+=1
#NW
#find y first
ytofill = 2
yminus1 = board[firstq_y-ytofill] #this will give us list before current list
#find x next
xtofill = 1
xminus1 = yminus1[firstq_x-xtofill] #this will give us letter before letter
#execute
if firstq_y>firstq_x:
for NW in range(firstq_x):
if yminus1[firstq_x-xtofill] == 0:
yminus1[firstq_x-xtofill] = 'X'
yminus1 = board[firstq_y-ytofill]
xtofill+=1
ytofill+=1
else:
for NW in range(firstq_y):
if yminus1[firstq_x-xtofill] == 0:
yminus1[firstq_x-xtofill] = 'X'
yminus1 = board[firstq_y-ytofill]
xtofill+=1
ytofill+=1
#NE
#find y first
ytofill = 2
yminus1 = board[firstq_y-ytofill] #this will give us list before current list
#find x next
xtofill = 1
xminus1 = yminus1[firstq_x-xtofill] #this will give us letter before letter
#execute
if firstq_y>firstq_x:
for NE in range(firstq_y):
if yminus1[firstq_x-xtofill] == 0:
yminus1[firstq_x-xtofill] = 'X'
yminus1 = board[firstq_y-ytofill]
xtofill-=1
ytofill+=1
else:
for NE in range(firstq_x):
if yminus1[firstq_x-xtofill] == 0:
yminus1[firstq_x-xtofill] = 'X'
yminus1 = board[firstq_y-ytofill]
xtofill-=1
ytofill+=1
board = [a,b,c,d,e,f,g,h]
for row in board:
for elem in row:
print(elem, end=' ')
print()
但是,它给了我一个错误:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-4-cb78dab39eae> in <module>()
54
55 for NE in range(firstq_y):
---> 56 if yminus1[firstq_x-xtofill] == 0:
57 yminus1[firstq_x-xtofill] = 'X'
58 yminus1 = board[firstq_y-ytofill]
IndexError: list index out of range
---------------------------------------------------------------------------
索引器回溯(最后一次最近调用)
在()
54
55适用于范围内的NE(第一季度):
--->56如果yminus1[firstq_x-xtofill]==0:
57 yminus1[firstq_x-xtofill]=“x”
58 yminus1=电路板[firstq_y-ytofill]
索引器:列表索引超出范围