(Python)魔方阵

180 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

【问题描述】输入一个自然数N(1≤N≤9),要求输出如下的魔方阵,即边长为2*N-1,N在中心出现一次,其余位置上的数字从外向中心逐渐增大。 N=3时: 11111 12221 12321 12221 11111 N=4时: 1111111 1222221 1233321 1234321 1233321 1222221 1111111

【输入形式】 从标准输入读取一个整数N。

【输出形式】 向标准输出打印结果。输出符合要求的方阵,每个数字占一个字符宽度,在每一行末均输出一个回车符。

【输入样例】 3

【输出样例】 11111 12221 12321 12221 11111

【样例说明】 输入自然数3,则输出边长为5的方阵,3在方阵的中间出现一次,其余位置上的数字从外向中心逐渐增大。

实现代码:

 N = int(input())
 temp = []
 result = []
 for i in range(2 * N - 1):
     for j in range(2 * N - 1):
         temp.append(0)
     result.append(temp)
     temp = []
 flag = 1
 for i in range(N):
     for j in range(i, 2 * N - 1 - i):
         result[i][j] = result[j][i] = result[j][2 * N - 2 - i] = result[2 * N - 2 - i][
             j] = flag
     flag += 1
 for i in result:
     for j in i:
         print(j, end="")
     print()
 ​

运行结果:

在这里插入图片描述