Python实践课-画图(一)

论坛 期权论坛 期权     
跬步郎   2019-7-20 09:55   4011   0

很多关注我的公众号的同学和家长都来信问我,Python基础15天的课程看完了以后不知道下一步该做什么?也不知道Python能做什么。那么我就把我的暑假班的一小部分内容分享给大家,让大家看看Python都能做什么。
学习编程很大一部分需要同学们对它有兴趣,我不希望同学们学习编程从入门到放弃,所以我们要以能做出东西的目的出发,逐步深入。
我想,很多同学都喜欢画画,美丽的风景,可爱的卡通人物,其实Python也可以用来画画的。我们隆重介绍一下Python自带的一个模块“turtle”,对,这个英文单词翻译过来就是乌龟。很多程序员管Python的各种函数库叫模块,但是我更喜欢叫它工具箱。对,乌龟工具箱,它里面包含了很多用来画画的工具,今天的课程就是主要介绍乌龟工具箱和它里面的工具。
想要使用乌龟工具箱,我们需要先调用它(或者叫引用)。还记得基础课里面讲过的怎么调用吗?对,用“import”,我们用Thonny新建一个Python文件,点击Thonny左上角白色的文件图标,新建一个文件



写代码前我们要先保存一下文件,否则Thonny不会去执行.我们把这个文件起名叫turtle_class1.py,然后在文件中调用turtle,代码像下面这样:
  1. import turtle
复制代码
import加上空格,然后加上turtle,就调用了乌龟工具箱。
既然我们调用turtle是用来画画,那么我们需要先有一块画布,叫画板也可以,就是用来画画的东西.乌龟工具箱的画布是"screensize",代码像下面这样:
  1. import turtle
复制代码
  1. [/code][code]turtle.screensize()
复制代码
大家看到第3行了吗?turtle和screensize中间有个半角符号的".",这行代码我习惯翻译成"使用乌龟工具箱的画布",两个单词中间的"."可以理解成中文"的",那么screensize这个单词拆分一下就是screen size,屏幕大小,也就是我们的画布大小.screensize后面跟着一对小括号,是用来设置参数的......小明你又举手了,有什么问题吗?......好,你说的对,screensize后面的小括号是用来设置画布大小的.不过我们先不去填写参数,让它空着,我们先让画布运行起来。怎么运行呢?我们在第四行填写一句代码"turtle.done()",这行代码怎么理解呢?done在英文里是不是就是"做"的意思啊?.......呃,小明说的对.做的英文是"do";那么done呢是"完成","做好了"的意思.那么好吧,turtle.done()我们可以理解为"乌龟!,去完成它";是不是有点命令的意思了?!,代码像下面这样:
  1. import turtle
复制代码
  1. [/code][code]turtle.screensize()
复制代码
  1. turtle.done()
复制代码
好,我们既然让乌龟去做了,那么是不是需要按F5运行一下啊.我们看看运行的结果,像下图这样:


出来一个类似窗口一样的白色框,对啦,这就是我们的画布了.好,现在我们来看一下生成画布的代码“turtle.screensize”屏幕大小,既然翻译过来是屏幕大小,那么这个工具应该是用来调整屏幕的,也就是说screensize后面的括号里面是用来这是屏幕大小的参数。那么该怎么 设置屏幕大小呢?,这里就要说一下屏幕的分辨率。分辨率是指显示器所能显示的像素有多少。如果还不理解的话,我们可以想象一下围棋的棋盘,像下面这样:


围棋的棋盘是由方格组成的,无论是长还是宽都是18个方格,那么像素就像棋盘中的一个方格。围棋的棋盘就是18*18个方格,也可以叫18*18分辨率啦。这样可以理解了么?以后如果我们听到别人说显示设备的分辨率是1024*800或者是800*600,那么就是知道这个设备含有多少个像素了。
好,回到我们的问题上来,怎么设置屏幕的分辨率(大小)呢?很简单,在小括号里面填上长度和宽度,中间用逗号隔开就可以了。像下面这样:
  1. import turtle
复制代码
  1. [/code][code]turtle.screensize(800,600)
复制代码
  1. turtle.done()
复制代码
上面代码的第3行中,括号里面就是设置了一个800*600的屏幕。
好,到这里我们已经知道怎么怎么设置画布了,那么接下来应该做什么呢?当然是拿出画笔,开始画画。用画笔画画我们要用到“turtle.pendown”这个工具,pendown的意思就是落笔,开始画画啦。我们在turtle.done()这行代码上面添加pendown,代码像下面这样:
  1. import turtle
复制代码
  1. [/code][code]turtle.screensize(800,600)
复制代码
  1. turtle.pendown()
复制代码
  1. turtle.done()
复制代码
我们运行一下看看效果是什么样的:


