生成Squ时列表索引超出范围错误

2024-10-01 07:50:24 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试着做一个函数,它接受一个整数'n'并返回一个列表列表,这就是做一个“幻方”的过程(从上中间的1开始,然后向右一直到下一个,都有一个“环绕”的效果)。无论如何,我觉得我的代码是超级笨重,但我也不能测试它是否工作,因为它没有。。我得到一个list index out of range行的消息msq[row][col] = v。代码如下:

def magicsquare(n):
    msq = [[0 for c in range(n)] for r in range(n)]
    row, col= n-1, (n-1)/2
    M = n*(n+1)/2
    v, r, c = 1,0,0
    msq[row][col] = v
    while v != M:
        v= v+1
        if row+1 >= n:
            r = 0
        else: r = row + 1
        if (col+1) < n:
            c = col + 1
        else: c = 0
        if msq[r][c]:
            if (row+1) < n:
                r = row+1
                c = col
            grid[r][c] = v
            row = r
            col = c
    return magicsquare(n)

哦,我想通过的测试是magicsquare(3) == magicsquare([[4, 3, 8], [9, 5, 1], [2, 7, 6]])。感谢您的帮助,谢谢!!!!!!!你知道吗


Tags: 函数代码in列表forif过程range