利用Python实现行、列、对角线数字和相等

效果:

效果图.png

分析:

1、将01放在第一行的正中央;
2、然后依次向右上的格式去填值:
    (1)如果超出上边框就把它竖直往下移到最后一行;
    (2)如果超出右边框就把它横着移动到最左边;
    (3)如果要移动的地方已经存在值,就把这个放到前一个数字的下面;
    (4)如果上边框和右边框都超过啦,就把这个放到前一个数字的下面。

实现代码:

n = int(input("请输入一个奇数:"))
m = [[0 for i in range(n)] for i in range(n)] #创建一个nxn的居中
row, col = 0, n // 2 #初始行列设置01的位置
num = 1 #数字从01开始
while num <= n * n: 
   m[row][col] = num #先将01放到第一行中间位置
   num += 1 #每一次循环数字加一
   row -= 1 #下一位数字的行下标
   col += 1 #下一位数字的列下标
   if row < 0 and col >= n: #判断超出上方行,右方列
       row, col = row + 2, col - 1
   elif row < 0: #判断只有行超出上方行
       row = n - 1
   elif col >= n:#判断只有行超出右方列
       col = 0
   elif m[row][col] != 0:   #判断下一位不为初始值0
       row, col = row + 2, col - 1
#按照列表中存储的数字打印出来
for i in range(n):
   for j in range(n):
       print('%02d' % m[i][j], end = ' ')
   print()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。