八章、流程控制——条件语句
Now is better than never.——The Zen of Python
流程控制对任何一门编程语言来说都是非常重要的,因为其提供了控制程序如何执行的方法。
一、程序结构
计算机在解决某个具体问题时,主要有三种情形,分别是顺序执行所有的语句,选择执行这部分语句,以及循环执行这三种语句。这对应程序设计中的三种基本结构:顺序结构,选择结构,循环结构。这三种结构的执行流程如图所示:
其中第一张图,是顺序结构的流程图,编写完毕的语句按照编写的顺序依次执行;第二幅图是选择结构的流程图,它主要根据条件语句的结果选择执行不同的语句;第三幅图是循环结构的流程图,它是在一定条件下反复执行某段程序的流程结构,其中被反复执行的语句称为循环体,决定循环是否终止的判断条件称为循环条件。
二、选择语句
程序中的选择语句,也称为条件语句,即按照条件选择执行不同的代码片段。在Python中选择语句主要有三种形式,分别是If语句、if...esle语句和if...elif...else多分枝语句,在其他语言中,选择语句还包括switch语句,也可以实现多重选择。但是,在Python中,却没有switch语句,所以实现多重选择功能时,只能使用if...elif..else多分枝语句或者if语句的嵌套。
1.最简单的If语句
在Python中使用if保留字来组成选择语句,其最简单的语法格式如下:
if 表达式: 语句块
其中,表达式可以是一个单纯的布尔值或者变量,也可以是比较表达式或者逻辑表达式,如果表达式为真,则执行“语句块”,如果表达式为假,就跳过“语句块”,继续执行后面的语句,这种形式的If语句就相当于汉语中的关联词语“如果...就...”.在使用If语句时,如果只有一条语句,语句块可以直接写到“:”的右侧,但是,一般为了程序的可读性,不建议这样做。
1 a,b=284,220 2 if a>b: 3 print(a) 4 输出: 5 284
2. If···else语句
Python中提供了if···else语句,用来解决二选一这种问题,其语法格式如下:
if 表达式: 语句块1 else: 语句块2
使用if···else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或者逻辑表达式,如果满足条件,则执行if后面的语句块,否则,执行else后面的语句块,这种形式的选择语句相当于汉语里的关联词“如果···否则···”
1 ID=int(input("请输入你的ID号码:")) 2 if ID ==220284: 3 print(ID,"你的ID是正确的,可以进入") 4 else: 5 print(ID,'你的ID输入有问题') 6 输出: 7 请输入你的ID号码:220284 8 220284 你的ID是正确的,可以进入
在使用if···else语句时可以使用条件 表达式进行简化:
1 a=-9 2 if a>0: 3 b=a 4 else: 5 b=-a 6 print(b) 7 输出: 8 9
可以将其简写成:
a=-9 b = a if a>0 else -a print(b) 输出: 9
使用条件表达式的好处是可以使代码简洁,并且有一个返回值.
3.if···elif···else语句
该语句时一个多分枝选择语句,通常表现为“如果满足某种条件,进行某种处理,否则,如果满足另一种条件,则执行另一种处理·······”其语法格式如下:
if 表达式1: 语句块1 elif 表达式2 语句块2 ······· else: 语句块n
在使用if···elif···else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式,如果表达式为真,执行语句;而如果表达式为假,则跳过该语句,进行下一个elif判断,只有在所有表达式都为假的情况下,才会执行else中的语句,执行流程及示例代码如下:
1 num = int(input("请输入这个月的销量:")) 2 if num >=1000: 3 print("本产品的销量为A!!") 4 elif num >+500: 5 print("本产品的销量为B!!") 6 else: 7 print("本产品销量为C") 8 输出: 9 请输入这个月的销量:562 10 本产品的销量为B!!
if和elif都需要判断表达式的真假,而else则不需要判断;另外,elif和else都必须跟if一起使用.不能单独使用。
4.if语句的嵌套
前面介绍了三种形式的if语句,这三种形式的选择语句之间都可以进行相互嵌套。在最简单的if语句中嵌套if···else语句,形式如下:
if 表达式1: if 表达式2: 语句块1 else: 语句块2
在if···else语句中嵌套if···else语句,形式如下:
if 表达式1: if 表达式2: 语句块1 else: 语句块2 else: if 表达式3 语句块3 else: 语句块4
if选择语句可以有多种嵌套方式,开发程序时可以根据自身需要选择合适的嵌套方式,但是一定要严格控制好不同级别代码块的缩进量。
5.使用and连接条件语句
在实际工作中,经常会遇到需要同时满足两个或两个以上的条件才能执行if后面的语句块,如图所示:
and是Python的逻辑运算符,可以使用and在条件中进行多个条件内容的判断。只有同时满足多个条件,才能执行if后面的语句块。示例如下:
1 """ 2 年龄在18周岁以上70周岁以下,可以申请小型汽车驾驶证 3 """ 4 age = int(input("请输入你的年龄:")) 5 if age>18 and age<70: 6 print("您可以申请小型汽车驾驶证") 7 输出: 8 请输入你的年龄:23 9 您可以申请小型汽车驾驶证
此外,也可以不使用and语句,只用if语句嵌套,也可以实现上面效果。当输入不符合条件的数时,程序没有任何反应。
6.使用or连接条件语句
有时,会遇到只需要两个或者两个以上条件之一,就能执行if后面的语句块,这时可以使用or连接条件语句。or是Python的逻辑运算符,可以使用or在条件中进行多个条件内容的判读,只要满足一个条件,就可以执行if后面的语句块。示例如下:
1 sales= int(input("请输入商品的日销量:")) 2 if sales<10 or sales>100: 3 print("该商品为重点关注商品") 4 输出: 5 请输入商品的日销量:220 6 该商品为重点关注商品
不使用or语句,只用两个简单的if语句,也可以实现上面的效果。
7.使用not语句
在实际开发中,可能面临如下情况:在密码输入中,输入非数字键均认为非法输入。所以在开发中可以使用not语句来进行上面程序的判断。not为逻辑判断词,用于布尔型True和False。not与逻辑判断句if连用,代表not后面表达式为false的时候,执行冒号后面的语句。示例如下:
1 data = None #代码为给data赋值,所以data为空值 2 if not data: 3 print("你输了") 4 else: 5 print("你赢了") 6 输出: 7 你输了
在Python中False、None、空字符串、空列表、空字典、空元组都相当于False.
"if x not None"是最好的写法,不仅清晰,而且不会出错。如果使用“if not x”这种写法的前提:必须清楚x等于False、None、空字符串、空列表、空字典、空元组时,对判断没有影响才行。
在Python中,要判断特定的值是否存在于列表中,可以使用关键字in,判断特定的值不存在在列表中,可以使用not in.示例如下:密码输入中,输入的非数字键均认为非法输入。
1 a = input("请输入1位数字密码:") 2 b=['0','1','2','3','4','5','6','7','8','9'] 3 if a not in b: 4 print("非法输入") 5 输出: 6 非法输入