Python 3.x 列表索引超出范围,python中的全局变量 def queens(i): n=8 如果(承诺(i)): 如果(i==n): 对于范围(1,n)中的列: 打印(col) 其他: 对于范围(1,n)内的j: col[i+1]=j i=i+1 第(一)款: k=1 开关=真 而(k

Python 3.x 列表索引超出范围,python中的全局变量 def queens(i): n=8 如果(承诺(i)): 如果(i==n): 对于范围(1,n)中的列: 打印(col) 其他: 对于范围(1,n)内的j: col[i+1]=j i=i+1 第(一)款: k=1 开关=真 而(k,python-3.x,list,Python 3.x,List,这可能是您使用范围(1,n)但python是零索引的原因吗 将+1添加到变量i中,但这是列向量,因此如果您位于i=n,i+1超出范围 我认为这是您的第一个函数中的错误。我在u编辑时添加了代码,它自动以这种奇怪的格式保存!您如何调用这些函数?首先调用Promission(I),给我喜欢的4或8赋予一些值。然后调用queens(4)或queens(8)你能纠正代码吗?如果你的问题解决了,请考虑接受答案并关闭线程。谢谢:) def queens(i): n=8 if (promisi

这可能是您使用
范围(1,n)
但python是零索引的原因吗

将+1添加到变量i中,但这是列向量,因此如果您位于
i=n
i+1
超出范围


我认为这是您的第一个函数中的错误。

我在u编辑时添加了代码,它自动以这种奇怪的格式保存!您如何调用这些函数?首先调用Promission(I),给我喜欢的4或8赋予一些值。然后调用queens(4)或queens(8)你能纠正代码吗?如果你的问题解决了,请考虑接受答案并关闭线程。谢谢:)
def queens(i):
    n=8

    if (promising(i)):
        if(i==n):
            for col in range(1,n):
                print(col)
        else:
            for j in range (1,n):
                    col[i+1]=j
                    i=i+1
def promising(i):

    k=1
    switch=True
    while(k<i and switch):

        if(col[i]==col[k] and abs(col[i]-col[k]==i-k)):
                switch= False
        else:
            switch=True
    k+=1
    return switch