Python实现X形数字图案:先递增后递减的需求及问题排查
Python X形图案数字填充问题解决
你当前的问题是X形对角线上的数字没有实现先增后减的效果,原因在于直接使用行号rows作为输出值,导致数字从0到n-1单调递增。要实现0 1 2 1 0的序列,需要计算每行到矩阵上下边缘的最小距离,这个值就是该行应显示的数字。
修正后的代码
n = int(input("Enter total rows")) # n=5 for rows in range(n): for cols in range(n): if rows == cols or rows + cols == n - 1: # 计算当前行到边缘的最小距离,实现先增后减 print(min(rows, n - 1 - rows), end="") else: print(" ", end="") print()
关键说明
- 以n=5为例:
- 第0行和第4行,
min(0,4)与min(4,0)结果都是0 - 第1行和第3行,
min(1,3)与min(3,1)结果都是1 - 第2行(中间行),
min(2,2)结果是2
最终就能得到预期的0 1 2 1 0序列。
- 第0行和第4行,
输出示例(n=5)
0 0 1 1 2 1 1 0 0
内容的提问来源于stack exchange,提问作者bean
相关产品推荐
相关产品推荐

