知识拓展
1.Python中的位运算符与运算法则
位运算是把数字转换为二进制形式来进行计算的,Python中的位运算符主要包括&(位与)丨(位或)(位异或)~(位取反) << (左移位) >> (右移位)。Python中的位运算符与运算法则如电子活页2-7所示。
2.日历模块的内置函数
日历模块的内置函数都是与日历相关的,如用于输出某月的字符月历的month(。日历模块有多种方法来处理年历和月历。日历模块的内置函数如电子活页2-8所示。
例如,输出某年某月的月历:
>>>import calendar
>>>ca \left|=\right| calendar.month(2024,7)
>>>print("以下输出 2024年7月的月历:")
>>>print(cal)
运行结果如下。
以下输出2024年7月的月历:
July 2024
Mo Tu We Th Fr Sa Su
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
知识测验
请读者扫描二维码,进入本模块在线测试,检验学习成效。
模块3逻辑运算与流程控制

流程结构主要包括选择结构和循环结构。选择结构是根据条件表达式的结果选择运行不同语句的流程结构;循环结构则是在一定条件下反复运行某段程序的流程结构,被反复运行的语句块称为循环体,决定循环是否终止的判断条件称为循环条件。流程控制语句的条件表达式主要为比较(关系)表达式和逻辑表达式。本模块主要讲解Python中的比较表达式、逻辑表达式和流程控制语句。
知识入门
1.Python的程序结构
计算机程序主要有3种基本结构:顺序结构、选择结构、循环结构。如果没有流程控制,则整个程序都将按照语句的编写顺序(从上至下的顺序)来运行,而不能根据需求决定程序运行的顺序。
2.Python 的流程控制
流程控制对任何一门编程语言来说都是非常重要的,因为它提供了控制程序运行的方法。
Python选择语句通过条件表达式的值(True或者False)来决定运行的语句块。
可以通过图3-1来简单了解选择语句的运行过程。如果条件表达式的值为True,则执行语句块,否则不执行语句块。

这里的条件表达式通常使用比较(关系)表达式或逻辑表达式。
3. range()函数
Python中的range()函数可创建一个整数列表,一般用在for循环中。
range()函数的基本格式如下。
range(start, end , step)
其中,start 用于指定起始值,可以省略,如果省略则从O开始;end 用于指定结束值(但不包括
该值,如range(5)得到的值为 _{0~4} ,不包括5),不能省略;step用于指定增量(也称为“步长”),两个数之间的增量可以省略,如果省略则表示增量为 1,如range(1,5)得到的值为 1、2、3、4。
使用range()函数时,如果只指定一个参数,那么该参数表示end,即结束值;如果指定两个参数,则表示的是start和end,即起始值和结束值;只有指定3个参数时,最后一个参数才表示增量。
循序渐进
3.1Python的比较运算符及其应用
3.1.1Python的比较运算符与比较表达式
为关系运算符,用于对变量或表达式的结果进行大小比较、真假
Python的比较运算符及应用实例如表3-1所示,所有比较运算符的运行结果返回1表示真,返回0表示假,这分别与布尔值True和False等价,True和False的首字母必须大写。表3-1中的实例假设变量×为21、变量y为10,即 x=21 y{=}10
运算符 | 名称 | 实例 | 说明 | 运行结果 |
三 | 等于 | x == y | 比较x和y两个对象是否相等 | False |
!= | 不等于 | x!=y | 比较×和y两个对象是否不相等 | True |
> | 大于 | x>y | 比较×是否大于y | True |
< | 小于 | x | 比较×是否小于y | False |
>= | 大于或等于 | x>=y | 比较×是否大于或等于y | True |
<= | 小于或等于 | x<=y | 比较×是否小于或等于y | False |
运算符 *_{==}*" 是两个 *_{=^{59}} ,属于比较运算符,而运算符 *_{=}* 是赋值运算符。Python3已不支持运算符 *ε>" ,可以使用运算符“ !=^{\mathfrak{N}} 代替。
以上实例的运行结果如下。
比较运算符与比较对象(变量或表达式)构建的比较表达式也称为关系表达式。比较表达式通常在选择语句和循环语句中作为“条件表达式”。
3.1.2逻辑值测试
在 Python 中,所有的对象都可以进行逻辑值测试。以下情况的逻辑值测试结果为False,即在选择语句和循环语句中表示条件不成立。
(1) False、None。
(2)数值中的零,包括0、0.0、虚数0。
(3)空序列,包括空字符串、空列表、空元组、空字典。
(4)自定义对象的实例,该对象的__bool__(方法返回False,或者__len__(方法返回 0。
【实例3-1】演示逻辑值测试
实例3-1的代码如下。
test=None
if test:print("None 为逻辑真")
else:print("None 为逻辑假")
实例3-1的运行结果如下。
None 为逻辑假
在Python中,要判断特定的值是否存在于序列中,可以使用运算符in;要判断特定的值是否不存在于序列中,可以使用运算符notin。
【任务3-1】应用比较运算符设置查询条件表达式
【任务描述】
(1)在PyCharm集成开发环境中创建项目Unit03。
(2)在项目 Unit03 中创建 Python 程序文件 task3-1.py。
(3)参考图3-2所示的京东商城图书高级搜索界面中的多种查询选项,按书名、出版社、定价、出版时间等查询条件表达式。
(4)有一本出版的图书,其主要信息如下:图书名称为《HTML5 ^{\circ+} CSS3网页设计与制作实战(项目式)第5版)微课版)》,出版社为人民邮电出版社,价格为69.80元,出版日期为2023年2月。分别以书名、出版社、定价、出版时间为查询选项,设置相应的查询条件表达式。
(5)在PyCharm 集成开发环境中运行程序文件task3-1.py,输出查询条件表达式的值。
【任务实施】
1.创建PyCharm项目Unit03

成功启动PyCharm后,在指定位置“D:PyCharmProject\”创建PyCharm 项目Unit03。
2. 创建 Python 程序文件 task3-1.py
在 PyCharm 项目 Unit03 中新建 Python 程序文件task3-1.py 后,PyCharm主窗口中显示程序文件task3-1.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
3.编写Python程序代码
在新建程序文件task3-1.py的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-1.py的代码如电子活页3-1所示。
单击工具栏中的“全部保存”按钮局,保存程序文件task3-1.py。
4.运行Python程序
在PyCharm主窗口中选择“运行”选项,在打开的菜单中选择“运行”命令。在弹出的“运行”对话框中选择“task3-1”选项,程序文件task3-1.py开始运行。
程序文件task3-1.py的运行结果如下。
判断图书名称:TrueFalse
判断出版社:False True
判断价格1:True
判断价格2:False
判断价格3:True
判断价格4:False
判断出版日期1:True
判断出版日期2:False
判断出版日期3: True
判断出版日期4:False
3.2Python的逻辑运算符及其应用
逻辑运算符常用于对True和False两种布尔值进行运算,运算后的结果通常也是一个布尔值。在某些情况下,逻辑运算符也可以对非布尔值进行操作,此时运算结束后得到非布尔值。
3.2.1Python的逻辑运算符与逻辑表达式
Python支持逻辑运算符,Python的逻辑运算符及应用实例如表3-2所示。表3-2中的实例假设变量x为21、y为10、z为0,即 x=21 y{=}10 {z=0}
运算符 | 名称 | 逻辑表达式 | 结合方向 | 说明 | 实例 | 运算结果 |
and | 逻辑与 | xand y | 从左到右 | 如果x为False或O,xand y返回False或O,否则返回 y的计算值 | xand y | 10 |
x and z | 0 | |||||
z and x | 0 | |||||
or | 逻辑或 | xory | 从左到右 | 如果x为True,则返回x的 值,否则返回y的计算值 | xory | 21 |
× or Z | 21 | |||||
not | 逻辑非 | notx | 从右到左 | 如果×为True,则返回 False。如果x为False,则 返回True | Z or x | 21 |
not x | False | |||||
noty | False | |||||
not(xandy) | False | |||||
not (x or y) not z | False True |
3.2.2Python运算符优先级
所谓运算符的优先级,是指在Python程序中哪一个运算符先运算,哪一个运算符后运算,与数学中的四则运算应遵循的“先算乘除、后算加减”是一个道理。
Python运算符的运算规则如下:优先级高的运算符先运行,优先级低的运算符后运行,同一优先
级的运算符则按照从左到右的顺序运行。可以使用圆括号“0”改变优先级,圆括号内的运算符最先运行。编写程序时尽量使用圆括号来主动控制运算顺序,以免运算顺序不确定或发生错误。
Python中所有运算符优先级的排列顺序如表3-3所示。对于在同一行中的运算符,其结合方向决定求值顺序。
序号 | 运算符 | 说明 |
1 | ** | 幂(最高优先级) |
2 | ~、+、- | 位取反、正号和负号 |
3 | *、1、%、I/ | 算术运算符:乘、除、取余和取整除 |
4 | +、二 | 算术运算符:加、减 |
5 | >>、<< | 位运算符:右移位、左移位 |
6 | & | 位运算符:位与 |
7 | 1、 | 位运算符:位或、位异或 |
8 | <=、<>、>= | 比较运算符 |
9 | ==、!= | 比较运算符:等于、不等于 |
10 | =、+=、-=、*=、**=、/=、//=、%= | 赋值运算符 |
11 | is、is not | 身份运算符 |
12 | in、not in | 成员运算符 |
13 | not、or、and | 逻辑运算符 |
【实例3-2】演示Python运算符优先级的操作
实例3-2的代码如下。
a=20 |
b=10 |
C=15 |
d=5 |
e=0 |
e=(a+b)*c/d #(30 *15)/5 print("(a +b) *c / d 运算结果为:",e) |
e = ((a +b)*c) / d #(30 * 15)/5 print("(a +b)*c) / d 运算结果为:",e) |
(/L)*0# :(p/)*(q+)=θ print("(a+b)*(c/ d)运算结果为:",e) |
:p/(0*q)+=θ #20 +(150/5) |
print("a + (b *c) / d 运算结果为:",e) |
实例3-2的运行结果如下。 |
(a+b)*c/d 运算结果为:90.0 |
(a +b)*c)/ d 运算结果为:90.0 |
(a+b)*(c/d)运算结果为:90.0 |
a+(b*c)/d运算结果为:50.0 |
【实例3-3】演示逻辑运算符的优先级
逻辑运算符and拥有更高优先级,实例3-3的代码如下。
z=False |
ifx ory and z: |
print("YES") |
else: |
print("NO") |
实例3-3的运行结果如下。 YES |
【任务3-2】应用比较运算符与逻辑运算符设置条件表达式
【任务描述】
(1)在项目 UnitO3 中创建 Python 程序文件 task3–2.py
(2)参考图3-2所示的京东商城图书高级搜索界面中价格区间和出版时间区间的设置,分别按价格、出版日期设置区间查询条件表达式。
(3)有一本出版的图书,其主要信息如下:图书名称为《HTML5+CSS3网页设计与制作实战》出版社为人民邮电出版社,价格为59.80元,出版日期为2024年11月。分别以图书名称与出版社、价格与出版日期为查询选项,设置相应的查询条件表达式。
(4)在PyCharm集成开发环境中运行程序文件task3-2.py,输出区间查询条件表达式的值。
【任务实施】
1. 创建 Python 程序文件 task3-2.py
在PyCharm 项目Unit03中新建Python程序文件task3-2.py后,PyCharm主窗口中显示程序文件task3-2.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
2.编写Python程序代码
在新建程序文件task3-2.py的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-2.py的代码如电子活页3-2所示。
单击工具栏中的“全部保存”按钮局,保存程序文件task3-2.py。
3.运行 Python 程序
在PyCharm主窗口中选择“运行”选项,在打开的菜单中选择“运行”命令。在弹出的“运行”对话框中选择“task3-2”选项,程序文件task3-2.py开始运行。
程序文件task3-2.py的运行结果如下。
判断价格范围1:True判断价格范围2:False判断出版日期范围1:True判断出版日期范围2:False判断出版日期范围3:True判断图书名称与出版社:True判断价格与出版日期:True
3.3Python的选择结构及其应用
Python的选择结构是根据条件表达式的结果选择运行不同语句的流程结构,选择语句也称为条件
语句,即按照条件表达式的值选择运行不同的代码片段。Python中的选择语句主要有3种形式:if语句、if...else语句和if...elif...else语句。在Python中可使用if...elif...else多分支语句或者if语句的嵌套结构实现多重选择。
3.3.1if语句及其应用
Python中使用if关键字来构成选择语句,if语句的一般形式如下。
if<条件表达式>: <语句块> |
使用if语句时,条件表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式。 如果条件表达式的值为True,则运行“<语句块>”;如果条件表达式的值为False,则跳过“<语句块》”, 继续运行后面的语句。 |
例如,输入如下代码。 |
>>>password= input("请输入密码:") 运行结果如下。 |
请输入密码:123456 |
输入代码如下。 |
>>> if password =="123456": |
print("输入的密码正确") |
运行结果如下。 输入的密码正确 |
【实例3-4】演示Python中if语句的用法 实例3-4的代码如下。 |
var1 = 100 if var1: print("1-if 条件表达式的值为 True") print(var1) var2 = 0 if var2: print("2-if 条件表达式的值为 True") print(var2) |
print("Good bye!") 实例3-4的运行结果如下。 |
1-if条件表达式的值为True 100 |
Good bye! 从运行结果中可以看到因为变量var2为0,所以对应的if下的语句没有运行。 |
说明 使用if语句时,如果只有一条语句,则语句块可以直接写在“:”右侧,如以下代码。 if a>b : print("a 大于 b") 但是为了保持程序代码的可读性,不建议这样写,仍然分两行写,即 if a>b : print("a 大于 b") |
【任务3-3】应用if语句实现用户登录
【任务描述】
(1)在项目Unit03中创建Python 程序文件task3-3.py。(2)假设目前的用户状态为False,应用if语句实现用户登录,并输出“你好,欢迎登录”的欢迎信息。
【任务实施】
1. 创建 Python 程序文件 task3-3.py
在PyCharm项目Unit03中新建Python程序文件task3-3.py后,PyCharm主窗口中显示程序文件task3-3.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
2.编写Python程序代码
在新建程序文件task3-3.py的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-3.py的代码如下。
userState := False if not userState: print("你好,欢迎登录")
单击工具栏中的“全部保存”按钮局,保存程序文件task3-3.py。
3.运行 Python 程序
在PyCharm主窗口中选择“运行”选项,在打开的菜单中选择“运行”命令。在弹出的“运行”对话框中选择“task3-3”选项,程序文件task3-3.py开始运行。
你好,欢迎登录
3.3.2if...else语句及其应用
Python 中,if..else语句的一般形式如下。
if<条件表达式>:<语句块1>
else:<语句块 ^{2>}
if...else语句主要解决二选一的问题。使用if..else语句时,条件表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式。如果条件表达式的值为True,则运行if语句后面的语句块1,否则运行else后面的语句块2。
【实例3-5】演示Python中if...else语句的用法
实例3-5的代码如下。
password = input("请输入密码:")
if password ==^{11}123456^{\prime\prime} print("输入的密码正确")
else: print("输入的密码错误")
实例3-5运行后,输入密码的结果如下。
请输入密码:666输入的密码错误
【任务3-4】应用if...else语句实现用户登录
【任务描述】
(1)在项目 Unit03 中创建 Python 程序文件 task3-4.py。(2)假设用户名为“jdchenchkps PLUS",目前用户状态为 True,应用if..else 语句实现用户登录,并输出用户名称。
【任务实施】
1. 创建 Python 程序文件 task3-4.py
在 PyCharm 项目Unit03 中新建Python 程序文件task3-4.py后,PyCharm主窗口中显示程序文件task3-4.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
2.编写Python程序代码
在新建程序文件 task3-4.py 的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-4.py的代码如下。
user ~eq 'jdchenchkps PLUS"
userState \mathrel{\mathop:} True
if userState: print(user)
else: print("你好,请登录免费注册")
单击工具栏中的“全部保存”按钮目,保存程序文件task3-4.
3.运行 Python 程序
在PyCharm主窗口中选择“运行”选项,在打开的菜单中选择“运行”命令。在弹出的“运行”对话框中选择“task3-4”选项,程序文件task3-4.py开始运行。
程序文件task3-4.py的运行结果如下。
3.3.3if...elif...else语句及其应用
Python 中,if...elif...else语句的一般形式如下。
if<条件表达式 \upharpoonleft <语句块1>
elif<条件表达式 ^{2>} <语句块2>
else:<语句块V>Python中用 elif 代替了else if,所以多分支选择结构的关键字为if、elif 和 else。
if...elif...else语句运行的规则如下。
条件表达式1和条件表达式2可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式。如果条件表达式1的值为True,则运行语句块1;如果条件表达式1的值为False,则判断条件表达式2,如果条件表达式2的值为True,则运行语句块2;如果条件表达式1和条件表达式2的值都为False,则运行语句块 {N}_{\circ}
【实例3-6】演示Python中if...elif...else语句的用法
实例3-6的代码如下。
score \mathrel{\mathop:}=\mathrel{\86}
grade=
if score> \mathrel{\mathrel{\mathop:}}=\mathrel{\90} grade :=: 'A"
elif score> \scriptstyle\mathtt{-80} grade :=: 'B"
elif score> \scriptstyle\mathtt{-60} grade :=^{11}C^{"}
else:grade="D"
print("考试成绩为:{},等级为:{。".format(score,grade))
实例3-6的运行结果如下。
考试成绩为:86,等级为:B。
注意

(1)Python中,if语句条件表达式后面要使用冒号“:”,表示接下来是条件表达式值为
True时要运行的语句块。(2)使用缩进来划分语句块,相同缩进的语句在一起组成一个语句块。(3)if和elif都需要判断条件表达式的真假,而else不需要判断;另外,elif和else
都必须和if一起使用,不能单独使用。(4)Python中没有switch...case语句。
【任务3-5】应用if...elif...else语句计算分期付款的服务费
【任务描述】
(1)在项目 Unit03 中创建 Python 程序文件 task3-5.py。
(2)在京东商城购买商品时可以选择京东白条分期付款方式,分期的期数有1期(即不分期)、3期、6期、12期、24期,每期收取的服务费分别为0元、11.53元、5.87元、3.03元、1.61元,如图3-3所示。应用if...elif...else语句计算白条分期付款的服务费并输出,小数位保留2位。

【任务实施】
1. 创建 Python 程序文件 task3-5.py
在 PyCharm 项目Unit03 中新建 Python 程序文件task3-5.py 后,PyCharm 主窗口中显示程序
文件task3-5.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
2.编写Python程序代码
在新建程序文件 task3-5.py 的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-5.py的代码如下。
tem \lvert= int(input("请选择分几期付款(1、3、6、12、24):")
if term 1==1 .serviceFee \mathrel{\mathop:}=\mathrel{style0}
elif term \scriptstyle|==3 serviceFee = term \*11.53
elif term \scriptstyle|==6 serviceFee = term \* 5.87
elifterm ==12 serviceFee = term \* 3.03
elifterm \scriptstyle|==24 serviceFee = term \* 1.61
print("服务费为:{:.2f}元".format(serviceFee))
单击工具栏中的“全部保存”按钮目,保存程序文件task3-5.py。
3.运行 Python 程序
在PyCharm主窗口中选择“运行”选项,在打开的菜单中选择“运行”命令。在弹出的“运行”对话框中选择“task3-5”选项,程序文件task3-5.py开始运行。
程序文件task3-5.py运行后,输入期数的结果如下。请选择分几期付款(1、3、6、12、24):6
服务费为:35.22元
3.3.4if语句的嵌套结构
前面介绍了3种形式的选择语句,这3种形式的选择语句可以互相进行嵌套。if选择语句可以有多种嵌套方式,编写程序时可以根据需要选择合适的嵌套方式,例如,if语句中可以嵌套if...else语句,if...else语句可以嵌套if...else语句,if...elif...else语句可以嵌套另一个if...elif..else语句。if语句的嵌套一定要严格控制好不同级别语句块的缩进量。
Python中,if语句的嵌套结构的一般形式如下。
if<条件表达式1-1>:<语句块1-1>if<条件表达式 2-1>:<语句块2-1>elf<条件表达式 ^{2-2>} <语句块 _{2-2>} else:<语句块 ^{2-3>}
elif<条件表达式 1-2> <语句块 _{1-2>}
else:<语句块1-3>
【实例3-7】演示if语句的嵌套结构的用法
【任务3-6】应用if选择语句计算网上购物的运费与优惠金额等
【任务描述】
从京东商城购买4本Python编程图书《Python从入门到项目实践(全彩版)》,该书原价为99.80元。京东商城针对不同等级的会员有不同的优惠价格,对于普通用户的优惠价格为77.80元,对于PLUS会员的优惠价格为75.50元。购买图书满148元可以直减5元,满299元可以直减15元;另外,购买图书每满100元,还可以直减50元现金,相关优惠信息如图3-4所示。
应用if选择语句计算网上购物的运费与优惠金额等

在京东商城购买图书的运费收取标准如下:如果订单金额小于49元,则收取基础运费6元;如果订单金额大于或等于49元,则免收基础运费。
(1)在项目UnitO3 中创建 Python 程序文件 \scriptstyle{task3-6.py} 。
(2)编写程序,应用if选择语句的多种形式,计算并输出购买4本Python编程图书《Python从入门到项目实践(全彩版)》的应付总商品金额、运费、返现金额、优惠金额、优惠总额、实付总额。
【任务实施】
1. 创建 Python 程序文件 task3-6.py
在 PyCharm 项目 UnitO3中新建 Python 程序文件task3-6.py后,PyCharm 主窗口中显示程序
文件task3-6.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
2.编写Python程序代码
在新建程序文件task3-6.py的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-6.py的代码如电子活页3-3所示。单击工具栏中的“全部保存”按钮目,保存程序文件task3-6.py。
3.运行 Python 程序
在 PyCharm主窗口中选择“运行”选项,在打开的菜单中选择“运行”命令。在弹出的“运行”对话框中选择“task3-6”选项,程序文件task3-6.py开始运行。
程序文件task3-6.py的运行结果如下。
4件商品,应付总商品金额:¥307.20 运费:¥0.00 返现金额:-¥150.00 优惠金额:-¥15.00
商品已享用4次优惠,优惠总额:-¥165.00 实付总额:¥142.20

【任务3-7】应用if选择语句验证用户名和密码实现登录 =
【任务描述】
(1)在项目Unit03中创建Python 程序文件task3-7.py。(2)编写程序,应用if选择语句的多种形式,验证用户名与密码是否正确,并根据验证情况分别输出相应的提示信息。

【任务实施】
应用if选择语句验证用户名和密码实现登录
1. 创建 Python 程序文件task3-7.py
在PyCharm 项目Unit03 中新建Python 程序文件task3-7.py后,PyCharm主窗口中显示程序文件task3-7.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
2.编写Python程序代码
在新建程序文件task3-7.py的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-7.py的代码如电子活页3-4所示。

单击工具栏中的“全部保存”按钮,保存程序文件task3-7.py。
3.运行Python程序
在PyCharm主窗口中选择“运行”选项,在打开的菜单中选择“运行”命令。在弹出的“运行”对话框中选择“task3-7”选项,程序文件task3-7.py开始运行。
程序文件task3-7.py的运行结果如下。
用户名长度为:4密码长度为:6成功登录!
for循环语句及其应用
循环结构是在一定条件下反复运行某段程序的流程结构,被反复运行的语句块称为循环体,决定循环是否终止的判断条件称为循环条件。
Python中的循环语句有for和while 两种类型。Python中的for循环也称为计次循环,for循环语句可以遍历任何序列数据,如列表或者字符串。
3.4.1for 循环语句
for循环通常适用于枚举或遍历序列,以及迭代对象中的元素,一般应用于循环次数已知的情况下。
1.for循环语句的基本格式
for循环语句的基本格式如下。
for<循环变量>in<序列结构>:<语句块>
其中,循环变量用于保存取出的值;序列结构为要遍历或迭代的序列对象,如字符串、列表、元组等;语句块为一组被重复运行的语句。
for循环语句的运行流程如图3-5所示。
Python 中 for 循环的实例如下。

>>>publisher = ["人民邮电出版社","高等教育出版社","电子工业出版社”>>>for item in publisher:
print(item)
运行结果如下。
人民邮电出版社高等教育出版社电子工业出版社
2.使用内置range(函数生成序列数据
吏用内置range(函数生成序列数据,然后使用for语句遍历序列
运行结果如下。
0 12 3 4
说明 在 Python 3 中,使用 print()函数时,如果想让输出的内容在一行上显示,并且显示的数据之间留有空格,则需要加上“,end=""”
也可以使用range()函数指定区间的值生成序列数据,然后使用for语句遍历序列,例如:
>>>for item in range(5,9) : print(item, end=" ")
运行结果如下。
5678
也可以使用range()函数指定数据序列的起始值、结束值、增量,然后使用for 语句遍历序列,例如:
>>>for item in range(1, 10, 3) : print(item, end="") |
运行结果如下。 |
147 |
range(函数中指定的增量也可以是负数,例如: |
>>>for item in range(10, 1, -3) : |
print(item, end="") 运行结果如下。 |
1074 |
【实例3-8】结合range()函数、len()函数遍历一个列表 实例3-8的代码如下。 |
publisher=[人民邮电出版社","高等教育出版社","电子工业出版社”] for item in range(len(publisher): |
print(item+1, publisher[item]) 实例3-8的运行结果如下。 |
1人民邮电出版社 2高等教育出版社 3电子工业出版社 |
3.4.2 for...else 语句
Python中的for循环语句可以有else语句,它在for循环穷尽序列并导致循环终止时被运行,但循环被break语句终止时不运行。
for...else语句的基本格式如下。
【实例3-9】演示应用循环结构判断质数
实例3-9的代码如下。
for n in range (2,8) for m in range (2,1) \mathsf{f}_{sf{n}}%m==0 \mathsf{p r i n t}(\mathsf{n},\mathsf{\ell^{\ast}},\mathsf{m},\mathsf{\ell^{\ast\ast}},\mathsf{n}/\mathsf{m}) breakelse:print(n,是质数)#循环中没有找到元素
实例3-9的运行结果如下。
2是质数3是质数4=2*2 5是质数6=2*3 7是质数
【任务3-8】应用for循环语句显示进度的百分比
【任务描述】
(1)在项目Unit03中创建Python程序文件task3-8.py。
(2)编写程序,应用for循环语句实现在一行中显示下载百分比进度。
【任务实施】
1. 创建 Python 程序文件 task3-8.py
在 PyCharm 项目Unit03 中新建Python 程序文件task3-8.py后,PyCharm主窗口中显示程序文件task3-8.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
2.编写Python程序代码
在新建程序文件 task3-8.py 的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-8.py的代码如下。
import time
for x in range(101): mystr = "百分比:“ +\sin(x)+{}^{\prime\prime}% print(mystr,end = " print("\b" \* (len(mystr) ^{*2} ),end = "",flush \lvert= True) time.sleep(0.5)
单击工具栏中的“全部保存”按钮局,保存程序文件task3-8.py。
程序文件 task3-8.py 的代码解读如下。
(1)range(101):使用range()函数产生一个数字列表,从0开始,到100结束。
(2) str *({\sf x}) :把 x 变量转换成字符串。
(3) print(mystr,end = ""):输出字符串之后不换行,即 end \equiv^{1111}
(4)print("b"\*(len(mystr) ^{*}2 ,end = "",flush = True):其中,"\b"\*(len(mystr) ^*2 表示输出“\b”这个转义字符的次数为“len(mystr) \ast2^{\ast} 。len()函数得到字符串长度,为什么要乘以2呢?原因是输出的字符串是中文,而1个中文字符的占位长度相当于2个英文字符的占位长度,所以如果字符串是英文字符,则可以不乘以2,但是中文字符必须乘以2。“flush = True”表示开启缓冲区,“\b”转义字符表示退格功能,相当于在编辑文件的时候按“BackSpace”键,以从光标位置向前删除一个字符。
(5)time.sleep(0.5):让程序暂停 0.5\varsigma
这样就能实现每次运行print()之后, sqrt[6]{0} ”将一行内的字符都删除,这就是要获得字符串长度的原因。
3.在Windows的“命令提示符”窗口中运行Python程序
打开Windows的“命令提示符”窗口,然后在提示符后面输入以下命令。python D:PyCharmProject\Unit03\task3-8.py
按“Enter”键即可运行程序文件task3-8.py。进度为 28%时的运行结果如图3-6 所示,进度为100% 时的运行结果如图3-7所示。
百分比:28%
百分比:100%
图3-6进度为28%时的运行结果
图3-7进度为 100% 时的运行结果
3.5while循环语句及其应用
Python中的while循环是指通过一个条件表达式来控制是否继续反复运行循环体中的语句块。while循环也称为条件循环,可以一直进行循环,直到条件不满足时才结束循环。
3.5.1while 循环语句
Python 中,while 循环语句的一般形式如下。
while<条件表达式>:
<语句块>
当while循环语句的条件表达式的值为True时,运行循环体中的语句块;运行一次后重新判断条件表达式的值,直到条件表达式的值为False,退出while循环。
while循环语句的运行流程如图3-8所示。


意(1)Python中,while循环语句的条件表达式后面要使用冒号“:”,表示接下来是条件表达式的值为True时要运行的语句块。(2)使用缩进来划分语句块,相同缩进的语句在一起组成一个语句块。(3)Python中没有do...while循环语句。
【实例3-10】演示使用while循环语句计算 \mathord{\uparrow}~\mathord{\uparrow}0 的总和实例3-10的代码如下。
n=10
sum =0
number =1
while number <=n sum = sum ^+ number number +=1
print( "1~. 的总和为: \{\}^{\prime} '.format(n,sum))
实例 3~10 的运行结果如下。1~10 的总和为:55
3.5.2while...else语句
Python中的while循环语句也可以有else子句,它在while循环语句的条件表达式的值为False而导致循环终止时被运行,但循环被break语句终止时不会运行。换句话说,while循环的条件表达式的值为False时,即当while循环没有被break语句终止时,运行else后面的语句块2。else语句可以理解为“正常”完成循环的奖励。
while...else语句的基本格式如下。
while<判断条件>:<语句块 \upharpoonleft
else:<语句块 ^{2>}
【实例3-11】演示应用循环输出数字,并判断其大小
实例3-11的代码如下。
count =0
while count <5 print (count,"小于 5" \mathsf{c o u n t=c o u n t+1}
else: brint (count."大干或等干 5")
实例3-11的运行结果如下。
0小于5
1小于5
2小于5
3小于5
4小于5
5大于或等于5
3.5.3循环中的跳转语句
循环中的break语句用于跳出并结束当前的整个循环,运行循环后的语句。continue语句用于结束当次循环,继续运行后续次数的循环。
1.for循环中使用break语句
break语句用于提前终止当前的for循环,一般与if语句搭配使用,表示在某种条件下跳出循环。如果是嵌套循环,则使用break语句跳出最内层的循环。
for循环中使用break语句的基本格式如下。
for<循环变量>in<序列结构>:<语句块>if<条件表达式>:break
其中,条件表达式用于判断何时调用break语句跳出循环。
【实例3-12】演示for循环中使用break语句
实例3-12的代码如下。
for item in publisher: |
ifitem=="电子工业出版社": |
print("跳出 for 循环") |
break |
print("循环数据:"+item) |
else: |
print("没有循环数据") |
print("循环结束") |
实例3-12的运行结果如下。 |
循环数据:人民邮电出版社 |
循环数据:高等教育出版社 |
跳出for循环 循环结束 le,运行break语包跳出循环 |
2.while循环中使用break语句
使用 break语句可以跳出for或 while循环。如果for或 while 循环终止,则任何循环对应的 else语句块都不会运行。
while循环中使用break语句的基本格式如下。
while<条件表达式 1> <语句块> if<条件表达式 ^{2>} break
其中,条件表达式2用于判断何时调用break语句跳出循环。
【实例3-13】演示while循环中使用break语句
实例3-13的代码如下。
实例3-13的运行结果如下。
3.for循环中使用continue语句
continue语句只能终止本次循环而提前进入下一次循环。它一般会与if语句搭配使用,表示在某种条件下跳过当前循环的剩余语句,然后继续运行下一次循环。如果是嵌套循环,则continue 语句将只
Python程序设计任务驱动式教程 (微课版)(第2版) |
跳过最内层循环中的剩余语句。 for循环中使用continue语句的基本格式如下。 |
for<循环变量》in<序列结构>: <语句块> |
if<条件表达式>: |
continue 其中,条件表达式用于判断何时调用continue语句终止本次循环。 |
【实例3-14】演示for循环中使用continue语句 |
实例3-14的代码如下。 |
publisher=["人民邮电出版社","高等教育出版社","电子工业出版社","清华大学出版社"] for item in publisher: if item =="电子工业出版社" print("终止本次循环") continue print("循环数据:"+ item) print("循环结束") 实例3-14的运行结果如下。 循环数据:人民邮电出版社 循环数据:高等教育出版社 终止本次循环 循环数据:清华大学出版社 循环结束 4.while循环中使用continue语句 while循环中使用continue语句可以跳过当前循环中的剩余语句,然后继续进行下一次循环。 while循环中使用continue语句的基本格式如下。 while<条件表达式1>: <语句块> if<条件表达式2>: continue 其中,条件表达式2用于判断何时调用continue语句终止本次循环。 【实例3-15】演示while循环中使用continue语句 实例3-15的代码如下。 n=5 while n > 0: n-= 1 if n == 2: continue (u)uud print("循环结束。") 实例3-15的运行结果如下。 4 3 |
【任务3-9】应用while循环语句实现网上抢购倒计时功能
【任务描述】
(1)在项目 Unit03 中创建 Python 程序文件task3-9.py。(2)编写程序,应用while 循环语句与if..else语句的嵌套结构实现网上抢购倒计时功能。
【任务实施】

1. 创建 Python 程序文件 task3-9.py
在 PyCharm 项目 Unit03 中新建Python 程序文件task3-9.py后,PyCharm主窗口中显示程序文件task3-9.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。
2.编写Python程序代码
在新建程序文件task3-9.py的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-9.py的代码如电子活页3-5所示。单击工具栏中的“全部保存”按钮局,保存程序文件task3-9.py。

3.运行 Python 程序
在PyCharm 主窗口中选择“运行”选项,在打开的菜单中选择“运行”命令。在弹出的“运行”对话框中选择“task3-9”选项,程序文件task3-9.py开始运行。
程序文件task3-9.py的运行结果的部分内容如下。
距结束6时37分7秒 距结束6时37分6秒 距结束6时37分5秒 距结束6时37分4秒 距结束6时37分3秒 距结束6时37分2秒 距结束6时37分1秒 距结束6时37分0秒 距结束6时36分59秒 距结束0时0分5秒 距结束0时0分4秒 距结束0时0分3秒 距结束0时0分2秒 距结束0时0分1秒 抢购已结束
【任务3-10】综合应用循环结构的嵌套结构实现倒计时功能
【任务描述】
(1)在项目Unit03中创建Python程序文件task3-10.py。(2)编写程序,综合应用 while 循环语句、for 循环语句、if语句与 break 语句及嵌套结构实现倒计时功能。
【任务实施】
1. 创建 Python 程序文件 task3-10.py
在 PyCharm 项目Unit03 中新建 Python 程序文件 task3-10.py 后,PyCharm主窗口中显示程序文件task3-10.py的代码编辑窗口,在该程序文件的代码编辑窗口中自动添加了模板内容。

2.编写Python程序代码
在新建程序文件task3-10.py的代码编辑窗口的已有模板内容下面输入程序代码,程序文件task3-10.py的代码如电子活页3-6所示。
程序文件task3-10.py的代码
3.在Windows的“命令提示符”窗口中运行Python程序
打开Windows的“命令提示符”窗口,然后在提示符后面输入以下命令。
按“Enter”键即可运行程序文件task3-10.py。图3-9 所示为倒计时1时59 分 47 秒的运行结果,图3-10所示为倒计时0时54分56秒的运行结果。
倒计时:1时59分47秒
倒计时:0时54分56秒
图3-9倒计时为1时59分47秒的运行结果
图3-10倒计时为0时54分56秒的运行结果
知识拓展
1.循环嵌套
在 Python中,允许在一个循环体中嵌入另一个循环语句,这称为循环嵌套结构。for循环和while循环可以进行循环嵌套。循环嵌套如电子活页3-7所示。
2.无限循环
可以通过设置while循环语句的条件表达式的值永远为True来实现无限循环,也称为永真循环,无限循环对在服务器上实现客户端的实时请求非常有用。
【实例3-16】演示无限循环
实例3-16的代码如下。
while True : #条件表达式的值永远为Truenum = input("输入一个数字:")print("所输入的数字是:", num)
实例3-16运行后,输入数字的结果如下。
输入一个数字:3
所输入的数字是:3
输入一个数字:2
所输入的数字是:2
输入一个数字:
在PyCharm 集成开发环境中可以按“Ctrl+F2”组合键来终止当前的无限循环。

使用while循环语句时,一定要添加将条件表达式的值改变为False的代码,否则将产生死循环。
3. pass 语句
Python中的pass语句是空语句。pass 语句“不做任何事情”,一般用作占位语句,用于保持程序结构的完整性。pass语句如电子活页3-8所示。
知识测验
请读者扫描二维码,进入本模块在线测试,检验学习成效。

Python Programming Task Driven Tutorial