购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 程序控制

任何一个复杂的系统都是由三种基本结构组成:顺序结构、分支结构、循环结构。下面对这几种结构进行介绍。

2.5.1 顺序结构

顺序结构最简单,程序从上到下依次执行,就如同生活中一条笔直的马路,一路畅通无阻,结构如图2-16所示。

图2-16 顺序结构图

【例2-9】 顺序结构实例演示。

     '''把苹果装冰箱,分几步'''
     print('******程序开始******')
     print('1.打开冰箱门')
     print('2.把苹果放进去')
     print('3.把冰箱门关上')
     print('******程序结束******')
     运行程序,输出如下:
     ******程序开始******
     1.打开冰箱门
     2.把苹果放进去
     3.把冰箱门关上
     ******程序结束******

2.5.2 分支结构

分支结构是指当程序执行到某步时,需根据实际情况选择性地执行某部分代码,就如同生活中的十字路口,需要根据具体情况选择走哪条路,每次只能选择一条路,不可能同时走多条路。

Python中的分支结构可以分为三种:单分支、双分支以及多分支。

1.单分支(if语句)

if语句只有if没有else,只针对满足条件的情况进行一些额外操作,其执行流程如图2-17所示。

if语句的语法格式为

     if语句表达式:
         语句块

其中:

·语句块只有当表达式的值为True时才会执行;否则,程序就会直接跳过这个语句块,去执行紧跟在这个语句块之后的语句。

·这里的语句块,既可以包含多条语句,也可以只有一条语句。当语句块由多条语句组成时,要有统一的缩进形式,否则就会出现逻辑错误,即语法检查没错,但是结果却非预期。

2.双分支(if-else语句)

if-else语句是一种双选结构,如果表达式结果为True则执行语句块1,否则执行语句块2。if-else语句的执行流程如图2-18所示。

图2-17 if语句执行流程

图2-18 if-else语句执行流程

if-else语句的语法格式为

     if布尔表达式:
         语句块1
     else:
         语句块2

其中:

·else语句不能独立存在。

·else语句的缩进与它所对应的if语句缩进相同。

3.多分支(if-elif-else语句)

如果需要在多组操作中选择一组执行,就会用到多选结构,即if-elif-else语句。该语句利用一系列布尔表达式进行检查,并在某个表达式为True的情况下执行相应的代码。if-elif-else语句的备选操作较多,但是有且只有一组操作被执行,其执行流程如图2-19所示。

if-elif-else语句的语法格式为

     if条件表达式1:
         语句体1
     elif条件表达式2:
         语句体2
     …
     elif条件表达式n:
         语句体n
     else:
         语句体n+1

图2-19 if-elif-else语句执行流程

【例2-10】 演示了数字猜谜游戏。

     number=7
     guess=-1
     print("数字猜谜游戏!")
     while guess!=number:
         guess=int(input("请输入你猜的数字:"))
     
         if guess==number:
             print("恭喜,你猜对了!")
         elif guess<number:
             print("猜的数字小了...")
         elif guess>number:
             print("猜的数字大了...")

运行程序,输出如下:

     数字猜谜游戏!
     请输入你猜的数字:8
     猜的数字大了...
     请输入你猜的数字:5
     猜的数字小了...
     请输入你猜的数字:6
     猜的数字小了...
     请输入你猜的数字:7
     恭喜,你猜对了!
4.match-case语句

Python 3.10增加了match-case的条件判断,不需要再使用一连串的if-else来判断了。match后的对象会依次与case后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,“_”可以匹配一切。

match-case语法格式如下:

     match subject:
         case<pattern_1>:
            <action_1>
         case<pattern_2>:
            <action_2>
         case<pattern_3>:
            <action_3>
         case_:
            <action_wildcard>

其中,case_:类似于C和Java中的default:,当其他case都无法匹配时,匹配这条,保证永远会匹配成功。

【例2-11】 对比if-elif-else和match-case语句。

