打印特殊方阵
打印一个N*N的方阵(3<N<23),最外层为“T”,第二层为“J”,从第三层开始,依次打印1、2、3……,下图为N=11的情形。
T T T T T T T T T T T
T J J J J J J J J J T
T J 1 1 1 1 1 1 1 J T
T J 1 2 2 2 2 2 1 J T
T J 1 2 3 3 3 2 1 J T
T J 1 2 3 4 3 2 1 J T
T J 1 2 3 3 3 2 1 J T
T J 1 2 2 2 2 2 1 J T
T J 1 1 1 1 1 1 1 J T
T J J J J J J J J J T
T T T T T T T T T T T
编程思路非常简单。建立一个二维列表,把数据一层一层写到这个列表中去,再打印出来。
python">n = int(input("Please input N:"))
zero = [[0 for _ in range(n)] for _ in range(n)]
base = ['T', 'J', '1', '2', '3', '4', '5', '6', '7', '8', '9']
def fill(k):
for j in range(n):
if zero[k][j] == 0:
zero[k][j] = base[k]
# for j in range(n):
if zero[n - 1 - k][j] == 0:
zero[n - 1 - k][j] = base[k]
#for i in range(n):
if zero[i][k] == 0:
zero[i][k] = base[k]
#for i in range(n):
if zero[i][n - 1 - k] == 0:
zero[i][n - 1 - k] = base[k]
for g in range(int(n/2)+1):
fill(g)
for y in range(n):
for x in range(n):
print(zero[y][x], end=" ")
print()
D:\Python\Python38\python.exe D:/Python/study/test22.py
Please input N:21
T T T T T T T T T T T T T T T T T T T T T
T J J J J J J J J J J J J J J J J J J J T
T J 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 J T
T J 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 J T
T J 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 J T
T J 1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1 J T
T J 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 J T
T J 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 J T
T J 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 J T
T J 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 J T
T J 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 J T
T J 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 J T
T J 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 J T
T J 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 J T
T J 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 J T
T J 1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1 J T
T J 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 J T
T J 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 J T
T J 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 J T
T J J J J J J J J J J J J J J J J J J J T
T T T T T T T T T T T T T T T T T T T T T
Process finished with exit code 0