首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我需要编写一个程序来打印以下模式:

我需要编写一个程序来打印以下模式:
EN

Stack Overflow用户
提问于 2019-06-13 02:25:23
回答 4查看 161关注 0票数 0

我需要生成以下模式:

代码语言:javascript
复制
1 2 3 4 5 6
  1 2 3 4 5
    1 2 3 4
      1 2 3
        1 2
          1

我已经写了一个代码,产生相同的,但在右边向上的形式。我不知道怎么把它翻过来。

代码语言:javascript
复制
for i in range(1, 6 + 1):
    for j in range(1, rows + 1):
        if(j < i):
            print(' ', end = '  ')
        else:
            print(i, end = '  ')
    print()
EN

回答 4

Stack Overflow用户

发布于 2019-06-13 03:17:47

此解决方案类似于您的解决方案,但有一些更改

它首先打印出三角形所需的空间数量

然后计数到count,然后移到下一行

代码语言:javascript
复制
num = 6
for i in range(num,0,-1):
    print('  '*(num - i), end='')
    for j in range(i):
        print(j + 1, end=' ')
    print()

如果使用大于10的值,则会产生奇怪的效果

代码语言:javascript
复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 
      1 2 3 4 5 6 7 8 9 10 11 12 13 
        1 2 3 4 5 6 7 8 9 10 11 12 
          1 2 3 4 5 6 7 8 9 10 11 
            1 2 3 4 5 6 7 8 9 10 
              1 2 3 4 5 6 7 8 9 
                1 2 3 4 5 6 7 8 
                  1 2 3 4 5 6 7 
                    1 2 3 4 5 6 
                      1 2 3 4 5 
                        1 2 3 4 
                          1 2 3 
                            1 2 
                              1 

您可以使用tabulate将所有内容保留在其列中。在这里,我还使用了列表理解来减少代码大小。

代码:

代码语言:javascript
复制
from tabulate import tabulate
count = 16
numbers = [[''] * (count - i) + [j+1 for j in range(i)] for i in range(count, 0, -1)]
print(tabulate(numbers))

输出:

代码语言:javascript
复制
-  -  -  -  -  -  -  -  -  --  --  --  --  --  --  --
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16
   1  2  3  4  5  6  7  8  9   10  11  12  13  14  15
      1  2  3  4  5  6  7  8   9   10  11  12  13  14
         1  2  3  4  5  6  7   8   9   10  11  12  13
            1  2  3  4  5  6   7   8   9   10  11  12
               1  2  3  4  5   6   7   8   9   10  11
                  1  2  3  4   5   6   7   8   9   10
                     1  2  3   4   5   6   7   8    9
                        1  2   3   4   5   6   7    8
                           1   2   3   4   5   6    7
                               1   2   3   4   5    6
                                   1   2   3   4    5
                                       1   2   3    4
                                           1   2    3
                                               1    2
                                                    1
-  -  -  -  -  -  -  -  -  --  --  --  --  --  --  --
票数 1
EN

Stack Overflow用户

发布于 2019-06-13 02:31:00

您可以使用range()进行倒数

代码语言:javascript
复制
for i in range(6, 0, -1):
    for j in range(1, rows + 1):
        if(6-j >= i): # if i = 6, doesn't activate. i=5, activates once. i=4, activates twice, etc.
            print(' ', end = ' ')
        else:
            print(i, end = ' ')
    print()
票数 0
EN

Stack Overflow用户

发布于 2019-06-13 02:43:12

因此,从我所看到的情况来看,您正在尝试制作表单:

代码语言:javascript
复制
     1
    21
   321
  4321
 54321
654321

因此,循环需要颠倒,您需要添加一个空间填充部分。

代码语言:javascript
复制
rows = 6
for i in range(1, rows+1):
    out = ''
    for j in range(1, rows):
        out += ' '

    for j in range(i, 0, -1):
        out += str(j)
    print(out)

    rows -=1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档