Python 倒数三角形

Python 倒数三角形,python,python-3.x,Python,Python 3.x,我正在尝试创建一个反向三角形,如下所示: 0123456789 012345678 01234567 0123456 012345 01234 0123 012 01 0 我离得很近,但离得很远。这是我目前拥有的代码: for e in range (10, 0, -1): for d in range (10-e)

我正在尝试创建一个反向三角形,如下所示:

    0123456789
     012345678
      01234567
       0123456
        012345
         01234
          0123
           012
            01
             0 
我离得很近,但离得很远。这是我目前拥有的代码:

    for e in range (10, 0, -1):
for d in range (10-e):
    print (' ', end = ' ')
for d in range (e):
    e = e - 1
    print (e, end = ' ')
print()
输出为:

    9876543210
     876543210
      76543210
       6543210
        543210
         43210
          3210
           210
            10
             0

请帮助:)

似乎你把这件事复杂化了:

for i in range(10):
     print(' ' * i + ''.join(map(str, range(0, 10 - i))))

0123456789
 012345678
  01234567
   0123456
    012345
     01234
      0123
       012
        01
         0

从0到9运行一个循环。在每次迭代中,计算出要相应地打印多少空格和数字。随着
i
的增加,要打印的空格数也会增加。相应地,要打印的位数减少

实现这一点的更简单方法是创建一个自定义函数:

  • 使用
    str.format
  • 使用
    str.join
下面是一个使用生成器表达式的示例函数:

这也可以通过
map
实现,如下所示:

def print_triange(n):
    for i in range(n):
        print('{:>{}}'.format(''.join(map(str, range(n-i))), n))
样本运行:

>>> print_triange(10)
0123456789
 012345678
  01234567
   0123456
    012345
     01234
      0123
       012
        01
         0

几乎,您必须在第6行打印
d
,而不是
e

for e in range (10, 0, -1):
    for d in range (10 -e):
        print (' ', end='')
    for d in range (e):
        e = e - 1
        print (d, end='')
    print()

您可以使用空字符串作为
print
end
参数

from string import digits

triangle = '\n'.join(digits[:10-i].rjust(10) for i in range(10))

print(triangle)

使用嵌套列表理解且不使用
映射
导入
的一行程序:

print('\n'.join([''.join([str(j) for j in range(10-i)]).rjust(10,' ') for i in range(10)]))

0123456789
 012345678
  01234567
   0123456
    012345
     01234
      0123
       012
        01
         0

在范围(e)内的d的
中,
d
是一个从0到
e
的值。也许你可以把它打印出来?起首部分是为了原创性。很好地使用了
string.digits
(+1)
print('\n'.join([''.join([str(j) for j in range(10-i)]).rjust(10,' ') for i in range(10)]))

0123456789
 012345678
  01234567
   0123456
    012345
     01234
      0123
       012
        01
         0