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)输出结果

作者:煎了个蛋加炒饭

物联沃分享整理
物联沃-IOTWORD物联网 » Python用*打印正三角、倒三角、等边三角形、菱形、空心菱形

发表回复