如何在python中反转星号三角形

时间:2018-07-17 19:20:49

标签: python for-loop

目前,我有一个代码,可以输出一个星号三角形,如下所示:

* 
* * 
* * * 
* * * * 
* * * * * 

这是它的代码:

num = int(input("Enter the number of rows: "))
for i in range(1,num+1):
    for j in range(1,i+1):
        print("*",end=' ')
    print()

现在,如何使用/修改上面的相同代码,使三角形看起来像这样:

        *
      * *
    * * *
  * * * *
* * * * * 

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

使用字符串方法str.rjust

>>> num = int(input("Enter the number of rows: "))
... for i in range(1,num+1):
...     print(' '.join('*'*i).rjust(num*2))
Enter the number of rows: 5
         *
       * *
     * * *
   * * * *
 * * * * *

答案 1 :(得分:0)

这是一个可以通过以下两种方式实现的功能:

def tristar(n,rev=False):
    for i in range(1,n+1):
        if rev:
            s = ' ' * (n-i) + '*' * i
            print(s)
        else:
            s = '*' * i
            print(s)

答案 2 :(得分:0)

如果不允许您使用rjust

num = int(input("Enter the number of rows: "))
for i in range(1, num + 1):
    for j in range(num, 0, -1):
        if j <= i:
            print('*', end=' ')
        else:
            print(' ', end=' ')
    print()

或者:

num = int(input("Enter the number of rows: "))
for i in range(num, 0, -1):
    for j in range(1, num + 1):
        if i > j:
            print(' ', end=' ')
        else:
            print('*', end=' ')
    print()

答案 3 :(得分:-1)

以下代码将打印一个倒三角形:

for i in range(1,6):
    print("{:>5s}".format("*"*i))

输出:

    *
   **
  ***
 ****
*****