如何解决在python中打印螺旋矩阵
在 Python 中卡在打印螺旋矩阵图案的内部正方形
num=int(input("enter numbers:")) # taking value num=4
arr=[[0 for x in range(num)] for y in range(num)]
n=1
low=0
high=num-1
c=1
# c=int((num+1)/2)
for i in range(c):
for j in range(low,high+1): #left to right
arr[i][j]=n
n=n+1
for j in range(low+1,high+1):# top to bootom
arr[j][high]=n
n=n+1
for j in range(high-1,low-1,-1): # right to left
arr[high][j]=n
n=n+1
for j in range(high-1,low,-1): # down to up
arr[j][low]=n
n=n+1
for j in range(low+1,high): # inner left to right
arr[low+1][j]=n
n=n+1
# for j in range(1,high):
# arr[j][high]=n
# n=n+1
# for j in range(1):
# arr[low+1][j]=n
# n=n+1
for i in range(num):
for j in range(num):
print(arr[i][j],end="\t")
print()
预期输出
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
我的输出
1 2 3 4
12 13 14 5
11 0 0 6
10 9 8 7
解决方法
我改编了你的程序。它有一个很好的推理,唯一的问题是您手动编写循环。相反,当四个拳头循环编写数字绘制正方形时,我只是编写了一个程序来多次应用这些循环。
num=int(input("enter numbers:")) # taking value num=4
arr=[[0 for x in range(num)] for y in range(num)]
n=1
# c=int((num+1)/2)
def square(low,high,array):
global n
for j in range(low,high+1): #left to right
array[i][j]=n
n=n+1
for j in range(low+1,high+1):# top to bootom
array[j][high]=n
n=n+1
for j in range(high-1,low-1,-1): # right to left
array[high][j]=n
n=n+1
for j in range(high-1,low,-1): # down to up
array[j][low]=n
n=n+1
if num%2==0:
rg=num//2
else:
rg=(num+1)//2
for i in range(rg):
square(i,num-1-i,arr)
rg 只是奇数执行正确的次数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。