本文将详细介绍Python语言中的三种选择语句:if语句,if/else语句和if/elif/else语句。对于每种语句,我们都提供了相应的流程图。与此同时,我们给出许多简单的示例程序,以帮助读者加深理解。

一、程序的控制结构

对于Python程序中的执行语句,默认时是按照书写顺序依次执行的,这时我们说这样的语句是顺序结构的。但是,仅有顺序结构还是不够的,因为有时候我们需要根据特定的情况,有选择地执行某些语句,这时我们就需要一种选择结构的语句。另外,有时候我们还可以在给定条件下往复执行某些语句,这时我们称这些语句是循环结构的。有了这三种基本的结构,我们就能够构建任意复杂的程序了。

对本文来说,我们要讨论的是三种基本程序结构中的选择结构,它们分别用if语句、if/else语句和if/elif/else语句实现。至于其它两种控制结构,我们会在后续的文章中陆续加以介绍。下面我们首先介绍if语句。

二、if语句

Python的if语句的功能跟其他语言的非常相似,都是用来判定给出的条件是否满足,然后根据判断的结果(即真或假)决定是否执行给出的操作。If语句是一种单选结构,它选择的是做与不做。它是由三部分组成:关键字if本身、测试条件真假的表达式(我们简称为条件表达式)和表达式结果为真(即表达式的值为非零)时要执行的代码。If语句的语法形式如下所示:

if 表达式 :

语句体

if语句的流程图如下所示:

图1 if语句的流程示意图

注意,if语句的语句体只有当条件表达式的值为真,即非零时,才会执行;否则的话,程序就会直接跳过这个语句体,去执行紧跟在这个语句体之后的语句。我们这里的语句体,既可以包含多条语句,也可以只有一条语句组成,但是语句体由多条语句组成时,要有统一的缩进形式,否则就会出现逻辑错误,即语法检查没错,但是结果却非预期。

现在我们用一个示例程序来演示一下if语句的用法。我们的程序很简单的,只要用户输入一个整数,如果这个数字大于6,那么就输出一行字符串;否则,直接退出程序。代码如下所示:

# -*- coding: cp936 -*-

#比较输入的整数是否大于6

integer = raw_input('请输入一个整数:') #取得一个字符串

integer = int(integer) #将字符串转换为整数

if integer > 6:

print '%d 大于6' %integer

当我们在IDEL中运行该程序时,结果如下所示:

图2 if语句示例程序运行结果

我们看到,如果输入的数字不大于6时,程序马上退出,也就是说,下列代码

print '%d 大于6' %integer

并没有执行;如果输入的数字大于6,才会执行上面的这行代码,以打印一行文字。

三、if/else语句

上面的if语句是一种单选结构,也就是说,如果条件为真(即表达式的值为非零),那么执行指定的操作;否则就会跳过该操作。所以,它选择的是做与不做的问题。而if/else语句是一种双选结构,它选择的不是做与不做的问题,而是在两种备选行动中选择哪一个的问题。if/else语句由五部分组成:关键字if、测试条件真假的表达式、表达式结果为真(即表达式的值为非零)时要执行的代码,以及关键字else和表达式结果为假(即表达式的值为零)时要执行的代码。if/else语句的语法形式如下所示:

if 表达式 :

语句体1

else :

语句体2

if/else语句的流程示意图如下所示:

图3 if/else语句的流程示意图

从if/else语句的流程示意图中可以轻易看出,当条件为真(即表达式的值为非零)时,执行语句体1;当条件为假(即表达式的值为零)时,执行语句体2——也就是说,条件无论真假,它总要在两个语句体中选择一个执行,双选结构之称谓由此而来。

下面我们对上面的示例程序进行修改,以演示if/else语句的使用方法。我们的程序很简单的,只要用户输入一个整数,如果这个数字大于6,那么就输出一行信息,指出输入的数字大于6;否则,输出另一行字符串,指出输入的数字小于等于6。代码如下所示:

# -*- coding: cp936 -*-

#比较输入的整数是否大于6

integer = raw_input('请输入一个整数:')   #取得一个字符串

integer = int(integer)    #将字符串转换为整数

if integer > 6:

print '%d 大于6'    %integer

else:

print '%d 小于或等于6'    %integer

当我们在IDEL中运行该程序时,结果如下所示:

图4 if/else语句示例程序运行结果

我们看到,当输入的数字小于3,即条件表达式为假时,执行else字句中的打印语句:

print '%d 小于或等于6' %integer

当输入的数字小于3,即条件表达式为假时,执行else字句中的打印语句:

print '%d 大于6' %integer

但是无论如何,它总得在这两个打印语句中挑一个执行,它不可能两个都跳过。

四、if/elif/else语句

有时候,我们需要在多组动作中选择一组执行,这时就会用到多选结构,对于Python语言来说就是if/elif/else语句。该语句可以利用一系列条件表达式进行检查,并在某个表达式为真的情况下执行相应的代码。需要注意的是,虽然if/elif/else语句的备选动作较多,但是有且只有一组动作被执行,该语句的语法形式如下所示:

