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

看下面这段示例代码,

import turtle

turtle.shape("turtle")

turtle.speed(0)

def forward(max_distance):

distance = 0

step = 1

while distance < max_distance:

turtle.forward(step)

distance += step

forward(100)

turtle.exitonclick()

函数 forward 实现的功能和原版的 turtle.forward 是一样的,但这里我们是借助条件循环来实现的。

第 5 行 turtle.speed(0) 设置海龟爬行的速度。速度的取值为 [0, 10]。当取值在 [1, 10] 之间时,数值越大,绘图的速度就越快。当取值为 0 时,海龟将以最快的速度绘图。这里,我们让海龟以最快的速度爬行。因为,在我们自定义的 forward 函数中(第 8-13 行),我们要让海龟移动很多步,但每次只移动 1 个很小的距离,为了尽快看到最终绘图的效果,我们得让海龟爬得快一些。

第 8 行 def forward(max_distance): 声明 forward 函数,它有 1 个参数 max_distance。这个函数要实现的功能是,让海龟一直爬行,直到海龟总的爬行距离达到(或超过) max_distance 时才停止爬行。

第 9 行 distance = 0 变量 distance 用于记录当前海龟已经累计爬行了多远的距离。初始时,海龟还没有开始爬行,因此 distance 的初始值为 0。

第 10 行 step = 1 设置海龟爬行的步长,即每 1 步要爬多远的距离。

第 11-13 行是用 while 语句实现的条件循环,其中第 11 行, while distance < max_distance: 指明了循环条件为  distance < max_distance 即,当海龟累计爬行距离 (distance) 小于规定的最大爬行距离 (max_distance) 时,执行循环体中的语句(第 12, 13 行)。

第 12, 13 行是循环体,其中第 12 行 turtle.forward(step) 让海龟以指定步长 step 前进一小段距离。第 13 行 distance += step 这是一种简写的形式,它等价于 distance = distance + step ,即将海龟刚才(第 12 行)爬行的那一小段距离累加到 distance 变量中。类似 for 循环,while 循环的循环体(第 12, 13 行)也要比 while  语句所在的行(第 11 行),向右缩进一些,通常我们用连续的 4 个空格来表示一级的缩进。

不过,现在的 forward 跟原版的 turtle.forward 效果是一样的,没啥意思,咪博士把代码改进一下,让它变得好玩一些。

import turtle

turtle.shape("turtle")

turtle.speed(0)

def forward(max_distance, max_radius):

distance = 0

step = 1

while distance < max_distance:

if turtle.distance(0,0) >= max_radius:

angle = turtle.towards(0,0)

turtle.setheading(angle)

turtle.forward(step)

distance += step

forward(550, 100)

turtle.exitonclick()

再次运行程序,你会看到海龟在一条直线上折返爬行。

第 8 行 def forward(max_distance, max_radius): 我们为 forward 函数引入了一个新的参数 max_radius。后面,我们要实现的功能是当海龟离开原点的距离达到(或超过) max_radius 时,就调头往回爬,即往复爬行。

实现往复爬行对应的代码在第 12-14 行。

第 12 行 if turtle.distance(0,0) >= max_radius: ,其中 turtle.distance(0,0) 返回的是海龟与原点 (0, 0) 的距离。因此,当海龟与原点的距离达到或超过 max_radius 时,if 条件成立,程序将执行相应的语句(第 13, 14 行)。

第 13 行 angle = turtle.towards(0,0) ,其中  turtle.towards(0,0) 返回的是海龟朝向原点 (0, 0) 的角度。计算角度时,水平向右为 0 度,逆时针方向为角度增大的方向。

第 14 行 turtle.setheading(angle) 直接设定海龟的朝向,由于前面(第 13 行),将 angle 的值设置为海龟朝向原点的角度,所以这里经过 setheading 设置之后,海龟将朝向原点的方向。因此,后面再调用 turtle.forward  (第 15 行),海龟就会往原点的方向移动,即往回爬行。

