使用python打印出菱形:
*
***
*****
*******
*****
***
*
思想:平常我写这种代码的时候,总是自然地使用二层循环,今天老师教了一个特别好的方法,化二维为一维。我觉得代码优化是很重要的,所以把它写下来,可以慢慢培养自己的算法思想。
第一行空格3*1(即*个数为7-3*2)
第二行空格2*3(即*个数为7-2*2)
第三行空格1*5(即*个数为7-1*2)
第四行空格0*7
第五行空格1*5
第六行空格2*3
第七行空格3*1
嘻嘻嘻,找规律吧。空格个数可以用range(-n/2,n/2+1)表示,*的个数可以用(n-空格个数*2)表示,这样就可以用一维表示法来输出菱形。代码如下:
n=int(input("input n"))
for i in range(-int(n/2),int(n/2)+1):
print(" "*abs(i),"*"*abs(n-abs(i)*2))
文章图片
【python|Python打印菱形】PS:第一次写CSDN,很多不足,定会多多努力,加油加油!
补充:
有人问我偶数情况怎么办,我想补充一下
每一行的空格个数不变,但*的个数是变化的:
第一行空格3* 1(即* 个数为4-3)
第二行空格2* 2(即* 个数为4-2)
第三行空格1* 3(即* 个数为4-1)
第四行空格0* 4(即* 个数为4-0)
第五行空格1* 3
第六行空格2* 2
第七行空格3* 1
for j in range(-int(n / 2), int(n / 2) + 1):
print(" " * abs(j), "* " * abs(int(n/2)+1 - abs(j)))
和上面有一点不同,打印的时候每一个*的后面直接跟一个空格
这样打印出来就是这个样子:
文章图片
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)