1.直角三角形
for i in range(1,6):
for a in range(1,i+1):
print("*",end='')
print()
for i in range(1,6):
for b in range(1,10-(2*i)):
print("*",end='')
print()
一个很简单的按行输出“ * ”的代码,只需要考虑每行输出几个符号就可以构建出一个直角三角形。
2.等腰三角形
for i in range(1,6): # i来控制第几行
for j in range(1,6-i): # j控制某一行前面的空格
print(' ',end='')
for k in range(1,i*2): # k控制输出的*
print("*",end='')
print()
for i in range(1,6):
for a in range(1,i+1):
print(" ",end='')
for b in range(1,10-(2*i)):
print("*",end='')
print()
输出图形可以把图形想成两部分的组合,空格和" * " ,用直角三角形做一个空格的输出,再配合“ * ”的输出,组成等腰三角形。总共用了三个循环,外层循环控制层数。
内层两个平级的循环,一个输出空格,一个输出“ * ”,因为要边空格边符号,就用了两个for。
值得注意的是range范围是左闭右开的,有时候图形输出不正常很有可能是由于range范围错误。range范围是根据行数与应输出符号的数量的函数关系来确定的。
3.菱形
for i in range(1,6):
for j in range(1,6-i):
print(" ",end='') # 以空格结尾不换行
for k in range(1,2*i):
print("*",end='') # 输出*
print() # 换行
for i in range(1,5):
for a in range(0,i):
print(" ",end='')
for b in range(1,10-(2*i)):
print("*",end='')
print()
这里用直角三角形构建等腰三角形,再用两个等腰三角形构建出一个菱形,两个方向相反的等腰三角形按顺序输出得到一个菱形或者平行四边形。
4.任意奇数行菱形
num = int(input("请输入菱形的行数:"))
#//为取整除
top = (num+1)//2
#上半部分
for i in range(1,top+1): #括号内左开右闭所以需要加一
for j in range(1,top+1-i):
print(" ",end='')
for k in range(1,i*2):
print("*",end='')
print()
#下半部分
bottom = num//2
for i in range(1,bottom+1):
for j in range(1,i+1):
print(" ",end='')
for k in range(1,2*bottom-2*i+2):
print("*",end='')
print()