作业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
结果如下:
太酷啦!!