Python3 利用心形线函数打印心形
思路
-
将字符串分割成列表
-
嵌套两个 for 循环,“绘制”出直角坐标系网格
-
计算心形函数,将函数内(结果<=0)的部分填充字符,函数外填充空格
-
逐行追加到列表中
-
打印输出
心形函数(心脏线)
$$ (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)]))