227浏览
查看: 227|回复: 1

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

[复制链接]
本帖最后由 木子呢 于 2021-9-10 14:58 编辑

第二课 海龟画正方形
目录:

功能介绍

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

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

项目实践

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

1、任务分析

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

2、编写程序

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

3、运行效果

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

图片1.png

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、运行效果

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

图片2.png

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[0,1,2,3],也就是当列表中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 循环语句的执行流程如图所示

图片3.png
for 循环语句的执行流程图

我们拿上述的程序来说,for循环开始会检测序列中是否有项,也就是上述程序中的[0,1,2,3]。有项则取第一项得值,此时执行一次循体,也就是让海龟向前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 turtle
turtle.shape("turtle")#外形显示乌龟
turtle.circle(50,steps=3) # 三角形
turtle.exitonclick()#点击退出

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

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




hmilycheng  初级技师

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

感谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail