流程控制
流程控制
1 分支结构
Python中的流程控制语句有五个,分别是if条件判断、if嵌套、while循环、for循环和跳转语句。
代码块:代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行;代码块以缩进开始,直到代码恢复到之前的缩进级别时结束。
1.1 if条件判断
几乎所有的语言都有if判断语句,if语句根据判断条件来选择执行或者不执行后面的代码块。
Python中的if判断语句的格式如下:
if 表达式:
语句1
语句2
...
if语句的核心是表达式,这个表达式是逻辑表达式,是判断条件,表达式的值要么是 “True” ,要么是 “False” 。
表达式后面的 “:” 不能省略,否则会报错。
语句1、语句2、…、是紧跟if的一个代码块,前面的缩进不能省,否则会报错;缩进以四个空格为标准,当代码恢复到之前的缩进级别时,代码块结束。
当表达式的值为 “True” 时,执行if后面的代码块;当表达式的值为 “False” 时,跳过if后面的代码块,直接执行下一行代码。
表达式可以是布尔类型,也可以是数字;当表达式为数字时, “0” 为假,其它数字均为真。
当出现多个判断条件时,表达式还可以使用逻辑运算符来连接多个条件,如果希望所有条件同时满足,则需要使用 “and” ;如果希望只要有一个条件满足即可,则需要使用 “or” 。
表达式的值为 “False” 或者 “0” 时,if后面的代码块不执行;当表达式为空字符串、空列表、空元组、空字典时,表达式的值为 “False” ;当表达式为 “None” 时,表达式的值也为 “False” 。
if条件判断
x = True
if x:
print("It's True!") # 输出It's True!
print('---------')
x = False
if x:
print("It's True!") # 没有输出
print('---------')
x = 18
if x:
print('x is', x) # 输出x is 18
print('---------')
x = 0
if x:
print('x is', x) # 没有输出
print('---------')
x = 18
if x > 0:
print('x =', x ) # 输出x = 18
print('---------')
x = 'Hello'
if x:
print('x is', x) # 输出x is Hello
print('---------')
x = ''
if x:
print('x is', x) # 没有输出
print('---------')
x = 1
if x*5 > 0 and x < 5:
print('x =', x) # 输出x = 1
print('---------')
if None:
print('Hello world') # 没有输出
执行结果如下:
It's True!
---------
---------
x is 18
---------
---------
x = 18
---------
x is Hello
---------
---------
x = 1
---------
1.2 if嵌套
有时候事情的结果有两种可能,那么可以用 “if…else” 来表示;当if表达式的值为 “False” 时,执行else后的语句;注意,else不能单独出现,必须跟if成对出现。
有时候事情的结果有多种可能,简单的 “if…else” 并不能满足需求,这种情况下就可以使用 “if…elif” 。
elif和else一样都是if的可选项,并且elif也不能单独出现,必须跟在if的后面。
“if…elif” 格式只会执行第一个满足条件表达式的代码块,其它表达式中的代码块都会被忽视。
如果有elif,则else必须在最后,不能插在elif之前。
if…else的格式如下:
if 表达式:
代码块
else:
代码块
if…elif的格式如下:
if 表达式1:
代码块
elif 表达式2:
代码块
elif 表达式3:
代码块
...
else:
代码块
if嵌套
print('if...else')
x = 65
if x >= 60:
print('及格!')
else:
print('不及格!')
print('---------')
print('if...elif')
x = 89
if x >= 0 and x <= 100:
if x >= 90 and x <= 100:
print('极其优秀!')
elif x >= 80:
print('优秀!')
elif x >= 70:
print('良好!')
elif x >= 60:
print('及格!')
else:
print('不及格!')
执行结果如下:
if...else
及格!
---------
if...elif
优秀!
2 循环结构
Python中主要有两种循环结构,while循环和for循环。
2.1 while循环
while循环是Python中最简单的循环结构。
while循环的格式如下:
while 表达式:
语句1
语句2
...
while后面的表达式和if中的表达式一样,都是条件判断;只有表达式的结果为 “True” 时,才会执行后面的循环体。
语句1、语句2、…、是紧跟while的一个代码块,叫做循环体;前面的缩进不能省,否则会报错;缩进以四个空格为标准,当代码恢复到之前的缩进级别时,代码块结束。
while循环
print('while循环')
x = 1
while x <= 5:
print('当前数字为:%d' % x)
x += 1 # x += 1不能省略,否则会产生无限循环或死循环
print('---------')
print('1-100的累加和')
x = 1
sum = 0
while x <= 100:
sum += x
x += 1
print('1-100的累加和为:sum = %d' % sum)
print('---------')
print('打印小星星')
i = 1 # i表示行
while i <= 5:
j = 1 # j表示列
while j <= i:
print('*', end='') # end=''在末尾传递一个空字符串,这样print函数不会在末尾添加一个换行符,而是添加一个空字符串
j += 1
print('') # 表示换行
i += 1
执行结果如下:
while循环
当前数字为:1
当前数字为:2
当前数字为:3
当前数字为:4
当前数字为:5
---------
1-100的累加和
1-100的累加和为:sum = 5050
---------
打印小星星
*
**
***
****
*****
2.2 for循环
在Python中,for循环可以遍历任何序列中的内容,如遍历一个列表或一个字符串的所有元素;
也可以用它来实现内容的重复输出。
Python中的range函数可以配合for使用;range函数有两种使用方式,第一种是给定一个数字型参数,即range(num);第二种是给定两个或三个数字型参数,即range(num1, num2, num3),前两个数字分别代表开始和结束,最后一个数字代表步长,如果没有则默认步长为1。
for循环的格式如下:
for 临时变量 in 列表或字符串等序列:
语句1
语句2
...
for循环
print('for循环')
for x in (1, 2, 3, 4, 5):
print(x, end=' ')
print('') # 表示换行
print('---------')
print('重复输出')
for x in (1, 2, 3):
print('Hello Python!')
print('---------')
print('第一种range函数')
for x in range(5):
print(x, end=' ') # 输出5个数,从0开始,即0 1 2 3 4
print('') # 表示换行
print('---------')
print('第二种range函数')
for x in range(1, 10):
print(x, end=' ') # 输出9个数,从1开始,不会输出10,默认步长为1,即1 2 3 4 5 6 7 8 9
执行结果如下:
for循环
1 2 3 4 5
---------
重复输出
Hello Python!
Hello Python!
Hello Python!
---------
第一种range函数
0 1 2 3 4
---------
第二种range函数
1 2 3 4 5 6 7 8 9
2.3 跳转语句
跳转语句有break语句和continue语句。
break语句和continue语句只能用在循环中,不能单独使用。
break语句和continue语句在嵌套循环中,只对最近的一层循环起作用。
break语句的作用是立即退出循环体,直接结束循环,包括while和for在内的所有循环控制语句;break用来结束当前代码块的最内层循环。
continue语句的作用是跳过当前的循环,紧接着执行下一次的循环,并不会退出循环体;continue用来结束当前代码块的本次循环。
跳转语句–break
print('break语句')
i = 0
while i < 10:
if i == 3:
break
print(i)
i += 1
print('over!')
print('---------')
print('break结束最内层循环')
name = '流程控制语句'
for x in range(3):
for y in name:
if y == '控':
break
print(y, end=' ')
print('')
print('——第%d次循环——' % (x+1))
执行结果如下:
break语句
0
1
2
over!
---------
break结束最内层循环
流 程
——第1次循环——
流 程
——第2次循环——
流 程
——第3次循环——
跳转语句–continue
print('continue语句')
i = 0
while i <= 5:
i += 1
if i == 3:
continue
print(i)
print('over!')
print('---------')
print('continue结束本次循环')
name = '流程控制语句'
for x in name:
if x == '控':
continue
print(x, end=' ')
执行结果如下:
continue语句
1
2
4
5
6
over!
---------
continue结束本次循环
流 程 制 语 句
3 知识拓展
3.1 pass语句
在Python中,pass语句是空语句,其作用是保持程序结构的完整性;pass语句不做任何操作,一般用作占位语句。
因为流程控制之后的一行必须是有缩进的代码块,然而有时候可能并不需要执行什么东西或者在编写程序的时候还没有想好要如何编写执行内容,这时候为了保持程序结构的完整性,就需要用到pass语句来占位。
pass语句
print('pass语句')
for i in 'Python':
if i == 'h':
pass # 如果没有pass会报错,因为if语句不完整
else:
print(i, end=' ')
执行结果如下:
pass语句
P y t o n
3.2 循环语句中的else
在Python中,不只if可以和else组合,while和for也可以和else组合出现。
和while组合的else后的代码块,会在while的条件表达式为 “False” 时执行。
如果循环体中出现break语句,那么退出循环的时候是不会执行else后的代码块的。
循环语句中的else
print('while...else')
x = 0
while x < 3:
print('Hello Python!')
x += 1
else:
print('结束!')
print('---------')
print('while...break...else')
x = 0
while x <= 5:
if x == 3:
break
print(x, end=' ')
x += 1
else:
print('结束!') # 执行break语句退出循环时,else后的代码块并没有执行
print('') # 表示换行
print('---------')
print('for...else')
for x in range(3):
print('当前数字为 %d' % x)
else:
print('当前数字为 无')
print('---------')
print('for...break...else')
for x in range(5):
if x == 3:
break
print(x, end=' ')
else:
print('结束!') # 执行break语句退出循环时,else后的代码块并没有执行
执行结果如下:
while...else
Hello Python!
Hello Python!
Hello Python!
结束!
---------
while...break...else
0 1 2
---------
for...else
当前数字为 0
当前数字为 1
当前数字为 2
当前数字为 无
---------
for...break...else
0 1 2