Python用*打印正三角、倒三角、等边三角形、菱形、空心菱形
【问题描述】
使用循环嵌套输出三角形、菱形
1、分别使用*打印正三角、倒三角、等边三角形、菱形、空心菱形
(1)正三角
*
**
***
****
*****
1)实现代码
m=0
for w in range(1,6): #5行
# *的个数与行相同,range(1,2),第二行,range(1,3)
for m in range(1,w+1):
print('*',end='')
print()
2)输出结果
(2)倒三角
*****
****
***
**
*
1)实现代码
for i in range(1,6):
# range(1,6) range(1,5) range(1,4),找行与列之间的关系7-1=6;7-2=5,7-3=4....
for e in range(1,7-i):
print('*',end='')
print()
2)输出结果
(3)等边三角形
*
***
*****
*******
*********
1)实现代码
for a in range(1,6): # 外循环5行
for b in range(1,6-a): # 倒三角形
print(' ',end='') # 需要打印空格,不换行
for c in range(1,a*2): # 1,3,5,7..等腰三角形,range(1,2),range(1,4),range(1,6)....
print('*',end='')
print()
2)输出结果
(4)菱形
(以7行为例,因为菱形是轴对称图形,可将菱形分为两部分,那就是一个正三角和一个倒三级拼接在一起了,我是将前4行一组,后3行一组)
*
***
*****
*******
*****
***
*
1)实现代码
row=eval(input('请输入菱形的行数:'))
while row%2==0: #判断行数的奇偶性,若为偶数则重新输入
print('请重新输入!')
row=eval(input('请输入菱形的行数:'))
# 输出菱形
top_row=(row+1)//2 #上半部分的行数
for t in range(1,top_row+1):
for t2 in range(1,top_row+1-t):
print(' ',end='')
for t3 in range(1,t*2):
print('*',end='')
print() #当两个并列的for循环执行结束后,在换行执行
# 7行為例子
low_row=row//2 # 3
for l in range(1,low_row+1):
for l2 in range(1,l+1): #直角三角形
print(' ',end='')
for l3 in range(1,low_row*2-2*l+2): # 第1行-->5个,range(1,6),第2行-->3个,range(1,4),...
# for l3 in range(1,2*(low_row+1-l)):
# 第一次(1,low_row=3*2)=(1,6),(1,6+2)
print('*',end='')
print() #当两个并列的for循环执行结束后,在换行执行
2)输出结果
(5)空心菱形
{以7行为例,因为菱形是轴对称图形,可将菱形分为两部分,前4行一部分(由一个倒三角+一个挖空的等腰三角形),后三行一部分(由一个正三角+一个倒立等腰三角形),挖空的三角形可以使用if-else语句判断,if(如果)是在第一位或最后一位则打印*,else(否则)打印空格}
*
* *
* *
* *
* *
* *
*
这张图我把空格都打印出来了,这样更清楚。
1)实现代码
row=eval(input('请输入菱形的行数:'))
while row%2==0: #判断行数的奇偶性,若为偶数则重新输入
print('请重新输入!')
row=eval(input('请输入菱形的行数:'))
# 输出菱形
top_row=(row+1)//2 #上半部分的行数
for t in range(1,top_row+1):
for t2 in range(1,top_row+1-t):
print(' ',end='')
for t3 in range(1,t*2):
if t3==1 or t3==t*2-1:
print('*',end='')
else:
print(' ',end='')
print() #当两个并列的for循环执行结束后,在换行执行
# 7行為例子
low_row=row//2 # 3
for l in range(1,low_row+1):
for l2 in range(1,l+1): #直角三角形
print(' ',end='')
for l3 in range(1,low_row*2-2*l+2): # 第1行-->5个,range(1,6),第2行-->3个,range(1,4),...
# for l3 in range(1,2*(low_row+1-l)):
# 第一次(1,low_row=3*2)=(1,6),(1,6+2)
if l3==1 or l3==(low_row*2-2*l+2)-1:
print('*',end='')
else:
print(' ',end='')
print() #当两个并列的for循环执行结束后,在换行执行
2)输出结果
作者:煎了个蛋加炒饭