python打印菱形和对顶三角形

要求在屏幕上打印 出 菱形对顶三角形 ,如下图所示:
python打印菱形和对顶三角形_第1张图片
要实现以上效果,可以在屏幕上打印9行字符串,每行字符串中不同的位置上打印上空格或者*,关键就是要找其排列规律。


我们先来分析下 菱形

行号 前置空格数 * 后置空格数
1 (-4) 4 1 4
2 (-3) 3 3 3
3 (-2) 2 5 2
4 (-1) 1 7 1
5 ( 0) 0 9 0
6 ( 1) 1 7 1
7 ( 2) 2 5 2
8 ( 3) 3 3 3
9 ( 4) 4 1 4

要循环打印9行,为了使循环计数与空格数等关联上,我们使用range(-4,5)

for i in range(-4,5):
    if i<0:       #if..else..条件可以写成三木运算符形式
        j=-i      #  j=-i if i<0 else j=i
    else:
        j=i
    #先是j个空格,然后打印(9-2j)个* ,后面的都是空格,在屏幕上不显示,可以不打印#
    print(' '*j+'*'*(9-2*j))   

对顶三角形 按照同样的分析方式,得到的代码如下:

# 对顶三角形
for i in range(-4,5):
    if i<0:
        j=-i
    else:
        j=i
    print(' '*(9//2 -j)+'*'*(2*j + 1))   #先是(9//2 -j)j个空格,然后打印(2*j + 1)个空格,后面的都是空格,在屏幕上不显示,可以不打印   

关于菱形还可以使用 平面坐标系的方式 来实现以上效果,如下图:
python打印菱形和对顶三角形_第2张图片
以菱形中心点为坐标原点,将各个字符与坐标系上的点相对应,在上图四条线上及包围之内的点打印*,其他的为空字符。

上图四条线围起来的点坐标可以表示为:
y<=(x+4) and y<=(-x+4) and y>=(-x-4) and y>=(x-4)
即:abs(x)+abs(y)<=4

for y in range(4,-5,-1):
    for x in range(-4,5):
        if abs(x)+abs(y)<=4:          
            print('*',end ='')
        else:
            print(' ',end ='')
    print()

对顶三角形 的点范围公式为:abs(y)>=abs(x)
替换上面 代码 if 后的条件即可。

你可能感兴趣的:(python打印菱形和对顶三角形)