流程控制
流程控制
一、分支结构
分支结构又称为条件语句,在Python中,条件语句可以通过对一个或者多个条件进行判断,从而让程序按照一定的流程处理相关工作。
条件语句一般由 if、elif 和 else 组成。
(一)if语句
if语句的格式如下:
前面语句
if 表达式:
语句1
语句2
......
后续语句
注意示例中 “语句1” “语句2” 前的缩进(相对于if行有四个空格开头)不能省略,但不在条件语句执行模块里面的后续语句不能缩进,必须和if条件语句保持同一缩进。另外,if条件语句后面必须跟着英文冒号(:)。
每条if语句的核心都是一个值是 “Ture” 或者 “False” 的表达式,这种表达式被称为条件测试。
Python根据条件测试的值为 “True” 还是 “False” 来决定是否执行if语句中的代码。如果条件测试的值为 “True”,Python就执行紧跟在if语句后面的代码块;如果值为 “False”,Python就忽略这些代码不去执行。if语句的工作流程图如下所示:
print("判断a是否是正数")
a = 10
if a > 0:
print('a为正数')
print("执行完毕")
x = True
if x:
print("It's True")
从执行结果来看,if语句中的代码块被执行,说明 条件测试值 是 “True”。
if语句中的条件测试不仅支持布尔类型和表达式,还可以使用数字、列表、元组、字符串、字典等其他数据类型。
# 使用数字作为 条件测试
if 3:
print("It's not zero1")
if 0:
print("It's not zero2")
# 使用列表作为 条件测试
if [1,2,3]:
print("It's not empty list1")
if []:
print("It's not empty list2")
# 使用元组作为 条件测试
if (1,2,3):
print("It's not empty tuple1")
if []:
print("It's not empty tuple2")
# 使用字符串作为 条件测试
if "123":
print("It's note empty string1")
if "":
print("It's note empty string2")
# 使用字典作为 条件测试
if {1:"a", 2:"b", 3:"c"}:
print("It's not empty dictinary1")
if {}:
print("It's not empty dictinary2")
从执行结果来看,条件测试可以适用于 数字、列表、元组、字符串还有字典。
如果使用数字作为 “if” 的判断条件,则只有数字 “0” 的条件测试结果是 “False”。
如果使用列表作为 “if” 的判断条件,则只有空列表([]) 的条件测试结果是 “False”。
如果使用元组作为 “if” 的判断条件,则只有空元祖(()) 的条件测试结果是 “False”。
如果使用字符串作为 “if” 的判断条件,则只有空字符串("") 的条件测试结果是 “False”。
如果使用字典作为 “if” 的判断条件,则只有空字典({}) 的条件测试结果是 “False”。
(二)else语句
else语句很好理解,当 if 的条件测试为 “False” 的时候执行 else 后的语句, else 是 if语句 的可选项,并不一定非要有 else,但是 else 不能单独出现,必须跟在 if 后面。if-else语句的工作流程图如下所示:
print("判断a是否是正数")
a = -5
if a > 0:
print('a为正数')
else:
print('a不是正数')
print("执行完毕")
(三)elif语句
有时候可能会需要测试多个条件,单纯的 “if-else” 并不能满足所有需求,这种情况下就可以使用 elif。elif 和 else 一样都是 if 的可选项,并且 elif 也不能单独出现,必须跟在 if 后面。if-elif-else 的工作流程图如下所示:
print("判断a是否是正数")
a = 0
if a > 0:
print('a为正数')
elif a < 0:
print('a是负数')
else:
print('a等于0')
print("执行完毕")
二、循环结构
(一)for循环
for循环是序列(或其他可迭代对象)中每个元素执行相关语句的循环过程;也可以理解为将可迭代对象从迭代器里面按照一定的规则(比如一个一个、隔一个等),然后进行相关操作的过程。
for循环的格式如下:
for 变量 in 序列(可迭代对象):
执行代码块(循环体)
for循环的工作流程图如下:
l = [1, 2, 3, 4, 5]
t = (1, 2, 3, 4, 5)
s = "12345"
#遍历列表
for i in l:
print("列表元素",i)
print("=================")
#遍历元组
for i in t:
print("元组元素",i)
print("=================")
#遍历字符串
for i in s:
print("字符串元素",i)
从上面的示例来看,for循环可以遍历各种序列,包括列表、元组、字符。
但是有一个问题,如果我们需要输出1000个数字,我们难道要写一个很长的列表,里面包含1000个元素吗?大可不必这么麻烦,Python中内置的 range() 函数可以帮助我们处理此类问题。
range()的参数有3个,格式为 range(start, stop, step)。它会返回一个由 start到stop-1 的可迭代对象。其中 start 代表可迭代对象开始的位置,为可选参数,默认为0;stop 代表可迭代对象结束的位置,为必选参数;step为步长,为可选参数,默认为1。
range()中的参数必须为整数,不能为小数。
for i in range(1, 6):
print(i, end=" ")
print()
for i in range(1, 6, 2):
print(i, end=" ")
print()
for i in range(6, 0, -1):
print(i, end=" ")
print()
for i in range(6):
print(i, end=" ")
从执行结果可以看出来,range()的可迭代对象和列表的截取一样采用 “包头不包尾” 的原则:包括开始参数的值,但不包括结束参数的值。并且range()的步长是可以设置为负数的,它表示从后往前遍历序列。此外,当只给出一个参数时,默认给定的是结束的位置,此时开始的位置为默认值0。
(二)while循环
while循环指的是如果某个条件成立,则一直执行某个或者某些语句块,一般被重复执行的语句块称作循环体。
while循环的格式如下:
while 判断条件:
执行代码块(循环体)
while循环的工作流程图如下:
i = 1
while i <= 10:
print(i)
i += 1
从执行结果来看,Python中的while循环是先进性条件判断,再执行循环体中的语句,如此往复。
while不仅可以实现有限次数的循环,还可以实现无限次数的循环,只需要将while后的条件语句永久设为True即可。
while True:
print("这是一个死循环。")
(三)break和continue
-
break:循环中如果要跳出循环,一般用break语句。break的作用是跳出当前的for循环或者while循环。
n = 5 while n > 0: n -= 1 if n == 1: break print(n) print('循环结束') -
continue:和break不同,continue语句并不会跳出循环,它只是停止当次循环,然后跳回循环体的开始位置,继续下一次循环。
a = 0 while a < 10: a += 1 if a%2 == 0: continue print(a)

浙公网安备 33010602011771号