专栏名称: Python学习交流
每天更新,更新python相关的知识。希望诸君有所收获!
目录
相关文章推荐
Python爱好者社区  ·  史上最强!PINN杀疯了 ·  昨天  
Python爱好者社区  ·  英伟达憾失DeepSeek关键人才?美国放走 ... ·  昨天  
Python爱好者社区  ·  DeepSeek创始人梁文锋个人履历 ·  3 天前  
Python爱好者社区  ·  多模态,杀疯了 ·  2 天前  
Python开发者  ·  o3-mini 碾压 DeepSeek ... ·  6 天前  
51好读  ›  专栏  ›  Python学习交流

十年资深程序员教你用 python 爬虫抓站总结了一些独特的技巧!

Python学习交流  · 公众号  · Python  · 2018-06-05 15:57

正文

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

小猪佩奇在构图基本是各种曲线,类抛物线、类圆、类椭圆、类二次贝塞尔曲线。

因为画图画曲线不是Python擅长的事情,所以用纯粹的Python来做,会更有挑战,也更有趣。


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

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



▲人家的画

观察这个图像可以发现,小猪佩奇在构图基本是各种曲线,类抛物线、类圆、类椭圆、类二次贝塞尔曲线。 这里说的都是“类”,这也正是小猪佩奇的构图精髓,一种手绘风格,而不是标准刻板的线条。

在前端技术选型上,画图首先想到的是svg、canvas,但它们本身就擅长画图,而且网上都有在线编辑svg的工具,这就没意思了,我想佩奇也不会答应的。 于是我想用纯粹的Python来做,这样更有挑战,因为画图画曲线不是Python擅长的事情。


使用海龟作图,我们不仅能够只用几行代码就创建出令人印象深刻的视觉效果,而且还可以跟随海龟看看每行代码如何影响到它的移动。这能够帮助我们理解代码的逻辑。 所以海龟作图也常被用作新手学习 Python 的一种方式。 更丰富详细的功能及知识可以参考:

官方文档:

https://docs.python.org/3/library/turtle.html

源码

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






请到「今天看啥」查看全文