![Python程序设计案例教程:从入门到机器学习(微课版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/597/26793597/b_26793597.jpg)
2.4 程序控制结构
2.4.1 顺序控制语句
顺序控制是指计算机在执行这种结构的程序时,从第一条语句开始,按从上到下的顺序依次执行程序中的每一条语句。
1.输出语句
在Python中使用print()函数输出数据。
(1)直接输出
字符串、数值、列表、元组、字典等类型都可以用print()函数直接输出。
例如:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P30_14565.jpg?sign=1739503756-sksLNsT0FZK1lz8CdyOdPjyITghdJPNC-0-3c8640725c2a335ae7119131465d76a6)
(2)格式化输出
print()函数可以使用%格式化输出数据。常用的格式化输出符号如表2.2所示。
表2.2 常用的格式化输出符号
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-T30_14567.jpg?sign=1739503756-Otmv8c0YgvY20lgYAxmLujvVrFdVxkPz-0-e7e4718c6e01085f30d8f57da9827f9d)
【例2-1】格式化输出及控制换行输出示例。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P30_14569.jpg?sign=1739503756-XsP64Wci7fbppxTsGtJjLAKWx5kA6vXU-0-4f9f951ee0d4766f6aa5f65b7d2ee42a)
将程序保存为ex2_1.py。运行程序:
python ex2_1.py
程序运行结果如下:
15 3 12.8 中国 厦门 拉萨 3.1416 1 2 3 0 1 2 3 4 5
2.输入语句
在Python中,使用input()函数输入数据。input()函数只能输入字符数据。当需要输入数值型数据时,可以使用eval()函数将字符转换为数值。
【例2-2】从键盘上输入两个数,并计算两数之和。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P31_14576.jpg?sign=1739503756-PNRjeZFoWbpEjYI8tZ8qJqAodHDVC4BD-0-304fb2898ca086f44139d723cd010251)
将程序保存为ex2_2.py。运行程序:
python ex2_2.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P31_14580.jpg?sign=1739503756-PuQ5zrVJ4VuEY6m3N81u8A5qrwdhgsLD-0-74c2fa23a1f3f7c644a9efabc0f8ccb3)
【例2-3】交换两个变量的值。
在编写程序时,有时需要把两个变量的值互换,Python在交换值的运算时不需要用中间变量。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P32_14582.jpg?sign=1739503756-2jYESwEYVRvk3GktBb8WuLp9Ps63MlQZ-0-43528e8a5c56ddfd7ac3cebd34e9f41b)
将程序保存为ex2_3.py。运行程序:
python ex2_3.py
程序运行结果如下:
a,b = 3 5 a,b = 5 3
2.4.2 if选择语句
1.单分支选择结构
if语句用于实现选择结构。它判断给定的条件是否满足,并根据判断结果决定执行某个分支的程序段。对于单分支选择语句,其的语法格式为:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P32_16156.jpg?sign=1739503756-XsJ3SCtoNiAlI7YtCHPgZKg2AYLTHsaY-0-b24fa35d46df22310f343e6e8aa24c01)
这个语法的意思是,当条件表达式给定的条件成立时(true),就执行其中的语句块;若条件不成立(false),则跳掉这部分语句,直接执行后续语句,其流程如图2.1所示。
【例2-4】从键盘任意输入两个整数,按从小到大的顺序依次输出这两个数。
从键盘上输入的两个数a、b,如果a<b,本身就是从小到大排列的,可以直接输出。但如果a > b,则需要交换两个变量的值,其算法流程如图2.2所示。
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P32_14587.jpg?sign=1739503756-Vgf6j5Q3FiRAFfASFmUVKhTVwlOKxJtH-0-1580950222c485b342638a5ef48407c7)
图2.1 单分支的if条件语句
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P32_14588.jpg?sign=1739503756-AmemaDA80U15GrpTS0zPh1wFSTYwCe4R-0-8d80c23226453ff0bd0dd934ec815cfd)
图2.2 按从小到大排列的顺序输出两数
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P33_14592.jpg?sign=1739503756-VvoXCmmvTQJ1UIQNrPxIPK66AmSDrmRO-0-3d27ef8ea29f3204618ab0cfe7017aab)
将程序保存为ex2_4.py。
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P33_14593.jpg?sign=1739503756-G0n9LDwNbmXj5JLWOozkMlZlowhbAZYm-0-434692b28b34008cb59a7b4822f1a638)
【例2-5】对给定的三个数,求最大数的平方。
设一变量max存放最大数,首先将第一个数a放入变量max中,再将max与其他数逐一比较,较大数则存放到max中;当所有数都比较结束之后,max中存放的一定最大数,其算法流程如图2.3所示。
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P33_14594.jpg?sign=1739503756-vNKtHuAQm315lUOWJV1CyWitdfgVLEYH-0-713530761c3a3c82bb96704ca58f8254)
图2.3 求三个数中最大数的平方
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P33_14596.jpg?sign=1739503756-rzG7nd9r5RkfTMeI7C6Zfyf0ZOYMsqPL-0-bc5eba308a4ccdf5908ec02612119574)
将程序保存为ex2_5.py。
程序运行结果如下:
最大数的平方为:81
2.双分支选择结构
有时,需要在条件表达式不成立时执行不同的语句,可以使用另一种双分支选择结构的条件语句,即if-else语句。双分支选择结构的语法格式为:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P34_14599.jpg?sign=1739503756-tTn8kDWcuBswKOjVW8xayi2wUAFmaN65-0-9f2acad0b1dcf975da3ebb010f267d51)
这个语法的意思是,当条件式成立时(true),执行语句块1;否则(else),就执行语句块2。对于双分支选择类型的条件语句,其流程如图2.4所示。
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P34_14600.jpg?sign=1739503756-INoY4BY1gp4WvI1Uo1wfjnhi7Roj2Ca4-0-4855e73cf43b2e6add383c5004829ff8)
图2.4 双分支选择结构的条件语句
if-else语句的扩充格式是if…else if。一个if语句可以有任意个if…else if部分,但只能有一个else。
【例2-6】计算
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P34_14604.jpg?sign=1739503756-PnCrOIuGIEfEMEl7hA6ofAALgEFPhGLK-0-76e4c880e9112884973e0dc4641facaf)
将程序保存为ex2_6.py。
运行程序:
python ex2_6.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P35_14611.jpg?sign=1739503756-TVp9vKaSoNQYNBzkgTWvWpZGuBI2X41j-0-ac56b12c96a0d31bdb461af7378a44b0)
3.多分支选择结构
当处理多种条件问题时,就要使用多分支结构,其语法格式为:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P35_14612.jpg?sign=1739503756-oRofhvfmaFVdBGy873vfCJacRKMfE6DK-0-194015b6edaa4f2631432fc578368be8)
【例2-7】将百分制转换为五级记分制。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P35_6317.jpg?sign=1739503756-PnP9Ipqhl9jaIjt2XuNHquSTYD7T4h2c-0-f3c1162b9badd58c0cb3907446dffdd3)
将程序保存为ex2_7.py。
运行程序:
python ex2_7.py
程序运行结果如下:
请输入百分制成绩:83 83对应的5分制为:4
2.4.3 循环语句
在程序设计过程中,经常需要将一些功能按一定的要求重复执行多次,多次重复执行的这一过程称为循环。
循环结构是程序设计中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。
Python中的循环语句包括for语句和while语句。
1.for循环语句
for循环语句一般形式的语法结构如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P36_14615.jpg?sign=1739503756-eKEQVu4AJhnkxM8AQ09OUwI1Goa0TnMO-0-4fb466cc04d80d39b43660b436b0aa25)
for语句的执行过程是这样的:首先执行循环变量赋初值,完成必要的初始化工作;再判断循环变量是否小于终值,若循环条件能满足,则进入循环体中执行循环体的语句;执行完循环体之后,循环变量增加一个步长值,以改变循环条件,这一轮循环就结束了。第二轮循环又从判断增加步长值后的循环变量是否小于终值开始,若循环条件仍能满足,则继续循环;否则跳出整个for语句,执行后续语句。for循环语句的执行过程如图2.5所示。
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P36_14616.jpg?sign=1739503756-Cr8uUkQcih5y7WYwAvoI7IcM7tDLSoaW-0-4c5019ee507f9063aa5c7193a54f6cb2)
图2.5 for循环语句的执行过程
当循环变量的步长值为1时,可以省略,即可写成:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P36_14617.jpg?sign=1739503756-eYYhmigKcT2l4kHfbdzNQ3iFoXrhNYWB-0-67358acb24be839fa203a694e9e43ce4)
【例2-8】求从1加到9的和。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P37_14620.jpg?sign=1739503756-DWZ9ZCwTjC2NtNiHToj032pvdwXZTAxC-0-619ad0d8e00bc13c04de1222b15f420c)
将程序保存为ex2_8.py。
运行程序:
python ex2_8.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P37_14624.jpg?sign=1739503756-mdRMX2bCTD8dQ5OLMb1XaluEJzcnsfmv-0-fc4c15b759b752c6f5fa9ed7535b86d9)
在for循环中,循环变量的值在循环体内发生改变,并不会影响循环次数。
【例2-9】在循环体内改变循环变量的值,观察循环次数。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P37_14626.jpg?sign=1739503756-NV567s09teJZVoYhwuEO6NE5o0NT85cN-0-6e30e9dea01f61a9d6c7f4587c360452)
将程序保存为ex2_9.py。
运行程序:
python ex2_9.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P37_14630.jpg?sign=1739503756-9orDrGUIeYstdSGd8X5szKfXmdcOZVlw-0-c37906ea8c486db0343b39a4b27516df)
但是,如果把程序改写成:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P38_14633.jpg?sign=1739503756-5xOrONgjhgfy0M3TWlHTauIUIWffvRsk-0-31fa02ff270962a6f87dee4eeef82b9d)
则程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P38_14635.jpg?sign=1739503756-sfYHpRMIZLgnxSIY84BRfggIvEAaY2ZY-0-4ca2741c881a498e31531badd8f70a60)
在for循环中,可以使用continue语句结束本次循环,也可以使用break语句跳出循环体,从而结束整个循环。
【例2-10】计算10以内的偶数和。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P38_14637.jpg?sign=1739503756-Tj13TewPrIRO6EsrZfdPAl9FAhkkCmqm-0-d8653af2affa1745db3a2aac54df103f)
在本例中,“i%2 == 1”表示循环变量i为奇数。当i取奇数时,结束本次循环,继续取下一个数来判断;若i为偶数,则计算求和。
将程序保存为ex2_10.py。
运行程序:
python ex2_10.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P38_14641.jpg?sign=1739503756-bwccDJdn60EAOdTtY9iE1uG1CSTYENLn-0-2475a19e99686c57ae7e1acbe7485770)
【例2-11】设有列表s = ['Pytho', 'java', 'C++/C', 'PHP', 'JavaScript'],应用循环遍历列表所有元素,并在屏幕上显示。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P39_14643.jpg?sign=1739503756-2yFhrpsuRqjpCertLW0ca9cEVy2EjqrN-0-85225d94935fd10e50d7eb325312bc09)
将程序保存为ex2_11.py。
运行程序:
python ex2_11.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P39_14647.jpg?sign=1739503756-r6wyPQWSP5q9U5L5ts5z673gW7XUG2QN-0-db8bd51804185925d9725eb832f795d6)
2.while语句
while循环语句一般形式的语法结构如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P39_14648.jpg?sign=1739503756-ovWQjan0X8goTjKFTGzx5x3uhUVD3Euk-0-f3066a8750bb13c8375f7f03d3fabdf9)
while语句的执行过程是这样的:首先判断循环条件是否为true,若循环条件为true,则执行循环体中的语句;若为false,则终止循环。while循环的流程图如图2.6所示。
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P39_14649.jpg?sign=1739503756-AL7nhxvMFQYLvJdk3Gsu5AdiRAkGs3kk-0-48a3a103fabbd324964ea5ed673c9303)
图2.6 while循环结构的流程图
【例2-12】求10!。
计算n!,由于pn=n! = n * (n – 1) * (n – 2 ) * … * 2 * 1 = n * (n – 1)! ,因此可以得到递推公式:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P39_14651.jpg?sign=1739503756-eQ4P3AcXD2HCHxsHc9rauwBRwY01PEXp-0-d6e56c7f42f3b74c23df85f7dc721b41)
可以用一个变量p来存放推算的值,当循环变量n从1递增到10时,用循环执行p=p*n,每一次p的新值都是原p值的n倍,最后递推求到10!。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P40_14654.jpg?sign=1739503756-XP5GNgLqZJAJhdahMzIQ2QJl4J2lOCLp-0-7765085b0cc77f5f9bc0fb4bf0404dc4)
将程序保存为ex2_12.py。
运行程序:
python ex2_12.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P40_14658.jpg?sign=1739503756-DNnUPCyAvpirB8rznQwGLiCgHtzImntd-0-238b5e3c879e019e548de9759dde35ac)
3.循环嵌套
循环可以嵌套,在一个循环体内包含另一个完整的循环,叫作循环嵌套。循环嵌套运行时,外循环每执行一次,内层循环要执行一个周期。
【例2-13】应用循环嵌套,编写乘法九九表程序。
算法分析:用双重循环控制输出,用外循环变量i控制行数,i为1~9。内循环变量j控制列数,由于i * j = j * i,故内循环变量j为1~i。外循环变量i每执行一次,内循环变量j执行i次。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P40_14660.jpg?sign=1739503756-wjNS14f9R2X8mw8OTVLJzdzAq7B89KMm-0-8e7b97189707bd34e2bd3f39fc3c6974)
其中,print()中的end=" "表示不换行输出。
将程序保存为ex2_13.py。
运行程序:
python ex2_13.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P41_14664.jpg?sign=1739503756-HPJFuda0MHpyNliGtKTs264QuUjpulG0-0-68f05351458010084847ee8dca75f080)
【例2-14】应用循环嵌套打印出由“*”组成的直角三角形图形,如图2.7所示。
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P41_14665.jpg?sign=1739503756-G0mhY6iYW8e7SFkOrqB7GhtF15s9SQFd-0-6b2a2f1a4d45ad40ace633473507d59f)
图2.7 由“*”组成的直角三角形图形
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P41_14667.jpg?sign=1739503756-A9i3z7OM5mXciVaVAonLlq0TGjCjApVn-0-5fca76dcf963187e41af89c5f3037f4d)
将程序保存为ex2_14.py。
运行程序:
python ex2_14.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P41_14671.jpg?sign=1739503756-hIm8DGSe2kpk548b0vK3HRVgj7G0dMwD-0-190069664c5fa3cd171bb3c1996401c6)