好啦,我们看到画布中间有一个三角的箭头,这个就是我们的画笔了,箭头的方向就是我们画笔的方向(默认画笔的方向是向右,),那么接下来,我觉得有必要先把乌龟工具箱里面的工具让大家都看一下。就像大家小时候玩家里的工具箱一样,每次都要把里面的锤子啊、钳子啊、螺丝刀什么的拿出来看看,挨个摆弄一下,才知道都是做什么用的。所以我现在把乌龟工具箱里面的大部分常用工具给大家展示出来。
命令说明turtle.forward(distance)画笔向当前方向移动distance像素长turtle.right(degree)画笔方向顺时针移动degree°turtle.left(degree)画笔方向逆时针移动degree°turtle.pendown()落笔,开始画画turtle.goto(x,y)将画笔移动到坐标为x,y的位置turtle.penup()提起笔。turtle.speed(speed)画笔绘制的速度(0-10)整数turtle.circle()画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆turtle.pensize(width)绘画时线条的宽度turtle.pencolor()画笔颜色turtle.fillcolor(colorstring)绘制图形的填充颜色turtle.color(color1, color2)线条的颜色颜色说明white白色yellow黄色magenta洋红色cyan青色blue蓝色black黑色seashell海贝色gold金色pink粉红色brown棕色purple紫色tomato番茄色上面的两个表格就是我们常用的工具以及画画用的颜色啦,颜色也可以用RGB的形式来表示,不过RGB的表示方法有点复杂,我们先用这些常用的颜色。
乌龟工具箱里面的常用工具也都看到了,接下来我们就可以画画了,画什么呢?我们先画一些基本图形吧,画个正方形:大家闭上眼睛,想象一下画一个正方形的过程是怎么样的,是不是应该像下面这样:
1、拿出工具箱;
2、准备好画布;
3、落笔;
4、向右方向移动一段距离;
5、让画笔笔尖旋转90度;
6、向画笔笔尖方向移动一段距离;
7、让画笔笔尖旋转90度;
8、向画笔笔尖方向移动一段距离;
9、让画笔笔尖旋转90度;
10、向画笔笔尖方向移动一段距离;
11、完成
这样是不是就画成一个方形了啊,......小明同学,你说的“左转,左转,左转,好像是个圈哦”这句台词是小品里面说的,而且这句台词说明这个人没有走直线。
好啦,现在我们按照上面的思路来写代码:
首先:import turtle #调用乌龟工具箱;
然后:turtle.screensize(800,600)#设置一个800*600的画布
第三:turtle.pendown() #落笔
第四:turtle.forward(100) # 向画笔笔尖方向(默认是右方)移动100像素
第五:turtle.right(90)#画笔笔尖右转90度
第六:turtle.forward(100) # 向画笔笔尖方向移动100像素
第七:turtle.right(90)#画笔笔尖右转90度
第八:turtle.forward(100)#向画笔笔尖方向移动100像素
第九:turtle.right(90)#画笔笔尖右转90度
第十:turtle.forward(100)#向画笔笔尖方向移动100像素
第十一:turtle.done()#完成
这样一个正方形就完成了,完整的代码像下面这样:
  1. import turtle
复制代码
  1. [/code][code]turtle.screensize(800,600) #设置一个800*600的画布
复制代码
  1. turtle.pendown() #落笔
复制代码
  1. turtle.forward(100) # 向画笔笔尖方向(默认是右方)移动100像素
复制代码
  1. turtle.right(90) #画笔笔尖右转90度
复制代码
  1. turtle.forward(100) #向画笔笔尖方向移动100像素
复制代码
  1. turtle.right(90) #画笔笔尖右转90度
复制代码
  1. turtle.forward(100) #向画笔笔尖方向移动100像素
复制代码
  1. turtle.right(90) #画笔笔尖右转90度
复制代码
  1. turtle.forward(100) #向画笔笔尖方向移动100像素
复制代码
  1. turtle.done() #完成
复制代码
好的,我们运行一下看看效果吧:


好的,正方形已经画完了,那么基础图形里还有三角形,等边三角形怎么画呢?是不是画笔的笔尖每次旋转120度,画笔总共移动三次就可以了啊,代码像下面这样:
  1. import turtle
复制代码
  1. [/code][code]turtle.screensize(800,600) #设置一个800*600的画布
复制代码
  1. turtle.pendown() #落笔
复制代码
  1. turtle.forward(100) # 向画笔笔尖方向(默认是右方)移动100像素
复制代码
  1. turtle.right(120) #画笔笔尖右转120度
复制代码
  1. turtle.forward(100) #向画笔笔尖方向移动100像素
复制代码
  1. turtle.right(120) #画笔笔尖右转120度
复制代码
  1. turtle.forward(100) #向画笔笔尖方向移动100像素
复制代码
  1. [/code][code]turtle.done() #完成
复制代码
运行的结果是下面这样:


好,这回我们再画一个圆形,圆形用什么工具呢?上面的工具列表里有画圆形的工具“turtle.circle()”,那么我们来画一个半径为200像素的圆圈,代码像下面这样:
  1. import turtle
复制代码
  1. [/code][code]turtle.screensize(800,600) #设置一个800*600的画布
复制代码
  1. turtle.pendown() #落笔
复制代码
  1. turtle.circle(200)#半径为200像素的圆圈
复制代码
  1. turtle.done() #完成
复制代码
运行一下看看效果:


哇,这个圆圈好大!
好啦,刚才程序在画圆圈的时候,李雷同学有个想法,既然画笔可以画圆圈,还能调整角度,那么我们每调整一定角度画一个圆圈,调整360度以后会是什么样子呢?
嗯,这个想法好,我们可以来实验一下,假设:我们将画笔每调整20度画一个100像素的圆圈,那么360度需要画18个圆圈,这应该是怎样的过程?
1、调用乌龟工具箱;
2、设置画布;
3、落笔;
4、画圆圈;
5、笔尖调整20度;
6、画圆圈;
7、笔尖调整20度;
8、画圆圈;
.........
哇,这么写代码的话我们要写17遍调整画笔角度,画18个圆圈,太繁琐了,有没有简单点的方法?哈哈哈哈哈,有的。用我们在基础课程里学到的while语句就会变得非常简单啦!思路是这样的:既然我们要画18个圆圈,那么圆圈数量最大是18,最小是1,我们可以设置一个变量,初始值是1,也就是画一个圆圈,然后用这个变量x跟18对比,不大于18,那么就画一个圆圈,然后这个变量x加1,这时,x的值就是2了,然后再对比......直到这个变量x大于18为止。
那么while语句的流程应该是这样:
  1. x = 1 # 设置一个变量x,赋值为1
复制代码
[code]while x
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP