马上就是情人节了,
试试下面这行代码,画一个爱心?,送给你要表白的对象吧。 :)
print('\n'.join([''.join([('ILoveU'[(x-y) % len('ILoveU')] 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(-25, 25)]) for y in range(13, -13, -1)]))
显示效果如图:
下面来简单拆分一个这个代码,通过做一些简单的数字调整,你也可以只画半颗?哦。
原理:
1、借助数学函数 爱心图函数——((x0.05)**2+(y0.1)**2-1)**3-(x0.05)*2(y0.1)**3,具体为什么是这个公式,我也没研究出来。函数等于0就是 爱心图内部。
2、从x轴开始,判断函数小于0的话用字符填充,否则用空格填充。取x在(-25,25),可以画一整个爱心;如果只取(-25,0)就是左半心;反之(0,25)就是又半心。
3、从y轴开始,逐行输出。(13, -13, -X) 调整X可以调整爱心的扁平度。
看明白了么?下面我们试试画半个爱心,去寻找和等待你的另一半吧。
print('\n'.join([''.join([('WhereAreU'[(x-y) % len('WhereAreU')] 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, 0)]) for y in range(15, -15, -1)]))
显示效果如图: