一条python 语句绘制浪漫的心形图案-----附解释(七夕专供)
作者:互联网
七夕也要好好学习
- 心形曲线函数1(一条python语句)
( 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 ',
' ',
' ',
' ',
' ']
小结
列表推导式 [* for i in *]
条件赋值语句 value = a if condition else b
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()
标签:elovelovelovelovelovelovelovelovelovelovelovelovelovelovelov,eLoveLoveLoveLove,v 来源: https://blog.csdn.net/qq_43109064/article/details/119710022