在本期的内容之前,先给大家讲一个脍炙人口的小故事“笛卡尔的第十三封情书”
笛卡尔,17世纪时出生于法国,他对于后人的贡献相当大, 当时法国正流行黑死病,笛卡尔不得不逃离法国, 于是他流浪到瑞典当乞丐. 某天,他在市场乞讨时,有一群少女经过,这名少女叫克丽丝汀,18岁,是一个公主, 她和其它女孩子不一样,并不喜欢文学,而是热衷于数学. 当她听到笛卡尔说名身份之后,感到相当大的兴趣,于是把笛卡尔邀请回宫.笛卡儿就成了她的数学老师,将一生的研究倾囊相授给克丽丝汀. 而克丽丝汀的数学也日益进步,直角坐标当时也只有笛卡尔这对师生才懂. 后来,他们之间有了不一样的情愫,发生了喧腾一时的师生恋. 这件事传到国王耳中,让国王相当愤怒! 下令将笛卡尔处死,克丽丝汀以自缢相逼, 国王害怕宝贝女儿真的会想不开, 于是将笛卡尔放逐回法国,并将克丽丝汀软禁. 笛卡尔一回到法国后,没多久就染上了黑死病,躺在床上奄奄一息. 笛卡尔不断地写信到瑞典给克丽丝汀,但却被国王给拦截没收. 所以克丽丝汀一直没收到笛卡尔的信…… 在笛卡尔快要死去的时候,他寄出了第13封信, 当他寄出去没多久后...就气绝身亡了. 这封信的内容只有短短的一行……
r=a(1-sinθ)
国王拦截到这封信之后,拆开看,发现并不是一如往常的情话. 国王当然看不懂这个数学式,于是找来城里所有科学家来研究, 但都没有人能够解开到底是什么意思. 国王心想……反正笛卡尔快要死了, 而且公主被软禁时郁闷不乐的,所以,就把信交给克丽丝汀. 当克丽丝汀收到这封信时,雀跃无比, 她很高兴她的爱人还是在想念她的.她立刻动手研究这行字的秘密. 没多久就解出来了,用的就是直角坐标图(注:实际上是极坐标系)
当θ=0°时,r=a(1-0)=a …… A点
当θ=90°时,r=a(1-1)=0 …… B点
当θ=180°时,r=a(1-0)=a …… C点
当θ=270°时,r=a(1+1)=2a …… D点 a为四截距的比值
将整个曲线图作出来,就是有名的心形线!
不久之后那位国王也死了,克丽丝汀
继承王位, 登基之后马上
派人在欧洲四处寻找
笛卡尔的踪迹,
可惜……人已故,
才子和佳人没
能有童话般的结局.
传说,
这第13封的
另类情书还保留
在欧洲的笛卡尔
纪念馆里……
信里的这个式子,
这就是笛卡尔和克丽
丝汀之间的“爱情密码”.
属于笛卡尔的专属浪漫沿袭至今,许多数学大佬在他的基础上进行改良,创造出了更加完美的心形图案,作为自己的新型表白。
Python也有自己的专属浪漫,不需要复杂的公式,反复的推演,简单直白,只需要一行代码,便可以将心意表达。
一、双爱心初级
import turtle as tt.setup(750,500)t.penup()t.pensize(25)t.pencolor("pink")t.fd(-230)t.seth(90)t.pendown()t.circle(-50,180)t.circle(50,-180)t.circle(75,-50)t.circle(-190,-45)t.penup()t.fd(185)t.seth(180)t.fd(120)t.seth(90)t.pendown()t.circle(-75,-50)t.circle(190,-45)t.penup()t.fd(184)t.seth(0)t.fd(80)t.seth(90)t.pendown()t.circle(-50,180)t.circle(50,-180)t.circle(75,-50)t.circle(-190,-45)t.penup()t.fd(185)t.seth(180)t.fd(120)t.seth(90)t.pendown()t.circle(-75,-50)t.circle(190,-45)t.penup()t.fd(150)t.seth(180)t.fd(300)t.pencolor("red")t.pensize(10)t.pendown()t.fd(-500)t.seth(90)t.fd(30)t.fd(-60)t.seth(30)t.fd(60)t.seth(150)t.fd(60)t.done()

二、双爱心高级
from turtle import *from time import sleepdef go_to(x, y):up()goto(x, y)down()def big_Circle(size): #函数用于绘制心的大圆speed(1)for i in range(150):forward(size)right(0.3)def small_Circle(size): #函数用于绘制心的小圆speed(1)for i in range(210):forward(size)right(0.786)def line(size):speed(1)forward(51*size)def heart( x, y, size):go_to(x, y)left(150)begin_fill()line(size)big_Circle(size)small_Circle(size)left(120)small_Circle(size)big_Circle(size)line(size)end_fill()def arrow():pensize(10)setheading(0)go_to(-400, 0)left(15)forward(150)go_to(339, 178)forward(150)def arrowHead():pensize()speed(1)color('red', 'red')begin_fill()left(120)forward(20)right(150)forward(35)right(120)forward(35)right(150)forward(20)end_fill()def main():pensize(2)color('red', 'pink')heart(200, 0, 1) #画出第一颗心,前面两个参数控制心的位置,函数最后一个参数可控制心的大小setheading(0) #使画笔的方向朝向x轴正方向heart(-80, -100, 1.5) #画出第二颗心arrow() #画出穿过两颗心的直线arrowHead() #画出箭的箭头go_to(400, -300)write("author:欧禹泽", move=True,, font=("宋体", 30, "normal"))done()main()# 当然,“欧禹泽”也可以改成你想说的任何骚话

三、整颗心都是爱你的形状
print('\n'.join([''.join([('Love'[(x-y) % len('Love')] 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(30, -30, -1)]))

四、我的每一次心跳都在说着“我爱你”
import numpy as npimport timeimport matplotlib.pyplot as pltdef plot_love(numbers):for k in range(numbers):time.sleep(0.05)def f(x, love=50):y = x ** (2/3) + 0.9 * np.sqrt(3.3-x**2)*np.sin(love*np.pi*x)return yx = np.linspace(0, 2, 1500)y = [f(i, k) for i in x]plt.plot(x, y, color='red', linewidth=5)plt.plot(-x, y, color='red', linewidth=5)plt.xlim(-2, 2)plt.show()plot_love(100)

女孩将这行代码敲进Spider,掩面而泣
再想去寻他,却没有了踪迹
十年之后,他作为知名校友返校归来,
他眉目盈盈,她笑颜如花
(原谅我吐了)
还等什么,快来制作你的Python情书吧!


作者:欧禹泽
编辑校对:郭通

