• Python之——爱心代码参与情人节


    一行代码实现输出爱心图,参考https://zhuanlan.zhihu.com/p/23321351

    原理:

    1、借助数学函数——((x * 0.05) ** 2 + (y * 0.1) ** 2 - 1) ** 3 - (x * 0.05) ** 2 * (y * 0.1) ** 3,这个是爱心图,具体公式是怎么来的不是很懂,借用下。函数小于等于0就是 爱心图内部

    2、遍历从x轴开始,判断函数小于0的话用字符填充,否则用空格填充

    3、遍历从y轴开始,逐行输出

    以下是一行代码实现:(网上看到的)

    print('
    '.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 >= 0 else ' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))
    

    一行写列表推导式实现很牛,但是小菜鸟的我当时一下子也没能看明白,于是乎分解动作:

    for y in range(30, -30, -1):
        value = []
        for x in range(-30, 30):
            if ((x * 0.05) ** 2 + (y * 0.1) ** 2 - 1) ** 3 - (x * 0.05) ** 2 * (y * 0.1) ** 3 <= 0:
                value.append("*")
            else:
                value.append(" ")
            s = "".join(value)
        print s
    

     这样的话应该就比较清晰了。

    效果图如下:

    函数大于0版本

  • 相关阅读:
    关于域名系统DNS解析IP地址的一些总结
    一个完整的TCP连接
    针对github权限导致hexo部署失败的解决方案
    关于css的一些事情(1)
    MVC、MVVM、MVP小结
    关于移动端开发的一些总结
    json与jsonp小结
    BFC 小结
    ES6 - for...of
    ES6-Symbol
  • 原文地址:https://www.cnblogs.com/vhills/p/8449123.html
Copyright © 2020-2023  润新知