你就快到了。当计数器c等于n*n时,就会进入一个无限循环。for循环中的所有范围都将变为空,c = c + 1将不再执行。在
您需要将检查改为c < (n*n)和范围:
import numpy as np
n = 4
M = np.zeros([n, n])
init = 0
nlimit = n - 1
c = 0
if (n % 2 == 0):
while (c < (n*n)):
for i in range(init, nlimit, 1):
c = c + 1
M[nlimit, i] = c
for i in range(nlimit, init, -1):
c = c + 1
M[i, nlimit] = c
for i in range(nlimit, init, -1):
c = c + 1
M[init, i] = c
for i in range(init, nlimit, 1):
c = c + 1
M[i, init] = c
init = init + 1
nlimit = nlimit - 1
print(M)
import numpy as np
n = 5
M = np.zeros([n, n])
init = 0
nlimit = n - 1
c = 0
while c < (n * n) - 1:
for i in range(init, nlimit, 1):
c = c + 1
M[nlimit, i] = c
for i in range(nlimit, init, -1):
c = c + 1
M[i, nlimit] = c
for i in range(nlimit, init, -1):
c = c + 1
M[init, i] = c
for i in range(init, nlimit, 1):
c = c + 1
M[i, init] = c
init = init + 1
nlimit = nlimit - 1
M[(n - 1) // 2, (n - 1) // 2] = n * n
print(M)
你就快到了。当计数器
c
等于n*n
时,就会进入一个无限循环。for
循环中的所有范围都将变为空,c = c + 1
将不再执行。在您需要将检查改为
c < (n*n)
和范围:It输出:
^{pr2}$作为奖励,你不需要为奇数改变太多。对于
n=5
,它输出:您只需更改
while c
并在中间添加最后一个数字:它现在输出:
相关问题 更多 >
编程相关推荐