python 输入一个自然数n然后输出一个特殊矩阵

img


题目如图 想了好久没想出来可以怎么做,大概要用到for循环吧 求解

代码入下,注释很明确,不懂再问 ,请采纳,莫辜负!

# 导入 np
import numpy as np
# 输入 层数
enter = int(input())
# 计算边长
box = enter * 2 - 1
# 根据边长 生成一个 全是 1 的矩阵
a = np.ones([box, box], dtype="int64")
# 遍历 每个层
for flag in range(1, enter):
    # 遍历这个层 的 横排
    for i in range(flag, box-flag):
        # 遍历这个层 的 纵排 
        for j in range(flag, box-flag):
            # z这个位置加一
            a[i, j] += 1

print(a)

img

n = int(input())
res = [[i]*n for i in range(1,n+1)] # 创建左上角四分之一的矩阵
for i in range(n):
    res[i][:i] = range(1,i+1)
    res[i] += res[i][:-1][::-1] # 横向翻转
res += res[:-1][::-1] # 纵向翻转
for i in res: # 输出
    print(*i)

顺便实现一下二楼的思路:

n = int(input())
w = 2*n-1
res = [[1]*w for _ in range(w)]
for i in range(w):
    for j in range(w):
        d = n-max(abs(n-i-1),abs(n-j-1))
        res[i][j] = d
for i in res:
    print(*i)