啥是佩奇?Python告诉你
作者 | 丁彦君
来源 | 恋习Python
昨天,
被《啥是佩奇》这支广告片刷屏了。
佩奇明明是个喜剧角色,
却看哭了所有人。
▼
《啥是佩奇》???
快过年了
在农村爷爷给城里的小孙子打电话
小孙子说想要“佩奇”
为了满足小孙子的愿望
爷爷开始满村子找佩奇
开片爷爷在电话这头的一段话就很抓人心,
全世界的爷爷都是这样疼孙儿的,
一下子就让观众有共情的心理。
一句“什么是佩奇?”
铺垫了爷爷接下来的一段寻找佩奇之路,
最后爷爷找到的佩奇骨络清奇,
却是圈主见过的全世界最可爱的小猪佩奇!
不知道大家看完什么感觉
反正我看完是哭了
我看网友们也纷纷留言
说自己哭笑两重奏
看着爷爷满村子找佩奇,我有点心疼了。为此我想用纯粹的Python来告诉爷爷,啥是佩奇?
先看看效果视频:
基本思路:选好画板大小,设置好画笔颜色,粗细,定位好位置,依次画鼻子,头、耳朵,眼睛,腮,嘴,身体,手脚,尾巴,完事。
都知道,turtle 是 python 内置的一个比较有趣味的模块,俗称 海龟绘图,它是基于 tkinter 模块打造,提供一些简单的绘图工具。
在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动。这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条。通过编写代码,以各种很酷的模式移动海龟,我们可以绘制出令人惊奇的图片。使用海龟作图,我们不仅能够只用几行代码就创建出令人印象深刻的视觉效果,而且还可以跟随海龟看看每行代码如何影响到它的移动。这能够帮助我们理解代码的逻辑。所以海龟作图也常被用作新手学习 Python 的一种方式。更丰富详细的功能及知识可以参考:(官方文档:https://docs.python.org/3/library/turtle.html)
了解了tuttle的用法之后就可以开始实战了。
代码示例:
from turtle import*
def nose(x,y):#鼻子
penup()#提起笔
goto(x,y)#定位
pendown()#落笔,开始画
setheading(-30)#将乌龟的方向设置为to_angle/为数字(0-东、90-北、180-西、270-南)
begin_fill()#准备开始填充图形
a=0.4
for i in range(120):
if 0<=i<30 or 60<=i<90:
a=a+0.08
left(3) #向左转3度
forward(a) #向前走a的步长
else:
a=a-0.08
left(3)
forward(a)
end_fill()#填充完成
penup()
setheading(90)
forward(25)
setheading(0)
forward(10)
pendown()
pencolor(255,155,192)#画笔颜色
setheading(10)
begin_fill()
circle(5)
color(160,82,45)#返回或设置pencolor和fillcolor
end_fill()
penup()
setheading(0)
forward(20)
pendown()
pencolor(255,155,192)
setheading(10)
begin_fill()
circle(5)
color(160,82,45)
end_fill()
def head(x,y):#头
color((255,155,192),"pink")
penup()
goto(x,y)
setheading(0)
pendown()
begin_fill()
setheading(180)
circle(300,-30)
circle(100,-60)
circle(80,-100)
circle(150,-20)
circle(60,-95)
setheading(161)
circle(-300,15)
penup()
goto(-100,100)
pendown()
setheading(-30)
a=0.4
for i in range(60):
if 0<=i<30 or 60<=i<90:
a=a+0.08
lt(3) #向左转3度
fd(a) #向前走a的步长
else:
a=a-0.08
lt(3)
fd(a)
end_fill()
def cheek(x,y):#腮
color((255,155,192))
penup()
goto(x,y)
pendown()
setheading(0)
begin_fill()
circle(30)
end_fill()
def mouth(x,y): #嘴
color(239,69,19)
penup()
goto(x,y)
pendown()
setheading(-80)
circle(30,40)
circle(40,80)
def setting(): #参数设置
pensize(4)
hideturtle() #使乌龟无形(隐藏)
colormode(255) #将其设置为1.0或255.随后 颜色三元组的r,g,b值必须在0 .. cmode范围内
color((255,155,192),"pink")
setup(840,500)
speed(10)
def main():
setting() #画布、画笔设置
nose(-100,100) #鼻子
head(-69,167) #头
ears(0,160) #耳朵
eyes(0,140) #眼睛
cheek(80,10) #腮
mouth(-20,30) #嘴
done()
if __name__ == '__main__':
main()
思路其实很简单,就是通过trutle模块实现基本的圆,椭圆,曲线等,难点在于,如何定位每个部位的位置(建议先草图画画)。
完整代码需要300行,为了限于篇幅,只放了一部分代码,需要完整源码的盆友,可自行下载。
传送门:
https://pan.baidu.com/s/1LHw7MYFhqCRw8e_K22u32A
密码: rqbt
(*本文为作者投稿文章,转载请联系原作者)
公开课预告
◆
下周四晚8点直播
◆
主题:端侧卷积神经网络发展及其应用
时间:1月24日晚8点
讲师:李战斌(支付宝算法专家)
推荐阅读
10分钟快速入门Python函数式编程
啥是佩奇?Python告诉你
2019年人工智能行业又进入冬天了吗?
阿里“菜鸟”AI?
“对不起,你的离职是我的错!”
Gartner的预言:通向混合IT之旅
刚刚!华为又被美国盯上了!
崩溃!新浪程序员加班错失 77 万年会大奖
心疼!能为程序员男友做些什么吗?
相关文章:

Linux中bashrc河bash_profile
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取. ~/.bash_profile 调用 ~/.bashrc 每个用户…

arcgis server 开发
不知道有多少人采用 adf 做开发,不知为什么,感觉在web 上用他老不爽 javascript api http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jssamples_start.htm silverlight api http://resources.esri.com/help/9.3/arcgis…

详解谷歌最强NLP模型BERT(理论+实战)
作者:李理,环信人工智能研发中心vp,十多年自然语言处理和人工智能研发经验。主持研发过多款智能硬件的问答和对话系统,负责环信中文语义分析开放平台和环信智能机器人的设计与研发。 本文是作者正在编写的《深度学习理论与实战》的…

rz 和 sz
想从windows上传文件到linux中,还是rz / sz 可以用yum安装: yum install lrzsz -y 不能直接yum install rz 或者 yum install sz,只能用lrzsz来安装,-y表示之后的判断一律选择yes 使用rz从windows上传文件到linux,刚…

SMS系列之六:利用SMS实现操作系统的补丁分发
利用SMS实现操作系统的补丁分发杜 飞微软的每个操作系统都会不断的推出新的补丁,如Win2000的补丁达到SP4,XP的补丁达到SP3,Win2003也达到了SP2。那么做为一个IT管理员对员工的操作系统及时进行补丁升级也是一个日常工作。今天咱们就来看一下如…

201621123075作业12-流与文件
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车。 2.1 简述如何使用流与文件改造你的系统。文件中数据的格式如何ÿ…

【Junit】BeforeClass、Before、After、AfterClass
在JUnit4中,添加了Annotations来标记测试。 测试方法由Test 标记说明。使用标记的好处是你不用将所有测试方法命名为testFoo()这种形式。 执行顺序: BeforeClass > Before > After > AfterClass 使用Before、After标签组合在每个测试方法前后都…

COCO 2018 Keypoint冠军算法解读
作者简介:王志成,清华大学计算机系硕士,现为旷视科技研究员,人体姿态估计研究负责人,COCO Keypoint 冠军算法 CPN、MSPN 共同第一作者,研究方向涵盖人体姿态估计与跟踪、人体动作识别,并在上述方…

linux下IPython的安装方法
按照下面的步骤依次执行即可。在linux环境里:wget http://ipython.scipy.org/dist/ipython-0.8.4.tar.gz说明:在官网下载ipython最新的tar包。tar zxvf ipython-0.8.4.tar.gz说明:解压下载的包。cd ipython-0.8.4说明:进入到解压后…

201621123057 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车。 2.1 简述如何使用流与文件改造你的系统。文件中数据的格式如何ÿ…

对 makefile 中 .SECONDARY 的学习体会
上例子 LIBSfoo.gao bar.gao .INTERMEDIATE:$(LIBS) .SECONDARY:bar.gao all: $(LIBS) #pass foo.gao: echo $ touch $ bar.gao: echo $ touch $ make --dry-run 的结果: foo.gao touch foo.gao bar.gao touch bar.gao #pass rm foo.gao 可见,SECONDARY 确实起到…

yuml 类图设计
http://yuml.me/diagram/nofunky/class/draw 使用yuml这个工具进行类图设计: // Cool Class Diagram [Engine :lib/core]<>Use[App :lib/core/model] [Engine :lib/core]<>Use[Hook :lib/core/] [Engine :lib/core]<>Use[Dsl :lib/core/] [Engine…

特斯拉再裁员3000多人,马斯克称别无选择
编译整理 | 一一 出品 | AI科技大本营 去年 6 月,为了缩减开支,特斯拉宣布裁员 9%,涉及员工超 4000 人,但在不久又开启了一轮积极的招聘狂潮。现在,这艘大船再度面临风暴不堪重负,裁员潮说来就来。 北京…

一个表对应另一个表中多个主键的查询方法(把一个表当成两个表用)
表t_RecordPID(主键) SendUserID(发送人) ReceiveUserID(接收人) 1 1 2 2 2 3 3 3 1 表t_UserPID(主键) UserName(用户名) 1 张三 2 …

Keras 最新《面向小数据集构建图像分类模型》
本文地址:http://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html 本文作者:Francois Chollet 按照官方的文章实现过程有一些坑,彻底理解代码细节实现,理解keras的api具体使用方法也有…

Python处理XML文件
用代码记录下: import xml.dom.minidomtry:f open(filename)dom xml.dom.minidom.parseString(f.read()) finally:f.close()if dom ! None:root dom.documentElementfor element in root.getElementsByTagName("bean"):for prop in element.getElement…

李彦宏首次公布24字百度愿景,要做最懂用户的公司
编辑 | 一一 出品 | AI科技大本营 近日,李彦宏发布内部信并首次公布了 24 字百度愿景:成为最懂用户,并能帮助人们成长的全球顶级高科技公司。李彦宏表示,“这 24 个字将上承新使命、下展公司“夯实移动基础、决胜 AI 时代”的整体…

HP c3000/c7000 blade switch GBE2c 初始配置
端口概述 Port 1-16 是内联刀片的downlink口 Port 17-18 是switch互联用,默认是disable的 Port 19是给Blade On-board Administrator用 Port 20-24 是uplink口 连到交换机的Console口 To access the switch locally: 1. Connect the switch DB-9 serial connector, …

Travis CI : 最小的分布式系统(一)
(本文翻译自http://www.paperplanes.de/2013/10/18/the-smallest-distributed-system.html,由金斌_jinbin 翻译) Travis CI一开始仅仅是个想法,在当时甚至还有些理想化。在这个项目启动之前,开源社区还没有一个可用的持续集成系统。 随着作为…

Windows 7时代即将终结!
作者 | 屠敏 转载自CSDN(ID:CSDNnews) 2009 年诞生的 Windows 7 终究没能超过 Windows XP 13 岁的寿命。 2015 年 1 月 14 日,微软宣布结束对 Windows 7 操作系统的第一阶梯主流支持,同时为了给用户过渡升级的时间,…

什么是DWDM
DWDM是Dense Wavelength Division Multiplexing(密集波分复用)的缩写,这是一项用来在现有的光纤骨干网上提高带宽的激光技术。更确切地说,该技术是在一根指定的光纤中,多路复用单个光纤载波的紧密光谱间距,…

MySQL · myrocks · MyRocks之memtable切换与刷盘
概述 MyRocks的memtable默认是skiplist,其大小和个数分别由参数write_buffer_size和max_write_buffer_number控制。数据写入时先写入active memtable, 当active memtable写满时,active memtable会转化为immutable memtable. immutable memtable数据是不会…

URLRewriter在ASP.NET配置文件中的用法
<?xml version"1.0"?><configuration><configSections><sectionGroup name"system.web.extensions" type"System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version1.0.61025.0, Culturene…

Travis CI : 最小的分布式系统(二)
大约1年之前,我们发现当时的架构有些不合理了。尤其是Hub,它上面承担了太多的任务。Hub要接收新的处理请求,处理并推动构建日志,它要同步用户信息到Github,它要通知用户构建是否成功。它跟一大群外部API打交道…

百度开设「黄埔学院」,革新者来
1 月 19 日,百度宣布成立「黄埔学院」,开展深度学习架构师培养计划。并借鉴了黄埔军校大门对联的横批「革命者来」,将口号设置为「革新者来」。 首先,为什么叫「黄埔学院」? 2012 年初,百度开始进行深度学…

Linux-find命令应用举例-按时间筛选和删除文件
find参数说明: find有很多参数是以动作首字母时间的方式用于按访问、改变、更新时间来筛选文件。 动作表达: a(last accessed) 最近一次访问时间 c(last changed) 最近一次改变时间 m(last modified) 最近一次修改时间注意此上的c和m的区别,…
2007年11月网络工程师考试试题
● 若某计算机系统由两个部件串联构成,其中一个部件的失效率为710-6/小时。若不考虑其他因素的影响,并要求计算机系统的平均故障间隔时间为105小时,则另一个部件的失效率应为 (1) /小时。 (1&am…

Travis CI : 最小的分布式系统(三)
日志的作用有两个:当构建日志的数据块通过消息队列进来时,更新数据库对应行,然后推送它到Pusher用于实时的用户界面更新。 日志块以流的形式在同一个时间从不同的进程中进来,然后被一个进程处理。这个进程每秒最高可处理100个消息…

windows 上rsync客户端使用方法
阅读目录 1.1 获取 windows上实现rsync的软件(cwRsync)1.2 cwrsync的使用方法1.3 cwrsync的使用回到顶部1.1 获取 windows上实现rsync的软件(cwRsync) cwRsync是Windows 客户端GUI的一个包含Rsync的包装。您可以使用cwRsync快速远…

机器学习开源项目Top10
整理 | Jane 出品 | AI科技大本营 【导语】又到了我们固定给大家推荐开源项目的时间。本期将为大家推荐 10 个机器学习开源项目,统计了过去一个月中 250 个机器学习开源项目,并从中选取了本期的 Top10。平均 1483 Stars。不知道是不是有你喜欢的欢迎大…