反向数字三角形



我正在尝试创建一个反向三角形:

    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

请帮助:)

这是一种有趣的方法。

from string import digits
triangle = 'n'.join(digits[:10-i].rjust(10) for i in range(10))
print(triangle)

似乎您对此表示赞成:

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
  • 基于n合理了字符串
  • 使用str.join
  • 在范围内创建一个数字字符串

这是使用 Generator表达式的示例函数:

def print_triange(n):
    for i in range(n):
        print('{:>{}}'.format(''.join(str(j) for j in range(n-i)), n))
        #        ^ To right justify the string

也可以使用map AS来实现:

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

几乎,您必须在第六行中打印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'S end参数。

使用嵌套列表综合的单线,而无需使用mapimport

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

最新更新