木子呢 发表于 2021-9-10 14:53:21

Mind+Python turtle 课程——02 海龟画正方形

本帖最后由 木子呢 于 2021-9-10 14:58 编辑

第二课 海龟画正方形目录:
[*]Mind+Python turtle 课程-序章
[*]Mind+Python turtle 课程——01 海龟动起来


功能介绍

如果有做过上节课的项目扩展,这节课将很容易进行学习。首先需要实现海龟能在弹窗中实现直走并拐弯,可以直角,也可以以其它角度进行拐弯。之后让海龟画走出一个正方形出来,再结合循环和变量优化代码,能让海龟实现在弹窗中走出正方形的效果。课程会分为两个任务的形式进行,下表为课程任务及涉及到的知识点。

实现功能知识点
任务一:海龟直走并实现拐弯巩固上一课的学习内容
任务二:海龟动起来循环、变量、range()函数、行和缩进

项目实践

任务一:海龟直走并实现拐弯

1、任务分析

经过上节课的课程学习,我们对海龟绘图有了一定的了解,也新认识了库、注释、函数的用法。在上一节课的学习基础上,我们增加让海龟向前移动的代码,让其能在弹窗中显示出来。
2、编写程序

代码如下:
import turtle#导入模块turtle.shape("turtle")#外形显示乌龟turtle.forward(100)#向前移动距离100像素turtle.left(90)#左转90度turtle.exitonclick()#点击退出

3、运行效果

运行此段程序,可以看到海龟先向前走了一段距离(100像素)之后,拐弯90度。

4、代码释义

4.1代码中turtle库left()函数的使用

turtle.left(90)

4.1.1代码解释
此段带代码为调用海龟绘图(turtle)的“left(90)”函数,能让海龟在弹窗中实现拐弯90°的功能。
4.1.2海龟拐弯的使用方法
如果把数值改为其它值,那么海龟也会向相应的方向进行转动,如turtle.left(60),那么海龟就会向左转60°。同理让海龟向右转可以将代码修改为turtle.right(60)。
练一练
通过任务一的学习和操作,自己动手尝试让海龟在弹窗中画出正方形出来。
参考代码:
import turtle#导入模块turtle.shape("turtle")#外形显示乌龟turtle.forward(100)#向前移动距离100像素turtle.left(90)#左转90度turtle.forward(100)#向前移动距离100像素turtle.left(90)#左转90度turtle.forward(100)#向前移动距离100像素turtle.left(90)#左转90度turtle.forward(100)#向前移动距离100像素turtle.left(90)#左转90度turtle.exitonclick()#点击退出

任务二:利用循环、变量、range()函数优化程序

1、任务分析

我们通过观察前面海龟画出正方形的代码,可以发现turtle.forward(100)和turtle.left(90)这两段代码重复使用了四次,那有什么办法能简化这些代码吗?答案是肯定的,这里我们用到for()循环、变量以及range()函数来简化程序。
2、编写程序

代码如下:
import turtle#导入模块turtle.shape("turtle")#外形显示乌龟for i in range(4):#定义变量执行4次turtle.forward(100)#向前移动距离100像素turtle.left(90)#左转90度turtle.exitonclick()#点击退出

注意:在for循环“:”后面需要循环执行的程序必须加相同的缩进空白数量,否则会报语法错误。
3、运行效果

运行此段程序,可以看到海龟也走出了一个正方形。

4、代码释义

4.1代码中for()循环、变量、range()函数以及行和缩进

for i in range(4):#定义变量执行4次turtle.forward(100)#向前移动距离100像素turtle.left(90)#左转90度

4.1.1代码解释
代码中的for i in range(4)循环其实是for i in range(0,4,1)的缩写,也可以写成for i in,也就是当列表中i取第一项0时,执行一次“urtle.forward(100)#向前移动距离100像素”和“turtle.left(90)#左转90度”。如此依次执行i取第二项1,i取第三项2和i取第四项3的程序,当遍历四次就完成了此次循环,在形状上就能让海龟画出正方形,这种循环方式叫做计数循环。
4.1.2代码中的for循环

for i in range(4):#定义变量执行4次

for 循环的语法格式如下:for 迭代变量 in 字符串|列表|元组|字典|集合:代码块
迭代:每次循环称为一次迭代
代码块:指的是具有相同缩进格式的多行代码,由于和循环结构联用,因此代码块又称为循环体。
这里我们以列表举例,for 循环语句的执行流程如图所示
for 循环语句的执行流程图
我们拿上述的程序来说,for循环开始会检测序列中是否有项,也就是上述程序中的。有项则取第一项得值,此时执行一次循体,也就是让海龟向前100的像素,然后左转90度。依次执行直到遍历完成所有的项就会跳出循环。
这里需要注意,程序中的循环都是从0开始循环而不是1。
4.1.3代码中的变量

for i in range(4):#定义变量执行4次

这里的变量我们指的是上述程序中的i,在程序的运行过程中i的值从列表中的第一个元素0到最后一个元素3,每次迭代过程中都会变化,之所以叫做变量就是因为它在程序的运行过程中是不断变化的。上述程序中,我们只用一个变量i就能在不同时间内代表不同的数值,这也是变量的优势,让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此变量十分有用。关于变量的其它用法,在后续的课程中也会进行介绍。
4.1.4代码中的range()函数
for i in range(4):#定义变量执行4次

代码中的for i in range(4)循环其实是for i in range(0,4,1)的缩写。range()的一般使用格式如下:range(start,stop,step)三个参数的含义分别是:start表示范围开始的值。stop表示范围结束的值。step表示下次循环所递进的增加值。
如果只使用两个参数,如range(0,3),那么默认的第三个参数step=1。若只有一个参数,如range(5),则默认start=0,step=1。有了range()函数,当需要循环100次时,就可以简化写为range(100)。
4.1.5 行和缩进
for i in range(4):#定义变量执行4次turtle.forward(100)#向前移动距离100像素turtle.left(90)#左转90度

我们发现上述代码中”:“号后面的代码具有一样的缩进格式,为什么要这样呢?其实python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。如上述代码中,程序至上而下的运行程序,当运行带这两段代码时,发现它们是具有同一缩进格式的代码块,因此当执行循环时就会循环执行这两段代码的内容。
项目小结

本节课我们通过让海龟走正方形的项目,继续熟悉了海龟绘图编程工具,实现了在弹窗中绘制出正方形。在本节课中分别学习了for循环、变量、range()函数以及行和缩进的用法。通过这节课程的学习,想一想我们还能利用海龟绘图画出什么样的图形呢,赶紧动手试试吧!
项目扩展

利用本节课所学的知识,绘制出一个三角形的图案,之后查看附录内容画出圆和半圆。
参考程序

三角形:
import turtleturtle.shape("turtle")#外形显示乌龟turtle.circle(50,steps=3) # 三角形turtle.exitonclick()#点击退出

圆:
import turtleturtle.shape("turtle")#外形显示乌龟turtle.circle(50) # 整圆turtle.exitonclick()#点击退出

半圆:
import turtleturtle.shape("turtle")#外形显示乌龟turtle.circle(120, 180) # 半圆turtle.exitonclick()#点击退出




hmilycheng 发表于 2021-9-16 18:32:15

感谢分享!
页: [1]
查看完整版本: Mind+Python turtle 课程——02 海龟画正方形