python的绘图利器--海龟绘图turtle

  • 时间:2020-11-08 06:33 作者:树哥区块链 来源: 阅读:199
  • 扫一扫,手机访问
摘要:我们之前提到Python是一种超级语言,由于其提供了极其丰富的库,需要什么拿来黏合一下即可以直接使用。就像现在的有些汽车工厂一样,根本不用重新发明生产什么,只要要买来相应部件等把它们组装起来就好。作为你学习python的第一个程序,树哥决定直接来一个实战干货程序:利用海龟turtle来画一个奥运五环

我们之前提到Python是一种超级语言,由于其提供了极其丰富的库,需要什么拿来黏合一下即可以直接使用。就像现在的有些汽车工厂一样,根本不用重新发明生产什么,只要要买来相应部件等把它们组装起来就好。

作为你学习python的第一个程序,树哥决定直接来一个实战干货程序:利用海龟turtle来画一个奥运五环。这样就既可以了解库的概念和使用,又可以了解程序的基本概念。

闲话少叙,直接上程序:

C2CD5756-27DB-4658-AE38-3228803B2C10.png

总共26行代码,树哥建议你把每行代码敲进去执行一下,你会发现执行的效果如下图:

4E7FA906-A667-49FB-AB24-18680ACA9EC4.png

这26行代码说多不多,不过对于没有看过代码的人来讲,可能会有点压力。
不过可以想到的是,这5个环画法都一样,再看到那么多长得很像的代码,就知道重复的代码很多,也难不在哪里。

我们把这段代码先分成几个部分,如下图:


B9A7490F-3A8C-4B64-B15E-3CCB5819C743.png

从这张图中可以看出来,程序就分为两个主体部分:

  • 公共部分
  • 画图部分

当然,你可能会说,结尾不是还有一句:P.done()吗?

这个语句是个固定格式,有这句话画完图,绘图窗口还保留,假如没有这句话,绘图窗口就直接关闭了,所以初期都加上就好了。

下面,我们就进入正题:

公共设置

公共设置的第一条

import turtle

import是导入,turtle是海龟绘图库,所以这句话就是导入海龟会图库的意思,记住即可以了。

turtle是一个专门用于绘图的库,需要画图的时候我们直接import一下就好,在此需要说明的有两点:

  • 其余库也一样,直接import一下就好,例如:pyquery 网页解析库, pymysql 存储库等等。
  • 安装python的时候自带的turtle库被称作标准库,需要另外安装的库称作第三方库。也就是说,第三方库必需先安装,再import。

第二条:p = turtle

这条语句相当于把给turtle起了个比较短的名字叫做p,假如没有这条语句的话,那么下面的语句就变成:
turtle.pensize(3)
这条语句其实没有什么实际意义,就是可以让下面的语句简单少量而已。有点像我们平时所说的:深圳华为科技有限公司,以下简称:华为,一个道理。

第三句:p.pensize(3)

就是turtle.pensize(3)的缩写形式,意思是画笔的粗细为3个像素。pensize就是两个单词组合:pen(画笔)+size(大小)。

画图部分

画图部分语句基本都是重复的,我们把重复的几个语句拿出来分析一下就很了然了。

DB4F17A8-2D38-413A-9EC1-38EF93D6ABB6.png

第一句:p.pu()

其实只需知道pu是由两个单词:pen(画笔)+up(拿起)组成就知道这句话的意思了:把画笔抬起来,之后画笔的移动不会在纸面上留下痕迹。

p.goto(60,0)

goto的意思是去的意思,也就是说把画笔拿到画布的坐标点(60,0)去。画布的中心为(0,0),所以当前的位置就是顺着x轴移动60像素。

由于上个语句把画笔抬起来了,所以从当前位置移动到(60,0)不会再画布上留下痕迹。

p.pd()

pd与pu对应,是pen(画笔)+down(放下)的缩写,也就是把画笔落下了,之后画笔移动就会在画布上留下痕迹。

p.color(“black”)

这句话太好了解了,就是把画笔的颜色改成黑色,几个圆圈的颜色不同,就是要在画圆圈之前把画笔的颜色变了。需要知道的是,颜色除了写英文之外,还可以使用RGB(255.255.255)和小数标识。不过,这个也不需要记忆,需要的时候查询就好。

p.circle(30,360)

最最重要的画圆终于出现了,circle就是画个圆,直径是30像素,画360度,也就是一个整个圆。当然也可以画成180度半个圆弧,或者者90度、30度甚至15度的圆弧。

轻轻易易地把一段程序解读完成了,这个绘图其实很简单,就两个步骤:

  • 设置公共变量
  • 绘图