现在,海龟能够在一条直线上往复爬行,虽然比之前改进了一些,但还是显得比较单调。接下来,咪博士再进一步改进代码,让它变得更生动一些。

import turtle

import random

turtle.shape("turtle")

turtle.speed(0)

def forward(max_distance, max_radius):

distance = 0

step = 1

while distance < max_distance:

if turtle.distance(0,0) >= max_radius:

angle = turtle.towards(0,0) + random.randint(-45, 45)

turtle.setheading(angle)

turtle.forward(step)

distance += step

forward(10000, 100)

turtle.exitonclick()

运行上面的代码,你会看到海龟随机地往返爬行。刚开始,你看不出什么规律,但等它爬行一段时间之后,你会发现海龟实际上是被限制在一个圆圈当中运动。

第 2 行 import random 导入 random 模块,用于生成随机数。

第 14  行 angle = turtle.towards(0,0) + random.randint(-45, 45) 其中的  random.randint(-45, 45) 用于产生 [-45, 45] 之间的随机整数,将这个随机整数加到朝向原点的角度上,这样海龟就不再精确地朝向原点,而是有一个随机波动的角度。因此,海龟就不再精确地按原路返回,从而摆脱直线的束缚。

但是,原来的 2 个约束依然存在:

海龟离开原点的距离不能超过 max_radius(第 13 行),所以它被限制在一个圆圈中运动

海龟总的运动距离不能超过 max_distance (第 12 行),所以它最终会停止运动

Python 零基础 快速入门 趣味教程 &lpar;咪博士 海龟绘图 turtle&rpar; 6&period; 条件

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

Python 零基础 快速入门 趣味教程 &lpar;咪博士 海龟绘图 turtle&rpar; 4&period; 函数

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

Python 零基础 快速入门 趣味教程 &lpar;咪博士 海龟绘图 turtle&rpar; 3&period; 循环

