当前位置: 首页 > 编程日记 > 正文

啥是佩奇?Python告诉你

640?wx_fmt=jpeg


作者 | 丁彦君

来源 | 恋习Python


昨天,

被《啥是佩奇》这支广告片刷屏了。

佩奇明明是个喜剧角色,

却看哭了所有人。


《啥是佩奇》???


快过年了

在农村爷爷给城里的小孙子打电话

小孙子说想要“佩奇”

为了满足小孙子的愿望

爷爷开始满村子找佩奇


开片爷爷在电话这头的一段话就很抓人心,

全世界的爷爷都是这样疼孙儿的,

一下子就让观众有共情的心理。

一句“什么是佩奇?”

铺垫了爷爷接下来的一段寻找佩奇之路,

最后爷爷找到的佩奇骨络清奇,

却是圈主见过的全世界最可爱的小猪佩奇!


640?wx_fmt=png


不知道大家看完什么感觉

反正我看完是哭了

我看网友们也纷纷留言

说自己哭笑两重奏


看着爷爷满村子找佩奇,我有点心疼了。为此我想用纯粹的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模块实现基本的圆,椭圆,曲线等,难点在于,如何定位每个部位的位置(建议先草图画画)。


640?wx_fmt=jpeg


完整代码需要300行,为了限于篇幅,只放了一部分代码,需要完整源码的盆友,可自行下载。


传送门:

https://pan.baidu.com/s/1LHw7MYFhqCRw8e_K22u32A 

密码: rqbt


(*本文为作者投稿文章,转载请联系原作者)

公开课预告

下周四晚8点直播


主题:端侧卷积神经网络发展及其应用

时间:1月24日晚8点

讲师:李战斌(支付宝算法专家)


640?wx_fmt=jpeg

推荐阅读

  • 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 做开发&#xff0c;不知为什么&#xff0c;感觉在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(理论+实战)

作者&#xff1a;李理&#xff0c;环信人工智能研发中心vp&#xff0c;十多年自然语言处理和人工智能研发经验。主持研发过多款智能硬件的问答和对话系统&#xff0c;负责环信中文语义分析开放平台和环信智能机器人的设计与研发。 本文是作者正在编写的《深度学习理论与实战》的…

rz 和 sz

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

SMS系列之六:利用SMS实现操作系统的补丁分发

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

201621123075作业12-流与文件

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

【Junit】BeforeClass、Before、After、AfterClass

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

COCO 2018 Keypoint冠军算法解读

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

linux下IPython的安装方法

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

201621123057 《Java程序设计》第12周学习总结

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

对 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 可见&#xff0c;SECONDARY 确实起到…

yuml 类图设计

http://yuml.me/diagram/nofunky/class/draw 使用yuml这个工具进行类图设计&#xff1a; // 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 月&#xff0c;为了缩减开支&#xff0c;特斯拉宣布裁员 9%&#xff0c;涉及员工超 4000 人&#xff0c;但在不久又开启了一轮积极的招聘狂潮。现在&#xff0c;这艘大船再度面临风暴不堪重负&#xff0c;裁员潮说来就来。 北京…

一个表对应另一个表中多个主键的查询方法(把一个表当成两个表用)

表t_RecordPID(主键) SendUserID(发送人) ReceiveUserID(接收人) 1 1 2 2 2 3 3 3 1 表t_UserPID(主键) UserName(用户名) 1 张三 2 …

Keras 最新《面向小数据集构建图像分类模型》

本文地址&#xff1a;http://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html 本文作者&#xff1a;Francois Chollet 按照官方的文章实现过程有一些坑&#xff0c;彻底理解代码细节实现&#xff0c;理解keras的api具体使用方法也有…

Python处理XML文件

用代码记录下&#xff1a; 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科技大本营 近日&#xff0c;李彦宏发布内部信并首次公布了 24 字百度愿景&#xff1a;成为最懂用户&#xff0c;并能帮助人们成长的全球顶级高科技公司。李彦宏表示&#xff0c;“这 24 个字将上承新使命、下展公司“夯实移动基础、决胜 AI 时代”的整体…

HP c3000/c7000 blade switch GBE2c 初始配置

端口概述 Port 1-16 是内联刀片的downlink口 Port 17-18 是switch互联用&#xff0c;默认是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&#xff0c;由金斌_jinbin 翻译) Travis CI一开始仅仅是个想法&#xff0c;在当时甚至还有些理想化。在这个项目启动之前&#xff0c;开源社区还没有一个可用的持续集成系统。 随着作为…

Windows 7时代即将终结!

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

什么是DWDM

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

MySQL · myrocks · MyRocks之memtable切换与刷盘

概述 MyRocks的memtable默认是skiplist&#xff0c;其大小和个数分别由参数write_buffer_size和max_write_buffer_number控制。数据写入时先写入active memtable, 当active memtable写满时&#xff0c;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年之前&#xff0c;我们发现当时的架构有些不合理了。尤其是Hub&#xff0c;它上面承担了太多的任务。Hub要接收新的处理请求&#xff0c;处理并推动构建日志&#xff0c;它要同步用户信息到Github&#xff0c;它要通知用户构建是否成功。它跟一大群外部API打交道&#xf…

百度开设「黄埔学院」,革新者来

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

Linux-find命令应用举例-按时间筛选和删除文件

find参数说明&#xff1a; find有很多参数是以动作首字母时间的方式用于按访问、改变、更新时间来筛选文件。 动作表达&#xff1a; a(last accessed) 最近一次访问时间 c(last changed) 最近一次改变时间 m(last modified) 最近一次修改时间注意此上的c和m的区别&#xff0c;…

2007年11月网络工程师考试试题

● 若某计算机系统由两个部件串联构成&#xff0c;其中一个部件的失效率为710&#xff0d;6/小时。若不考虑其他因素的影响&#xff0c;并要求计算机系统的平均故障间隔时间为105小时&#xff0c;则另一个部件的失效率应为 &#xff08;1&#xff09; /小时。 &#xff08;1&am…

Travis CI : 最小的分布式系统(三)

日志的作用有两个&#xff1a;当构建日志的数据块通过消息队列进来时&#xff0c;更新数据库对应行&#xff0c;然后推送它到Pusher用于实时的用户界面更新。 日志块以流的形式在同一个时间从不同的进程中进来&#xff0c;然后被一个进程处理。这个进程每秒最高可处理100个消息…

windows 上rsync客户端使用方法

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

机器学习开源项目Top10

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