python打印菱形和对顶三角形

要求在屏幕上打印 出 菱形 和 对顶三角形 ,如下图所示:
python打印菱形和对顶三角形
文章图片

要实现以上效果,可以在屏幕上打印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打印菱形和对顶三角形
文章图片

以菱形中心点为坐标原点,将各个字符与坐标系上的点相对应,在上图四条线上及包围之内的点打印*,其他的为空字符。
上图四条线围起来的点坐标可以表示为:
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()

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

    推荐阅读