python爱心代码大全_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('\n'.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版本

你可能感兴趣的:(python爱心代码大全)