Python 学习笔记(第三期)——流程控制:综合自测题

Python 学习笔记(第三期)——流程控制:综合自测题 Python 学习笔记第三期——流程控制综合自测题 自测说明适用章节第三期流程控制条件判断与循环结构题型设置填空题10题、判断题10题、代码改错题5题、代码补全题4题、简答题4题、实战输出题4题难度梯度⭐基础→ ⭐⭐中等→ ⭐⭐⭐综合建议时长60~90 分钟答案位置本自测题末尾附完整答案与解析一、填空题每空 2 分共 20 分请将正确答案填写在横线上。Python 中if语句判断条件的末尾必须添加 ________符号。⭐if-elif-else结构中多个条件按顺序判断一旦某个条件成立后续的elif和else将会被 ________。⭐在while循环中如果循环条件永远为True且循环体内没有 ________ 语句就会形成无限循环死循环。⭐range(5)生成的整数序列是 ________。⭐for循环中遍历字典时默认遍历的是字典的 ________键/值/键值对。⭐在循环嵌套中break语句只能终止 ________所在层/所有层的循环。⭐continue语句的作用是 ________ 当前这一次循环中剩余的代码直接进入下一次循环。⭐判断一个年份是否为闰年的条件表达式为(year % 400 0) or (year % 4 0 and year % 100 ! 0)其中year % 400 0判断的是年份能被 ________ 整除。⭐while循环可以配合 ________ 子句在循环正常结束未被break打断时执行特定代码。⭐⭐使用for循环和range()生成 10, 8, 6, 4, 2 这组数正确的写法是for i in range(________):。⭐⭐二、判断题每题 2 分共 20 分判断下列说法是否正确正确的打✓错误的打✗。 在if-elif-else结构中条件的书写顺序不影响最终结果。 while循环的条件表达式可以是任意返回布尔值的表达式。 for i in range(10):循环中i的取值包含 0 到 10 的所有整数含10。 在for循环中直接修改正在遍历的列表是安全的操作。 break和continue都可以用于for循环和while循环。 嵌套循环中内层循环的break会同时终止外层循环。 while...else结构中当while循环被break打断时else子句不会执行。 if语句中可以嵌套if语句但不能嵌套for或while循环。 range(1, 10, 2)生成的序列包含数字 1, 3, 5, 7, 9。 input()函数返回的数据类型是字符串如果用于数值比较需要先进行类型转换。三、代码改错题每题 4 分共 20 分以下每段代码均有 1~2 处错误请指出错误并给出修正后的代码。第 1 题⭐——if语句缺少冒号pythonscore 85 if score 60 print(及格) else print(不及格)第 2 题⭐——while循环变量未更新死循环pythoni 1 while i 5: print(i)第 3 题⭐⭐——条件判断顺序导致逻辑错误pythonscore 95 if score 60: print(合格) elif score 90: print(优秀) else: print(不合格)第 4 题⭐⭐——for循环中错误地修改列表pythonnumbers [1, 2, 3, 4, 5] for num in numbers: if num % 2 0: numbers.remove(num) print(numbers)第 5 题⭐⭐——break与continue的误用python# 以下代码希望输出 1 到 10 中除 5 以外的所有数字 i 0 while i 10: i 1 if i 5: break print(i)四、代码补全题每题 5 分共 20 分请根据注释提示补全以下代码中缺失的部分。第 1 题⭐使用while循环打印 1 到 10 的平方pythoni 1 while ________: # 补全循环条件 print(f{i} 的平方是{i ** 2}) ________ # 补全循环变量更新第 2 题⭐⭐使用for循环和range()计算 1 到 100 中所有奇数的和pythontotal 0 for i in range(________): # 补全 range() 参数只取奇数 ________ # 补全累加语句 print(f1到100中所有奇数的和为{total})第 3 题⭐⭐判断一个数字是否为质数pythonnum 17 is_prime True if num 2: is_prime False else: for i in range(2, num): if ________: # 补全判断条件如果 num 能被 i 整除 is_prime False ________ # 补全提前退出循环的语句 print(f{num} 是质数{is_prime})第 4 题⭐⭐打印指定高度的数字金字塔pythonheight 5 for i in range(1, height 1): # 打印空格使金字塔居中 for j in range(________): # 补全空格数量 print( , end) # 打印数字从 1 到 i for k in range(1, i 1): print(k, end) # 打印数字从 i-1 到 1 for k in range(________): # 补全倒序数字 print(k, end) print()五、简答题每题 5 分共 20 分第 1 题⭐简述if、if-else、if-elif-else三种条件结构的适用场景并各举一个实际开发中的应用例子。第 2 题⭐⭐请对比while循环和for循环的异同说明它们各自适合什么场景并各举一个例子。第 3 题⭐⭐请解释break和continue的区别并说明为什么在循环中使用break时while...else的else子句不会执行。第 4 题⭐⭐⭐请说明range(start, stop, step)三个参数的含义并写出使用range()生成以下序列的代码序列 A0, 1, 2, 3, 4, 5序列 B2, 4, 6, 8, 10序列 C10, 8, 6, 4, 2序列 D1, 3, 5, 7, 9六、实战输出题每题 5 分共 20 分请写出以下程序的运行结果。第 1 题⭐写出以下代码的运行结果。pythonfor i in range(1, 6): for j in range(1, i 1): print(*, end) print()第 2 题⭐⭐写出以下代码的运行结果。pythonn 5 for i in range(1, n 1): for j in range(n - i): print( , end) for k in range(2 * i - 1): print(*, end) print()第 3 题⭐⭐写出以下代码的运行结果。pythonfor i in range(3): if i 1: continue for j in range(3): if j 1: break print(fi{i}, j{j})第 4 题⭐⭐⭐写出以下代码的运行结果。pythonnum 6 factorial 1 i 1 while i num: factorial * i if factorial 20: break i 1 print(fi{i}, factorial{factorial}) 答案与解析一、填空题答案题号答案解析1:冒号if、elif、else、for、while等语句末尾都需要冒号2跳过忽略一旦某条件成立后续条件不再判断3break没有break且条件永不为False时形成死循环40, 1, 2, 3, 4range(n)生成 0 到 n-1 的序列5键keysfor key in dict:遍历的是字典的键6所在层break只终止它所在的循环层外层循环继续7跳过不执行本次循环剩余的代码8400能被400整除是闰年的充分条件9elsewhile...else中else在循环正常结束时执行1010, 0, -2或10, 1, -2或11, 1, -2等range(10, 0, -2)最准确生成 10, 8, 6, 4, 2二、判断题答案题号答案解析1✗顺序至关重要应从严格到宽松否则会逻辑错误2✓条件表达式需要返回布尔值可以是任意复杂表达式3✗range(10)生成 0~9不包含 104✗遍历时修改列表会导致索引错乱或漏掉元素5✓break和continue适用于所有循环结构6✗break只终止内层循环外层不受影响7✓break打断循环时else子句跳过不执行8✗if中可以嵌套任何语句包括for和while9✓start1, stop10, step2→ 1,3,5,7,910✓input()返回值类型为str需用int()或float()转换三、代码改错题答案第 1 题⭐错误if和else后面缺少冒号:。修正pythonscore 85 if score 60: # 添加冒号 print(及格) else: # 添加冒号 print(不及格)第 2 题⭐错误循环变量i没有更新导致i永远为 1条件永远为True形成死循环。修正pythoni 1 while i 5: print(i) i 1 # 添加循环变量更新第 3 题⭐⭐错误条件顺序错误。score95时先判断score60成立输出合格后面的elif score90被跳过无法输出优秀。修正将更严格的条件放在前面。pythonscore 95 if score 90: # 先判断最严格的条件 print(优秀) elif score 60: print(合格) else: print(不合格)第 4 题⭐⭐错误在遍历列表的同时修改列表删除元素会导致索引错乱——当删除2后列表变为[1,3,4,5]num继续取下一个元素时可能会跳过3。修正遍历列表的副本。pythonnumbers [1, 2, 3, 4, 5] for num in numbers[:]: # 遍历副本 if num % 2 0: numbers.remove(num) print(numbers) # 输出[1, 3, 5]第 5 题⭐⭐错误误用break当i 5时直接终止了循环导致 6~10 都没有输出。应该用continue跳过i5。修正python# 输出 1 到 10 中除 5 以外的所有数字 i 0 while i 10: i 1 if i 5: continue # 改为 continue跳过本次循环 print(i)四、代码补全题答案第 1 题⭐pythoni 1 while i 10: # 补全循环条件 print(f{i} 的平方是{i ** 2}) i 1 # 补全循环变量更新第 2 题⭐⭐pythontotal 0 for i in range(1, 101, 2): # 补全 range()从1到100步长2 total i # 补全累加语句 print(f1到100中所有奇数的和为{total})第 3 题⭐⭐pythonnum 17 is_prime True if num 2: is_prime False else: for i in range(2, num): if num % i 0: # 补全判断条件如果 num 能被 i 整除 is_prime False break # 补全提前退出循环的语句 print(f{num} 是质数{is_prime})第 4 题⭐⭐pythonheight 5 for i in range(1, height 1): # 打印空格使金字塔居中 for j in range(height - i): # 补全空格数量 print( , end) # 打印数字从 1 到 i for k in range(1, i 1): print(k, end) # 打印数字从 i-1 到 1 for k in range(i - 1, 0, -1): # 补全倒序数字 print(k, end) print()运行效果height5text1 121 12321 1234321 123454321五、简答题答案第 1 题⭐结构适用场景示例if只需要处理条件成立的情况不成立时直接跳过判断用户是否已登录已登录则显示欢迎语if-else需要分别处理条件成立和不成立两种情况判断成绩是否及格及格输出通过否则输出不通过if-elif-else需要处理三个或以上互斥的条件分支根据分数段评定等级优秀(≥90)、良好(≥75)、合格(≥60)、不合格(60)python# if 示例 if user_logged_in: print(欢迎回来) # if-else 示例 if score 60: print(通过) else: print(不通过) # if-elif-else 示例 if score 90: grade 优秀 elif score 75: grade 良好 elif score 60: grade 合格 else: grade 不合格第 2 题⭐⭐对比维度while循环for循环循环方式条件循环基于布尔条件判断遍历循环基于可迭代对象适用场景循环次数不确定、需要反复执行直到条件变化循环次数确定、需要遍历序列/集合/range典型应用用户输入校验、游戏主循环、无限循环服务器遍历列表/字符串、文件逐行读取、生成器处理退出风险容易造成死循环需手动更新条件有明确的终止边界python# while 示例反复询问直到输入合法 while True: age input(请输入年龄) if age.isdigit(): age int(age) break print(输入无效请重新输入) # for 示例遍历列表中的所有元素 fruits [苹果, 香蕉, 橙子] for fruit in fruits: print(f我喜欢吃{fruit})第 3 题⭐⭐break立即终止整个循环跳出循环体不再执行后续迭代。continue跳过本次迭代的剩余代码立即开始下一次迭代。while...else的else子句不执行的原因while...else结构中的else子句设计的语义是——“如果循环正常结束没有被break打断则执行else中的代码”。当break被执行时意味着循环是“非正常”退出的因为找到了目标或遇到了错误此时程序控制权被直接移出循环不会再检查else子句。python# break 打断 → else 不执行 i 0 while i 5: if i 3: break print(i) i 1 else: print(循环正常结束) # 不会执行 # 正常结束 → else 执行 i 0 while i 5: print(i) i 1 else: print(循环正常结束) # 会执行第 4 题⭐⭐⭐range(start, stop, step)的三个参数start序列的起始值包含默认为 0stop序列的结束值不包含即生成到 stop-1step步长每次递增的值默认为 1可为负数python# 序列 A0, 1, 2, 3, 4, 5 A list(range(6)) # 或 range(0, 6) # 序列 B2, 4, 6, 8, 10 B list(range(2, 11, 2)) # 序列 C10, 8, 6, 4, 2 C list(range(10, 1, -2)) # 序列 D1, 3, 5, 7, 9 D list(range(1, 10, 2))六、实战输出题答案第 1 题⭐text* ** *** **** *****解析外层i控制行数1~5内层j控制每行星号数1~i每行结束后换行。第 2 题⭐⭐text* *** ***** ******* *********解析这是一个打印等腰金字塔的程序。n5共 5 行。空格数量n - i逐行递减4, 3, 2, 1, 0。星号数量2*i - 1逐行递增1, 3, 5, 7, 9。最终输出一个高度为 5、底部宽度为 9 的等腰三角形。第 3 题⭐⭐texti0, j0 i2, j0解析循环执行情况说明外层i0内层j0输出i0, j0j1时break终止内层内层只输出 j0外层i1遇到continue跳过本次外层循环不执行内层循环外层i2内层j0输出i2, j0j1时break终止内层内层只输出 j0易错提醒外层continue会跳过整个外层循环体即内层循环完全不执行。第 4 题⭐⭐⭐texti3, factorial6解析循环次数当前 ifactorial 计算factorial 值判断factorial 20是否break初始1-1--第1轮11 * 11False否i变为 2第2轮21 * 22False否i变为 3第3轮32 * 36False否i变为 4第4轮46 * 424True是终止循环循环终止时i4, factorial24。注意虽然计算factorial 6 * 4 24后break退出但输出结果中的i是变量当前值此时i已经是 4 了。所以输出texti4, factorial24⚠️ 本题有一定迷惑性i 1在break之前执行所以当factorial超过 20 时i已经被更新为 4 了。 自测评分参考得分范围评级建议100~120 分⭐⭐⭐ 优秀流程控制掌握扎实可以顺利进入第四期字符串的学习80~99 分⭐⭐ 良好个别知识点有遗漏如range()参数、循环嵌套执行流程建议回顾错题对应章节60~79 分⭐ 合格核心语法已基本掌握但细节需要加强建议多动手写循环代码如打印金字塔、九九乘法表60 分以下 待加强建议重新学习第三期笔记重点理解条件判断的执行顺序和循环的退出机制配合代码实战逐个攻克 下一步建议完成自测后您可以根据评分结果决定学习节奏优秀/良好可以直接进入第四期字符串的学习字符串处理是后续文本操作和数据清洗的基础。合格/待加强建议先回顾错题对应的笔记章节重点练习if-elif-else条件顺序的合理性从严格到宽松for循环与range()的各种用法嵌套循环的执行流程使用调试工具逐行跟踪break与continue的区别动手写对比代码祝学习顺利