【问题标题】:Print a triangular pattern of asterisks打印星号的三角形图案
【发布时间】:2014-12-08 18:01:49
【问题描述】:

我需要使用嵌套的 for 循环和 print('*', end=' ') 来创建 here 所示的模式:

这是我的代码。我已经弄清楚了前两个。

n = 0

print ("Pattern A")
for x in range (0,11):
    n = n + 1
    for a in range (0, n-1):
        print ('*', end = '')
    print()
print ('')
print ("Pattern B")
for b in range (0,11):
    n = n - 1
    for d in range (0, n+1):
        print ('*', end = '')
    print()
print ('')

当我开始模式 C 和 D 时,我尝试以下操作:

print ("Pattern C")
for e in range (11,0,-1):
    n = n + 1
    for f in range (0, n+1):
        print ('*', end = '')
    print()
print ('')
print ("Pattern D")
for g in range (11,0,-1):
    n = n - 1
    for h in range (0, n-1):
        print ('*', end = '')
    print()

但结果与 A 和 B 相同。感谢帮助!

【问题讨论】:

标签: for-loop python-3.x


【解决方案1】:

模式 C 和 D 都需要前导空格,并且您没有打印任何空格,只打印星号。

这里是打印所需前导空格的替代代码:

print ("Pattern C")
for e in range (11,0,-1):
    print((11-e) * ' ' + e * '*')

print ('')
print ("Pattern D")
for g in range (11,0,-1):
    print(g * ' ' + (11-g) * '*')

这是输出:

Pattern C
***********
 **********
  *********
   ********
    *******
     ******
      *****
       ****
        ***
         **
          *

Pattern D

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

更详细地说,考虑这一行:

print((11-e) * ' ' + e * '*')

它打印(11-e) 空格,后跟e 星号。这提供了制作图案所需的前导空格。

如果您的老师想要嵌套循环,那么您可能需要将print((11-e) * ' ' + e * '*') 转换为循环打印每个空格,一次一个,然后是每个星形,一次一个。

通过嵌套循环的模式 C

如果您按照我给出的关于嵌套循环的提示进行操作,您将获得模式 C 的解决方案,如下所示:

print ("Pattern C")
for e in range (11,0,-1):
    #print((11-e) * ' ' + e * '*')
    for d in range (11-e):
        print (' ', end = '')
    for d in range (e):
        print ('*', end = '')
    print()

【讨论】:

  • 是的,它有效。这是我忘记添加的另一部分,老师说我们应该使用: print('*', end=' ')
  • 是的。实际上,您将需要两个循环。对于 C 模式,循环首先打印(11-e) 空格,推测为print(' ', end='')。第二个打印e 带有print('*', end='') 的星号。
  • 所以打印 ('*', end = '') 在技术上已经存在,所以我不必写它?
  • 我相信它现在有效。我稍后会告诉你它是否不起作用。多谢! @john1024
  • 对不起,我们不能使用乘法字符串。不能做 (11-e) * ' ' + e * '*'
【解决方案2】:
for i in range(1,n+1): print '{:>{}}'.format('#'*i, n)
this is For pattern D


for i in range(1,n-1): print '{:>{}}'.format('#'*i, n)
this is For pattern c

