python中的三角形数字模式

python中的三角形数字模式,python,python-3.x,Python,Python 3.x,我正在用python编写模式,但我似乎无法改变这种模式 print("\nPattern C") for c in range(1, 7 + 1): for cc in reversed(range(1, c)): print(cc, end = '') print('') 这将产生: Pattern C 1 21 321 4321 54321 654321 但我希望它能输出: 1 21 321 4321 54321 6543

我正在用python编写模式,但我似乎无法改变这种模式

print("\nPattern C")

for c in range(1, 7 + 1):
    for cc in reversed(range(1, c)):
        print(cc, end = '')
    print('')
这将产生:

Pattern C

1
21
321
4321
54321
654321
但我希望它能输出:

     1
    21
   321
  4321
 54321
654321

有人能帮忙吗?

您必须以某种方式添加空格。一种方法是从一个固定值中减去当前计数器,然后打印那么多空格

for c in range(1, 7 + 1):
    print(' '*(7-c), end='')
    for cc in reversed(range(1, c)):
        print(cc, end = '')
    print('')
正如Aaron Hall在评论中提到的,还有其他方法可以产生这种输出。例如,使用一个
print()
(和
num
表示上面的
7+1
值,将
反转()
替换为不同的
范围()
对象):

这就是我要做的(同时尽可能少地修改代码)

我没有做太多更改,只是添加了字符串格式,并添加了“+1”

这将使用字符串格式对每个字符串进行右对齐。
%10s
将单词对齐到10个字符的空格结尾。

我会在每行后面使用格式字符串方法来添加空格填充

print("\nPattern C")

for c in range(1, 7+ 1):
    line=""
    for cc in reversed(range(1, c)):
        line+=str(cc)
    print('{:>6}'.format(line))
print("\nPattern C")
maxLength = 7
for c in range(1, maxLength + 1):
    s = ''
    for cc in reversed(range(1, c + 1)):
        s += str(cc)
    print(("%" + str(maxLength) + "s")%s)`
print("\nPattern C")

for c in range(1, 7+ 1):
    line=""
    for cc in reversed(range(1, c)):
        line+=str(cc)
    print('{:>6}'.format(line))