7段代码带你玩转Python条件语句( 二 )


if-elif-else语句相对于if-else语句优势明显,可以实现更为复杂的功能 。使用if-elif-else语句实现年龄段的判断,如代码清单③所示 。

  • 代码清单③ 使用if-elif-else语句实现年龄段的判断
In[4]: age = input('请输入您的年龄:') age = int(age) if age < 18: print('未成年人!') elif age >= 18 and age <= 25: print('青年人!') elif age > 25 and age <= 60: print('中年人!') else: print('老年人!') Out[4]: 请输入您的年龄: 20 青年人! 代码清单③通过比较运算符实现了年龄段划分,并能区分年龄段界限,避免逻辑出错 。input函数将接收的任何数据类型都默认为str,如果不在该代码中插入转换接收数据类型的语句,程序将无法执行 。这是因为,接收的年龄数据会被用于和后续的年龄数值比较,而number与str是无法比较的 。
需要说明,if语句还有一种形式是if-if-else,这一形式中的if可以有多个,从而实现多分支 。与if-elif-else语句相比,差异不仅仅存在于形式上,性能上也同样有区别,使用多个if的效率更低,它实际上是多重if语句 。
if语句支持嵌套,即在一个if语句中嵌入另一个if语句,从而构成不同层次的选择结构 。嵌套的意义在于实现多层选择结构 。使用嵌套对条件语句的功能有升华作用,这与elif是相似的,elif将有限的条件分支扩展,嵌套则提供了建立多层选择结构的工具,两者分别在不同的维度上提升了if语句的功能性 。使用嵌套需要以不同的缩进长度划分代码结构的层次,因此嵌套时要特别注意缩进的规范性 。
嵌套选择结构具有很广的应用场景,以下给出一个例子 。假设系统中存储了5个用户的身份信息,分别是:来自英国的Tom,35岁;来自法国的Frank,35岁;来自德国的Bob,35岁;来自澳大利亚的Washington,51岁;来自南非的Jane,21岁 。
设计一个程序,询问用户的部分信息,在对方不说出自己名字的情况下识别其身份,如代码清单④所示 。
  • 代码清单④ 嵌套if-elif-else语句
In[5]: age = input('请输入你的年龄:') age = int(age) if age == 35: nation = input('请输入你的国籍:') if nation == '英国': print('你是Tom! ') elif (nation == '法国'): print('你是Frank! ') else: print('你是Bob! ') elif age == 21: print('你是Jane,来自南非! ') elif age == 51: print('你是Washington,来自澳大利亚! ') else: print('请输入正确年龄值! ') Out[5]: 请输入你的年龄:35 请输入你的国籍:法国 你是Frank! 从代码清单④可以看到,该程序具有两层选择结构 。第1层用于询问年龄,程序通过接收的年龄,可以判断输入者是Jane、Washington或其他3个同龄人中的一个;若收到的值不在这5人年龄范围中,则提示输入出错;若收到的值是3个同龄人的岁数,则进入下一层选择结构,即询问国籍;通过询问国籍,程序可以准确报出输入者的信息 。
使用if语句时,需要注意以下几点 。
  1. 条件判断语句应尽量简单,若语句复杂则应当将运算先放到一个变量中 。
  2. Python的条件语句中允许常用的数值比较运算(==,!=,>,>=,<,<=) 。
  3. Python允许无限次if语句嵌套,但实际编程中如果必须用到3级到4级嵌套,建议考虑用其他方法编写代码,嵌套超过两层会使程序的运行效率大打折扣 。

7段代码带你玩转Python条件语句

文章插图
 
02 try、except与else如果运行途中发生错误事件,程序的执行将中断,并创建异常对象 。异常是程序在正常流程控制以外采取的动作,当它被引发时,计算机将自动寻找异常处理程序,以帮助程序恢复正常运行 。
要保证程序的正常运行,就需要排除错误,错误要么是语法上的,要么是逻辑上的 。语法错误的出现表明程序在结构上出现了问题,可以在程序执行前加以纠正 。逻辑错误可能是缺少输入或输入不正确,某些情况下,也可能是根据输入无法生成预期的结果 。逻辑错误难以预防,必须使用异常处理程序来应对 。
计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行 。Python中定义的异常类型大致分为数值计算错误、操作系统错误、无效数据查询、Unicode相关的错误和警告等几类,如下所示 。
Python异常类: