Python中文社区全球Python中文开发者的精神部落

今年社交平台上最火的带货女王是谁?范冰冰?杨幂?Angelababy?不,是猪猪女孩小猪佩奇。

如果你经常用抖音、快手、B站、知乎、微博……或者类似的任何一个内容或社交平台,那你很大概率能答出这道题:

答案是:掌声送给社会人。

随着口号喊响,社会人小猪佩奇似乎一夜之间就在短视频平台和社交网络上爆火了,同时网络上遍布了小猪佩奇九步画法。于是我在儿童节这一天画了一下,结果,不忍直视......

我画的,哈哈

人家的画

观察这个图像可以发现,小猪佩奇在构图基本是各种曲线,类抛物线、类圆、类椭圆、类二次贝塞尔曲线。这里说的都是“类”,这也正是小猪佩奇的构图精髓,一种手绘风格,而不是标准刻板的线条。在前端技术选型上,画图首先想到的是svg、canvas,但它们本身就擅长画图,而且网上都有在线编辑svg的工具,这就没意思了,我想佩奇也不会答应的。于是我想用纯粹的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.4for i in range(120):if 0<=i<30 or 60<=i<90:a=a+0.08left(3) #向左转3度forward(a) #向前走a的步长else:a=a-0.08left(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和fillcolorend_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.4for i in range(60):if 0<=i<30 or 60<=i<90:a=a+0.08lt(3) #向左转3度fd(a) #向前走a的步长else:a=a-0.08lt(3)fd(a)end_fill()

def ears(x,y): #耳朵color((255,155,192),"pink")penup()goto(x,y)pendown()begin_fill()setheading(100)circle(-50,50)circle(-10,120)circle(-50,54)end_fill()penup()setheading(90)forward(-12)setheading(0)forward(30)pendown()begin_fill()setheading(100)circle(-50,50)circle(-10,120)circle(-50,56)end_fill()

def eyes(x,y):#眼睛color((255,155,192),"white")penup()setheading(90)forward(-20)setheading(0)forward(-95)pendown()begin_fill()circle(15)end_fill()color("black")penup()setheading(90)forward(12)setheading(0)forward(-3)pendown()begin_fill()circle(3)end_fill()color((255,155,192),"white")penup()seth(90)forward(-25)seth(0)forward(40)pendown()begin_fill()circle(15)end_fill()color("black")penup()setheading(90)forward(12)setheading(0)forward(-3)pendown()begin_fill()circle(3)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行,为了限于篇幅,只放了一部分代码,需要完整源码的盆友,可在公众号底部回复社会人可获得。

赞赏作者

作者:菜鸟分析,一个痴恋于Python语言的程序猿  

知乎专栏|恋习Python:

https://zhuanlan.zhihu.com/p/35667053

最近热门文章

用Python分析苹果公司股价数据

Nginx+uwsgi部署Django应用

用文本挖掘剖析近5万首《全唐诗》

Python自然语言处理分析倚天屠龙记

Python 3.6实现单博主微博文本、图片及热评爬取

Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以公安部、工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

▼ 点击下方阅读原文免费成为社区会员

用 Python 20秒画完小猪佩奇“社会人”相关推荐

  1. python画小猪佩奇视频_用 Python 20 秒画完小猪佩奇“社会人”!附效果视频+完整代码...

    原标题:用 Python 20 秒画完小猪佩奇"社会人"!附效果视频+完整代码 导读:今年社交平台上最火的带货女王是谁?范冰冰?杨幂?Angelababy?不,是猪猪女孩小猪佩奇. ...

  2. Python 20 秒画完小猪佩奇“社会人”!

    每天写代码的程序员,你们知道今年社交平台上最火的带货女王是谁吗?范冰冰?杨幂?Angelababy?不,是猪猪女孩小猪佩奇. 如果你经常用抖音.快手.B 站.知乎.微博--或者类似的任何一个内容或社交 ...

  3. 这个程序员用 Python 20 秒画完小猪佩奇“社会人”!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者 | 丁彦军 责编 | 唐小引 每天写代码的程序员,你们知道今年社交平台上最火的带货女王 ...

  4. python写小猪佩奇_这个程序员用 Python 20 秒画完小猪佩奇“社会人”!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者 | 丁彦军 责编 | 唐小引 每天写代码的程序员,你们知道今年社交平台上最火的带货女王 ...

  5. python 20秒画完小猪佩奇“社会人”

    转自:恋习Python(微信号:sldata2017) 感觉这个特别有意思,哈哈哈 观察这个图像可以发现,小猪佩奇在构图基本是各种曲线,类抛物线.类圆.类椭圆.类二次贝塞尔曲线.这里说的都是" ...

  6. turtle 20秒画完小猪佩奇“社会人”

    转载:https://blog.csdn.net/csdnsevenn/article/details/80650456 图片源自网络 作者 丁彦军 如需转载,请联系原作者授权. 今年社交平台上最火的 ...

  7. python画图小猪佩奇_吊炸天!Python 20秒画出小猪佩奇

    原标题:吊炸天!Python 20秒画出小猪佩奇 今年社交平台上的带货女王是谁?范冰冰?杨幂?Angelababy?不,是猪猪女孩小猪佩奇. 小猪佩奇在构图基本是各种曲线,类抛物线.类圆.类椭圆.类二 ...

  8. 用python turtle画人_Python中如何用turtle库画出小猪佩奇社会人

    1 from turtle import * 2 3 def nose(x,y):#鼻子 4 penup()#提起笔 5 goto(x,y)#定位 6 pendown()#落笔,开始画 7 sethe ...

  9. 小猪佩奇python_一段代码画出小猪佩奇社会人 Python

    复制内容到剪贴板 代码:# coding:utf-8 import turtle as t t.pensize(4) t.hideturtle() t.colormode(255) t.color(( ...

最新文章

  1. 取出json中的数据php,怎么从Json中取出数据放到一个新组中
  2. mysql 性能优化索引、缓存、分表、分布式实现方式。
  3. SAP PM 入门系列 - IL03显示Function Location主数据
  4. xCode中工程相关的一些处理:一个工程包含多个Target的用途和使用方法【转】...
  5. sql server 小记——分区表(上)
  6. github中origin和upstream的区别(转)
  7. mysql 语法积累
  8. 灵魂拷问,上 Kubernetes 有什么业务价值?
  9. python爬取小游戏_如何用Python爬取小游戏网站,把喜欢的游戏收藏起来(附源码)...
  10. java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)
  11. Python 数据可视化:WordCloud 词云的构建
  12. BAT大牛这样搞Python,真是绝了
  13. 在线定时任务表达式生成连接
  14. 让你的Windows系统时光倒流
  15. WebView如何引用本地字体
  16. mini-pcie接口(EC20和N720)
  17. 电箱吉他与原声吉他的区别在哪里?初学者应该选哪个呢?
  18. 你必须收藏的快速学习Autodesk最新编程接口的免费录像
  19. c#操作word图表(一)
  20. php代码编辑软件安卓,PHP代码编辑软件|Rapid PHP编辑器 v15.0 最新版

热门文章

  1. 原子战舰与8266代码理解(while循环后直接加分号)
  2. vite项目(vue-ts)搭建常用插件引入方式
  3. 傅立叶变换和拉普拉斯变换
  4. 【经验】不摸鱼的时光
  5. 泰迪云课堂数据分析案例:广电大数据营销推荐项目
  6. 为什么你不想学习?只想玩?人是如何一步一步废掉的
  7. css动画与渐变案例,使用动画和渐变做一个背景动态网页
  8. thinkpad t480 简介文章
  9. Arduino教程4:面包板与洞洞板
  10. iis ftp服务器修改端口号,iis ftp服务器指定端口