python 如何用*号打印出等腰三角形和菱形

您所在的位置:网站首页 用python画对称图形 python 如何用*号打印出等腰三角形和菱形

python 如何用*号打印出等腰三角形和菱形

#python 如何用*号打印出等腰三角形和菱形| 来源: 网络整理| 查看: 265

在学习python的循环语句时,老师经常会要求我们用循环语句打印出三角形或菱形,今天俺就来演示演示如何用*打印出图形。

1、首先来看看如何打印出等腰三角形(如图):

layer = int(input("请输入HANG数:")) #输入行数 for i in range(1,layer+1): #用i表示每一行 num1 = layer - i #num1表示每一行中空格的数量 for j in range(num1): #通过for循环语句打印空格 print(" ",end="") num2 = i*2-1 #num2表示每一行中的星号的数量 for j in range(num2): #通过for循环语句打印星号 print("*",end="") print("") #这个语句表示换行

解释:打印等腰三角形需要理解它的图形规律,设i表示行数,每一行星号的个数就等于(i*2-1),每一行星号前面空格的个数就等于总行数减去i。知道了等腰三角形怎么打印,菱形也就很相似了。

2、打印出菱形(如图):

layer = int(input("请输入打印的奇数行数:")) while layer%2==0: #因为打印菱形要上下对称,所以行数要单数 layer = int(input("必须是奇数,请输入重新打印的行数:")) for i in range(1,(layer//2+2)): num1 = layer//2+1 - i for j in range(num1): print(" ",end="") num2 = 2*i-1 for j in range(num2): print("*",end="") print("") for i in range((layer//2),0,-1) : num1 = layer//2+1 - i for j in range(num1): print(" ",end="") num2 = 2*i-1 for j in range(num2): print("*",end="") print("")

 解释:以打印9行为例,前面5行和打印等腰三角形是一样的,后面四行与前面原理相同,只不过在range函数中是反着来的,数从大到小排。

3、打印出空心菱形(如图):

layer = int(input("请输入奇数行数:")) while layer%2==0: layer = int(input("不是奇数,请重新输入:")) for i in range(1,layer//2+2): num1 = layer//2+1-i for j in range(num1): print(" ",end="") num2 = i*2-1 for j in range(num2): if j==0 or j == num2-1: #判断是否打印第一个或最后一个星号 print("*",end= "") else: print(" ",end = "") print("") for i in range(layer//2,0,-1): num1 = layer//2+1-i for j in range(num1): print(" ",end="") num2 = i*2-1 for j in range(num2): if j==0 or j == num2-1: print("*",end="") else: print(" ",end = "") print("")

 解释:要打印空心菱形,只需在打印星号时进行判断,如果是本行中第一个和最后一个星号就打印星号,否则就打印空格。

4、空心菱形中加入一行星号(如图):

layer = int(input("请输入奇数行数:")) while layer%2==0: layer = int(input("不是奇数,请重新输入:")) for i in range(1,layer//2+2): num1 = layer//2+1-i for j in range(num1): print(" ",end="") num2 = i*2-1 for j in range(num2): if j==0 or j == num2-1 or i == layer//2+1: #如果i的行数是中间那一行就全打印星号 print("*",end= "") else: print(" ",end = "") print("") for i in range(layer//2,0,-1): num1 = layer//2+1-i for j in range(num1): print(" ",end="") num2 = i*2-1 for j in range(num2): if j==0 or j == num2-1: print("*",end="") else: print(" ",end = "") print("")

 5、空心菱形中加入十字架(如图):

layer = int(input("请输入奇数行数:")) while layer%2==0: layer = int(input("不是奇数,请重新输入:")) for i in range(1,layer//2+2): num1 = layer//2+1-i for j in range(num1): print(" ",end="") num2 = i*2-1 for j in range(num2): if j==0 or j == num2-1 or i == layer//2+1 or j == num2//2: print("*",end= "") else: print(" ",end = "") print("") for i in range(layer//2,0,-1): num1 = layer//2+1-i for j in range(num1): print(" ",end="") num2 = i*2-1 for j in range(num2): if j==0 or j == num2-1 or j == num2//2: print("*",end="") else: print(" ",end = "") print("")

 6、打印一棵树(如图):

layer = int(input("请输入奇数行数:")) while layer%2==0: layer = int(input("不是奇数,请重新输入:")) for i in range(1,layer//2+2): num1 = layer//2+1-i for j in range(num1): print(" ",end="") num2 = i*2-1 for j in range(num2): if j==0 or j == num2-1 or i == layer//2+1 or j == num2//2: print("*",end= "") else: print(" ",end = "") print("") for i in range(layer//2,0,-1): num1 = layer//2+1-i for j in range(num1): print(" ",end="") num2 = i*2-1 for j in range(num2): if j == num2//2: print("*",end="") else: print(" ",end = "") print("")



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3