2020-10-08

    科技2026-03-16  7

    打印特殊方阵

    打印一个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

    编程思路非常简单。建立一个二维列表,把数据一层一层写到这个列表中去,再打印出来。

    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
    Processed: 0.018, SQL: 9