当然,这个库还有少量内容,我们稍作补充:

其余参数

  • turtle.setup设置绘图窗口大小和位置。
  • turtle.colormode 颜色模式RGB还是英文
  • turtle.speed 画笔速度
  • turtle.fd向前走直线,fd=forward
  • turtle.bk 向后走直线 bk=back
  • turtle.left 向左转
  • turtle.right 向右转
  • turtle.seth 转向角度

很简单吧?

本质上,库的含义是,库是已经编写好的程序模块,而后给我们提供基本的功能,我们通过这些基本功能“咒语”来驱动这些基本功能来实现我们的目的。

尽管这个库的内容也没有很多,不过的确也没有必要记忆或者者学习什么,需要的时候只需搜一下这个库提供哪些功能接口就好了。

总结:python的强大不在于程序本身,而在于其有强大的生态,也就是有无数的库可以被我们使用,我们可以把他们当成模组直接拿来使用。已经集成到python中的库被称作标准库,没有集成进去的叫做第三方库,安装一下就好。最后,附一个绘制小猪佩奇的小代码,假如你有兴趣也可以复制尝试执行一下,需要其余案例,可以私信索要。

import turtle

画鼻子

def drawNose():
turtle.penup()
turtle.seth(90)
turtle.fd(100)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor('black')
turtle.seth(45)
turtle.fd(25)
turtle.seth(135)
turtle.circle(25, 95)
turtle.seth(315)
turtle.fd(25)
turtle.end_fill()

画眼睛

def drawEyes(seth, fd, r):
turtle.penup()
turtle.seth(seth)
turtle.fd(fd)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor('black')
turtle.circle(50)
turtle.end_fill()
turtle.penup()
turtle.circle(50, r)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor('white')
turtle.circle(20)
turtle.end_fill()

画脸

def drawFace(seth, fd):
turtle.penup()
turtle.seth(seth)
turtle.fd(fd)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor('red')
turtle.circle(70)
turtle.end_fill()

画嘴巴

def drawLip():
turtle.penup()
turtle.seth(135)
turtle.fd(250)
turtle.pendown()
turtle.seth(-300)
turtle.circle(30, -65)
turtle.begin_fill()
turtle.fillcolor('Firebrick')
turtle.seth(165)
turtle.fd(140)
turtle.seth(195)
turtle.fd(140)
turtle.seth(-360)
turtle.circle(30, -65)
turtle.penup()
turtle.seth(-60)
turtle.circle(30, 65)
turtle.pendown()
turtle.seth(-70)
turtle.fd(240)
turtle.circle(55, 140)
turtle.seth(70)
turtle.fd(240)
turtle.end_fill()
turtle.seth(-110)
turtle.fd(80)
turtle.begin_fill()
turtle.fillcolor('Firebrick')
turtle.seth(120)
turtle.circle(120, 123)
turtle.seth(-70)
turtle.fd(165)
turtle.circle(55, 140)
turtle.seth(72)
turtle.fd(165)
turtle.end_fill()

主函数

def main():
turtle.pensize(4)
turtle.hideturtle()
turtle.setup(1000, 600)
turtle.speed(10)
turtle.screensize(bg='yellow')
drawNose()
drawEyes(160, 250, 60)
drawEyes(-9.5, 530, 230)
drawFace(195, 600)
drawFace(-11, 720)
drawLip()
turtle.done()

if name == 'main':
main()

  • 全部评论(0)
最新发布的资讯信息
【系统环境|windows】Axios 取消重复请求(2020-11-08 07:00)
【系统环境|windows】熬了一晚上,小白用Python写了一个股票提示系统(2020-11-08 07:00)
【系统环境|windows】2020要想成为一名专业的web前台开发程序员,需要学习什么?(2020-11-08 06:35)
【系统环境|windows】前台面试每日 3+1 —— 第546天(2020-11-08 06:34)
【系统环境|windows】聊聊前台工程师的职业发展 (纯干货)(2020-11-08 06:34)
【系统环境|windows】浅谈OAuth 2.0基本原理(2020-11-08 06:34)
【系统环境|windows】程序员初入职场避坑指南(2020-11-08 06:34)
【系统环境|windows】python的绘图利器--海龟绘图turtle(2020-11-08 06:33)
【系统环境|windows】pyinstaller打包结果瘦身(2020-11-08 06:33)
【系统环境|windows】前台面试每日 3+1 —— 第518天(2020-11-08 06:33)
血鸟云
手机二维码手机访问领取大礼包
返回顶部