Python数据分析基础
- 六、流程控制
- 6.1 程序结构
- 6.2 选择语句
- 6.2.1 最简单的if语句
- 6.2.2 if...else语句
- 6.2.3 if...elif...else语句
- 6.2.4 if语句的嵌套
- 6.3 使用and连接条件语句
- 6.4 使用or连接条件语句
- 6.5 使用not语句
- 结语
六、流程控制
6.1 程序结构
计算机在解决某个具体问题时,主要有三种情形,分别是顺序执行所有语句、选择执行部分语句和循环执行部分语句。对应程序设计中的三种基本结构是顺序结构、选择结构和循环结构。这三种结构的执行流程图如下图所示:
其中第一幅图是顺序结构的流程图,编写完毕的语句按照编写顺序依次被执行;第二幅图是选择结构的流程图
,它主要根据条件语句的结果选择执行不同的语句;第三幅图是循环结构的流程图,它是在一定条件下反复
执行某段程序的流程结构,其中,被反复执行的语句称为循环体,决定循环是否终止的判断条件称为循环条件。
6.2 选择语句
在生活中,我们总是要做出许多选择,程序也是一样。
比如你英语考试分数大于60分才及格,你买的彩票号码等于公布的彩票大奖号码你就算中奖了。类似这种判断,就是程序中的选择语句,也称为条件语句,即按照条件选择执行不同的代码片段。Python中的选择语句主要有三种形式,分别为if语句、if…else语句和if…elif…else多分支语句。
说明:在其他语言中(如c、c++、java等),选择语句还包括switch语句,也可以实现多重选择。但是,在python中,却没有switch语句,所以实现多重选择的功能时,只能使用if…else语句和if…elif…else多分支语句或者if语句嵌套。
6.2.1 最简单的if语句
Python中使用if保留字来组成选择语句,其最简单的语法形式如下:
if 表达式:
语句块
其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如,a>b and a != c),
如果表达式为真,则执行“语句块”;如果表达式为假,就跳过“语句块”,继续执行后面的语句,这种形式的if
语句相当与汉语中的“如果…就…”,其流程图如下:
在条件语句的表达式中,经常需要的操作运算符,如下表:
(1)如果你购买了一张彩票,现在中奖号码公布了,号码为“432678”,那么用if语句可以判断是否中将。
number = int(input("请输入您的6位奖票号码:"))
if number == 432678:
print(number, "您中奖了,请速来领奖!")
if number != 432678:
print(number, "您未中本期大奖!")
- 1
- 2
- 3
- 4
- 5
请输入您的6位奖票号码:112345
112345 您未中本期大奖!
- 1
- 2
(2)在实际商品销售中,经常需要对商品价格、销量进行分类,如商品销量大于或等于100的商品,可以用A来表示。用if语句实现方法如下:
data = 105
if data >= 100:
print(data, "此商品为A类商品!")
- 1
- 2
- 3
105 此商品为A类商品!
- 1
如果商品日销量小于100,可以用B来表示。用if语句实现方法如下:
data = 65
if data < 100:
print(data, "此商品为B类商品!")
- 1
- 2
- 3
65 此商品为B类商品!
- 1
说明:使用if语句时,如果只有一条语句,语句块可以直接写到“:”的右侧,如下:
if a>b: max=a
但是为了程序代码的可读性,建议不要这么写。
6.2.2 if…else语句
Python中提供了if…else语句解决类似问题,其语法格式如下:
if 表达式:
语句块1
else:
语句块2
使用if…else语句时,表达式可以是一个单纯的布尔值或者变量,也可以是比较表达式或逻辑表达式,如果满足条件,则执行if后面的语句块,否则,执行else后面的语句块,这种形式的选择语句相当于汉语里的关联词语
“如果…否则…”,其流程图如下图所示:
下面继续那个彩票的例子:
number = int(input("请输入您的6位奖票号码:"))
if number == 432678:
print(number, "您中奖了,请速来领奖!")
else:
print(number, "您未中本期大奖!")
- 1
- 2
- 3
- 4
- 5
请输入您的6位奖票号码:432678
432678 您中奖了,请速来领奖!
- 1
- 2
商品销量的例子如下:
data = 105
if data >= 100:
print(data, "此商品为A类商品!")
else:
print(data, "此商品为B类商品!")
- 1
- 2
- 3
- 4
- 5
105 此商品为A类商品!
- 1
技巧:if…else语句可以使用条件表达式进行简化,如下面代码:
a = -9
if a>0:
b = a
else:
b = -a
print(b)
上面代码可以简写成:
a = -9
b = a if a>0 else -a
print(b)
使用条件表达式的好处是可以使代码简洁,并且有一个返回值。
6.2.3 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语句的流程图如下:
插入图6-6
下面看一个代码实例:
number = int(input("请输入商品7天的销量:"))
if number >= 1000:
print("本商品7天销量为A!!")
elif number >= 500:
print("本商品7天销量为B!!")
elif number >= 300:
print("本商品7天销量为C!!")
else:
print("本商品7天销量为D!!")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
请输入商品7天的销量:200
本商品7天销量为D!!
- 1
- 2
注意:if和elif都需要判断表达式的真假,而else则不需要判断;另外,elif和else都必须和if一起使用,不能单独使用
6.2.4 if语句的嵌套
前面介绍了3种形式的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:
语句块1
下面看一个代码实例:
number = int(input("请输入商品7天销量:"))
if number >= 1000:
print("本商品7天销量为A!!")
else:
if number >= 500:
print("本商品7天销量为B!!")
else:
if number >= 300:
print("本商品7天销量为C!!")
else:
print("本商品7天销量为D!!")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
请输入商品7天销量:555
本商品7天销量为B!!
- 1
- 2
说明:if选择语句可以有多种嵌套方式,开发程序时可以根据自身需要选择合适的嵌套方式,但一定要严格控制好不同级别代码块的缩进量。
6.3 使用and连接条件语句
在实际工作中,经常会遇到需要同时满足两个或两个以上条件才能执行if后面的语句块,如下图:
下面代码实例如下:
age = int(input("请输入您的年龄:"))
if age >= 18 and age <= 70:
print("您可以申请小型汽车驾驶证!")
- 1
- 2
- 3
请输入您的年龄:20
您可以申请小型汽车驾驶证!
- 1
- 2
# 其实,不用and语句,只用if语句嵌套也能实现上面的效果
age = int(input("请输入您的年龄:"))
if age >= 18:
if age <= 70:
print("您可以申请小型汽车驾驶证!")
- 1
- 2
- 3
- 4
- 5
请输入您的年龄:22
您可以申请小型汽车驾驶证!
- 1
- 2
再看一个实例代码:
print("今有物不知其数,三三数之剩二, 五五数之剩三,七七数之剩二,问几何?")
number = int(input("请输入您认为符合条件的数:"))
if number%3 == 2 and number%5 == 3 and number%7 == 2:
print(number, "符合条件:三三数之剩二, 五五数之剩三,七七数之剩二")
- 1
- 2
- 3
- 4
今有物不知其数,三三数之剩二, 五五数之剩三,七七数之剩二,问几何?
请输入您认为符合条件的数:23
23 符合条件:三三数之剩二, 五五数之剩三,七七数之剩二
- 1
- 2
- 3
说明:上述代码还不完善,各位可以动手完善一下试试!
6.4 使用or连接条件语句
有时,会遇到只要需要两个或两个以上条件之一,就能执行if后面的语句块,如下图:
or是Python的逻辑运算符,可以使用or在条件中进行多个条件内容的判断。只要满足一个条件,就可以执行if后面的语句块。如将日销量低于10的商品,高于100的商品,列为重点关注商品。使用or来实现两个条件的判断,输入日销量<10 或者输入日销量>100,使用print输出“该商品为重点关注商品”,代码如下:
sales = int(input("请输入商品日销量"))
if sales < 10 or sales > 0:
print("该商品为重点关注商品")
- 1
- 2
- 3
请输入商品日销量1
该商品为重点关注商品
- 1
- 2
# 不用or语句,只用两个简单的if语句,也可以实现上面的效果,代码如下
sales = int(input("请输入商品日销量"))
if sales < 10:
print("该商品为重点关注商品")
- 1
- 2
- 3
- 4
请输入商品日销量1
该商品为重点关注商品
- 1
- 2
6.5 使用not语句
开发中使用not语句来进行程序的判断。not为逻辑判断词,用于布尔型True和False。not与逻辑判断句if连用,代表not后面的表达式为False的时候,执行冒号后面的语句。实例代码如下:
data = None
if not data:
print("You lost!")
else:
print("You win!")
- 1
- 2
- 3
- 4
- 5
You lost!
- 1
本程序的输出结果为“You lost!”。注意:not后面的表达式为False的时候,执行冒号后面的语句,所以not后面的表达式的值尤为关键。
如果代码改为如下:
data = “a”
则输出结果为“You win!”说明:在python中False、None、空字符串、空列表、空字典、空元组都相当于False。
“if x is not None”是最好的写法,不仅清晰,而且不会出现错误,请尽量使用这种写法。使用“if not x”这种写法的前提是:必须清楚x等于None、False、空字符串、0、空列表、空字典、空元组时,对判断没有影响才行。
在python中,要判断特定的值是否存在列表中,可使用关键字in:判断特定的值不在列表中,可使用关键字not in。实例代码如下:
a = input("请输入1位数字密码")
b = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
if a not in b:
print("非法输入")
- 1
- 2
- 3
- 4
请输入1位数字密码00
非法输入
- 1
- 2
结语
今天续更一章前面的python基础内容!就继续数据分析pandas库的学习了!