2.5.3 循环结构

循环结构是指重复执行某些代码,直到条件不满足为止,就如同生活中的盘山公路,一圈圈绕行,直到到达目的地为止。

Python中实现循环结构的语句主要有两种:while循环和for循环。

1.while循环

while循环是一种判别式循环,当条件为True时,执行循环体;当条件为False时结束循环,执行循环后的操作。流程图如图2-20所示。

图2-20 while循环流程图

while循环的语法格式为

     while循环继续条件:
         循环体

其中:

·循环体可以是一个单一的语句或一组具有统一缩进的语句。

·每个循环都包含一个循环继续条件,即控制循环执行的布尔表达式,每次都计算该布尔表达式的值,如果它的计算结果为True,则执行循环体;否则,终止整个循环并将程序控制权转移到while循环后的语句。

·while循环是一种条件控制循环,它是根据一个条件的真假来控制的。

【例2-12】 利用while循环打印1~100的所有数字。

     #循环的初始化条件
     num=1
     #当num小于100时,会一直执行循环体
     while num<100:
         print("num=",num)
         #迭代语句
         num+=1
     print("循环结束!")

运行程序,输出如下:

     num=1
     num=2
     num=3
    ...
     num=97
     num=98
     num=99
     循环结束!

从结果中会发现,程序只输出了1~99,却没有输出100。这是因为,当循环至num的值为100时,此时条件表达式为假(100<100),当然就不会再去执行代码块中的语句,因此不会输出100。

注意,在使用while循环时,一定要保证循环条件有变成假的时候,否则这个循环将成为一个死循环。所谓死循环,指的是无法结束循环的循环结构,例如将上面while循环中的num+=1代码注释掉,再运行程序会发现,Python解释器一直在输出“num=1”,永远不会结束(因为num<100一直为True),除非强制关闭解释器。

图2-21 for循环流程图

2.for循环

for循环是一种遍历型的循环,它会依次对某个序列中全体元素进行遍历,遍历完所有元素之后便终止循环,其流程图如图2-21所示。

for循环的语法格式为:

     for控制变量in可遍历序列:
     循环体

其中:

·关键字in是for循环的组成部分,而非运算符in。

·“可遍历序列”中保存了多个元素,如列表、元组、字符串等。

·“可遍历序列”被遍历处理,每次循环时,都会将“控制变量”设置为“可遍历序列”的当前元素,然后执行循环体。当“可遍历序列”中的元素被遍历一遍后,即没有元素可供遍历时,退出循环。

【例2-13】 利用for循环输出九九乘法口诀表。

     for i in range(1,10):
         for j in range(1,i+1):
             print(f'{j} * {i}={i * j}',end='\t')
         print()

运行程序,输出如下: MJBbQqkpLVJETwCMiWH/sGqyGpG3v3XZCT5k14Rn+GtewV2z8w72sMWZp4qlW9+p

     1 * 1=1
     1 * 2=2 2 * 2=4
     1 * 3=3 2 * 3=6 3 * 3=9
     1 * 4=4 2 * 4=8 3 * 4=12 4 * 4=16
     1 * 5=5 2 * 5=10 3 * 5=15 4 * 5=20 5 * 5=25
     1 * 6=6 2 * 6=12 3 * 6=18 4 * 6=24 5 * 6=30 6 * 6=36
     1 * 7=7 2 * 7=14 3 * 7=21 4 * 7=28 5 * 7=35 6 * 7=42 7 * 7=49
     1 * 8=8 2 * 8=16 3 * 8=24 4 * 8=32 5 * 8=40 6 * 8=48 7 * 8=56 8 * 8=64
     1 * 9=9 2 * 9=18 3 * 9=27 4 * 9=36 5 * 9=45 6 * 9=54 7 * 9=63 8 * 9=72 9 * 9=81
点击中间区域
呼出菜单
上一章
目录
下一章
×

打开