PYTHON的流程控制打印输出图案

作业1:请使用循环打印如下图案:
    

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

分析 :先由一层循环来打印行

每一行用循环来控制打印*的个数

index=1#用来控制行的输出次数
while(index<=5):
    j=index#用来控制每一行的具体输出
    while(j>0):
        print("*",end="")#end=""由于python3的print()默认换行 所以可以通过这一手段使其不换行
        j-=1
    print()
    index+=1


 

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

分析:与上一输出差不多还是五行

只是每一行的输出发生变化 所以改变行的输出

发现行标与每一行的输出次数的关系为2n-1

index=1
while(index<=5):
    j=index*2-1
    while(j>0):
        print("*",end="")
        j-=1
    print()
    index+=1


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

分析:与上述案例相同 还是五行

只需要改变行的输出结构

第一行输出了四个空格一个*第二行是三个空格一个*可以发现规律空格数总是五减*数

index=1
while(index<=5):#先确定要输出几行
    j=index
    i=j
    while (5-j>0):
        print(" ",end="")#输出空格
        j+=1
    while(i>0):
        print("*",end="")#在空格后面接上*
        i-=1
    print()
    index+=1

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

分析:

一共四行

第一行三个空格一个星星,第二行两个空格三个星星,第三行一个空格五个星星

以此类推每行一共四五六七个字符

行号:4 5 6 7

空格数:3 2 1 0行号减七等于空格数

星星数:1 3 5 7 等于行号减四乘以二加一

index=4#行号
while(index<=7):
    j=7-index#空格数
    while(j>0):
        print(" ",end='')
        j-=1
    i=(index-4)*2+1#星星数

    while(i>0):
        print("*",end='')
        i-=1

    index+=1
    print()

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

分析:

行号:7 6 5 4

空格数:0 1 2 3 七减行号 

星星数:7 5 3 1 行数减四乘以二加一

index=7
while(index>=4):
    j=7-index
    while(j>0):
        print(" ",end='')
        j-=1
    i=(index-4)*2+1
    while(i>0):
        print("*",end='')
        i-=1
    index-=1
    print()


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

分析一共七行

分为上四行和下三行打印

上四行从四到七 下三行从八到十

行标:4 5 6 7        8 9 10

空格数:(七减行标)3 2 1 0    1 2 3(行标减七)

星星数:1 3 5 7 5 3 1

index=4
while(index<=10):
    if(index<8):
        j=7-index
        while(j>0):
            print(" ",end='')
            j-=1
        i=(index-3)*2-1
        while(i>0):
            print("*",end='')
            i-=1
        print()
    else:
        j=index-7
        while(j>0):
            print(" ",end='')
            j-=1
        i=(11-index)*2-1
        while(i>0):
            print("*",end='')
            i-=1
        print()

    index+=1
#用if else来区分上半部分和下半部分

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

分析:

行标:1 2 3 4  5 6 7 

空格数:3 2 1 0(4-行标) 1 2 3(行标-4)

星星数(先忽略空格):1 3 5 7 (2*行标减一)5 3 1((7-行标)乘二加一)星星位于打印的一开始和结束

index=1
while(index<=7):
    if(index<5):
        j=4-index
        while(j>0):
            print(" ",end='')
            j-=1
        i=2*index-1
        while(i>0):
            if(i==1 or i==2*index-1):
                print("*",end='')
            else:
                print(" ",end='')
            i-=1
    else:
        j=index-4

        while(j>0):
            print(" ",end='')
            j-=1
        i=(7-index)*2+1
        while(i>0):
            if(i==1 or i==(7-index)*2+1):#第一个字符和最后一个字符是* 用if语句将其筛选输出
                print("*",end='') 
            else:#除*以外剩余都是空格
                print(" ",end='')
            i-=1       
    print()
    index+=1


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

分析:

行标:1 2 3 4 (ifels区分)5 6 7

星星数(忽略空格):1 3 5 7 (2*行标减一) 5 3 1(七减行标乘以二加一)空格位于行标为3和五的时候,且位于2,4两个位置

空格数:3 2 1 0(4-行标) 1 2 3(行标-4)

index=1
while(index<=7):
    if(index<=4):
        j=4-index
        while(j>0):
            print(" ",end='')
            j-=1
        i=2*index-1
        while(i>0):
            if(index==3 and (i==4 or i==2)):#第三行第二和第四个字符
                print(" ",end='')
            else:
                print("*",end='')    
            i-=1
    else:
        j=index-4
        while(j>0):
            print(" ",end='')
            j-=1
        i=(7-index)*2+1
        while(i>0):
            if(index==5 and (i==4 or i==2)):#第五行第二和第四个字符
                print(" ",end='')
            else:
                print("*",end='')    
            i-=1
    print()
    
    
    index+=1

结果如下:

 太酷啦!!

posted @ 2023-06-04 22:11  f0r9  阅读(15)  评论(0编辑  收藏  举报  来源