在Python中,流程控制语句的作用就是用来实现对程序的选择、循环、跳转、返回等逻辑进行控制的,是一门编程语言中最重要的部分之一。类似于Java与C语言,Python的流程控制中,主要有两大类:条件语句和循坏语句。
6.1 条件语句if
与C语言、Java中的if...else if...else...不同,在Python中,条件语句的格式为:
if 条件1:
语句1
elif 条件2:
语句2
else:
语句3
# 也可以
if 条件1:
语句1
else:
语句2
# 也可以
if 条件1:
语句1
elif 条件2:
语句2
后面跟的语句1/2/3需要缩进。条件为真值时,才会执行冒号后面的语句。
if 3 > 2:
print("条件为真,输出该语句")
if 3 < 1:
print("条件为假,无法输出")
if True:
print("为真才会执行该语句")
if 3 > 1:
print("条件为真,输出")
elif 2 > 1:
print("if的条件为真时,只会执行if后的语句,即使elif条件为真,后面的语句也不会执行。只有if的条件为假时,才会考虑就后面的")
if 3 < 1:
print("条件为假")
elif 2 < 1:
print("条件为假")
else:
print("只有上面条件全为假也就是都不满足,输出该句")
6.2 for循环
在Python中,for循环可以遍历任何序列的项目,如一个列表或者一个字符串,并且是通过不使用下标的方式来实现对序列中每一个元素的访问。语法格式如下:
"""
for 变量 in 要遍历的序列(列表、元组、字符串、字典、集合、文件等):
执行的语句
"""
for i in [1, 2, 3]:
print(i)
for i in (1, 2, 3):
print(i)
for i in "123":
print(i)
"""
结果都为:
1
2
3
"""
for i in {"name": "Emily", "age": 18}:
print(i)
"""
结果为:
name
age
"""
# 遍历数字range()
for i in range(0, 10):
print (i) # 结果为:1 2 3 4 5 6 7 8 9(空格里面都是回车)
在上面,直接遍历字典,只能得到字典的键,现在要得到字典键和值:
# 之前学了如何得到字典的键和值:items()函数
for i in dict_1.items():
print(i)
"""
结果为:
('name', 'Emily')
('age', 18)
"""
# 循环得到字典的值
for i in dict_1.values():
print(i)
"""
结果为:
Emily
18
"""
双层for循环与if的结合:
a = [1, 2, 3, [4, 5, 6], [7, 8, 9]]
for i in a:
print(i)
# 判断是否可以进行下一次循环 =>是否是列表
if isinstance(i, list):
# 提取嵌套列表的内容
for j in i:
print(j)
"""
结果为:
1
2
3
[4, 5, 6]
4
5
6
[7, 8, 9]
7
8
9
"""
6.3 while循环
while语句用于循环执行程序,即在特定条件下,循环执行指定程序,以处理需要重复处理的相同语句,并且while还可以与else搭配使用。语法格式如下:
"""
while 条件(真条件):
语句
else:
语句
"""
在使用while循环时,需要设置跳出循环的条件,不然一直为死循环。
c = 0
while c < 5:
print(c)
c += 1
else:
print("c已经为4了,再自增一次就为5不满足c < 5的条件了,循环结束!")
"""
结果为:
0
1
2
3
4
c已经为4了,再自增一次就为5不满足c < 5的条件了,循环结束!
"""
6.4 range函数
如果你需要一个数值序列,内置函数range()会很方便,它会生成一个等差级数链表。语法格式如下:
range(start,end,scan):
语句
其中参数的意义:
- start:计数冲start开始,默认是从0开始。例如:range(5) 等价于range(0, 5);
- end:计数到end结束,但不包括end。例如:range(0, 5)是[0, 1, 2, 3, 4]没有5;
- scan:每次的间距,默认为1。例如:range(0, 5)等价于range(0, 5, 1)。
# range(0, 4)形成的数字为:0 1 2 3
# range(0, 4, 2)步长为2(跨两步),形成的数字为:0 2
# range(i, 0, -1):从列表的下标为i的元素开始,倒序取到下标为0的元素(但是不包括下标为0元素)
for i in range(0, 4, 2):
print(i)
"""
结果为:
0
2
"""
6.5 break用法
break语句可以跳出for和while的循环体。如从for或while循环中跳出来,任何对应的循环else块将不再执行。
# --------------for循环--------------
for i in "Python":
break
print(i)
# 结果为:空白,直接终止循环
for i in "Python":
print(i)
break
# 结果为:P,后续没有输出,直接终止循环
for i in "Python":
if i == "t":
break
print("当前字符为", i)
"""
结果为:
当前字符为 P
当前字符为 y
"""
for i in "Python":
print("当前字符为", i)
if i == "t":
break
"""
结果为:
当前字符为 P
当前字符为 y
当前字符为 t
"""
# --------------while循环--------------
while a < 4:
break
print(a)
a += 1
# 没有结果输出,直接终止循环了
b = 0
while b < 4:
print(b)
b += 1
break
# 输出结果为:0
6.6 continue用法
continue语句被用来跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
# --------------for循环--------------
for i in "Python":
continue
print(i)
# 结果为:空白,直接跳过了continue后面的语句重新进入循环,break是直接跳出循环,不会再执行循环体
for i in "Python":
print(i)
continue
# 结果为:P y t h o n(空格代表回车)
for i in "Python":
print(i)
continue
print("Hello")
# 结果跟上面一样,不会输出Hello
for i in "Python":
if i == 't':
continue
print("当前字母为:", i)
"""
结果为:
当前字母为: P
当前字母为: y
当前字母为: h
当前字母为: o
当前字母为: n
"""
for i in "Python":
print("当前字母为:", i)
if i == 't':
continue
"""
结果为:
当前字母为: P
当前字母为: y
当前字母为: t
当前字母为: h
当前字母为: o
当前字母为: n
"""
# --------------while循环--------------
c = 0
while c < 4:
continue
print(c)
c += 1
# 没有输出结果,因为c永远等于0,永远小于4,所以程序处于死循环中
d = 0
while d < 4:
print(d)
d += 1
continue
# 结果为:0 1 2 3(空白为回车)
e = 0
while e < 4:
e += 1
if e == 3:
continue
print("e的值为", e)
"""
结果为:
e的值为 1
e的值为 2
e的值为 4
"""
# 如果把e += 1语句放在continue后面那么执行到e == 3时,就会进入if语句,成为死循环。
# 因为continue后面的语句是不会执行的,也就是说e += 1也不会执行,所以e一直为3,一直执行if语句,跳不出循环
6.7 pass语句
在Python中,pass是空语句,是为了保持程序结构的完整性。它用于那些语法上必须要有么语句,但程序什么也不做的场合。
for i in range(0, 10):
pass # 没有pass会报错,但是for循环里面的逻辑代码还没想好,后续补充,就填补pass,保持程序的完整性不报错。