流程控制是指在程序设计中控制完成某种功能的次序,只有按正确的次序执行代码才能完成指定的任务。Python程序语言有三种基本流程控制结构,即顺序结构、选择结构和循环结构。
2.5.1 顺序结构
用Python语言编写程序时,实现顺序结构的方法非常简单,只需要将语句顺序排列即可。示例代码:
x, y = 3, 5
tmp = x
x = y
y = tmp
print(x, y)
程序运行结果:
5, 3
程序通过一个中间变量tmp实现了x和y值的互换。
2.5.2 选择结构
选择结构也称为分支结构,它根据给定的条件是否满足,决定程序的执行路线。Python提供if语句来实现单分支、双分支和多分支选择结构。
1. 单分支选择结构
单分支if语句的一般格式:
if 表达式:
语句块
示例代码:
x ,y = 10, 100
if x > y:
x--
y++
执行该结构时,首先对表达式的值进行判断。如果表达式的值为True,则执行其后的语句块,然后执行if语句的后续语句。若值为False,则直接执行if语句的后续语句。
注意:
- 在if语句的表达式后面必须加冒号。
- 因为Python把非0当成真(True),0当成假(False),所以表示条件的表达式不一定必须是结果为True或False的关系表达式或逻辑表达式,可以是任意表达式。
- if语句中的语句块必须向后缩进。当包含两个或两个以上语句块时,语句必须缩进一致。若缩进不一致,则语句含义就不同了。
- 如果语句块中只有一条语句,if语句也可以写在同一行。
2. 双分支选择结构
双分支if语句的一般格式:
if 表达式:
语句块1
else:
语句块2
执行该结构时,首先对表达式的值进行判断。如果表达式的值为True,则执行语句块1;否则执行语句块2。示例代码:
if i%2 == 1:
x = i/2
y = i*i
else:
x = i
y = i*i*i
3. 多分支选择结构
多分支if语句的一般格式:
if 表达式:
语句块1
elif 表达式:
语句块2
elif 表达式:
语句块3
...
elif 表达式:
语句块m
[else:
语句块n]
当表达式1的值为True时,执行语句块1,否则求表达式2的值;为True时,执行语句2,否则处理表达式3,以此类推。若表达式值都为False,则执行else后面的语句n。示例代码:
g = float(input("please input your score:"))
if g < 60:
print("no pass")
elif g < 70:
print("pass")
elif g < 85:
print("not bad")
else:
print("good")
4. 选择结构的嵌套
if语句中可以再嵌套if语句,有不同的嵌套形式,格式如下:
格式一:
if 表达式1:
if 表达式2:
语句块1
else:
语句块2
格式二:
if 表达式1:
if 表达式2:
语句块1
else:
语句块2
根据对齐格式来确定if语句之间的逻辑关系。在第一种格式中,else与第二个if配对。在第二种格式中,else与第一个if配对。Python语言的缩进格式,增强了程序的可读性,也代表了else和if的逻辑配对关系。示例代码:
g = float(input("please input score:"))
if g >= 60:
if g >= 70:
if g >= 85:
print("good")
else:
print("not bad")
else:
print("pass")
else:
print("no pass")
2.5.3 循环结构
循环是指在程序设计中,从某处开始有规律地反复执行某一程序块的现象,重复执行的程序块称为循环体。使用循环可以避免重复不必要的操作,简化程序,提高效率。
Python提供了while语句和for语句来实现循环结构。
1. while语句
while用来实现“当型”循环结构,格式如下:
while 表达式:
语句块
当执行while语句时,先对表达式进行计算,若值为True(非0),则执行循环体语句;否则跳过循环体语句,执行while结构后面的语句。每执行完一次循环体语句,都对表达式进行一次计算和判断,直到表达式值为False,跳出循环体。示例代码:
sum = 0
while(i<=100):
sum += i
i ++
print(sum)
注意,如果表达式永远为True,循环将会无限地执行下去形成死循环。在循环体内必须有修改表达式值的语句,使其趋向False,避免无限循环。
2. for循环结构
Python中的for循环是一个通用的序列迭代器,可以遍历任何有序的序列对象的元素。for语句可用于字符串、列表、元组以及其他内置可迭代对象。
for语句的一般格式,如下:
for 目标变量 in 序列对象:
语句块
for语句将序列对象中的元素逐个赋给目标变量,对每一次赋值都执行一遍循环体语句块。当序列被遍历,即每一个元素都用过了,则循环结束。
- 遍历列表,示例代码:
fruits = ['banana', 'orange', 'apple']
for fruit in fruits:
print("Current fruit:", fruit)
- 遍历字符串,示例代码;
for c in "Hello world":
print(c, end='-')
- 遍历元组,示例代码:
fruits = ('banana', 'orange', 'apple')
for fruit in fruits:
print("Current fruit:", fruit)
- 遍历列表,用于for循环时,元组和列表作用完全一样。示例代码:
fruits = ['banana', 'orange', 'apple']
for fruit in fruits:
print("Current fruit:", fruit)
- 如果需要遍历一个数字序列,可以使用range对象。示例代码:
for i in range(5):
print(i, end=' ')
3. 循环控制语句
循环控制语句可以改变循环的执行路径。Python的循环控制语句有break语句和continue语句。
break语句用在循环体内,可使程序中途退出循环结构,从而执行循环体后面的语句。break语句通常与if语句一起使用,以便满足条件时跳出循环。示例代码:
var = 10
while var > 0 :
print("Current value:", var)
var = var - 1
if var == 5 :
break
print("Bye!")
程序运行结果如下:
Current value: 10
Current value: 9
Current value: 8
Current value: 7
Current value: 6
Bye!
continue语句的作用是跳过循环中剩余的语句,强行执行下一次循环。continue语句常与if条件语句一起使用,用来加速循环。示例代码:
var = 10
while var > 0 :
var = var - 1
if var == 5 :
continue
print("Current value:", var)
print("Bye!")
程序运行结果如下:
Current value: 9
Current value: 8
Current value: 7
Current value: 6
Current value: 4
Current value: 3
Current value: 2
Current value: 1
Current value: 0
Bye!
continue语句和break语句的主要区别:continue语句只结束本次循环,而不是终止整个循环的执行。break语句则是结束所在循环,跳出所在循环体。