if 表达式1 :

语句体1

elif 表达式2 :

语句体2

……

elif 表达式m :

语句体m

else :

语句体n

注意,最后一个elif子句之后的else子句没有进行条件判断,它实际上处理跟前面所有条件都不匹配的情况,所以通常将else语句所处理的条件称为默认条件,所以else字句必须放在最后。if/elif/else语句的示意图如下所示:

图5 if/elif/else语句的示意图

下面我们继续对上面的示例程序进行修改,以演示if/elif/else语句的使用方法。我们还是要用户输入一个整数,如果这个数字大于6,那么就输出一行信息,指出输入的数字大于6;如果这个数字小于6,则输出另一行字符串,指出输入的数字小于6;否则,指出输入的数字等于6。具体的代码如下所示:

# -*- coding: cp936 -*-

#比较输入的整数是否大于6

integer = raw_input('请输入一个整数:') #取得一个字符串

integer = int(integer) #将字符串转换为整数

if integer > 6:

print '%d 大于6' %integer

elif integer < 6:

print '%d 小于6' %integer

else :

print '%d 等于6' %integer

当我们在IDEL中运行该程序时,结果如下所示:

图6 if/elif/else语句示例程序运行结果

上面介绍了三种选择语句的基本用法,接下来我们将介绍这些选择结构的结合方式,以及使用选择语句时的注意事项,包括缩进和表达式方面的注意事项。

五、选择结构的结合方式

一般说来,结构化编程中的三种基本结构:顺序结构、选择结构和循环结构的结合方式有两种,一种是堆叠方式,另一种是嵌套方式。堆叠方式比较简单,它把各种结构一个一个罗列在一起就行了,比如我们可以把一个选择结构中的if语句跟顺序结构堆叠在一起,如下所示:

图7 顺序结构和选择结构的堆叠

我们看到,因为三种基本结构都是单入口和单出口(通常用一个小圆圈表示),所以堆叠时只要把一个结构的出口连接到另一个结构的入口就行了。至于嵌套组合方式,就是用一种结构替换同种结构中的语句体(我们通常用一个矩形框表示),下图表示的是把一个选择结构中的if语句嵌套到另一个if语句中:

图8 if语句的嵌套

观察上图,不难发现,上面的嵌套实际上就是把一个if结构中的语句体(矩形框)替换为另一个if结构。其他结构的嵌套与之类似,在这里不再一一列举。

现在举一个例子来说明嵌套的应用。我们要将用户输入的数字跟一个整数进行比较,并输出比较结果。这本来可以用if/elif/else语句来完成的,但是为了演示选择结构的嵌套,我们这里用if/else语句的嵌套来实现,代码如下所示:

# -*- coding: cp936 -*-

#将输入的数字跟6进行比较

integer = raw_input('请输入一个整数:') #取得一个字符串

integer = int(integer) #将字符串转换为整数

if integer > 6:

print '%d 大于6' %integer

else:

if integer < 6:

print '%d 小于6' %integer

else:

print '%d 等于6' %integer

当我们在IDEL中运行该程序时,结果如下所示:

图9 if/else嵌套语句示例程序运行结果

六、语句体的缩进问题

需要说明的是,嵌套时一定要注意缩进问题。C语言是用花括号{}来区分语句体,但是Python的语句体是用缩进形式来表示的,如果缩进不正确,会导致逻辑错误。举例来说,如果我们让用户输入一个数字,如果数字为偶数,则打印两行信息,一行说明数字除以2余数为零,另一行说明判断结果。具体代码如下所示:

# -*- coding: cp936 -*-

#判断输入的数字是否为偶数

integer = raw_input('请输入一个整数:') #取得一个字符串

integer = int(integer) #将字符串转换为整数

if 0 == integer % 2:

print '\n%d 除以2余数为零;' %integer

print ' 所以,%d 是个偶数' %integer

当我们在IDEL中运行该程序时,结果如下所示:

图10 正确缩进的结果

如果我们改变上面程序中的if语句的第二条打印语句的缩进形式,比如改为:

if 0 == integer % 2:

print '\n%d 除以2余数为零;'    %integer

print '     所以,%d 是个偶数'    %integer

我们看看运行结果如何:

图11 错误的缩进将导致逻辑错误

如图所示,这里出现了明显的逻辑错误。由于Python通过缩进来区分语句体的界限,所以当上例中的第二个打印语句不缩进后,已经在if语句的控制范围之外,所以无论if语句的条件是否为真,它都会执行。

七、选择语句中的条件表达式

现在,我们对选择语句中的条件表达式进行必要的介绍。三种选择语句中,条件表达式都是必须可少的组成部分。当条件表达式的值为零时,表示条件为假;当条件表达式的值为非零时,表示条件为真。那么哪些表达式可以作为条件表达式呢?基本上,最常用的是关系表达式和逻辑表达式,如:

if a == x and b == y :

print ‘a = x, b = y’

除此之外,条件表达式可以是任何数值类型表达式,甚至字符型也可以:

