( x 2 + y 2 − 1 ) 3 = x 2 y 3 (x^2+y^2-1)^3=x^2y^3 (x2+y2−1)3=x2y3
图像如下:
偶函数,关于y轴对称
##一条python语句实现爱心形状绘制 print('\n'.join([''.join( [('Love'[(x - y) % 4] 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(15, -15, -1)]))
效果如下:
veLoveLov veLoveLov eLoveLoveLoveLove eLoveLoveLoveLove veLoveLoveLoveLoveLoveLoveLoveLoveLoveLov veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLo veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove eLoveLoveLoveLoveLoveLoveLoveLoveLoveLove LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL eLoveLoveLoveLoveLoveLoveLoveLoveLove oveLoveLoveLoveLoveLoveLoveLoveLove eLoveLoveLoveLoveLoveLoveLoveLove veLoveLoveLoveLoveLoveLoveLov oveLoveLoveLoveLoveLoveLo LoveLoveLoveLoveLoveL LoveLoveLoveLov LoveLoveL Lov v
将表达式转化为循环结构,代码如下:
for y in range(15, -15, -1):#表示从15- -15每隔一个单位取一次值, ls=[] for x in range(-30, 30): tp=((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 if tp<=0: ##点在图像内部 a=''.join('Love'[(x - y) % 4]) #加字母 else: ##点在图像外部 a=''.join(' ') #加空格 ls.append(a) s=''.join(ls) print(s)
我们可以简单明了的
veLoveLov veLoveLov eLoveLoveLoveLove eLoveLoveLoveLove veLoveLoveLoveLoveLoveLoveLoveLoveLoveLov veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLo veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove eLoveLoveLoveLoveLoveLoveLoveLoveLoveLove LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL eLoveLoveLoveLoveLoveLoveLoveLoveLove oveLoveLoveLoveLoveLoveLoveLoveLove eLoveLoveLoveLoveLoveLoveLoveLove veLoveLoveLoveLoveLoveLoveLov oveLoveLoveLoveLoveLoveLo LoveLoveLoveLoveLoveL LoveLoveLoveLov LoveLoveL Lov v
其本质上是在一个由指定字符组成的字符串中按照规则绘制一个满足函数约束的图案。
tp=[''.join(['love'[(x-y)%4] for x in range(-30,30)]) for y in range(15,-15,-1)] # 60*30的画布上画出一个爱心的形状. print('\n'.join(tp))
elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov lovelovelovelovelovelovelovelovelovelovelovelovelovelovelove ovelovelovelovelovelovelovelovelovelovelovelovelovelovelovel velovelovelovelovelovelovelovelovelovelovelovelovelovelovelo elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov lovelovelovelovelovelovelovelovelovelovelovelovelovelovelove ovelovelovelovelovelovelovelovelovelovelovelovelovelovelovel velovelovelovelovelovelovelovelovelovelovelovelovelovelovelo elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov lovelovelovelovelovelovelovelovelovelovelovelovelovelovelove ovelovelovelovelovelovelovelovelovelovelovelovelovelovelovel velovelovelovelovelovelovelovelovelovelovelovelovelovelovelo elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov lovelovelovelovelovelovelovelovelovelovelovelovelovelovelove ovelovelovelovelovelovelovelovelovelovelovelovelovelovelovel velovelovelovelovelovelovelovelovelovelovelovelovelovelovelo elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov lovelovelovelovelovelovelovelovelovelovelovelovelovelovelove ovelovelovelovelovelovelovelovelovelovelovelovelovelovelovel velovelovelovelovelovelovelovelovelovelovelovelovelovelovelo elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov lovelovelovelovelovelovelovelovelovelovelovelovelovelovelove ovelovelovelovelovelovelovelovelovelovelovelovelovelovelovel velovelovelovelovelovelovelovelovelovelovelovelovelovelovelo elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov lovelovelovelovelovelovelovelovelovelovelovelovelovelovelove ovelovelovelovelovelovelovelovelovelovelovelovelovelovelovel velovelovelovelovelovelovelovelovelovelovelovelovelovelovelo elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov lovelovelovelovelovelovelovelovelovelovelovelovelovelovelove
python列表表达式的正确书写格式。
首先是单层的:
[ fun(i) 1 for i in * 2]
然后是多层的:
[ fun(i,j) for i in * for j in * ]
条件赋值语句 value = a if condition else b
tp=[''.join( [('Love'[(x - y) % 4] 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(15, -15, -1)] tp
[' ', ' ', ' ', ' veLoveLov veLoveLov ', ' eLoveLoveLoveLove eLoveLoveLoveLove ', ' veLoveLoveLoveLoveLoveLoveLoveLoveLoveLov ', ' veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL ', ' veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov ', ' eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove ', ' LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL ', ' oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLo ', ' veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov ', ' eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove ', ' oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove ', ' eLoveLoveLoveLoveLoveLoveLoveLoveLoveLove ', ' LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL ', ' eLoveLoveLoveLoveLoveLoveLoveLoveLove ', ' oveLoveLoveLoveLoveLoveLoveLoveLove ', ' eLoveLoveLoveLoveLoveLoveLoveLove ', ' veLoveLoveLoveLoveLoveLoveLov ', ' oveLoveLoveLoveLoveLoveLo ', ' LoveLoveLoveLoveLoveL ', ' LoveLoveLoveLov ', ' LoveLoveL ', ' Lov ', ' v ', ' ', ' ', ' ', ' ']
print('\n'.join([''.join( [('Love'[(x - y) % 4] 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(15, -15, -1)]))
veLoveLov veLoveLov eLoveLoveLoveLove eLoveLoveLoveLove veLoveLoveLoveLoveLoveLoveLoveLoveLoveLov veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLo veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove eLoveLoveLoveLoveLoveLoveLoveLoveLoveLove LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL eLoveLoveLoveLoveLoveLoveLoveLoveLove oveLoveLoveLoveLoveLoveLoveLoveLove eLoveLoveLoveLoveLoveLoveLoveLove veLoveLoveLoveLoveLoveLoveLov oveLoveLoveLoveLoveLoveLo LoveLoveLoveLoveLoveL LoveLoveLoveLov LoveLoveL Lov v
from matplotlib import pyplot as plt import numpy as np t = np.linspace(0,6,100) x = 16*np.sin(t)**3 y = 13*np.cos(t) -5*np.cos(2*t)-2*np.cos(3*t)-np.cos(4*t) fig = plt.figure(figsize=(5,5),dpi=100) plt.scatter(x,y) # plt.axis("off") plt.show()
fun为映射函数,其输入为后面 i 指代的内容。 ↩︎
*代表的是一个可迭代对象(列表等等) ↩︎