美文网首页
python for 循环三行代码实现菱形打印

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

作者: 南土酱 | 来源:发表于2021-01-02 18:42 被阅读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}{警: 禁止抄袭,转载说明出处 🤨}

    相关文章

      网友评论

          本文标题:python for 循环三行代码实现菱形打印

          本文链接:https://www.haomeiwen.com/subject/nwweoktx.html