Python初学,该怎样实现在IDLE环境下编写出九宫算数呢,百思不得其解。
不用numpy的话,如下:
n = int(input("请输入宫格数:"))
a = [[0 for _ in range(n)] for _ in range(n)]
if n%2==0:
print("unknown")
else:
num=1
i=0
j=n//2
a[i][j]=num
while(num<n*n):
num=num+1
if i-1<0 and j+1>=n:
a[i+1][j]=num
i=i+1
elif i-1<0:
for k in range(n-1,0,-1):
if a[k][j+1]==0:
a[k][j+1]=num
i=k
j=j+1
break
elif j+1>=n:
for k in range(n):
if a[i-1][k]==0:
a[i-1][k]=num
i=i-1
j=k
break
else:
if a[i-1][j+1]!=0:
a[i+1][j]=num
i=i+1
else:
a[i-1][j+1]=num
i=i-1
j=j+1
for i in a: print(i)
In: 3
[8, 1, 6]
[3, 5, 7]
[4, 9, 2]
In: 5
[17, 24, 1, 8, 15]
[23, 5, 7, 14, 16]
[4, 6, 13, 20, 22]
[10, 12, 19, 21, 3]
[11, 18, 25, 2, 9]
import numpy as np
n=int(input("输入是几宫格"))
a=np.zeros((n,n))
if n%2==0:
print("unknown")
else:
num=1
i=0
j=n//2
a[i][j]=num
while(num<n*n):
num=num+1
if i-1<0 and j+1>=n:
a[i+1][j]=num
i=i+1
elif i-1<0:
for k in range(n-1,0,-1):
if a[k][j+1]==0:
a[k][j+1]=num
i=k
j=j+1
break
elif j+1>=n:
for k in range(n):
if a[i-1][k]==0:
a[i-1][k]=num
i=i-1
j=k
break
else:
if a[i-1][j+1]!=0:
a[i+1][j]=num
i=i+1
else:
a[i-1][j+1]=num
i=i-1
j=j+1
print(a)