在前面的教程中,咪博士留了一道练习题给大家—-画正方形,相信聪明的你应该已经画出来了。

下面是咪博士实现的代码。 是不是跟你的代码很像呢?

 import turtle

 turtle.forward(200)
turtle.left(90) turtle.forward(200)
turtle.left(90) turtle.forward(200)
turtle.left(90) turtle.forward(200)
turtle.left(90) turtle.exitonclick()

虽然这段代码可以成功绘制出一个正方形,但它还有些不足的地方。仔细观察,我们发现,有许多代码是重复的:第 3, 4 行的代码重复了 4 次。在编程的时候,我们要尽量避免重复的代码。遇到需要重复执行的语句,我们应当使用循环来实现。

下面是咪博士用循环重新实现的画正方形的功能。怎么样,代码是不是简洁许多了呢?但是好像看不太懂了?

 import turtle

 for i in range(4):
turtle.forward(200)
turtle.left(90) turtle.exitonclick()

别急,听咪博士为你讲解。

第 3, 4, 5 行就是一个循环,用于执行重复的语句。

其中,第 4, 5 行的代码和原来的版本”几乎”是一样的,它们是需要重复执行的语句,我们称之为循环体。不过,一定要注意的是,同原来的版本相比,第 4, 5 行的代码不是顶格写的,而是向右缩进了一些(所以是“几乎”一样,而不是完全相同),Python 正是根据缩进来推断哪些语句属于循环体。通常我们使用连续的 4 个空格符来表示一级的缩进。

第 3 行的代码是一个 for 循环。它的作用是重复执行循环体中的语句。可是要重复执行多少次呢?答案是 4 次。为什么?我们先来看 range 函数,range(n) 相当于产生一个从 0 到 n-1 的等差数列, 即 0, 1, 2…, n-1,总共 n 个数字。所以,这里的 range(4) 相当于数列 0, 1, 2, 3,总共是 4 个数字。 for i in range(4):  的意思就是每次循环从数列中取出 1 个数字,赋值给变量 i,直至取完数列中所有的数字,即

  • 第 1 次循环的时候,i = 0
  • 第 2 次循环的时候,i = 1
  • 第 3 次循环的时候,i = 2
  • 第 4 次循环的时候,i = 3

然后呢?然后循环就结束了,因为 range(4) 对应的数列只有 0, 1, 2, 3 这 4 个数字。这 4 个数字通过 4 次循环已经全部取完了。没数字可取了,所以循环也就结束了。因此,第 3 行的代码  for i in range(4):  将执行 4 次循环体(第 4, 5 行的代码)

最后,咪博士给大家展示一个更高级一点的例子—-嵌套循环,即循环体里面还有循环!

 import turtle

 for i in range(16):
turtle.left(22.5) for j in range(4):
turtle.forward(200)
turtle.left(90) turtle.exitonclick()

【练习】

  • 先不要运行代码,尝试分析一下,上面这段代码会绘制出什么样的图案?
  • 让代码跑起来,看看你的分析是否正确。

原文链接:http://www.ipaomi.com/2017/11/16/python-零基础-快速入门-趣味教程-咪博士-海龟绘图-turtle-3-循/

Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 3. 循环的更多相关文章

  1. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环

    条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...

  2. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件

    前面的教程中,我们已经可以让小海龟绘制出各种图形了.但是,所有绘图的代码都是预先编好的,程序一旦运行起来,运行结果(绘制的图形)就是固定不变的.这一节中,咪博士将教大家如何让海龟响应用户的输入. im ...

  3. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 4. 函数

    什么样的程序员才是优秀的程序员?咪博士认为“慵懒”的程序员才是真正优秀的程序员.听起来不合逻辑?真正优秀的程序员知道如何高效地工作,而不是用不止境的加班来完成工作任务.函数便是程序员高效工作的利器之一 ...

  4. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量

    大家在中学就已经学过变量的概念了.例如:我们令 x = 100,则可以推出 x*2 = 200 试试下面这段 Python 代码 import turtle turtle.shape("tu ...

  5. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友

    Python (Windows 下) 自带了一个非常有趣的 海龟绘图程序 (turtle),它是本系列课程的主角. 在 PyCharm 中,新建一个项目,然后在代码编辑器中输入 import turt ...

  6. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作

    一.关于 Python Python 是全球使用人数增长最快的编程语言!它易于入门.功能强大,从 Web 后端 到 数据分析.人工智能,到处都能看到 Python 的身影. Python 有两个主要的 ...

  7. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 5. 参数

    上一个教程中,咪博士带大家学习了函数的使用.例如,line_without_moving 函数,可以让海龟先画出一条线段,然后再回来起点. def line_without_moving(): tur ...

  8. Python 零基础快速入门!

    “人生苦短,我学python”是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十分快速的.编程理念都 ...

  9. 序言 - PHP零基础快速入门

    我为什么要写<PHP零基础快速入门>? 原因: PHP 真心简单,适合零基础的人快速入门掌握,身边的人学习一两周上手开发的比比皆是: 市面上的文章或书籍对初学者并不友好,多半枯燥乏味,我相 ...

随机推荐

  1. PAT B1013 数素数 (20 分)

    令 P​i​​ 表示第 i 个素数.现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输 ...

  2. Android SurfaceView概述

    简介:SurfaceView继承自View,但它与View不同,View是在UI主线程中更新画面,而SurfaceView是在一个新线程中更新画面,View的特性决定了其不适合做动画,因为如果更新画面 ...

  3. mysql的常用优化知识

    索引类型:主键索引,唯一索引,联合索引,普通索引,全文索引 建立索引: create index index_name on table(field_name); 删除索引: drop index i ...

  4. Kafka 集群部署

    kafka是一个分布式消息队列,需要依赖ZooKeeper,请先安装好zk集群 kafka安装包解压 $ -0.9.0.1.tgz $ -0.9.0.1 /usr/kafka $ cd /usr/ka ...

  5. 一个IOS自动化打包的脚本

    网上找了一个脚本,在其中进行了修改,只需要一条命令就可以了 支持自动导入配置文件 支持自动安装p12证书 支持自动修改版本号和build版本号 支持自动修改app显示名称 支持自动修改bundle i ...

  6. Android“寄生兽”漏洞技术分析

    一.关于app的缓存代码 安卓的应用程序apk文件是zip压缩格式的文件,apk文件中包含的classes.dex文件相当于app的可执行文件,当app运行后系统会对classes.dex进行优化,生 ...

  7. 20155306 白皎 《网络攻防》 EXP7 网络欺诈技术防范

    20155306 白皎 <网络攻防> EXP7 网络欺诈技术防范 问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内的攻击以及连接公众场所的共享wifi (2)在日常 ...

  8. maven中添加jetty运行插件

            maven项目,用jetty插件运行,对热部署的支持比较好.maven的pom文件加入下面代码 <plugin> <groupId>org.mortbay.je ...

  9. 分类-MNIST(手写数字识别)

    这是学习<Hands-On Machine Learning with Scikit-Learn and TensorFlow>的笔记,如果此笔记对该书有侵权内容,请联系我,将其删除. 这 ...

  10. Zabbix实战-简易教程--大型分布式监控系统实现Agent批量快速接入

    一.分布式架构 相信使用zabbix的大神都熟悉他的分布式架构,分布式的优势相当明显,分而治之.比如目前我的架构图如下: 那么,对将要接入监控系统的任何一个agent如何快速定位,并进行接入呢?  问 ...