Python3 利用心形线函数打印心形

1 minute read

思路

  1. 将字符串分割成列表

  2. 嵌套两个 for 循环,“绘制”出直角坐标系网格

  3. 计算心形函数,将函数内(结果<=0)的部分填充字符,函数外填充空格

  4. 逐行追加到列表中

  5. 打印输出

心形函数(心脏线)

$$ (x^2+y^2-1)^3-x^2y^3=0 $$

代码实现

 1sentence = 'Cardioid'
 2
 3for char in sentence.split():
 4    finalChar = []
 5    for y in range(15, -15, -1):
 6        col = []
 7        col_content = ''
 8        for x in range(-30, 30):
 9            formula = ((x * 0.045)**2 + (y * 0.1)**2 - 1)**3 - (x * 0.045)**2 * (y * 0.1)**3
10            if formula <= 0:
11                col_content += char[(x - y) % len(char)]
12            else:
13                col_content += ' '
14        col.append(col_content)
15        finalChar += col
16print('\n'.join(finalChar))

简化代码

利用 Python 的各种简写和特性对这段代码进行缩减,就会得到广为流传的“一行代码画心形”代码

1print('\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)]))