在前面的教程中,咪博士留了一道练习题给大家—-画正方形,相信聪明的你应该已经画出来了. 下面是咪博士实现的代码. 是不是跟你的代码很像呢? import turtle turtle.forward(2 ...

Python 零基础 快速入门 趣味教程 &lpar;咪博士 海龟绘图 turtle&rpar; 2&period; 变量

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

Python 零基础 快速入门 趣味教程 &lpar;咪博士 海龟绘图 turtle&rpar; 1&period; 神秘朋友

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

Python 零基础 快速入门 趣味教程 &lpar;咪博士 海龟绘图 turtle&rpar; 0&period; 准备工作

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

Python 零基础 快速入门 趣味教程 &lpar;咪博士 海龟绘图 turtle&rpar; 5&period; 参数

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

Python 零基础快速入门!

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

序言 - PHP零基础快速入门

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

随机推荐

关于strcpy和memcpy

strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符.已知strcpy函 ...

ubuntu下查看环境变量

在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量.   Linux下准确的说是REDHAT下应该如何查看呢,命令是:   export   如果你想查看某一个名称的环 ...

微博feed系统的推&lpar;push&rpar;模式和拉&lpar;pull&rpar;模式和时间分区拉模式架构探讨

sns系统,微博系统都应用到了feed(每条微博或者sns里的新鲜事等我们称作feed)系统,不管是twitter.com或者国内的新浪微博,人人网等,在各种技术社区,技术大会上都在分享自己的feed ...

Jsonp 跨域请求实例

关于jsonp的一个实例,其实自己也不是很了解,今天下午稍微研究了一下: 简单来说,jsonp就是为了两个不同网站之间数据传递而产生的,主要用于js脚本,因为浏览器本身是禁止跨域访问的: 本机实例: ...

oracle sysdba用户远程登录

sysdba远程登录需要两个条件: 1.remote_login_passwordfile =exclusive时,启用口令文件,允许远程登录: 查看remote_login_passwordfile ...

dpkg -P xx

dpkg -l | grep ^rc | cut -d' ' -f3|xargs dpkg -P http://www.linuxquestions.org/questions/debian-26/h ...

gen&lowbar;compile&period;sql

set echo off pagesize 0 feedback off define v_input_un       = &1define v_input_pw       = & ...

linq用法整理

linq用法整理 普通查询 var highScores = from student in students where student.ExamScores[exam] > score se ...

【问题解决方案】之 关于某江加密视频swf专用播放器仍无法播放的问题

前言: 从pt上下载了一些语言学习的视频之后一直打不开,百度谷歌了若干种方法仍然无解.无奈放弃. 某日从百度知道里又看到一个方法,试了一下,居然灵了.呜呼哀哉.赶紧记下来. 原方法链接:https:/ ...

javaMail简介&lpar;一&rpar;

一:开发javaMail用到的协议 SMTP(simple Message Transfer Protocal):简单消息传输协议.发送邮件时使用的协议,描述了数据该如何表示,默认端口为:25 POP ...

python海龟教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环...相关推荐

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

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

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

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

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

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

  4. python列表嵌套字典取值_Python零基础快速入门(五):列表和字典

    第5节课程大纲 一.数据类型:列表 1.什么是列表 2.从列表提取单个元素:偏移量 3.从列表提取多个元素:冒号切片 4.给列表增加/删除元素:append()函数 二.数据类型:字典 1.什么是字典 ...

  5. python def 识别print_Python零基础快速入门(一):print()函数与变量

    第1节课程大纲 一.print()函数与变量 1.print()函数 2.转义字符 3.变量与赋值 4.附录:有趣的代码 二.课后练习 三.整体学习内容 一.print()函数与变量 1.1 prin ...

  6. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

  7. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  8. 零基础快速入门SpringBoot2.0教程 (三)

    一.SpringBoot Starter讲解 简介:介绍什么是SpringBoot Starter和主要作用 1.官网地址:https://docs.spring.io/spring-boot/doc ...

  9. 【PR】零基础快速入门教程

    [PR]零基础快速入门教程 PR(Premiere)能做什么? PR欢迎界面及新建项目 工作区及窗口说明 导入文件 建立序列 视频剪辑 添加字幕 导出视频 使用软件:Premiere2020 新年卷起 ...

最新文章

  1. python3随笔-协方差,标准差,方差
  2. getAttribute与getParameter的区别
  3. alternatives命令使用方法
  4. ORACLE EBS R12 - 寄售功能知多少
  5. [建议]添加模板功能
  6. 计算机网络安全防护教案,计算机网络安全基础教案.DOC
  7. 利用html制作通讯录_动漫制作软件哪些好用?动漫制作软件推荐
  8. XJTU_选课小助手
  9. 高效工作节省时间的一些小技巧
  10. 两个正态总体均值差的检验(t)
  11. oracle job remove,如何删除oracle Job命令实例
  12. 股票学习-量柱和k线-第一天
  13. ndims matlab,MATLAB的size(),length(),ndims()函数
  14. 解释一下label中的写法:plt.plot(t, sig, b-, linewidth=2, label=r$\sigma(t) = \frac{1}{1 + e^{-t}}$)...
  15. 微信小程序获取用户信息
  16. 英语六级高频词汇速记 + 2019-12-1听力 Day07
  17. 数据仓库设计规范文档
  18. 认识世界的基础——系统概述-1
  19. js siblings()处理选中高亮问题
  20. Selenium Java启动国内Chromium系浏览器360、QQ等

热门文章

  1. java jws配置_与WordNet有关的两个JAVA库(JWNL和JWS)的配置
  2. nodejs c++ addon插件的应用场景
  3. sqlite入门基础(一):sqlite3_open,sqlite3_exec,slite3_close
  4. 华为mate50pro和华为mate50RS的区别
  5. 游戏‘微信打飞机 第一课
  6. 从放弃本专业到直播编程,这女孩都经历了些什么?
  7. python怎么设置dos_Windows下Python环境的配置和Dos界面的调用
  8. 1010: 求圆的周长和面积 ZZULIOJ
  9. 非常好用的一款在线甘特图工具
  10. web scraper翻页功能的实现