【发布时间】:2021-12-31 15:40:46
【问题描述】:
我正在尝试打印以下模式。但无法实现倒字模式 任何建议或简洁的方法
预期输出:
01
02 01
03 02 01
04 03 02 01
05 04 03 02 01
04 03 02 01
03 02 01
02 01
01
代码:
n=10
var=''
breaking = int((n+1)/2)
dec = 2
space=2
cnt=1
for row in range(1,n+1):
if row <= breaking:
print(' ' * ( (n - 1) * 3 ) + str(row).zfill(2) + ' ' + var )
var = str(row).zfill(2) + ' ' + var
n = n-1
else:
print(' ' * ((n*2) + (breaking + space) + cnt) + var[dec:])
space = space + 2
dec = dec + 2
cnt = cnt + 1
上面的代码在下面打印出异常的图案如何解决?
01
02 01
03 02 01
04 03 02 01
05 04 03 02 01
04 03 02 01
4 03 02 01
03 02 01
02 01
2 01
【问题讨论】:
-
下半部分的空格数必须减少。例如。您可以(而不是“if”)创建两个 for 循环,一个用于上半部分,然后另一个用于下半部分,其中行数减少(“range”的“step”参数)。这让事情变得容易多了。
-
print(' ' * ((n*2) + (breaking + space) + cnt) + var[dec:])用你自己的话来说,这部分代码的目的是什么?您是否尝试检查它为((n*2) + (breaking + space) + cnt) + var[dec:])计算的值?你能用手算出应该是什么值吗?你得到正确的结果了吗? -
请阅读ericlippert.com/2014/03/05/how-to-debug-small-programs 并尝试一次跟踪您的代码逻辑。
标签: python