图12 用字符作为条件表达式的情形

八、小结

本文详细介绍了Python中的三种选择语句。当我们初接触这些选择结构的时候,最好多画流程图,这对于理解程序的逻辑极有帮助。另外,上机实习也是必不可少的

python选择语句是什么语句_Python语言中的三种选择语句相关推荐

  1. python urllib下载文件怎么停止_python下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

  2. python语言采用严格的缩进来体现语句的逻辑关系_Python语言通过( )来体现语句之间的逻辑关系...

    Python语言通过( )来体现语句之间的逻辑关系 答:缩进 我们要坚定不移地走中国特色社会主义道路 答:√ 即在应用文正文的结尾处点名文章主题,也被称为"卒章显志" 答:篇末点题 ...

  3. python语言对嵌套if语句的规定是_Python语言程序设计(8)——if语句的嵌套

    if语句的嵌套 1 if语句嵌套 if语句嵌套指的是if语句内部包含if语句,其格式如下: if 条件表达式1: 代码块1 if 条件表达式2: 代码块2 上述if语句嵌套的格式中,先判断外层if语句 ...

  4. MySQL三种循环语句的区别_While、Loop和Repeat三种循环语句有什么异同?

    相同点:不可单独使用,主要用于存储过程和函数FUNCTION中.区别:WHILE先判断,后执行:满足条件才执行.REPEAT和LOOP先执行,后判断:满足条件就结束循环.当条件为false时,REPE ...

  5. C语言循环语句的研究意义,C语言中循环语句的应用研究

    摘 要:C语言是面向过程结构化的设计语言,在其设计.使用中会大量的使用循环语句.循环语句的设计一直是计算机语言开发的一项重要应用.在高级语言使用中,循环语句的使用好坏会直接影响开发项目的质量.C语言中 ...

  6. c语言中结束本次循环的语句是什么

    c语言中结束本次循环的语句是"continue".控制语句continue只能作用于循环体中,其作用是结束本次循环,跳到判断循环的位置,即重新开始下一次循环. 在C语言中,控制语句 ...

  7. c语言三种循环语句,C语言三种循环语句的功能等价性

    C语言程序中的.bile,dowhile,for三种循环语句在实现不同形式的循环功能上各具特色及优点,从而使C语言程序的循环功能准确简洁地实现了实际问题中不同形式及过程的循环要求,本文从一般逻辑关系上 ...

  8. r语言中对向量求条件语句_R中的条件语句

    r语言中对向量求条件语句 To advance with programming, we need to be able to control the flow of the program exec ...

  9. c语言中什么语句的作用是结束本次循环,c语言中结束本次循环的语句是什么

    c语言中结束本次循环的语句是"continue".控制语句continue只能作用于循环体中,其作用是结束本次循环,跳到判断循环的位置,即重新开始下一次循环. 本教程操作环境:wi ...

最新文章

  1. SpringBoot笔记1-使用idea创建SpringBoot的hello world
  2. 路由设计技术基础(Fundamentals of routing design technology)
  3. 如何从多个项目创建 ASP.NET 应用程序以进行组开发
  4. java程序员_Java程序员工资为什么这么高?
  5. 协同工作php,PHPOA:灵活、高效、协同,让企业高效运转
  6. 动态css语言less,less让css具有动态语言的特性
  7. 第章量子计算机产业,第章量子计算机.ppt
  8. Python爬虫之环境安装
  9. Python操作Redis:键(Key)
  10. python函数的参数-可变参数,关键字参数
  11. 事实证明:市场没有换来任何技术
  12. 卸载symantec 找不到vpshellres.dll 解决方案
  13. 新手练字又快又好的方法
  14. 整体改革理论(简介)
  15. 高数 | 【定积分、变限积分】【一元函数积分学李林880】 及 巧解例题
  16. 虚幻引擎4(UE4)的基本操作Actor的操作
  17. 四位共阳极数码管显示函数_单片机利用四位共阳极得数码管显示2016
  18. 截图工具当前未在计算机上运行 请重启_一个顶十个的工具箱软件,这才是真正的装机必备。...
  19. 面试大厂被MyBatis问到“哑口无言”?这份MyBatis源码笔记助你吊打面试官!
  20. 用于播放硬盘中avi视频的简单程序(opencv)

热门文章

  1. “减少风险”还是“管理风险”哪一根才是救命稻草?
  2. vs添加系统环境变量不识别_项目经验不重样!3个基于SpringBoot 的图片识别处理系统送给你...
  3. express不是内部命令解决办法
  4. 玩游戏用什么轴的机械键盘好_机械键盘选什么轴?全方面分析各轴手感和区别...
  5. 错误代码:ERR_UNSAFE_PORT
  6. ipad的文件连接服务器,使用Termius从iPad连接到Linux服务器
  7. 我运维生涯的第一个Blog
  8. SQL Server 查询性能优化——覆盖索引(一)
  9. swagger : Could not resolve reference because of: Could not resolve pointer
  10. Win2008使用WEB方式更改工作组计算机用户帐户密码