Python 流程控制

Python 流程控制

程序并不是简单的“从上到下”执行,很多时候,我们希望程序能根据不同的情况,做出不同的 选择,比如:根据情况跳过某些代码,或者重复执行某些代码,那这时就需要用到『流程控制 语句』,程序的执行流程大体上可分为三类:顺序、分之、循环。 备注:其中顺序执行是最简单的,就是按照程序的编写顺序依次执行,所以我们不再探讨顺 序执行。

分支

  • 分支有很多其他的称呼,比如:条件控制语句、分支语句、选择语句。
  • 分支是通过条件判断,来决定执行哪些代码。

单分支

语法格式:

if 判断条件: 条件【成立】时执行的代码1 条件【成立】时执行的代码2 ……

语法图解:

注意:Python 靠代码缩进来识别代码范围,所以条件成立时要执行的代码前,必须加空 格。

示例代码:

1
2
3
4
5
age = int(input('请输入你的年龄:'))
if age >= 18:
    print('你是成年人')
    print('成年人的世界,虽不容易,但很精彩!')
    print('欢迎你来学习Python!')

双分支

语法格式:

if判断条件: 条件【成立】时执行的代码1 条件【成立】时执行的代码2 else: 条件成【不成立】时执行的代码1 条件成【不成立】时执行的代码2

语法图解:

示例代码:

1
2
3
4
5
6
7
8
age = int(input('请输入你的年龄:'))
if age >= 18:
    print('你是成年人')
    print('成年人的世界,虽不容易,但很精彩!')
else:
    print('你是未成年人')
    print('好好加油,努力学习,未来可期!')
    print('欢迎你来学习Python!')

多分支

语法格式:

if判断条件1: 条件1【成立】时执行的代码 elif判断条件2: 条件2【成立】时执行的代码 elif判断条件3: 条件3【成立】时执行的代码 else: # else如不需要可以省略 上述所有条件都不成立时执行的代码

语法图解:

示例代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#根据年龄来判断处于人生哪个阶段。
age = int(input('请输入你的年龄:'))
if age <= 10:
    print('你是幼儿')
elif age <= 18:
    print('你是青少年')
elif age <= 30:
    print('你是青年')
elif age <= 50:
    print('你是中年')
elif age <= 60:
    print('你是中老年')
else:
    print('你是老年')

使用多分支语句时,需要注意下面几点:

  1. 一个if语句只能匹配1个else语句,但可以匹配多个elif语句,并且else语句要在所 有的elif语句之后。
  2. 一旦某个分支语句检测为true,其他的elif以及else语句都将不再执行。

嵌套分之

语法格式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
if判断条件1:
    #条件1成立时执行的代码1
    #条件1成立时执行的代码2
    # ......
    if判断条件2:
        #条件2成立时执行的代码1
        #条件2成立时执行的代码2
        # ......
    elif判断条件3:
        #条件3成立时执行的代码
        # ......
    else:
        #条件2、条件3都不成立时执行的代码1
        #条件2、条件3都不成立时执行的代码2
        # ......
else:
    #条件1不成立时执行的代码1
    #条件1不成立时执行的代码2
    # ......
if 判断条件4:
    # 条件4 成立时执行的代码
    # ......
else:
    # 条件4 不成立时执行的代码
    # ......

2 语法图解:

循环

循环是一种让代码“重复执行”的机制,当某个条件成立时,程序会反复执行一些语句,直到条 件不再满足时,再停止运行。

while循环

语法格式:

while循环条件: 条件成立时执行的操作1 条件成立时执行的操作2

循环逻辑:

  1. 先判断循环条件是否成立(是否为 True)
  2. 如果成立 → 执行循环中的代码
  3. 执行完循环体 → 再次判断循环条件
  4. 若仍成立 → 继续执行循环中的代码
  5. 若不成立 → 循环结束

代码示例:

1
2
3
4
5
n = 1
while n <= 10:
    print(f'第{n}次你好啊')
    n += 1
    print(f'我是 while 循环以外的代码,执行到这里时,循环已经结束了,此时的n是:{n}')

注意:如果条件一直成立,就是无限循环(死循环)。例如上述代码中,如果忘记编写n += 1就会产生死循环。

for 循环

语法格式:

for 临时变量 in 可迭代对象: 要执行的操作1 要执行的操作2 什么叫『可迭代对象』? 比如我们有一个盒子,里面装着:苹果、香蕉、橙子。我们可以一个接一个地把水果取出来, 那这个盒子,就相当于 Python 中的可迭代对象。每次 for 循环执行时,其实就是在“取出一 个水果”,目前我们还没学到“类”和“对象”,先记住一句话: 能一个个取出来的,就是可迭代 的。

循环逻辑:

  1. 从可迭代对象中取出第一个元素 → 赋值给临时变量
  2. 执行循环中的代码
  3. 取出下一个元素 → 重复执行
  4. 当所有元素取完后 → 循环结束

代码示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#使用for循环遍历range()所指定的数字范围
n = 0
for n in range(1, 11):
    print(f'第{n}次你好啊')
    print(f'我是for循环以外的代码,执行到这里时,循环已经结束了,此时的n是:{n}')
    #使用for循环遍历字符串
for m in 'abcdef':
    print(m)
#演示由于误操作造成的死循环(下面代码中,用到了列表,我们后面会讲解)
#备注:for循环还能遍历很多我们没有讲到的东西,比如:元组、列表、对象......
nums = [1,2,3]
for i in nums:
    # nums.append(4) #此行代码会造成死循环
    print(i)

以上代码中的:range(1,11)、‘abcdef’、[1,2,3]这些都是可迭代对象,我们后面还会遇到 很多可迭代对象。

对比 while 与 for

continue 与 break

continue 和 break 都可用于循环语句中(while循环、for循环都可以)它们的作用分别是:

  • continue:跳过本次循环剩余语句,直接进入下一次循环判断。
  • break:立即终止循环,不再执行后续循环。

测试continue

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#测试continue
for day in range(1, 5):
    print(f'********第{day}天********')
    print('吃饭')
    continue
    print('睡觉')
for day in range(1, 5):
    print(f'********第{day}天********')
    print('吃饭')
    if day == 2:
        continue
    print('睡觉')
for day in range(1, 5):
    if day == 2:
        continue
    print(f'********第{day}天********')
    print('吃饭')
    print('睡觉')
for day in range(1, 5):
    print(f'********第{day}天********')
    print('吃饭')
    for item in range(1, 3):
        print(f'面包{item}')
        continue
        print(f'牛奶{item}')
    print('睡觉')
for day in range(1, 5):
    print(f'********第{day}天********')
    print('吃饭')
    for item in range(1, 3):
        print(f'面包{item}')
        if day == 4 and item == 2:
            continue
        print(f'牛奶{item}')
    print('睡觉')

测试break

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
for day in range(1, 5):
    print(f'********第{day}天********')
    print('吃饭')
    break
    print('睡觉')
for day in range(1, 5):
    print(f'********第{day}天********')
    print('吃饭')
    if day == 2:
        break
    print('睡觉')
for day in range(1, 5):
    if day == 2:
        break
    print(f'********第{day}天********')
    print('吃饭')
    print('睡觉')
for day in range(1, 5):
    print(f'********第{day}天********')
    print('吃饭')
    for item in range(1,3):
        print(f'面包{item}')
        if day == 4 and item == 2:
            break
        print(f'牛奶{item}')
    print('睡觉')
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计