Python输出一个绕圈圈的矩阵

一个小练习题,输出如下规律的数字矩阵,从一开始先向下,再向右,再向上,最后向左,依次类推,绕圈圈输出。

01 16 15 14 13 
02 17 24 23 12 
03 18 25 22 11 
04 19 20 21 10 
05 06 07 08 09

#获取下一个方向
def getNextFlag(flag):
    if flag == 0:
        return 1
    elif flag == 1:
        return 2
    elif flag == 2:
        return 3
    elif flag == 3:
        return 0
    else:
        return 4
#生成矩阵
def matrix():
    length = input("Please enter the length of the two-dimensional table :")
    num = int(length)
    #创建一个二维表
    array = []
    for i in range(num):
        array.append([0] * num)
    #判断数字格式
    format_num = "%0" + str(len(str(num*num))) + "d"
    #0向下  1向右  2向上  3向左
    flag = 0
    total = 1
    column_index = 0
    row_index = 0
    border = num - 1
    #开始赋值
    array[row_index][column_index] = total
    while total < num*num:
        if flag == 0 and border > row_index >=0:
            if array[row_index+1][column_index] == 0:
                row_index += 1#移动
                #赋值
                total += 1
                array[row_index][column_index] = total
            else:
                flag = getNextFlag(flag)
        elif flag == 1 and border > column_index >=0:
            if array[row_index][column_index+1] == 0:
                column_index +=1
                total += 1
                array[row_index][column_index] = total
            else:
                flag = getNextFlag(flag)
        elif flag == 2 and border >= row_index > 0:
            if array[row_index-1][column_index] == 0:
                row_index -= 1
                total += 1
                array[row_index][column_index] = total
            else:
                flag = getNextFlag(flag)
        elif flag == 3 and border >= column_index > 0:
            if array[row_index][column_index-1] == 0:
                column_index -=1
                total += 1
                array[row_index][column_index] = total
            else:
                flag = getNextFlag(flag)
        else:
            flag = getNextFlag(flag)
            
    #打印矩阵
    for ele in array:
        for element in ele:
            print(format_num % element,end=" ")
        print("")

#调用
matrix()

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值