2.4 turtle语法元素分析 | Python语言程序设计(嵩天)
计算机是运算工具,更是创新平台,高效有趣地利用计算机需要更简洁实用的编程语言。Python简洁却强大、简单却专业,它是当今世界最受欢迎的编程语言,学好它终身受用。请跟随我们,学习并掌握Python语言,一起动起来,站在风口、享受创新!
—— 课程团队
MOOC课程:
Python语言程序设计(嵩天 、黄天羽 、礼欣)
北京理工大学
课程视频地址:
课程视频-B站
授课目标:
本课程适合如下教学目标:
- 程序设计入门课:面向各层次各专业大学在校生、部分优秀高中生,作为程序设计入门课程
- 体系化编程基础:面向拟构建坚实编程能力的自学者,作为不断奋斗的参考在线课程
- Python科目备考:面向全国计算机等级考试二级Python科目的备考考生,作为在线备考资源
- 再试一次的尝试:面向拟放弃计算机或编程学习的学习者,作为再试一次的课程资源,学不会这门课学再放弃不迟…
- 库引用与import
- turtle画笔控制函数
- turtle运动控制函数
- turtle方向控制函数
- 循环语句与range()函数
- "Python蟒蛇绘制"代码分析
库引用。
是扩充Python程序功能的方式。
库引用的三种方法:
① 使用 import
保留字完成相关库的引用,采用 .()
的编码风格。
不会出现函数重名问题。
#方法一:
import <库名> #调用相关库
<库名>.<函数名>(<函数参数>) #调用相关函数
<库名>.<函数名>是新程序中的函数名。
因为 .()
的形式本身就是一个统一的名字。
#Python蟒蛇绘制示例,方法一:
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()
② 简化 turtle 代码调用:使用 from
he import
保留字共同完成。
易出现函数重名问题。
#方法二:
from <库名> import *
<函数名>(<函数参数>)
#或者,也可写作以下形式:
from <库名> import <函数名>
<函数名>(<函数参数>)
<函数名>在程序中是独立的函数名。
如果程序(代码)中 import 到了很多库,且这些库中的函数名字之间可能存在冲突,则用: import <库名>
如果程序(代码)很短,且只使用单一的一个库,也没有自己定义的函数,可用: from <库名> import *
库中的某一个函数名称可能会与程序中用户自定义的一个函数名称重名(或与用户使用的另一个库内函数重名),函数名字冲突会使程序运行不一致。
#Python蟒蛇绘制示例,方法二:
#采用.()方式调用库中函数,能显示标明函数来源,在引用较多库时,代码的可读性更好,
#建议初学者采用 .() 这种形式调用库函数。
from turtle import *
setup(650, 350, 200, 200)
penup()
fd(-250)
pendown()
pensize(25)
pencolor("purple")
seth(-40)
for i in range(4):
circle(40, 80)
circle(-40, 80)
circle(40, 80/2)
fd(40)
circle(16, 180)
fd(40 * 2/3)
done()
#Python蟒蛇绘制示例,方法二:
#利用保留字直接引用库中函数,可使代码更简洁。
#可能出现用户自定义函数名与库函数名重名问题,因此,不建议初学者采用此种形式调用库函数。
from turtle import setup, penup, fd, pendown, done
from turtle import pensize, pencolor, seth, circle
setup(650, 350, 200, 200)
penup()
fd(-250)
pendown()
pensize(25)
pencolor("purple")
seth(-40)
for i in range(4):
circle(40, 80)
circle(-40, 80)
circle(40, 80/2)
fd(40)
circle(16, 180)
fd(40 * 2/3)
done()
③ 使用 import
和 as
保留字共同完成。
冗余的代码量最少,同时防止函数重名。
#方法三:
import <库名> as <库别名> #库别名
<库别名>.<函数名>(<函数参数>)
<库别名>.<函数名> 构成当前程序(代码)中的独立名字。
给调用的外部库关联一个更短、更适合自己的名字。对编写程序(代码)更便利,这种方式下,在引入、调用库中函数时产生的冗余代码量最少,同时又防止了库函数调用时重名的问题。
#Python蟒蛇绘制示例,方法三:
import turtle as t
t.setup(650, 350, 200, 200)
t.penup()
t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("purple")
t.seth(-40)
for i in range(4):
t.circle(40, 80)
t.circle(-40, 80)
t.circle(40, 80/2)
t.fd(40)
t.circle(16, 180)
t.fd(40 * 2/3)
t.done()
画笔操作后一直有效,一般成对出现。
turtle.penup()
别名 turtle.pu()
抬起画笔,海龟在飞行
画笔抬起时,海龟(画笔)行进的轨迹不会在画布上留下痕迹。
turtle.pendown()
别名 turtle.pd()
落下画笔,海龟在爬行
一般用 turtle.penup()
让海龟飞到某个位置,再用 turtle.pendown()
从这个位置开始绘图。
别名:是为了让编程更便捷,turtle库提供的一种冗余性函数,它与对应函数名的功能完全一致,只是名字不同。
画笔设置后一直有效,直至下次重新设置
turtle.pensize()
别名 turtle.width()
画笔宽度,海龟的腰围
设置画笔的宽度数值、粗细数值,相当于海龟腰围。
turtle.pencolor(color)
画笔颜色,海龟在涂装
color
为对应颜色的小写英文字符串或 r,g,b 数值。
参数 color 表示色彩,可通过 字符串 或 RGB值 赋予海龟颜色。
turtle.pencolor(color)
的 color
有三种具体形式:
turtle.pencolor("colorstring")
#例如:将海龟涂装颜色改为紫色
#注意,参数'purple'为小写英文字符串形式
turtle.pencolor('purple') #颜色的英文小写名称(字符串类型)
turtle.pencolor(r,g,b)
#例如:将海龟涂装颜色改为紫色
#注意,数值间用逗号隔开
turtle.pencolor(0.63, 0.13, 0.94) #小数值(浮点数类型)
turtle.pencolor((r,g,b))
#例如:将海龟涂装颜色改为紫色
#注意,这里的元组额外使用一对圆括号将3个整数值组成了函数turtle.pencolor()的独立元素参数
turtle.pencolor((160, 32, 240)) #三个整数值为一组(元组类型)
控制海龟行进:走直线 & 走曲线
画笔设置后一直有效,直至下次重新设置
turtle.forward(d)
别名 turtle.fd(d)
向前行进,海龟走直线
d
: 行进距离,可以为负数。
具体行进距离单位为像素。
若 d
为负数,海龟是倒退着行走。
turtle.circle(r,extent=none)
海龟根据半径 r
绘制 extent
角度的弧线
r
: 默认r
为正数,圆心在海龟左侧 r r r 距离的位置,作逆时针绘制;
若 r
为负数,则圆心在海龟右侧 r r r 距离的位置,作顺时针绘制。
extent
: 绘制角度,默认为 360° 整圆
控制海龟面对方向: 绝对角度 & 海龟角度
turtle.setheading(angle)
别名 turtle.seth(angle)
angle
: 行进方向的绝对角度。即,将海龟当前的方向改变为某个绝对的角度。
#示例:
#绝对坐标:详见章节“turtle角度坐标体系”
turtle.seth(45) #将海龟转向为绝对坐标体系中的45°方向(即朝向为东北)
turtle.seth(-135) #将海龟转向为绝对坐标体系中的-135°方向(即朝向为西南)
turtle.left(angle)
海龟向左转
turtle.right(angle)
海龟向右转
angle
: 在左转或右转的方向前提下,海龟所需旋转的角度。
注意:
for
和in
保留字
range()
函数
循环语句:按照一定次数循环执行的一组语句
常用循环结构:
for <变量> in range(<参数>):
<被循环执行的语句>
for in
之后缩进的代码块将被循环执行<参数>
次。 #示例1:
#range(5)指循环五次,
#每循环一次,i值就从0开始计数,然后逐渐加1,
#因此打印效果为0到4的五个字符。
>>> for i in range(5):
print(i)
0
1
2
3
4
#示例2:
#打印结果中,hello:与数字之间有了一个空格
#原理参考以下print()函数的使用方法:
# 语法:
# print(*objects, sep=' ', end='\n')
# 参数:
# objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
# sep -- 用来间隔多个对象,默认值是一个空格。
# end -- 用来设定以什么结尾。默认值是换行符 \n,可换成其他字符串。
>>> for i in range(5):
print("hello:",i)
hello: 0
hello: 1
hello: 2
hello: 3
hello: 4
range() 函数: 产生循环计数序列
常见用法:
rang(5):
0,1,2,3,4
rang(2,5):
2,3,4
注意:
range()
是一个函数,对函数赋予多个参数时要用逗号分隔,因此是(M,N)
。
在Python基础语法体系中,rang()
函数主要用做 与 for in
搭配形成计数循环。
turtle.done()函数
Python蟒蛇绘制程序代码中的最后一行:
turtle.done() #绘制完成后保留窗体,不自动退出程序
绘制完成后,保留最后的绘图界面。
若该函数在文件式的代码描写方法中作为整个turtle绘制程序的最后一部分,则运行turtle程序完成绘制后,程序不会自动退出绘图界面。
绘制完成后,自动关闭绘图界面。
若希望程序运行完成后自动退出,则删除最后的这行 turtle.done()
即可。
略(详见对应章节的课程视频)。