大数跨境
0
0

python的“第十三封情书”

python的“第十三封情书” 数据皮皮侠
2019-11-20
2
导读:python的“第十三封情书”


在本期的内容之前,先给大家讲一个脍炙人口的小故事“笛卡尔的第十三封情书”



笛卡尔,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 plt



def 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 y

x = 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)







在九眼桥大学,有一个Python“大佬”,他遇到了心动的女孩,并成为了她的python入门老师,他毕业时,只留下了短短的一行代码…

女孩将这行代码敲进Spider,掩面而泣

再想去寻他,却没有了踪迹

十年之后,他作为知名校友返校归来,

他眉目盈盈,她笑颜如花

(原谅我吐了)


还等什么,快来制作你的Python情书吧!



作者:欧禹泽

编辑校对:郭通



【声明】内容源于网络
0
0
数据皮皮侠
社科数据综合服务中心,立志服务百千万社科学者
内容 2137
粉丝 0
数据皮皮侠 社科数据综合服务中心,立志服务百千万社科学者
总阅读615
粉丝0
内容2.1k