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( .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版本

一行代码实现输出爱心图,参考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版本
经验分享 程序员 微信小程序 职场和发展