Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件
前面的教程中,我们已经可以让小海龟绘制出各种图形了。但是,所有绘图的代码都是预先编好的,程序一旦运行起来,运行结果(绘制的图形)就是固定不变的。这一节中,咪博士将教大家如何让海龟响应用户的输入。
import turtle def move():
direction = turtle.textinput('Input direction', 'Go left or right?') if direction == 'left':
turtle.left(60)
turtle.forward(100) if direction == 'right':
turtle.right(60)
turtle.forward(100) move() turtle.exitonclick()
程序运行起来之后,会先弹出一个输入框,询问你海龟的运动方向。你可以输入 left 或者 right。

当你按下 ok 按钮之后,海龟就会根据你的输入(left 或 right),相应地向左或向右运动。

这个例子中,程序的运行结果不完全取决于事先编写的代码,它还和你的输入有关。
第 5 行 direction = turtle.textinput('Input direction', 'Go left or right?') 弹出一个输入框。输入框(窗口)的标题是 Input direction,输入框的提示文字为 Go left or right?。
- 当用户完成输入点击 ok 按钮时,变量 direction 将获得用户输入的值。
- 当用户点击 cancel 按钮时,变量 direction 的值为 None (None 为Python 中的关键字,表示什么也没有的意思)。
第 7, 8, 9 行称为条件语句。每个 if 语句(第 7 行)表示一个条件,它只有 2 种情况:要么成立(为真,值为 True),要么不成立(为假,值为 False)。
第 7 行 if direction == 'left': 对应的条件是判断变量 direction 与字符串 ‘left’ 是否相等。如果相等则执行第 8, 9 行的代码,否则就不执行第 8, 9 行的代码。
翻译成大白话就像下面这样
如果变量 direction 等于 left,则执行下面的语句
turtle.left(60)
turtle.forward(100)
所以,当用户输入 left,并点击 ok 按钮时,direction 接收到用户的输入 left,它的值等于 left,海龟就先向左转 60 度(执行第 8 行代码),再前进 100 个单位(执行第 9 行代码)。
要注意的是 Python 中比较 2 个东西是否相等,要用 == (即 2 个连续的等号),因为单独的 = (等号)在 Python 中表达的是将某个值赋值给某个变量的意思,因此,比较是否相等就得用另外的符号(即 ==)了。
另外,还要注意缩进,第 8, 9 行的代码要比 if 语句所在的行(第 7 行),向右缩进一些。这样 Python 才知道,当 if 语句为真时(即条件成立时),需要执行哪些代码。和咪博士在前面的教程中谈到的一样,我们一般用连续的 4 个空格符号来表示一级的缩进。
第 11, 12, 13 行也是条件语句,它们和第 7, 8, 9 行代码类似,只不过条件成立的条件改成了变量 direction 的值等于 right。
if 语句还有其他一些语法。下面,咪博士给大家展示的是 if … else 的语法。
import turtle def move():
direction = turtle.textinput('Input direction', 'Go left or right?') if direction == 'left':
turtle.left(60)
turtle.forward(100)
else:
turtle.right(60)
turtle.forward(100) move() turtle.exitonclick()
将 7-12 行的代码翻译成大白话就像下面这样,
如果变量 direction 等于 left,则执行下面的语句
turtle.left(60)
turtle.forward(100)
否则,执行下面的语句
turtle.right(60)
turtle.forward(100)
注意体会前后 2 个版本细微的差别。考虑用户输入一个既不是 left 也不是 right 的字符串(或者直接点击 cancel 按钮)。
- 前一个版本中,海龟不会发生运动。因为此时, if direction == 'left': 不成立, if direction == 'right': 也不成立,所有的绘图代码都没有机会执行。
- 后一个版本中,海龟会往右下方向运动。因为,后一个版本只检查 if direction == 'left': 是否成立。当该条件不成立时,不论变量 direction 的值是多少,它都会执行 else 对应的语句。
要实现和第 1 个版本一样的效果,我们可以用 if … elif 这样的语法。
import turtle def move():
direction = turtle.textinput('Input direction', 'Go left or right?') if direction == 'left':
turtle.left(60)
turtle.forward(100)
elif direction == 'right':
turtle.right(60)
turtle.forward(100) move() turtle.exitonclick()
这个版本中,程序会依次,
- 先检查 if direction == 'left': (第 7 行)的条件,如果成立则执行相应的代码(第 8, 9 行),并忽略剩余的其他条件。如果不成立,则顺次检查下一个条件 if direction == 'right': (第 10 行)。
- 类似地,如果该条件成立,则执行相应的代码(第 11, 12 行),并忽略剩余的其他条件,否则再顺次检查下一个条件。
- 这样一直重复下去,直至没有可检查的条件为止。
虽然,第 3 个版本和第 1 个版本,最终呈现的效果是一模一样的,但它们的内部的执行过程,仍然有细微的差别。
- 第 1 个版本中,程序一定会检查条件 if direction == 'right': 是否成立,无论前一个条件 if direction == 'left': 是否成立。
- 最后一个版本中,程序只有在前一个条件 if direction == 'left': 不成立的时候,才会检查条件 if direction == 'right': 是否成立。
因此,虽然最终的效果是一样的,但从执行效率上来看,最后一个版本要略微高效一些。
原文链接:http://www.ipaomi.com/2017/11/23/python-零基础-快速入门-趣味教程-咪博士-海龟绘图-turtle-6-条/
Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件的更多相关文章
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环
条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 4. 函数
什么样的程序员才是优秀的程序员?咪博士认为“慵懒”的程序员才是真正优秀的程序员.听起来不合逻辑?真正优秀的程序员知道如何高效地工作,而不是用不止境的加班来完成工作任务.函数便是程序员高效工作的利器之一 ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 3. 循环
在前面的教程中,咪博士留了一道练习题给大家—-画正方形,相信聪明的你应该已经画出来了. 下面是咪博士实现的代码. 是不是跟你的代码很像呢? import turtle turtle.forward(2 ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量
大家在中学就已经学过变量的概念了.例如:我们令 x = 100,则可以推出 x*2 = 200 试试下面这段 Python 代码 import turtle turtle.shape("tu ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友
Python (Windows 下) 自带了一个非常有趣的 海龟绘图程序 (turtle),它是本系列课程的主角. 在 PyCharm 中,新建一个项目,然后在代码编辑器中输入 import turt ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作
一.关于 Python Python 是全球使用人数增长最快的编程语言!它易于入门.功能强大,从 Web 后端 到 数据分析.人工智能,到处都能看到 Python 的身影. Python 有两个主要的 ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 5. 参数
上一个教程中,咪博士带大家学习了函数的使用.例如,line_without_moving 函数,可以让海龟先画出一条线段,然后再回来起点. def line_without_moving(): tur ...
- Python 零基础快速入门!
“人生苦短,我学python”是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十分快速的.编程理念都 ...
- 序言 - PHP零基础快速入门
我为什么要写<PHP零基础快速入门>? 原因: PHP 真心简单,适合零基础的人快速入门掌握,身边的人学习一两周上手开发的比比皆是: 市面上的文章或书籍对初学者并不友好,多半枯燥乏味,我相 ...
随机推荐
- 如何在一台机器上部署多个tomcat
1,在/usr/local/下部署两个tomcat7. 2,修改/etc/profile文件,加入下面内容 vi /etc/profile export JAVA_HOME=/usr/java/jd ...
- Qt+Qgis二次开发:在状态条显示当前鼠标坐标
1 概述 鼠标在地图上移动,需要实时获取当前坐标位置.2 原理 从当前位置获取视口坐标后,实时转换为地图坐标.3 方法 处理鼠标位置,必须获取鼠标的当前坐标.但是Qt的鼠标事件由QgsMapCanv ...
- 分布式计算(二)使用Sqoop实现MySQL与HDFS数据迁移
近期接触了一个需求,业务背景是需要将关系型数据库的数据传输至HDFS进行计算,计算完成后再将计算结果传输回关系型数据库.听到这个背景,脑海中就蹦出了Sqoop迁移工具,可以非常完美的支持上述场景. 当 ...
- Android学习之键盘事件
java代码: package com.example.keyboardtest; import android.app.Activity; import android.os.Bundle; imp ...
- android.view.WindowManager$BadTokenException: Unable to add window
这是在加载dialog时出现的一个异常.转载地址:http://hi.baidu.com/fbdfp/item/7dea2d0ade9121813d42e23d 扔了好久的android又开始断断续续 ...
- stream classdesc serialVersionUID = -7218828885279815404, local class serialVersionUID = 1.
序列化类时出现的异常! 当某一个类实现java.io.Serializable接口时,该类默认会生成一个private static final long serialVersionUID = 1L; ...
- Luogu3164 CQOI2014 和谐矩阵 异或高斯消元
传送门 题意:给出$N,M$,试构造一个$N \times M$的非全$0$矩阵,其中所有格子都满足:它和它上下左右四个格子的权值之和为偶数.$N , M \leq 40$ 可以依据题目中的条件列出有 ...
- 计算几何总结(Part 1~2)
Preface 对于一个初三连三角函数都不会的蒟蒻来说计算几何简直就是噩梦. 反正都是要学的也TM没办法,那就慢慢一点点学起吧. 计算几何要有正确的板子,不然那种几百行CODE的题写死你. 本蒟蒻的学 ...
- 案例学python——案例二:连接数据库MySql
调侃的话:案例一跑完之后,欣赏把玩了一番.人就有点飘飘然,昨天除了做饭吃饭,就是玩三国杀,江郎才尽,今天周一,不飘了,敲点代码,看看Python操作数据库有啥不一样的. 前期准备: 1.数据库 电脑上 ...
- ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十五节--缓存小结与ABP框架项目中 Redis Cache的实现
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 缓存 为什么要用缓存 为什么要用缓存呢,说缓存之前先说使用缓存的优点. 减少寄宿服务器的往返调用(round-tr ...