打印一个由星号组成的三角形图案

3
我需要使用嵌套的for循环和print('*', end=' ')来创建这里所示的图案: enter image description 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相同。希望能得到帮助!


2
似乎我们可以开始一个代码库,用于打印那些作为初学者练习使用的星号形状:金字塔M形图案三角形菱形空心正方形 - cfi
确实,我们可以使用@cfi +1。 - Registered User
15个回答

4

模式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图案

如果你按照我关于嵌套循环的提示进行操作,你可能会得到如下的 Pattern 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()

是的。实际上,您需要两个循环。对于C图案,第一个循环首先打印(11-e)个空格,可能使用print(' ', end='')。第二个循环使用print('*', end='')打印e个星号。 - John1024
那么 print(' * ', end='') 技术上已经在那里了,所以我不需要再写一遍了? - Registered User
我相信现在它能工作。如果以后不能工作,我会告诉你的。非常感谢!@john1024 - Registered User
抱歉,我们不能使用字符串乘法。无法执行 (11-e) * ' ' + e * '*'。 - Registered User
我在处理模式d时遇到了困难。@John1024 - Registered User
显示剩余4条评论

3
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

2
print("Pattern C")
n=int(input("Enter number of rows: ")) 
for i in range (n,0,-1):
    print((n-i) * ' ' + i * '*')

2
这可以用Pythonic的方式来完成。每个模式只需要一行代码(使用列表推导式)。
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
         *
        **
       ***
      ****
     *****
    ******
   *******
  ********
 *********
**********

1

模式1

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

Output

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

模式 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

输出

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

Pattern 4

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

输出

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

1
尝试这个!
  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();
                }
            }
        }

1
学习一种简单的方法:
代码1:
for n in range(0,5):
    n +=1
    print ("*" *(0+n))

它是做什么的:

  1. 对于n在range(0,5)中的每个值:-->调用想要循环执行的次数的范围
  2. 将int n的值增加1,因此从范围0到5开始,每次循环运行时都会将int n增加1
  3. 现在打印字符串“”,并将其乘以int n + 0的值。因此,当int n = 0时,根据逻辑int n增加1并打印(“”(0+n)) = print(“”*(0+1))= *

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

代码2:

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

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

1
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()  

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

这是一段HTML代码,展示了一个菱形图案。

1
使用空格可以创建不同的图案: 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) 会创建

 #
 # #
 # # #
 # # # #

1

这个函数:

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()

输出:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接