一、前言
流程控制对于任何一门编程语言来说都是非常重要的,因为它提供了控制程序如何执行的方法。如果没有流程控制的话,整个程序都将按照从上至下的顺序来执行,而不能根据客户的需求决定程序执行的顺序。本文将对Python中的流程控制语句进行介绍。
二、程序结构
计算机在解决某个具体问题时,主要有3种情况,分别是顺序执行所有语句、选择执行部分语句和循环执行部分语句。对应程序设计中的3种基本结构是顺序结构、选择结构和循环结构。这3种结构的执行流程如图所示:
其中,第一幅图是顺序结构流程图,编写完毕的语句按照编写顺序一次被执行;第二幅图是选择结构的流程图,它主要根据条件语句的结果选择执行不同的语句;第三幅图是循环结构的流程图,它是在一定条件下反复执行某段程序结构,其中,被反复执行的语句称为循环体,决定循环是否终止的判断条件称为循环条件。
三、常用选择语句
在生活中,我们总是要做出许多选择,程序也是一样的。下面给出几个常见的例子:
- 飞机大战中如果打中飞机,飞机就爆炸
- 如果购买的彩票号码等于公布的彩票大奖号码,就中了彩票大奖
- 驾驶员理论考试科目中,成绩达到90分的为合格
以上例子中的判断,就是程序中的选择语句,也称为条件语句,即按照条件选择不同的代码片段。Python中选择语句主要有3种形式,分别是if语句、if…else语句和if…elif…eles多分支语句。
1.最简单的if语句
Python中使用if保留字来组成选择语句,其最简单的语法形式如下:
if 表达式:
语句块
其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如a>b and a != c),如果表达式为真,则执行“语句块”;如果表达式为假,就跳过“语句块”,继续执行后面的语句,这种形式的if语句相当于汉语里的关联词语“如果……就……”,其流程图如下所示:
在条件语句的表达式中,经常需要操作运算符,下表为常用的比较运算符:
操作符 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于 |
!= | 不等于 |
【1】如果你购买了一张彩票,现在中奖号码公布出来了,是号码“432678”,那么用if语句可以判断是否中奖。
number = int(input("请输入您的6位奖票号码:")) # 输入奖票号码
if number == 432678: # 判断是否符合条件,即输入将票号码是否等于432678
print(number, "你中了本期大奖,速来领奖!") # 输出中奖信息
if number != 432678: # 判断是否符合条件,即输入将票号码是否不等于432678
print(number, "你未中本期大奖") # 输出没有中奖的信息
【2】在实际商品销售中,经常需要对商品价格、销量进行分类,如商品日销量大于等于100,可以用A来表示。用if语句现实方法如下:
data = 105
if data >= 100:
print(data, "此商品是A类商品")
如果商品日销售量小于100,可以用B来表示。用if语句实现方法如下:
data = 105
if data < 100:
print(data, "此商品是B类商品")
2. if…else语句
如果遇到只能二选一的条件,例如,某大学毕业到知名企业实习期满后留用,现在需要选择Python开发方向,如图所示:
Python中提供了 if…else语句解决类似的问题,其语法格式如下:
if 表达式:
语句块1
else:
语句块2
其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式,如果满足条件,则执行if后面的语句块1,否则,执行else后面的语句块,这种形式的选择语句相当于汉语里的关联词语“如果……否则……”,其流程图如图所示:
【1】如果你购买了一张彩票,现在中奖号码公布出来了,是号码“432678”,根据if…else语句判断是否中奖。
number = int(input("请输入您的6位奖票号码:")) # 输入奖票号码
if number == 432678: # 判断是否符合条件,即输入将票号码是否等于432678
print(number, "你中了本期大奖,速来领奖!") # 输出中奖信息
else:
print(number, "你未中本期大奖") # 输出没有中奖的信息
【2】商品日销售量大于等于100的商品,用A来表示,否则用B来表示。if…else语句实现如下:
data = 105
if data >= 100:
print(data, "此商品是A类商品")
else:
print(data, "此商品是B类商品")
3. if…elif…else语句
if…elif…else语句,该语句是一个多分支的选择语句,通常表现为“如果满足某种条件,则进行某种处理,否则,如果满足另外一种条件,则执行另外一种处理……”,if…elif…else语句语法格式如下:
if 表达语句1:
语句块1
elif 表达语句2:
语句块2
elif 表达语句3:
语句块3
…
else :
语句块n
使用if…elif…else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式,如果表达式为真,执行语句;而如果表达式为假,则跳过该语句,进行下一elif判断,只有在所有表达式都为假的情况,才会执行else中的语句。if…elif…else语句流程图如下:
下面用代码实现将某公司图书在京东商城的7天销售数据进行分类,根据输入商品7天的销售数量,输出该商品band属于A、B、C、D那一个级别。代码如下:
number = int(input("请输入商品7天销售:")) # 输入某个商品7天销售
if number >= 1000:
print("本商品7天销量为A!!")
elif number >= 500:
print("本商品7天销量为B!!")
if number >= 300:
print("本商品7天销量为C!!")
else:
print("本商品7天销量为D!!")
如果输入商品的销量大于或等于1000,则输出:“本商品7天销量为A”,如果低于300,则输出“本商品7天销量为D”
4. if语句的嵌套
前面介绍了3种形式的if选择语句,这3中形式的选择语句之间都可以进行互相嵌套。
在最简单的if语句中嵌套if…else语句,形式如下:
if 表达式1:
if 表达式1:
语句块1
else:
语句块2
在if…else语句,形式如下:
if 表达式1:
if 表达式1:
语句块1
else:
语句块2
else:
if 表达式3:
语句块3
else:
语句块4
打印九九乘法表,代码如下:
i = 1
while i <= 9:
j = 1
while j <= i:
# print("{}*{}={}".format(j,i,i*j),end = ' ')
print("%d*%d=%-2d" % (j, i, i * j), end=' ') # '-2'代表靠左对齐,两个占位符
j += 1
print()
i += 1
执行结果如下:
四、使用and连接条件的选择语句
满足两个或两个以上条件才能执行if后面的语句块,如图所示:
and是Python的逻辑运算符,可以使用and在条件中进行多个条件内容的判断,例如,年龄在18周岁以上70周岁以下可以驾驶小型汽车,可以分解为两个条件:
- 年龄大于18周岁,即“age >= 18”
- 年龄70周岁以下,即“age <= 18”
使用and来实现这两个条件的判断,代码如下:
age = int(input("输入年龄"))
if age >= 18 and age <= 70:
print("可以驾驶小型汽车")
五、使用or连接条件的选择语句
满足两个或两个以上条件之一,才能执行if后面的语句块,如图所示:
or是Python的逻辑运算符,可以使用and在条件中进行多个条件内容的判断,例如,一件商品,日销量大于100件,或小于10件,为重点关注商品,代码如下:
sales = int(input("输入商品日销售量"))
if sales < 10 or sales > 100:
print("重点关注商品")
六、使用not连接条件的选择语句
not为逻辑运算符,用于布尔类型True和False。not与逻辑判断语句if连用,代表not后面表达式为False的时候,执行冒号后面的语句,例如下面代码:
data = None
if not data:
print("You lost")
else:
print("You win")
执行结果如下: