一、Python 控制流程
什么是控制流程:
在Python中,控制流程指的是根据不同的条件或规则来控制程序的执行顺序和逻辑。Python提供了多种控制流程的语句和结构,可以根据条件进行分支判断和循环迭代。
1.1 条件语句(if-elif-else):
根据条件的结果来选择不同的执行路径。
python
if condition1:
# 当条件1为真时执行的代码
elif condition2:
# 当条件2为真时执行的代码
else:
# 当以上条件都不满足时执行的代码
1.2 循环语句:
for循环:迭代一个序列、集合或迭代器中的元素。
python
for element in sequence:
# 针对每个元素执行的代码
**while循环:**根据条件的真假重复执行代码块,直到条件不再满足。
python
while condition:
# 在条件为真时重复执行的代码
在循环中,还可以使用 break
关键字来提前结束循环,以及 continue
关键字来跳过当前循环。这些关键字可以提供更灵活的控制。
1.3 异常处理:
使用 try-except
块来捕获和处理异常情况。
python
try:
# 可能产生异常的代码块
except ErrorType1:
# 当捕获到 ErrorType1 类型的异常时执行的代码
except ErrorType2:
# 当捕获到 ErrorType2 类型的异常时执行的代码
else:
# 当没有发生异常时执行的代码
finally:
# 无论是否发生异常都会执行的代码
异常处理允许你通过捕获和处理异常来增加程序的容错性和稳定性。
控制流程结构使得我们可以根据不同的条件和需求来编写程序的逻辑,实现灵活的程序流程和决策控制。掌握这些控制流程结构可以使你的Python代码更具效率和可读性。
二、Python 运算符
在学习控制语句之前我们先学习一下,Python数据类型中的布尔类型。
2.1 True和False:
Python中的常见数据类型像整形、浮点型、字符串型之前我们都见过了,除了这些类型之外还有一些,本节课我们来看布尔类型
布尔类型只有两种结果:
True
False
**Ture:**表示 '真' ,通俗的说表示 '成立'
**False:**表示 '假',通俗的说表示 '不成立'
代码示例:
python
have_money = True # 定义一个变量存储布尔类型数据True
have_friends = False # 定义了一个变量存储布尔类型数据False
作用:
因为布尔类型的数据只有2种结果,所以这种数据类型往往用在"判断"的场景。
简单示例如下:
Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
python
have_money = True
if have_money:
print("你有钱啊,是否有才华就不一定哦...")
else:
print("是否有才华不一定,但一定没有钱,^_^...")
运行效果:
python
你有钱啊,是否有才华就不一定哦...
Process finished with exit code 0
我们使用条件判断语句,既然是判断,肯定是要有个媒介,这个时候就有了运算符,下面介绍两个常用的比较运算符和逻辑运算符。
2.2 比较运算符:
如果定义一个变量直接赋值为True或者False这种场景有,但有时我们需要让程序自己计算某个表达式,这个式子的结果是True或者False这样,在配合上if或者while等应用就会显得更加灵活。
比较运算符分类:
比较运算符的结果
比较运算符的结果一定是True或者False
例如:
python
100 > 50 # 结果就是True
100 < 50 # 结果就是False
示例代码:
用Python交互模式的示例代码如下:
python
>>> ## 比较运算符
...
>>> # == 等于:表示左右两个操作数是否相等,如果相等则整个表达式的值为 True;不相等则为False
... num1 = 15
>>> num2 = 20
>>>
>>> print(num1 == num2)
False
>>>
>>> # != 不等于
... print(num1 != num2)
True
>>>
>>> # > 大于
... print(num1 > num2)
False
>>>
>>> # < 小于
... print(num1 < num2)
True
>>>
>>> # >= 大于等于: num1 大于 或者 等于 num2 ,条件都成立
... print(num1 >= num2)
False
>>>
>>> # <= 小于等于:num1 小于 或者 等于 num2 ,条件都成立
... print(num1 <= num2)
True
>>>
>>> if num1 >= num2:
... print("条件成立!")
...
>>>
2.3 逻辑运算符:
通过比较运算符我们知道,当比较数据大小、是否相等时,可以直接用>、<、==、!=、>=、<=来操作。
但是,有很多时候不仅仅是简单的对比大小还有:并且、或者、不。
举个例子:
-
成年并且女性
-
本科生或者研究生
-
不是18周岁以下学生
为了能够实现并且、或者、不,Python提供了逻辑运算符
-
and实现并且的功能
-
or实现或者的功能
-
not实现不的功能
并且`、`或者`、`不`是为了大家好理解,我给它们起的名字,但是专业术语中把它们称之为:`与`、`或`、`非
逻辑运算符的简单使用
and
实现与的功能,通俗的说就是并且
一般的用法:两边都为True,结果才为True
例如:
python
100 > 50 and 90 < 200 # 100 > 50 结果为True
90 < 200 结果为True,就相当于 True and True 所以最后结果是True
or
实现或的功能,通俗的说就是或者一般的用法:两边只要有一个True,结果就为True例如:
python
100 > 50 or 90 > 200 # 100 > 50 结果为True
90 > 200 结果为False,就相当于 True or False 所以最后结果是True
not
实现非的功能,通俗的说就是不一般的用法:之前结果为True,那么not True就是False,如果之前是False,那么not False就是True例如:
python
not (100 > 50) # 结果为False,本来100>50的结果是True,但前面加了not就相当于反义,所以最后结果为False
not (100 < 50) # 结果为True, 本来100<50的结果是False, 但前面加了not其反义的作用,所以最后结果是True
除了比较和逻辑运算符,Python还有算术运算符、赋值运算符、位运算符、成员运算符、身份运算符和运算符优先级。
三、Python 条件控制
Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
这就是分支语句的流程图。
3.1 if 判断语句:
基本使用:
if是用来进行判断的,其使用格式如下:
python
if 要判断的条件:
条件成立时,要做的事情
示例代码如下:
python
age = 30
print('----if判断开始----')
if age >= 18:
print('已经成年了') # 当前代码处有缩进 缩进为4个空格 一个Tab键
print('----if判断结束----')
注意:
-
if判断总体来说:当条件满足后就要做某些事情,这些事情以及if它们是一个整体
-
如果if条件成立后,要做的事情有很多,那么都需要在行首缩进4个空格(只需要敲一个tag键,Pycharm就会自动换行为4个空格)
示例代码如下:
python
age = 30
print('----if判断开始----')
if age >= 18:
# 如果当前条件不成立则以下三句print都不会打印
print('我已经成年了')
print('我该懂事了')
print('尽快学完python开发出去赚钱了')
print('----if判断结束----') # 此处代码没有缩进 表示当前打印语句不在if语句控制范围之内,无论if条件是否成立都会执行
3.2 else 判断语句:
else 与 if 配合使用,格式如下:
python
if 条件:
满足条件时要做的事情1
满足条件时要做的事情2
满足条件时要做的事情3
...(省略)...
else:
不满足条件时要做的事情1
不满足条件时要做的事情2
不满足条件时要做的事情3
...(省略)...
示例代码:
python
ticket = True # 用True代表有车票,False代表没有车票
if ticket == True:
print("有车票,可以上火车")
print("终于可以见到Ta了,美滋滋~~~")
else:
print("没有车票,不能上车")
print("亲爱的,那就下次见了")
运行结果:
python
有车票,可以上火车
终于可以见到Ta了,美滋滋~~~
Process finished with exit code 0
3.3 elif 判断语句:
if能完成条件满足时做可以执行某些代码
if-else能完成条件满足时执行某些代码,不满足时执行另外一些代码
如果有这样一种情况:当条件1满足时做事情1;条件2满足时做事情2;条件3满足时做事情3,那该怎么实现呢?
答:elif
elif的使用格式如下:
python
if 条件1:
事情1
elif 条件2:
事情2
elif 条件3:
事情3
# ...省略N个条件...
elif 条件n:
事情n
else:
以上条件都不满足时执行的代码
示例代码:
python
score = 77 # 定义变量存储分数
if score >= 90 and score <= 100: # 如果分数在90~100
print('本次考试,等级为A')
elif score >= 80 and score < 90: # 如果分数在80~90
print('本次考试,等级为B')
elif score >= 70 and score < 80: # 如果分数在70~80
print('本次考试,等级为C')
elif score >= 60 and score < 70: # 如果分数在60~70
print('本次考试,等级为D')
elif score >= 0 and score < 60: # 如果分数在60以下
print('本次考试,等级为E')
else: # 如果分数不在0~100之间,就认为错误
print("分数有误...")
在if判断中,最多只能有1个else,但可以有N个elif,必须有1个if。
无论是在if语句还是在else子句控制的代码之下都需要进行代码缩进!
3.4 if 嵌套语句:
嵌套 if 语句的基本语法结构:
python
if condition1:
# 当条件1为 True 时执行的代码
if condition2:
# 当条件2为 True 时执行的代码
else:
# 当条件2为 False 时执行的代码
else:
# 当条件1为 False 时执行的代码
嵌套的 if 语句可以根据需要进行多层嵌套。每个 if 语句都根据条件的真假来选择是否执行内部代码块。
以下是一个示例,演示了一个嵌套 if 语句的应用:
python
age = 25
if age >= 18:
print("你已经成年了!")
if age >= 21:
print("你可以购买酒精饮料。")
else:
print("你还不能购买酒精饮料。")
else:
print("你还未成年,不能购买酒精饮料。")
在上述代码中,根据年龄的不同,使用嵌套的 if 语句进行条件判断。根据年龄是否大于等于18,将执行不同的代码块。如果年龄大于等于18,又根据年龄是否大于等于21,执行相应的代码块。
嵌套 if 语句可以灵活应用于复杂的条件判断场景,通过逐步细化判断条件,实现更精确的逻辑控制。
四、Python 循环控制
Python 中的循环语句有 for 和 while。
Python 循环语句的控制结构图如下所示:
4.1 while循环:
Python 中 while 语句的一般形式:
python
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
小提示:当前代码的执行顺序可以使用Pycharm中的Debug模式进行代码单步执行。
代码示例:
python
i = 0
while i < 5:
print("当前是第%d次执行循环" % (i + 1))
print("i=%d" % i)
i += 1
运行结果:
python
当前是第1次执行循环
i=0
当前是第2次执行循环
i=1
当前是第3次执行循环
i=2
当前是第4次执行循环
i=3
当前是第5次执行循环
i=4
4.2 for循环:
像while循环一样,for可以完成循环的功能
for循环可以遍历任何序列的项目,如一个列表或者一个字符串等
注意:
for循环使用最多的场景是直接遍历可以迭代的对象,而什么是迭代,什么是对象我们还没有学习,因此本节课程只讲解简单的使用for。更为复杂的用法在后面讲解
for 循环代码格式:
python
for 临时变量 in 列表或者字符串等可迭代对象:
循环满足条件时执行的代码
代码示例:
如果想要循环输出0、1、2、3、4,使用for循环来实现的代码如下:
python
for i in range(5):
print(i)
运行结果:
python
0
1
2
3
4
Process finished with exit code 0
使用示例:
python
sum_ret = 0 # 用来存储总和
for i in range(1, 101):
sum_ret += i
print("1~100的和为:%d" % sum_ret)
运行结果:
python
1~100的和为:5050
Process finished with exit code 0
4.3 break 与 continue:
在循环的过程中,有时可能会因为某些条件的满足或者不满足需要结束整个while,还有可能在当次循环代码执行过程中剩下的不执行了而是进行一次的循环,这种时候就需要用2个功能
-
结束整个循环
-
结束本次循环
还好,Python的发明人,针对上述2个功能,发明除了对应的代码
-
break,用来结束整个循环
-
continue,用来结束本次循环
break 基本使用
- break的作用是:结束它所属的整个循环
注意点:它不能单独使用,如果用的话一定需要放到循环中
while 中使用 break,未使用 break 的效果:
python
# 1.未使用 break 的效果
i = 0
while i<5:
print('----')
print(i)
i = i + 1
# 运行结果
----
0
----
1
----
2
----
3
----
4
# 2.使用 break 的效果
i = 0
while i<5:
print('----')
i = i+1
break
print(i)
# 运行结果:
----
同理for循环语句也一样。这里就不举例了。
使用 continue 的效果:
python
i = 0
while i < 3:
i = i+1
print('----')
continue
print(i)
结果:
python
----
----
----
同理for循环语句也一样。这里就不举例了。
除了上述用法,循环嵌套里也是可以使用continue和break。
4.4 扩展使用(循环+else):
while...else... 的使用方式,格式:
python
while 条件:
# 条件满足时执行的代码...
else:
# 如果上述的while循环没有调用break,就执行的代码...
逻辑说明:
-
只要while循环体中没有执行break,那么当while循环体中所有的代码执行完后,else中的代码也会执行
-
如果while循环中有break那么表示整个while结束,else中的代码也不会被执行
示例代码:
python
# 有 break 时:
i = 1
while i <= 3:
print("这是一段测试信息...")
if i == 1:
print("调用了break")
break
i += 1
else:
print("我是else中的代码")
# 运行结果:
这是一段测试信息...
调用了break
# 没有 break 时
i = 1
while i <= 3:
print("这是一段测试信息...")
i += 1
else:
print("我是else中的代码")
# 运行结果:
这是一段测试信息...
这是一段测试信息...
这是一段测试信息...
我是else中的代码
案例代码:
python
i = 3
while i > 0:
password = input("请输入密码:(还剩%d次机会)" % i)
if password == "123456":
print("密码输入正确")
break
i -= 1
else:
print("密码输入3次全部错误,请明日再试")
故意输错的结果:
python
请输入密码:(还剩3次机会)1
请输入密码:(还剩2次机会)2
请输入密码:(还剩1次机会)3
密码输入3次全部错误,请明日再试
Process finished with exit code 0
输入正确的结果:
python
请输入密码:(还剩3次机会)123456
密码输入正确
Process finished with exit code 0