1、第2章 Python程序实例解析1 Python蟒蛇绘制2 Python英文是蟒蛇的意思,通过下面的例子来实践用Python语言输出图形效果实例代码2.1与实例代码1.1有两个显著的不同。第一,这个程序没有使用显式的用户输入输出,即input()函数和print()函数;第二,这个程序绝大代码行都是.()形式,代码行中没有赋值语句。Python蟒蛇绘制实例.()是Python编程的一种典型表达形式,它可以表示调用一个对象的方法(),也可以表示调用一个函数库中的函数()。实例代码2.1使用了用于绘制图形的turtle库,并在代码第2行通过保留字import引用这个函数库。import turtl
2、ePython蟒蛇绘制实例实例代码2.1的第3行到第16行调用了turtle库中若干函数来绘制Python蟒蛇,所有被调用函数都使用了.()形式。这种通过使用函数库并利用库中函数进行编程的方法是Python语言最重要的特点,称为“模块编程”。Python蟒蛇绘制实例 面向对象编程是一种基于对象(Object)的编程范式。对象是事物的一种抽象,它是一个实体,包含属性和方法两部分。属性是对象中的变量,方法是对象能够完成的操作。假设对象是O,则O.a表示对象O的属性a,O.b()表示对象O的操作b(),其中a是一个变量值,b()是一个函数。例如,一辆汽车可以作为一个对象,标记为C,汽车的颜色是汽车的
3、属性,表示为C.color,前进是汽车的一个动作,相当于一个功能,因此前进是对象C的方法,表示为O.forward()。面向对象编程保留字import有两种方式引用函数库,对函数的使用方式略有不同。第一种引用函数库的方法如下:import 此时,程序可以调用库名中所有函数,使用库中函数的格式如下.()Python蟒蛇绘制实例第二种引用函数库的方法如下:from import from import*#其中,其中,*是通配符,表示所有是通配符,表示所有函数函数此时,调用该库函数时不需要使用库名,直接使用如下格式:()Python蟒蛇绘制实例 由于“Python蟒蛇绘制”程序只用了turtle库中
4、setup()、penup()、fd()、pendown()、pensize()、pencolor()、seth()、circle()等8个函数,第2行的import语句也可以写成如下形式:from turtle import setup,penup,fd,pendownfrom turtle import pensize,pencolor,seth,circle Python蟒蛇绘制实例 两种函数库引用方式各有优点。第一种采用.()方式调用库中函数,能够显式标明函数来源,在引用较多库时代码可读性更好。第二种利用保留字直接引用库中函数,可以使代码更简洁,在类似程序代码2.2这种只引用一个库的情
5、况下,效果更好。Python蟒蛇绘制实例 需要注意,第一种引用方式,Python解释器将.整体作为函数名。当采用第二种方式时,Python解释器将作为函数名。这可能产生一种情况,假设用户已经定义了一个函数,库中的函数名将会与用户自定义的函数名冲突。对于初学者,建议采用第一种库引用方式,使用.()方式调用库函数。Python蟒蛇绘制实例 def 用于定义函数,这段程序中,共出现两次def关键词,包含两个函数drawSnake和main。函数是一组代码的集合,用于表达一个功能,或者说,函数表示一组代码的归属,函数名称是这段代码的名字。def所定义的函数在程序中未经调用不能直接执行,需要通过函数名调
6、用才能够执行。Python蟒蛇绘制实例 eval()函数是Python语言中一个十分重要的函数,它能够以Python表达式的方式解析并执行字符串,将返回结果输出 由于def定义的函数在程序中未经调用不会被执行,整个程序第一条执行的语句是main(),它表示执行名字为main()的函数。Python蟒蛇绘制实例 从而,该程序跳转到main()函数定义的一组语句中执行,即开始执行 turtle.setup()语句 同样的,main()函数的最后一条语句调用了drawSnake()函数,当执行到这条语句时,程序跳转到drawSnake()函数中运行。Python蟒蛇绘制实例turtle库语法元素分析
7、17使用turtle库,同学们头脑里需要有这样一个概念想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形其爬行轨迹形成了绘制图形。对于小海龟来说,有“前进”、“后退”、“旋转”等爬行行为,对坐标系的探索也通过“前进方向”、“后退方向”、“左侧方向”和“右侧方向”等小海龟自身角度方位来完成。Python蟒蛇绘制实例 我们所使用的显示屏幕也是一个坐标系,该坐标系以左上角为原点,向左和向下分别是x轴和y轴。蟒蛇程序代码启动一个1300像素宽、800像素高的窗口,该窗口的左上角是屏幕的左上角。Pyth
8、on蟒蛇绘制实例 turtle.setup(width,height,startx,starty)作用作用:设置主窗体的大小和位置 参数参数:width:窗口宽度,如果值是整数,表示的像素值;如果值是小数,表示窗口宽度与屏幕的比例;height:窗口高度,如果值是整数,表示的像素值;如果值是小数,表示窗口高度与屏幕的比例;startx:窗口左侧与屏幕左侧的像素距离,如果值是None,窗口位于屏幕水平中央;starty:窗口顶部与屏幕顶部的像素距离,如果值是None,窗口位于屏幕垂直中央;绘图坐标体系 图图2.5:turtle.setup()函数四个参数的含义函数四个参数的含义绘图坐标体系 tu
9、rtle中的画笔(即小海龟)可以通过一组函数来控制,实例代码2.1中第4行的turtle.penup()函数和第6行的turtle.pendown()函数是一组,它们分别表示抬起画笔和落下画笔,函数定义如下:turtle.penup()别名别名 turtle.pu(),turtle.up()作用作用:抬起画笔,之后,移动画笔不绘制形状turtle.pendown()别名别名 turtle.pd(),turtle.down()作用作用:落下画笔,之后,移动画笔将绘制形状绘图坐标体系 turtle.pensize()函数用来设置画笔尺寸,函数定义如下:turtle.pensize(width)别名
10、别名 turtle.width()作用作用:设置画笔宽度,当无参数输入时返回当前画笔宽度参数参数:width:设置的画笔线条宽度,如果为None或者为空,函数则返回当前画笔宽度。画笔控制函数 turtle.pencolor()函数给画笔设置颜色,程序代码2.1中将画笔设为“紫色”,函数定义如下:turtle.pencolor(colorstring)或者或者 turtle.pencolor(r,g,b)作用作用:设置画笔颜色,当无参数输入时返回当前画笔颜色参数参数:colorstring:表示颜色的字符串,例如:purple、red、blue等(r,g,b):颜色对应的RGB数值,例如:(51
11、,204,140)画笔控制函数 很多RGB颜色都有固定的英文名字,这些英文名字可以作为colorstring输入到turtle.pencolor()函数中,也可以采用(r,g,b)形式直接输入颜色值。几个典型的RGB颜色如表2.2所示画笔控制函数表2.2英文名称R.G.B.十六进制中文名称white255 255 255#FFFFFF白色black0 0 0#000000黑色grey190 190 190#BEBEBE灰色darkgreen0 100 0#006400深绿色gold255 215 0#FFD700金色violet238 130 238#EE82EE紫罗兰purple160 32
12、 240#A020F0紫色 RGB颜色是计算机系统最常用的颜色体系之一,它采用R(红色)、G(绿色)、B(蓝色)三种基本颜色及它们的叠加组成各式各样的颜色,构成颜色体系。理论表明,RGB颜色能够形成人眼感知的所有颜色。具体来说,RGB颜色采用(r,g,b)表示,其中,每个颜色采用8比特表示,取值范围是0,255。因此,RGB颜色一共可以表示2563(16M,约1,678万)种颜色。RGB颜色 turtle通过一组函数控制画笔的行进动作,进而绘制形状。turtle.fd()函数最常用,它控制画笔向当前行进方向前进一个距离,函数定义如下:turtle.fd(distance)别名别名 turtle
13、.forward(distance)作用作用:向小海龟当前行进方向前进distance距离参数参数:distance:行进距离的像素值,当值为负数时,表示向相反方向前进。形状绘制函数 turtle.seth()函数用来改变画笔绘制方向,函数定义如下:turtle.seth(to_angle)别名别名 turtle.setheading(to_angle)作用作用:设小海龟当前行进方向为to_angle,角度=绝对方向角度值。参数参数:to_angle:角度的整数值。形状绘制函数 其中,0表示向东,90度向北,180度向西,270度向南;负值表示相反方向。程序中,我们让小乌龟向-40度启动爬行,
14、即:向东南方向40度。形状绘制函数090180270 turtle.circle()函数用来绘制一个弧形,函数定义如下turtle.circle(radius,extent=None)作用作用:根据半径radius绘制extent角度的弧形,绘制模式参见图2.7。参数参数:raduis:弧形半径,当值为正数时,半径在小海龟左侧,当值为负数时,半径在小海龟右侧;extent:绘制弧形的角度,当不给该参数或参数为None时,绘制整个圆形形状绘制函数 图图2.7:turtle.circle()函数的参数含义函数的参数含义形状绘制函数 由于存在缩进,实例代码2.1中第10、11、12行是一个由保留字f
15、or引导的整体,这是另一种循环结构,称为“遍历循环”。for语句的循环格式是:for i in range():实例代码2.1中第10行的for循环表示第11、12行代码连续执行4次。遍历循环 main()函数给出了小乌龟爬行的窗体大小,爬行轨迹颜色和宽度以及初始爬行的方位。最后,调用drawSnake函数启动绘制蟒蛇功能。drawSnake函数有四个参数,根据调用时给出的参数,分别将40传递给rad、80给angle,5给len,15给neckradPython小蛇实例 蟒蛇程序功能可以分成两类:绘制图形前对画笔的设置,包括颜色、尺寸、初始位置等以及绘制Python蟒蛇的功能。由于蟒蛇绘制的功能相对独立,可以用函数来封装Python的函数封装 本章从解决实际问题入手,以简单的温度转换程序为例,逐行逐句的分析了Python语言基本元素。通过讲解Python蟒蛇绘制实例,介绍Python语言函数库turtle及其基本使用。本章小结