深入理解Python语言:
Python语言作为一种通用语言,它可以应用在各个领域,几乎不受限制。
Python语言具有其特点和优势
其一是强制可读性,从底层语法的方面建立了它的可读性;
其二是有较少的底层语法元素,编写程序时更加人性化;
其三是有多种编程方式;
其四是支持中文字符的处理;
总而言之,简洁就是python最大的优势!
此外,生态高产 也是其另一巨大优势,它有大量的第三方库,有开放共享的平台,可以跨系统操作。
下面进入正题,关于Python的图形绘制问题。
首先,与c语言不同,Python在绘制基本图形方面具有更加便捷、强大的能力,相信在类似c语言的学习中很少提及图形的绘制,但是在Python中,你就可以好好感受编程图形绘制的魅力。
本周的主题就是利用Python解决蟒蛇绘制问题,并举一反三,掌握基本的图形绘制能力。
一、问题分析
问题:
如何用程序绘制一条蟒蛇?
思考:
- 计算机如何绘图
- 从哪里开始进行绘图,即如何绘制蟒蛇
二、代码
同样,先给出代码:
运行结果:
我们可以看到一个窗口,并且有一条可以动的蟒蛇。
代码分析:
- 首先可以看到代码最前面的import turtle,并且可以发现在之后的代码中都频繁出现了turtle这个词,可以推测这句代码就是程序的关键。
import:
这里我们来详细讲解一下import保留字的功能,首先它是一个引入当前代码所没有的功能的保留字,类似于c语言中的include<>,通过import来引入其它的库函数,可以实现许多额外的功能,而这里的库函数turtle正是绘图库的名字,翻译过来就是海龟库,正是它帮助实现了绘图功能。
2.turtle
正如前面所说的,turtle是一种绘图库,下面 讲重点介绍这个库的使用方法。
- 基本介绍
turtle绘图体系诞生于1969年,主要用于程序设计入门。
它是Python语言的标准库之一。是入门级的图形绘制函数库。
补充:标准库,是Python计算生态之一,其中还有第三方库。标准库是随解释器直接安装到操作系统中的功能模块。第三方库是需要经过安装才能使用的模块。
- turtle绘图窗体布局
运行时产生的窗体,也就是绘图的画布,如图所示,我们通过坐标的方式来确定某一个具体位置。
我们使用turtle.setup(width, height, startx, starty)来设置窗体的大小和位置。
setup()不是必须的,如果不去写,就会默认产生一个处于屏幕正中心的窗口。
- turtle空间坐标体系
在turtle窗体内部,形成了一个空间坐标体系,如图所示。包含绝对坐标和海龟坐标两种。
(1)绝对坐标: 正中心坐标(0,0),右方向x轴,向上为y轴。这样就能用坐标来表示窗体上的任意一个位置。
goto函数:
在确定了坐标后,就可以利用goto函数实现绘制的基本功能。
绘制都是从坐标原点开始,即(0,0)开始。goto(100,100)就是去找对应的坐标点,以此类推,这样就能在屏幕中绘制图形。
(2)海龟坐标:
如图,海龟坐标就是从平面上海龟的视角出发,进行前进,后退,向左侧(右侧)运动,这些都可以使用函数来实现。
如图,fd()就是向前,bk()就是后退,circle(r,)就是绕海龟左侧一点为圆心做的一段曲线运动。
- turtle角度坐标体系
使用turtle.seth(angle)函数来改变角度(绝对)。其中seth()改变方向但不行进,angle为绝对度数。
同理,我们可以通过turtle.left(angle)来相对海龟当前朝向改变行进方向。
RGB色彩模式:
由三种颜色构成的万物色。
由红蓝绿三个通道的颜色组合,每色取值范围0-255整数,0-1小数。
turtle默认使用小数值来表示颜色。
3.turtle程序语法分析
(1)库引用:import保留字
-主要用于扩充Python程序功能
-采用<a>.<b>()编码风格
-即 import <库名>
<库名>.<函数名>(<函数参数>)
-再不会造成歧义,或冲突的情况下,可以将第一句改写为
from <库名> import *
这样之后的应用中就可以省略库名,方面书写代码。
-或者,通过
import <库名> as <库别名>
的方式来更改库名为更加简单的名字,可以在一定程度上方便书写。
(2)turtle画笔控制函数
-画笔控制函数基本原则:
- 画笔操作后一直有效,一般成对出现。
例如:
-turtle.penup() 别名 turtle.pu()
表示抬起画笔,海龟在飞行,不会在画布上形成图案。
-turtle.pendown() 别名 turtle.pd()
表示落下画笔,海龟在爬行,会在画布上形成图案。
一般来讲有抬起就应该有落下,二者成对出现。
- 画笔设置后一直有效,直至下次重新设置
例如:
-turtle.pensize(width) 别名 turtle.width(width)
画笔宽度,海龟的腰围
-turtle.pencolor(color)
color为颜色字符串或r,g,b值
表示画笔颜色,海龟在涂装
(3)turtle运动控制函数
-控制海龟走直线或走曲线,如
-fd(d) 即 forward()表示向前走直线,d可以是负数。
-circle(r,angle)表示以海龟左侧r距离为圆心,并绕它angle个角度做圆弧运动。若angle为空,默认画整个圆。
(4)方向控制函数
-seth()
-控制海龟运行方向:绝对角度和海龟角度
以上函数为绝对角度,是更改方向为坐标系中的对应角度方向。
以上函数为海龟角度,是相对于此刻海龟而言再改变多少角度。
(5)循环语句和range函数
其中,range函数用于产生循环计数序列
-range(N)
产生0到N-1的整数序列,共N个
-range(M,N)
产生M到N-1的整数序列,共N-M个
(6)逐行分析代码
- 引入turtle库
- 创建宽650,高350的窗口在(200,200)处
- 抬起画笔
- 后退250像素(不留痕迹)
- 落笔
- 宽度为25
- 颜色为紫
- 方向为-40度
- 循环四次执行:
- 曲线一的绘制,
- 曲线二的绘制。
- 绘制小半个弧形
- 绘制蟒蛇的直线身体
- 转半圈
- 绘制蟒蛇头部
- 结束绘制(程序运行后不会直接退出,需要手动点击关闭)