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 |
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)个空格,后面的都是空格,在屏幕上不显示,可以不打印
关于菱形还可以使用 平面坐标系的方式 来实现以上效果,如下图:

文章图片
以菱形中心点为坐标原点,将各个字符与坐标系上的点相对应,在上图四条线上及包围之内的点打印*,其他的为空字符。
上图四条线围起来的点坐标可以表示为:
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 后的条件即可。
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)
- Python|Python 9.20