python 打印螺旋矩阵 文件作业(题2) 不太会,有空再看看

def fun(ls,x,y,start,n):
    if n==0:#例如4圈刚好转2轮,n=0
        return 0
    if n==1:#1个元素或只剩1个元素
        ls[x][y]=start
        return 0
    #0,0起一轮,接着1,1起,2,2起...
    for j in range(n):#列++
        ls[x][y+j]=start
        start+=1
    for i in range(n-1):#行++
        ls[x+1+i][y+n-1]=start #0~n-2+1=n-1
        start+=1
    for j in range(n-1):#列--
        ls[x+n-1][y+n-2-j]=start # n-2~n-2-(n-2)=0
        start+=1
    for i in range(n-2):#行--
        ls[x+n-2-i][y]=start
        start+=1
    fun(ls,x+1,y+1,start,n-2)#每一轮左右少两个,上下少两个,规模往里缩两圈
            
n=int(input())
ls=[[0]*n for i in range(n)]
fun(ls,0,0,1,n)

fw=open("file.out","w")
for i in ls:
    for j in i:
        fw.write("%5d"%(j))
    fw.write("\n")
fw.close()    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值