python for 循环三行代码实现菱形打印

2021-01-02  本文已影响0人  南土酱

嘤嘤嘤,你们这群白嫖怪。都1000多的阅读量了,居然一个赞都没有
😫💔
许多代码能实现 菱形打印,but python 我只用三..哦不,准确来说两行

num = eval(input())
for i in range(-num+1,num):
     print(' '* abs(i)+'*' * ((num*2-1)-abs(i)*2))

代码解析:

菱形是个对称图形 镜像图, 利用python 的(负数,正数)区间 来实现
(-num,num)

并且 for循环是个开区间,学过编程的都知道。故而

右边的开区间无需 -1。例如num = 3 , 正方向则是 0,1,2
左边的区间恰恰相反 ,  是从指定数字起始的故而需要 +1。
例如输入3 ,  此时
 -3+1 的循环则为  -2,-1,0

对应菱形的对称特点 -2,-1,0,1,2(有点像 坐标系的感觉)
接下来看print里边的

' ' *     字符串加乘法符号 代表 对当前 字符串复制若干个 然后拼接一起
例如 'Q' * 3 = 'QQQ'
abs()  函数代表返回 绝对值,负数无法正常与 字符串操作,否则结果会有点意外
(自己尝试,嘿嘿)
'*' * ((num*2-1)-abs(i)*2))

菱形 以中间那条最长的轴为对称轴。例如 num = 5 ,对称轴为 9个字符,向两边延伸以奇数列递减就是 7, 5, 3 , 1 。对应每行输出字符数。而空格数是 2,4,6,8(偶数列)
发现没有 !!!

对称轴 减去 字符数 就是 空格数
对称轴 减去 空格数 就是 字符数

那么空格数由谁控制呢,不就是区间嘛。 记得 -2,-1,0,1,2 ,吗。乘以 2 不就是 空格数

总字符数 = num*2-1
减去  区间内的 每个值  abs(i)  * 2 得到结果

最后,觉得好 点个赞呗。拿去大学python老师面前装个小聪明也不错

\color{#228B22}{python学习小总结,不对之处,欢迎大神们喷我。可以的话顺手点个赞吧~~!}
\color{red}{警: 禁止抄袭,转载说明出处 🤨}

上一篇下一篇

猜你喜欢

热点阅读