第 3 章 流程控制 本章要点 .条件结构 .循环结构 .循环控制语句 .综合案例 本章知识结构图 本章示例 第3章 流程控制 39 第2章主要介绍了Python的基本语法规范,包括Python的基本数据类型和常用运 算符等,并且通过程序演示了它们的用法,使用的演示程序都是从上往下顺序执行,其执 行结果也是确定的。而现实生活中往往充满了复杂性和不确定性,例如QQ 登录,如果用 户身份验证通过,则可以进入主界面查看相关信息;如果验证不通过,则会执行其他的操 作程序。也就是说,程序的执行结果是不确定的,程序会根据用户的输入情况,选择性地 执行相应的程序。要想解决这类问题,读者需要学习流程控制模块。 任何一个复杂的系统都是由顺序结构、条件结构和循环结构这三种基本流程控制结 构组成的,本章将集中进行讲解。Python语言的语句默认是按照书写顺序依次执行的, 这样的语句结构称为顺序结构。在顺序结构中,各语句按自上而下的顺序执行,语句执行 间不作任何判断。有时则需要根据特定的情况,有选择地执行某些语句,这时就需要使用 条件结构。还有一种情况,可以在给定条件下重复执行某些语句直到条件满足或者不满 足,这些语句称为循环语句。 有了顺序、条件和循环这三种基本的结构,就可以在此基础上构建复杂的程序了。本章 主要介绍Python语言的条件结构、循环结构和循环控制语句,以及其综合运用案例。 3.1 条件结构 在Python语言中主要有三类条件结构:单向if语句、双向if-else语句、多分支 if-elif-else语句。 3.1.1 单向if语句 单向if语句只有if没有else,只针对满足条件的情况做一些额外操作,如果不满足条 图3-1 单向if语句执行流程图 件则什么都不做。单向if语句的执行流程如图3-1 所示。单 向if语句的语法形式如下。 if 布尔表达式: 语句块 当执行到if语句时,判断布尔表达式是否满足,若满 足则执行语句块。 【示例3.1】 使用单向if语句进行用户年龄判断。 代码如下: .................................................................................. ................ .................................................................................. ................ 1 age = int( input ("请输入你的年龄: ")) #获取用户输入的数字字符串,并转换为整数 2 if age <0 or age >150: 3 print("输入不合法,采用默认值!") 4 age = 20 5 print(age) 视频讲解 Python数据分析实战 40 程序运行结果: .................................................................................. .......... .................................................................................. .......... 请输入你的年龄:-5 输入不合法,采用默认值! 20 程序执行示例3.1的代码时,语句块只有当表达式的值为True时才会执行,否则,程 序就会直接跳过这个语句块,执行紧跟在这个语句块之后的语句。 另外,在编写if语句块时,要严格执行缩进规则。这里的语句块可以包含多条语句, 也可以只有一条语句。当语句块由多条语句组成时,要有统一的缩进形式,否则往往会出 现逻辑错误,即语法检查没有错误,结果却非预期。 建议读者尝试调整缩进及改变print(age)语句的位置,加深对程序的理解。 3.1.2 双向if-else语句 if-else语句是一种双向结构,是对单向if语句的扩展,如果表达式结果为True,则执 行语句块1,否则执行语句块2。if-else语句的执行流程如图3-2所示。 图3-2 if-else语句执行流程图 if-else语句的语法形式如下。 if 布尔表达式: 语句块1 else: 语句块2 语法说明:当程序执行到if语句时,会判断布尔表达式是否为真,若为真,则执行语 句块1,否则执行语句块2。 【示例3.2】 使用双向if-else语句判断奇偶数。 代码如下: .................................................................................. .............. .................................................................................. .............. 1 num = int(input("请输入一个整数: ")) 2 if num %2 ==0: #对num 做模2 运算 3 print("这是一个偶数!") 4 else: 5 print("这是一个奇数!") 第3章 流程控制 41 程序运行结果: .................................................................................. ........ .................................................................................. ........ 请输入一个整数:23 这是一个奇数! 注意:①else语句块不能独立存在,需要和if语句块配合使用;②else语句块的缩进 与它所对应的if语句块缩进相同。 3.1.3 多分支if-elif-else语句 如果需要在多组操作中选择一组执行,就会用到多分支结构,即if-elif-else语句。该 语句利用一系列布尔表达式进行检查,并在某个表达式为真的情况下执行相应的代码。 if-elif-else语句的备选操作较多,但是有且只有一组操作被执行。程序执行流程如图3-3 所示。 图3-3 if-elif-else语句执行流程图 多分支if-elif-else语句语法形式如下。 if 布尔表达式1: 语句块1 elif 布尔表达式2: 语句块2 .e lif 布尔表达式n: 语句块n else: 语句块n+1 语法说明:当执行到if语句时,从表达式1开始,依次判断表达式1~n是否为真,若 为真,则执行表达式下的语句块,均不满足时则执行语句块n+1。 【示例3.3】 使用多分支if-elif-else语句判断学生成绩等级。 Python数据分析实战 42 代码如下: .................................................................................. .................................... .................................................................................. .................................... 1 score = float(input("请输入你的分数: ")) 2 if score >=90: 3 grade = "优秀" 4 elif score >=80: 5 grade = "良好" 6 elif score >=70: 7 grade = "中等" 8 elif score >=60: 9 grade = "及格" 10 else: 11 grade = "不及格" 12 print(score, "对应的等级为:", grade) 程序运行结果: .................................................................................. ........ .................................................................................. ........ 请输入你的分数:65 65.0 对应的等级为: 及格 也可以用多层次ifelse实现上述功能,但代码更烦琐。代码如下: .................................................................................. ............................................ .................................................................................. ............................................ 1 score = float(input("请输入你的分数: ")) 2 if score >=70: 3 if score >=80: 4 if score >=90: 5 grade = "优秀" 6 else: 7 grade = "良好" 8 else: 9 grade = "中等" 10 else: 11 if score >=60: 12 grade = "及格" 13 else: 14 grade = "不及格" 15 print(score, "对应的等级为:", grade) 程序运行结果: .................................................................................. ........ .................................................................................. ........ 请输入你的分数:55 55.0 对应的等级为: 不及格 第3章 流程控制 43 以上两个程序虽然都可以判断0~100之间的分数对应等级,但对于负数和超过100 的不合法输入却缺乏判断。因此可以将程序优化为条件语句嵌套。 代码如下: .................................................................................. ............................................ .................................................................................. ............................................ 1 score = float(input("请输入你的分数: ")) 2 if score <0 or score >100: 3 print("输入不合法,请重新输入!") 4 else: 5 if score >=90: 6 grade = "优秀" 7 elif score >=80: 8 grade = "良好" 9 elif score >=70: 10 grade = "中等" 11 elif score >=60: 12 grade = "及格" 13 else: 14 grade = "不及格" 15 print(score, "对应的等级为:", grade) 程序运行结果: .................................................................................. ........ .................................................................................. ........ 请输入你的分数:70 70.0 对应的等级为: 中等 条件语句嵌套,即在条件语句的if或else语句块中还存在if判断,经过优化后程序 将更加健壮。使用条件语句嵌套可以便于程序做进一步的判断。条件语句嵌套时,可以 通过缩进查看条件语句的层次关系。理论上,嵌套的层次没有限制,但实际编程中,应尽 可能避免三层以上的嵌套。 3.1.4 简化版if语句 条件判断的使用频率很高,为了简化条件判断语句的书写,Python中提供了简化版 的if语句,语法结构如下。 表达式1 if 布尔表达式 else 表达式2 语法说明:如果布尔表达式结果为True,那么整个表达式的结果就是表达式1;否 则,表达式的结果就是表达式2。例如,想将变量number1和number2中较大的值赋给 max,可以使用下面的条件表达式简洁地完成。 max = number1 if number1 >number2 else number2 【示例3.4】 编写程序,提示用户输入两个数,打印出它们中较小的数。 Python数据分析实战 44 代码如下: .................................................................................. ................ .................................................................................. ................ 1 num_1 = eval(input("请输入第一个数: ")) 2 num_2 = eval(input("请输入第二个数: ")) 3 min = num_1 if num_1 <num_2 else num_2 #返回num_1,num_2 中的较小数 45 print("两个数中较小的为:", min) 程序运行结果: .................................................................................. .......... .................................................................................. .......... 请输入第一个数:12 请输入第二个数:24 两个数中较小的为: 12 思考与练习 3.1 判断题:在Python中,表达式x> y>=z是合法的。 3.2 判断题:Python通过缩进来判断语句块是否处于分支结构中。 3.3 分析下面的程序。如果输入的score为90,输出grade是什么? 程序是否符合 逻辑,为什么? .................................................................................. ........................ .................................................................................. ........................ 1 if score >=60: 2 grade = "及格" 3 elif score >=70: 4 grade = "中等" 5 elif score >=80: 6 grade = "良好" 7 elif score >=90: 8 grade = "优秀" 3.2 循环结构 3.1节中介绍了Python的条件结构,主要包括单向的if语句、双向的if-else语句、多 分支if-elif-else语句以及条件结构的嵌套。条件语句嵌套,即在条件语句if或else中还 可以包含if语句,需要注意区分多分支if-elif-else 语句和条件语句嵌套,多分支 if-elif-else语句是一种并列关系。 循环结构就是在一定条件下重复执行某些操作。Python提供了两种类型的循环语 句:while条件式循环语句和for遍历式循环语句。 学习循环语句需要重点关注循环的开始和结束条件,尽量避免执行死循环。 视频讲解 第3章 流程控制 45 3.2.1 while循环 while循环是在条件满足的情况下循环执行某段程序,重复处理某一任务。基本语 法格式如下。 while 循环继续条件: 循环体 在while循环中,程序先判断循环继续条件,条件满足则执行循环体,执行完循环体 后,再继续判断循环继续条件,若满足条件则再执行循环体,依次往复,直到循环继续条件 不满足,才跳出循环。通常来讲,需要在循环体中对循环继续条件进行修改,以避免程序 进入死循环。 【示例3.5】 求1~100之间所有整数之和。 代码如下: .................................................................................. .................. .................................................................................. .................. 1 index = 1 #当前开始的数 2 sum = 0 #初始sum 的值为0 3 while index <=100: #循环条件 4 sum = sum +index #sum 累加 5 index = index +1 #改变循环条件的值 6 print(sum) 程序运行结果: .................................................................................. .... .................................................................................. .... 5050 在编写while循环语句时,要注意以下几点。 (1)循环体可以是一个单一的语句或一组具有统一缩进的语句。 (2)每个while循环都包含一个循环继续条件,即控制循环执行的布尔表达式。每 次循环都要计算该布尔表达式的值,如果它的计算结果为真,则执行循环体;否则,终止整 个循环并将程序控制权转移到while循环后的语句。 (3)while循环是一种条件控制循环,它是根据一个条件的真假来控制程序执行的。 3.2.2 for循环 for循环是一种遍历型的循环,它会依次对某个序列中的全体元素进行遍历,遍历完 所有元素之后便终止循环。for循环常用于循环次数确定的场景。 for循环的一般格式如下。 for 控制变量in 可遍历序列: 循环体 在for循环语句中,控制变量是一个临时变量,可遍历序列一般是一个列表或元组, Python数据分析实战 46 保存了多个元素。将序列中每个元素依次赋值给控制变量后,程序执行循环体,循环体中 一般会对控制变量进行操作。但不建议在for循环中对序列进行修改,以免导致程序结 果难以预测。 【示例3.6】 求1~100之间所有整数之和。 代码如下: .................................................................................. ............ .................................................................................. ............ 1 sum = 0 #初始sum 的值为0 2 for index in range(1, 101): #变量从1 到100 依次循环 3 sum = sum +index #循环累加sum 的值 4 print(sum) 程序运行结果: .................................................................................. .... .................................................................................. .... 5050 注意:①可遍历序列中保存了多个元素,如列表、元组、字符串等。②可遍历序列被 遍历处理,每次循环时,都会将控制变量设置为可遍历序列的当前元素,然后执行循环体。 当可遍历序列中的元素被遍历一次后,即没有元素可供遍历时,退出循环。 在Python中,for循环语句经常结合range()函数一起使用,range()函数用于生成整 数数字序列。 以下是range()函数的函数说明。 range(start, stop[, step]) 函数说明: (1)start:计数从start开始,默认为0; (2)stop:计数到stop结束,但不包括stop,该参数必填。如range(a,b)函数返回 连续整数a,a+1,…,b-2,b-1的序列; (3)step:步长,表示每次变化的数,默认为1,正数表示递增,负数表示递减; (4)start、stop、step只能为整数,不能为浮点数; (5)返回值为range类型,需通过循环遍历其元素或通过下标访问其元素。 【示例3.7】 range()函数的运用。 .................................................................................. ........ .................................................................................. ........ 1 a = range(1,100) 2 print(a) 程序运行结果: .................................................................................. .... .................................................................................. .... range(1, 100) 当需要获取上述示例中a包含的值时,需使用列表转换函数list()。 第3章 流程控制 47 【示例3.8】 使用list()函数求a的值。 .................................................................................. ........ .................................................................................. ........ 1 a = range(1,100) 2 print(list (a)) 程序运行结果: .................................................................................. ................ .................................................................................. ................ [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, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 当step设置为负数时,start设置的值要大于stop。 【示例3.9】 range()函数中step为负数的情况。 .................................................................................. ........ .................................................................................. ........ 1 a =range(20, 1, -1) 2 print(list (a)) 程序运行结果: .................................................................................. .... .................................................................................. .... [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2] 说明: (1)range(a)等价于range(0, a, 1),即从0开始不包含a,步长为1。 (2)range(a, b)等价于range(a, b, 1),即从a开始不包含b,步长为1。 【示例3.10】 求1~100之间所有偶数之和。 代码如下: .................................................................................. ............ .................................................................................. ............ 1 sum = 0 2 for i in range(0, 101, 2): #从0 开始100 为止,步长为2。 3 sum = sum +i 4 print(sum) 程序运行结果: .................................................................................. .... .................................................................................. .... 2550 在学习while语句和for语句后,不仅需要掌握它们的语法和使用规则,还要清楚它 们的区别。 【示例3.11】 使用for循环和while循环求和,了解它们之间的区别。 for循环: Python数据分析实战 48 .................................................................................. ...................... .................................................................................. ...................... 1 index = 1 2 sum = 0 3 while index <=100: 4 sum = sum +index 5 index = index +1 6 print(index) 7 print(sum) 程序运行结果: .................................................................................. ........ .................................................................................. ........ 101 5050 while循环: .................................................................................. ................ .................................................................................. ................ 1 sum = 0 2 for index in range(1, 101): 3 sum = sum +index 4 print(index) 5 print(sum) 程序运行结果: .................................................................................. ........ .................................................................................. ........ 100 5050 通过上述示例可以发现,while循环执行时,要等控制变量的值变化以后再判断,不 满足条件才退出循环。而for循环则是确定好了range()函数变量的取值范围,均取完后 再跳出循环。因此,while循环次数的结果是打印101,而for循环打印的是100。 3.2.3 循环嵌套 Python语言允许在一个循环体中嵌入另一个循环。如在while循环中可以再嵌入 while循环或for循环;在for循环中也可以再嵌入for循环或while循环。一般建议循环 嵌套不要超过三层,以保证程序的可读性。 【示例3.12】 编写程序实现九九乘法表,效果如图3-4所示。 分析:九九乘法表是一行行打印,一共有9行,第n行有n个式子,每一行中式子的 第二个操作数相同,第一个操作数从1开始不断递增,直到n为止。 代码如下: .................................................................................. ........ .................................................................................. ........ 1 for i in range(1, 10): #行数i 为1 到9 2 for j in range(1, i+1): #对每行来说,列数j 的最大值为行数i 第3章 流程控制 49 .................................................................................. .......... .................................................................................. .......... 3 print(str(j)+"*"+str(i)+"="+str(i*j), end=" " ) #将乘法运算式打印并通过结束符对齐,在每行结束时换行 4 print("") 图3-4 九九乘法表 程序运行结果: .................................................................................. .......................... .................................................................................. .......................... 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 示例中运用了双重循环。因为每行中有多列,并存在多行。第一个循环是行的循环, 第二个循环是列的循环。 图3-5 数字金字塔效果 思考与练习 3.4 判断题:在Python中,表达式28>25>=2是合法 的,且结果为True。 3.5 编写程序求1~100范围内的所有奇数之和。 3.6 编写程序打印数字金字塔。打印的行数由用户通过 键盘输入,运行效果如图3-5所示。 3.3 循环控制语句 3.2节中介绍了Python语言的循环结构,主要包括while循环和for循环,以及循环 嵌套,并通过九九乘法表示例演示了循环结构的嵌套使用。 视频讲解 Python数据分析实战 50 本节中将继续介绍在循环结构中会经常使用到的循环控制语句。 3.3.1 循环控制语句 循环控制语句主要包括break语句和continue语句。 break语句用于终止或中断整个循环语句,即使循环条件没有判断为False或者序列 还没被完全遍历完,也会停止执行循环语句。如果使用嵌套循环,break语句将跳出最深 层的循环,并开始执行最深层循环语句的下一行代码。 continue语句则是终止当次循环,忽略continue之后的语句,提前进入下一次循环。 【示例3.13】 对比break语句和continue语句执行的不同结果。 break语句代码如下: .................................................................................. .................. .................................................................................. .................. 1 sum = 0 #初始sum 值为0 2 for i in range(1, 10): #将1 到9 依次取出,赋值给临时变量i 3 if i %3 ==0: #依次判断i 是否能够整除3 4 break #中断,退出for 循环 5 sum = sum +i #求和 6 print(sum) 程序运行结果: .................................................................................. .... .................................................................................. .... 3 continue语句代码如下: .................................................................................. .................. .................................................................................. .................. 1 sum = 0 #初始sum 值为0 2 for i in range(1, 10): #将1 到9 依次取出,赋值给临时变量i 3 if i %3 ==0: #依次判断i 是否能够整除3 4 continue #满足条件则跳出当次循环 5 sum = sum +i #求和 6 print(sum) 程序运行结果: .................................................................................. .... .................................................................................. .... 27 注意:break语句和continue语句均不能单独存在,需要配合循环语句使用。 3.3.2 循环中的else语句 和其他语言不同,Python中的循环语句还可以带有else子句,else子句在序列遍历 结束(for语句)或循环条件为假(while语句)时执行,但循环被break终止时不执行。如 图3-6所示。 第3章 流程控制 51 图3-6 循环中的else语句执行流程图 带有else子句的while循环语句完整形式如下: while 循环继续条件: 循环体 else: 语句块 带有else子句的for语句完整形式如下: for 控制变量in 可遍历序列: 循环体 else: 语句块 【示例3.14】 在示例3.13中的两个示例中加上else语句。 break语句代码如下: .................................................................................. ........................ .................................................................................. ........................ 1 sum = 0 2 for i in range(1, 10): 3 if i %3 ==0: 4 break 5 sum = sum +i 6 else: #else 语句 7 print("i=",i) #如果执行else 语句,就输出i 的值 8 print(sum) 程序运行结果: .................................................................................. .... .................................................................................. .... 3 Python数据分析实战 52 在break语句中,执行break语句后直接就跳出了循环,不再执行else语句,执行结 果依然只打印3。 continue语句代码如下: .................................................................................. ........................ .................................................................................. ........................ 1 sum = 0 #初始和为0 2 for i in range(1, 10): #将1 到9 依次取出 3 if i %3 ==0: #依次判断是否能够整除3 4 continue #满足条件则跳过当次循环 5 sum = sum +i #满足条件的值求和 6 else: #else 语句 7 print("i =",i) #如果执行else 语句,就输出i 的值 8 print(sum) 程序运行结果: .................................................................................. ........ .................................................................................. ........ i = 9 27 执行continue语句时,只会跳过当次循环,会继续遍历其他元素,直至全部遍历结 束,因此会执行else语句。所以continue语句会输出两行结果,分别为i=9和27。 注意:else语句在正常执行循环体结束后才会执行,遇到break语句时,会直接跳出 循环,不再执行else语句。 思考与练习 3.7 判断题:所有的for循环语句都可以用while循环语句实现,所有的while循环 语句也都可以用for循环语句实现。 3.8 判断题:for循环能用来实现无限循环的编程。 3.9 判断题:死循环对于编程没有任何好处。 3.10 判断题:break是用来跳出当前循环层的关键字。 3.4 综合案例 3.3节介绍了Python中条件结构和循环结构的实现方式,并介绍了循环结构的控制 语句。接下来通过一个综合案例演示多种结构同时使用的情况。 【示例3.15】 编写程序实现图3-7和图3-8所示效果。程序首先提示用户输入菱形 的行数,然后打印出上下对称的菱形形状。 提示:奇数行、偶数行效果会有不同,每个星号之间有一个空格。建议上下分开 打印。 视频讲解 第3章 流程控制 53 图3-7 10行菱形效果 图3-8 9行菱形效果 参考代码如下: .................................................................................. .................................. .................................................................................. .................................. 1 rows = int ( input('请输入菱形的行数')) #将用户输入的数字字符串转换成整数 2 half = rows // 2 #整除,分为上下两部分 3 if rows %2 ==0: #进行奇偶判断 4 up = half #当为偶数时,最大行数就为输入整数的一半 5 else: 6 up = half +1 #为奇数时,上部分显示的结果比下部分多一行 78 for i in range(1,up+1): #从第一行到最大行数依次遍历 9 print(' ' * (up - i), "* " *(2*i -1)) 10 11 for i in range(half, 0, -1): #反向遍历 12 print(' ' * (up - i), "* " *(2*i -1)) #打印下半部分的结果 程序运行结果: .................................................................................. ........................ .................................................................................. ........................ 请输入菱形的行数7 * * * * * * * * * * * * * * * * * * * * * * * * * 3.5 本章小结 本章主要讲解了Python程序的流程控制,从程序的三种基本结构入手,即顺序结 构、条件结构和循环结构。顺序结构最为简单,应用也最为广泛,指程序的执行是按照语 句书写的顺序依次执行,程序结果往往也是确定的。 视频讲解 Python数据分析实战 54 条件结构也称分支结构或选择结构,是指程序执行到某个阶段时,程序会根据实际情 况选择性地执行某些语句,有些语句是不执行的。条件语句部分主要介绍了:单向if语 句,该语句先要判断是否符合某条件,符合则执行操作,不符合则什么都不执行;双向 if-else语句,该语句执行时,先对布尔表达式进行判断,当符合条件时做什么,不符合时做 什么,往往只适合于非此即彼的情况;多分支if-elif-else语句主要用于有多个选择时,但 也只执行互斥条件中的某一个。条件语句可以嵌套,即在if、else语句中再嵌入if、else语 句,当满足条件时进一步判断是否满足其他条件,需要注意其和多分支条件语句的区别。 最后还简单地介绍了简化版的if语句,它是双分支语句的简化。 在循环结构部分,讲解了条件式的while循环和遍历式的for循环。while循环是一 直判断是否满足条件,满足则执行循环体,不满足则跳出循环。而for循环是一种遍历式 的循环,是将元组或列表中的元素依次取出,然后执行循环体,所有元素均取完后则结束 循环。通常使用for循环时,会配合range()函数使用。range()函数主要用于生成整数 序列,其中包含三个参数:从哪开始,到哪结束,步长为多少。range()函数默认从0开 始,不包含最后一个数,默认步长为1。 循环控制语句主要包括break语句和continue语句。遇到break语句不管是否满足 循环条件,都会直接退出。continue语句表示继续,跳过当次循环,继续下次循环,循环并 没有结束,只是跳到下一个循环。和其他语言不同的是,Python在循环语句中还可以加 入else语句。else语句是循环正常结束后执行的语句,而break语句是让循环非正常 结束。最 后通过综合案例———菱形打印,学习了综合使用条件语句和循环语句。菱形打印 的关键点在于打印的行数由用户输入,奇偶行数打印的形状有偏差,从而需要先进行奇偶 判断,而且在打印时,不能单独每行打印,需要发现规律进而书写循环语句。 课后练习 3.1 阅读下列程序代码片段,写出代码片段的执行结果。 代码片段① .................................................................................. ...................... .................................................................................. ...................... 1 sum = 0 2 for i in range(10): 3 if i %4 ==0: 4 break 5 sum +=i 67 print(sum) 代码片段② .................................................................................. ........ .................................................................................. ........ 1 sum = 0 2 for i in range(10): 第3章 流程控制 55 .................................................................................. ................ .................................................................................. ................ 3 if i // 4 ==2: 4 continue 5 sum +=i 67 print(sum) 代码片段③ .................................................................................. .......................... .................................................................................. .......................... 1 sum = 0 2 i = 0 3 while i <10: 4 if i %4 ==0: 5 continue 6 sum +=i 7 i +=1 89 print(sum) 代码片段④ .................................................................................. ...................... .................................................................................. ...................... 1 i = 1 2 while i <5: 3 i +=1 4 else: 5 i *=2 67 print(i) 3.2 编写程序,判断某一年份是闰年还是平年。年份由用户通过键盘输入,运行效 果如图3-9所示(闰年的标准:能被4整除,但是不能被100整除;或者能被400整除。其 他都为平年)。 图3-9 练习3.2的程序执行结果 3.3 编写程序,求一个自然数除了自身以外的最大约数。自然数由用户通过键盘输 入,运行效果如图3-10所示。 图3-10 练习3.3的程序执行结果 Python数据分析实战 4 编写程序对整数进行质因数分解,并输出结果。整数由用户通过键盘输入,运 行效果如图3-11 所示。 3. 图3-11 练习3. 4的程序执行结果 5 查阅资料,理解并熟悉Pyn编程之禅,并将其运用在后面的课程学习中。 3.tho 课后习题课后习题 讲解(一) 讲解(二) 56 第 4 章 常用数据结构 本章要点 . 列表 . 元组 . 字符串 . 集合 . 字典 本章知识结构图