流程控制

流程控制

一、分支结构

分支结构又称为条件语句,在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语句的工作流程图如下所示:

image-20230714142008400
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语句的工作流程图如下所示:

image-20230714144104524
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 的工作流程图如下所示:

image-20230714144855051
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循环的工作流程图如下:

image-20230714150118230
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循环的工作流程图如下:

image-20230714145523923
i = 1
while i <= 10:
    print(i)
    i += 1

从执行结果来看,Python中的while循环是先进性条件判断,再执行循环体中的语句,如此往复。

while不仅可以实现有限次数的循环,还可以实现无限次数的循环,只需要将while后的条件语句永久设为True即可。

while True:
    print("这是一个死循环。")

(三)break和continue

  1. break:循环中如果要跳出循环,一般用break语句。break的作用是跳出当前的for循环或者while循环。

    n = 5
    while n > 0:
        n -= 1
        if n == 1:
            break
        print(n)
    print('循环结束')
    
  2. continue:和break不同,continue语句并不会跳出循环,它只是停止当次循环,然后跳回循环体的开始位置,继续下一次循环。

    a = 0
    while a < 10:
        a += 1
        if a%2 == 0:
            continue
        print(a)
    
posted @ 2023-10-16 11:50  离渊灬  阅读(61)  评论(0)    收藏  举报