思路
将字符串分割成列表
嵌套两个 for 循环,“绘制”出直角坐标系网格
计算心形函数,将函数内(结果<=0)的部分填充字符,函数外填充空格
逐行追加到列表中
打印输出
心形函数(心脏线)
$$ (x^2+y^2-1)^3-x^2y^3=0 $$
代码实现
1 | sentence = 'Cardioid' |
简化代码
利用 Python 的各种简写和特性对这段代码进行缩减,就会得到广为流传的“一行代码画心形”代码
1 | print('\n'.join([''.join([('Cardioid'[(x-y) % 8] if((x*0.045)**2+(y*0.1)**2-1)**3-(x*0.045)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(15, -15, -1)])) |