我们之前提到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()
网友评论