python之流程控制
流程控制理论
什么是流程控制
流程控制其实就是控制事物的执行流程
执行流程的分类
顺序结构
顺序结构是最简单的程序结构,它是从上往下依次执行的。
分支结构
分支结构就是根据某些条件的判断做出不同的执行流程。
循环结构
循环结构就是根据某些条件的判断循环反复的做相同的事情,直到有一个循环结束的条件。
必知必会
-
在python当中,我们都是使用缩减来表示代码的从属关系,比如:
if True: 语句1 语句2 语句3
这段代码中语句1和语句2都是附属于if语句的,语句3是与if同一级别的,我们也可以称语句1和语句2是if语句的子代码。
-
并不是所有的代码都可以有子代码的,如果一行代码的结尾是冒号结束,那么下一行必定是这行代码的子代码。
-
如果多行代码属于同一个父代码,那么这个多行代码需要保证相同的缩进。在python中推荐使用四个空格来表示缩进,或者是按Tab键来缩进。
-
具有相同缩进量的代码彼此之间按照顺序结构执行。
分支结构之if语句
单if分支
语法结构:
if 判断条件:
执行语句
...
这段语法表示:当判断条件成立时,执行后面的语句。
举例:
# 如果age大于等于18,则打印“已成年”
if age >= 18:
print('已成年')
if与else分支
语法结构:
if 判断条件:
语句1
...
else:
语句2
...
这段语法表示:当判断条件成立时,执行语句1,否则执行语句2。
举例:
# 如果age大于等于18,则打印“已成年”,否则打印“未成年”
if age >= 18:
print('已成年')
else:
print('未成年')
if与elif与else分支
语法结构:
if 条件1:
语句1
...
elif 条件2:
语句2
...
elif 条件3:
语句3
...
else:
语句4
...
这段代码表示:当满足条件1时,执行语句1;当不满足条件1,满足条件2时,执行语句2;当不满足条件1,且不满足条件2时,满足条件3时,执行语句3;当以上条件都不满足时,执行语句4。
举例:
# 年龄划分
if age < 18: # 如果年龄在18岁以下,打印“少年”
print('少年')
elif age < 30: # 如果年龄在18岁及以上,30岁以下,打印“青年”
print('青年')
elif age < 40: # 如果年龄在30岁及以上,40岁以下,打印“壮年”
print('壮年')
elif age < 50 # 如果年龄在40岁及以上,50岁一下,打印“中年”
print('中年')
else: # 如果不符合以上条件,则是50岁及以上的年龄,打印“老年”
print('老年')
if的嵌套
其实在if的子代码当中,我们还可以再添加数个if代码分支,这个我们称为if的嵌套。
语法结构:
if 条件1:
语句1
if 条件2:
语句2
...
...
举例:
# country表示国家,province表示省份
if country == "中国":# 如果国家是中国,则进入子代码
if province == "上海":# 如果省份是上海,则打印内容
print('他在中国,是上海人')
else:# 如果country不是中国,说明他是外国人
print('他是外国人')
循环结构之while循环
语法结构:
while 判断条件:
执行语句
...
这段代码表示:当判断条件为True时,执行子代码中的语句,子代码中的语句执行完后,再次判断条件是否为True,如果为True,则继续执行子代码;如果为False,则跳出while循环。
举例:
a = 0 # 给a赋值0
while a < 10: # 判断a是否小于10,小于10则进入循环,否则结束while循环
print(a) # 每经过一次循环,打印a的值
a += 1 # 每经过一次循环,a的值都会加1
while + else
else不仅能和if连用,它还能与while连用。
语法结构:
while 条件:
循环体代码
...
else:
代码块
...
注意:else中的代码块并不是一定会执行,只有在while循环正常结束的情况下才会执行else中的代码,如果使用break跳出while循环,则不会执行else中的代码。
举例:
# 不用break跳出循环时
num = 1
while num < 5:
print(num)
num += 1
else:
print('while循环正常结束了!!')
'''
输出结果
1
2
3
4
while循环正常结束了!!
'''
# 用break跳出循环时
num = 1
while num < 5:
if num == 3:
break
print(num)
num += 1
else:
print('while循环正常结束了!!')
'''
输出结果
1
2
'''
死循环
死循环就是永远无法结束的循环,并且会一直占用CPU工作,极度的影响电脑的性能,甚至造成硬件的损坏。
举例:
# 死循环
i = 0
while i < 10:
print('出不去了')
# 如果循环内的代码不会改变i的值
# 这个程序就会一直执行代码print('出不去了')
while的嵌套
while与if一样,可以在子代码中加入多个while循环。
举例:
# while的嵌套
i = j = 0
while i < 4:
while j < 4:
print('*', end='') # 让输出在同一行
j += 1 # 防止死循环
print() # 换行
i += 1 # 防止死循环
j = 0 # 让程序可以在进入小的while循环
'''
输出结果
****
****
****
****
'''
循环结构之for循环
语法结构:
for 变量名 in 可迭代对象:
语句1
...
在for循环中,会遍历可迭代对象,按顺序把可迭代对象中的每一个值赋给变量名。
可迭代对象:字符串、列表、字典、元组、集合等....
举例:
# 案例1,遍历字符串
for s in 'abcde': # 遍历'abcd',拆分成'a', 'b', 'c', 'd'赋值给变量s
print(s) # 打印s
'''
输出结果
a
b
c
d
'''
# 案例2,遍历列表
for l in [1, 2, 'a']: # 遍历[1, 2, 'a'],拆分成1, 2, 'a'赋值给变量l
print(l) # 打印l
'''
输出结果
1
2
a
'''
# 案例3,遍历字典
for k in {'name':'tom', 'age': 18, 'sex':'男'}: # 遍历字典时只会将字典中的key赋值给变量名,也就是'name', 'age', 'sex'赋值给变量k
print(k) # 打印k
'''
输出结果
name
age
sex
'''
# 案例4,range函数
for i in range(4): # range(4)可以把他看作是列表[0, 1, 2, 3],或者[0,4)的整数
print(i)
'''
输出结果
0
1
2
3
'''
range函数
range函数在python2和python3中有所区别
- python2中range是直接生成一个列表,元素很多的情况下比较占用空间
- python3中range相当于是哆啦A梦的口袋一样,不占空间但是可以取出很多数据。
range函数主要用于生成一个整型的数据集。
举例:
# range函数中只有单个数字,取值范围为0<=i<4的整数
for i in range(4):
print(i)
'''
输出结果
0
1
2
3
'''
# range函数中有两个数字,取值范围为1<=i<4的整数
for i in range(1,4):
print(i)
'''
1
2
3
'''
# range函数中有三个数字,前两个代表范围,第三个代表从起始位开始,每次增加的数值
for i in range(1, 6, 2):
print(i)
'''
1
3
5
'''
break与continue与else
这三个关键字的用法在for循环中与在while循环中一致。
for循环的嵌套
while和if都能嵌套,for循环当然也可以。
举例:
# 输出3*3的星号矩阵
for i in range(4): # i取值0<=i<4
for j in range(4): # j取值0<=j<4
print('*', end='')
print() # 换行
'''
输出结果
***
***
***
'''
break与continue
break的应用
break主要用于直接结束本层循环。
举例:
a = 1
while True: # 整个死循环
print(a) # 打印a的值
if a == 4: # 当a的值为4时,跳出while循环
break # 跳出本层循环
a += 1 # 每次循环a的值加1
'''
输出结果
1
2
3
4
'''
continue的应用
break主要用于结束当前这次的循环,直接进入下一次循环。
举例:
# 只输出偶数
a = 0
while a < 10: # 当a < 10时,进入循环
if a % 2 == 0: # 当a除2余数为0时,说明是偶数
a += 1 # a加1
continue # 跳过下面的语句,直接进入下一次循环
a += 1 # a加1
print(a) # 打印a
'''
输出结果
2
4
6
8
10
'''