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

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

 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. Java中splite的用法与小技巧

    在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧.如执行:"2|33|4".split(&quo ...

  2. Android调用系统的发邮件功能

    package com.example.myapi.email; import java.util.ArrayList; import java.util.List; import android.c ...

  3. 609E- Minimum spanning tree for each edge

    Connected undirected weighted graph without self-loops and multiple edges is given. Graph contains n ...

  4. Docker 修改已有镜像(转)

    1.当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 docker commit 命令来提交更新后的副本. 其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样:- ...

  5. [SDOI2012]任务安排 BZOJ2726 斜率优化+二分查找

    网上的题解...状态就没有一个和我一样的...这让我有些无从下手... 分析: 我们考虑,正常的斜率优化满足x(i)单调递增,k(i)单调递增,那么我们就可以只用维护一个单调队列满足对于当前的x(i) ...

  6. solr服务器搭建与Tomact整合及使用

    一:solr服务器的搭建 1:搭建全新的为solr专用的solr服务器: 在自己电脑上搭建两台Tomact服务器,一台仍为应用服务器,一台作为solr服务器,应用服务器按照正常Tomact服务器搭建即 ...

  7. php web开发安全之sql注入和防范:(一)简单的select语句注入和防范

    sql注入主要是指通过在get.post请求参数中构造sql语句,以修改程序运行时所执行的sql语句,从而实现获取.修改信息甚至是删除数据的目的,sql被注入的原因主要是代码编写的有问题(有漏洞),只 ...

  8. 20155204《网络对抗》Exp 6 信息搜集与漏洞扫描

    20155204<网络对抗>Exp 6 信息搜集与漏洞扫描 一.实验后回答问题 1.哪些组织负责DNS,IP的管理. 互联网名称与数字地址分配机构,简称ICANN机构,决定了域名和IP地址 ...

  9. 隐马尔科夫模型研究 stock 以及 lotto

    说明 本文参考了这里 由于数据是连续的,因此使用了高斯隐马尔科夫模型:gaussianHMM 一.stock代码 import tushare as ts import pandas as pd im ...

  10. Maven学习第1期---Maven简单介绍

    前言 Hadoop的MapReduce环境是一个复杂的编程环境,所以我们要尽可能地简化构建MapReduce项目的过程.Maven是一个很不错的自动化项目构建工具,通过Maven来帮助我们从复杂的环境 ...