【讨论】:

    【解决方案3】:

    学习一个简单的方法:
    code1:

    for n in range(0,5):
        n +=1
        print ("*" *(0+n))
    

    它的作用:

    1. for n in range(0,5): --> 调用你希望循环执行的次数范围
    2. 将 int n 的值递增 1,因此从范围 0 到 5 开始,每次 for 循环运行时都会将 int n 递增 1
    3. 现在打印字符串“”并将其乘以 int n+0 的值,因此当 int n=0 时,按照逻辑 int n 递增 1 并打印 ("" (0 +n)) = 打印 ("" *(0+1)) = *

    输出:
    *
    **
    ***
    ****
    *****

    代码2:

    for n in range(-5,0):
        n +=1
        print ("*" *(0-n+1))
    

    输出:
    ****
    ***
    **
    *

    【讨论】:

      【解决方案4】:

      这样做的 Pythonic 方式。每个模式只需 1 行代码(使用列表理解)。

      n = 10
      
      # for A
      print('\n'.join(['*'*i for i in range(1,n+1)]))
      
      #output
      *
      **
      ***
      ****
      *****
      ******
      *******
      ********
      *********
      **********
      
      
      # for B
      print('\n'.join(['*'*i for i in range(n+1,0,-1)]))
      
      #output
      ***********
      **********
      *********
      ********
      *******
      ******
      *****
      ****
      ***
      **
      *
      
      # for C
      print('\n'.join([' '*(n-i) + '*'*i for i in range(n,0,-1)]))
      
      #output
      **********
       *********
        ********
         *******
          ******
           *****
            ****
             ***
              **
               *
      
      
      # for D
      print('\n'.join([' '*(n-i) + '*'*i for i in range(1,n+1)]))
      
      #output
               *
              **
             ***
            ****
           *****
          ******
         *******
        ********
       *********
      **********
      

      【讨论】:

        【解决方案5】:
        i=0
        while(i<5):
            j=0
            while(j<=i):
                print("*",end="") #end="" is given to stay on same line
                j=j+1
            print("")  #it will take u to new line
            i=i+1
            j=0
        i=i-2
        j=i
        while(i>=0):
            while(j>=0):
                print("*",end="")
                j=j-1
            print() #will also work
            i=i-1
            j=i
        

        这也行

        【讨论】:

          【解决方案6】:
          for i in range (1,n):    # loop will execute from 1 to 4(n-1)
              for j in range(1,i+1):
                  print("*",end="")
              print()
          for i in range (n+1,1,-1):
              for j in range(i,1,-1):
                  print("*",end="")
              print()
          

          使用 for 循环

          【讨论】:

            【解决方案7】:
            def fun (n):
                return n
            n=int(raw_input("Enter the number"))
            print "The given number is",n
            for i in range (n,0,-1):
                print "*"*i
            

            输出:

            The given number is 3
            ***
            **
            *
            

            【讨论】:

            • 这仅涵盖案例 B。
            【解决方案8】:
            print("Pattern C")
            n=int(input("Enter number of rows: ")) 
            for i in range (n,0,-1):
                print((n-i) * ' ' + i * '*')
            

            【讨论】:

              【解决方案9】:

              使用空格,您可以创建不同的模式: 1.

              def pattern(limit):
              
                  for i in range(limit+1):
                      print((limit-i)*"  "+ ' #'*i)    
              
              pattern(4)
              
              Output: 
                     #
                   # #
                 # # #
               # # # #
              

              2.从上面的代码中删除一个空格,模式将在金字塔中改变

              def pattern(limit):
                  for i in range(limit+1):
                      print((limit-i)*" "+ ' #'*i)       
              pattern(4)
              
              output: #
                     # #
                    # # #
                   # # # # 
              

              3: 没有空格 print((limit-i)*""+ ' #'*i) 会创建

               #
               # #
               # # #
               # # # #
              

              【讨论】:

                【解决方案10】:
                for i in range(0,5):
                for j in range(0,i+1):
                    print("*",end="")
                print()
                for k in range(5,0,-1):
                for l in range(k-1,0,-1):
                    print("*",end="")
                print()  
                

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

                【讨论】:

                  【解决方案11】:

                  功能:

                  def arrow(my_char, max_length):
                      for i in range(max_length*2):
                          if i <= max_length:
                              print(my_char*i)
                          if i > max_length:
                              print(my_char*(max_length*2-i))
                  

                  main():

                  def main():
                      print(arrow('*', 8))
                  
                  if __name__ == "__main__":
                      main()
                  

                  输出:

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

                  【讨论】:

                    【解决方案12】:

                    模式 1

                    for x in range(1,11):
                        print("*"*x)
                    

                    输出

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

                    模式 2

                    for x in range(10,0,-1):
                        print("*"*x)
                    

                    输出

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

                    模式 3

                     i=0
                        for x in range(10,0,-1):
                                print(" "*i,end="")
                    
                    
                           print("*"*x)
                            i+=1
                    

                    输出

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

                    模式 4

                    i=10
                    for x in range(1,11):
                            print(" "*i,end="")
                            print("*"*x)
                            i-=1
                    

                    输出

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

                    【讨论】:

                      【解决方案13】:

                      试试这个!

                        a)
                                  *                                                                                                                                                    
                                  **                                                                                                                                                   
                                  ***                                                                                                                                                  
                                  ****                                                                                                                                                 
                                  *****  
                      
                                  public class Main { 
                                      public static void main(String[] args) {
                                          int n=5;
                                          for(int i=1;i<=n;i++)
                                          {
                                              for(int j=1;j<=i;j++)
                                              {
                                                 System.out.print("*"); 
                                              }
                                              System.out.println();
                                          }
                                      }
                                   }
                      
                                  b)
                                  *****                                                                                                                                                
                                   ****                                                                                                                                                
                                    ***                                                                                                                                                
                                     **                                                                                                                                                
                                      *
                      
                      
                                  public class Main {
                                  public static void main(String[] args) {
                                      int n=5;
                                      for(int i=1;i<=n;i++)
                                      {
                                              for(int j=1;j<=(i-1);j++)
                                              {
                                                 System.out.print(" "); 
                                              }
                                              for(int j=i;j<=n;j++)
                                              {
                                                  System.out.print("*");
                                              }
                                              System.out.println();
                                      }
                                  }
                               }
                      
                              c)
                                  *                                                                                                                                                
                                 **                                                                                                                                                
                                ***                                                                                                                                                
                               ****                                                                                                                                                
                              *****
                      
                              public class Main
                              {
                                  public static void main(String[] args)
                                  {       int n=5;
                                          for(int i=n;i>0;i--)        
                                          {
                                             for(int j=1;j<=(i-1);j++)
                                             {
                                                System.out.print(" "); 
                                             }
                                             for(int j=i;j<=n;j++)
                                             {
                                                System.out.print("*");
                                             }
                                             System.out.println();
                                      }
                                  }
                               }
                      
                              d)
                              *****                                                                                                                                                
                              ****                                                                                                                                                 
                              ***                                                                                                                                                  
                              **                                                                                                                                                   
                              * 
                      
                      
                              public class Main
                              {
                                  public static void main(String[] args) {
                                      int n=5;
                                      for(int i=n;i>0;i--)
                                      {
                                          for(int j=1;j<=i;j++)
                                          {
                                              System.out.print("*");
                                          }
                                          System.out.println();
                                      }
                                  }
                              }
                      

                      【讨论】:

                        【解决方案14】:
                        var n = 5;
                        
                            for(int row = 0 ; row < n; row++)
                            {
                                for(int col = 1; col <= n; col++)
                                {
                                    if(col < n - row)
                                    {
                                        Console.Write(" ");
                                    }
                                    else
                                    {
                                        Console.Write("*");
                                    }
                        
                                }
                                Console.WriteLine();
                        
                            }
                        

                        (D)

                        【讨论】:

                        • 嗨,kuldeep Chopra。请考虑添加更多信息。
                        【解决方案15】:

                        对于范围内的 i (1,7): print(" "(7-i)+""*(i))

                        输出:

                          *
                         **
                        ***
                        



                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2016-02-05
                          • 2018-08-26
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多