资源简介 / 让教学更有效 精品试卷 | 信息第15课 课后练习(学生用)班级:____________ 姓名:____________ 得分:__________一、填空(每空 3 分,共 24 分)1.菜单式程序通常用 while ______: 让菜单反复出现。2.用户选择退出时,要用 ______________ 语句跳出循环。3.菜单的 if / elif 链末尾要加一个 ______________ 分支,用来处理用户乱输入的情况。4.在函数外面定义的变量,函数内部可以直接使用,这种变量叫 ______________ 变量。5.要找出字典中分数最高的那个学生姓名,可以写 max(scores, key=__________)。6.成绩管理小助手中,每项功能写成一个 ______________,主程序负责调度。7.先写好菜单框架、功能暂时打印「待实现」,这种做法叫 ______________。二、判断对错(每题 3 分,共 12 分)1.菜单程序里,只要写了 while True,就一定会变成死循环无法退出。( )2.每个功能写成一个函数,可以让程序更好读、更好改。( )3.如果用户输入了菜单里没有的编号,程序应该直接崩溃退出。( )4.在函数内部可以修改全局变量(如 scores),修改后外部也能看到。( )三、★ 补全代码(每空 5 分,共 25 分)下面是一个菜单框架的骨架,请补全。while ①______:print("1. 录入 2. 查询 3. 退出")choice = input("请选择:")if choice == "1":print("录入功能")elif choice == "2":print("查询功能")elif choice == "3":print("再见")②____________else:/n print("③____________,请重新输入")下面是「列出全部成绩」功能,请补全。def list_all():if len(scores) == 0:print("暂无记录")returnfor name, s in scores.④____________():print(name, s)下面是「统计」功能中找最高分学生的一行。top = max(scores, key=scores.⑤____________)① ______ ② ______ ③ ______ ④ ______ ⑤ ______四、★★ 提高题(每题 10 分,共 30 分)第 1 题 通讯录小程序独立编写一个「通讯录」小程序,要求具备四项功能:① 录入(姓名 + 电话);② 查询(按姓名查电话,查不到要提示);③ 列出全部;④ 退出。请画出菜单,并把每个功能写成函数。________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________第 2 题 需求拆解练习学校要做一个「图书借阅登记」小程序,需要记录书名和借书人姓名,支持「借书」「还书」「查看所有已借出的书」。请先写出需求拆解表(每一小步用到哪一课的知识),再说明你会用什么数据结构存数据。小 步 骤 用到哪一课的知识数据结构选择:________________________________________________________________________________________________________________________________________________________________________________第 3 题 找错并改正下面的成绩管理程序想统计平均分,但报错了。请找出问题并改正。scores = {}def show_stats():vals = scores.values()print("平均分:", sum(vals) / len(vals))show_stats()错误原因:____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________五、★★★ 挑战题(每题 12 分,共 24 分)第 1 题 给成绩管理小助手增加新功能在第 15 课「班级成绩管理小助手」的基础上,增加两项功能:① 删除某个学生的记录;② 按分数从高到低排序输出。请写出新增的函数,并说明如何接入原有菜单。提示:删除可用 del scores[姓名] 或 scores.pop(姓名);排序可用 sorted(scores.items(), key=lambda x: -x[1])。________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________第 2 题 综合设计自选一个小项目(如「单词记忆小工具」「零花钱记账本」),写出:① 功能清单;② 数据结构;③ 关键函数;④ 测试记录(至少包含一组正常输入和一组错误输入)。____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________教师评语:____________________________________________________________________________________________________________________________________21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)21世纪教育网(www.21cnjy.com)/ 让教学更有效 精品试卷 | 信息第15课 课后练习(答案版 · 教师用)班级:____________ 姓名:____________ 得分:__________一、填空(每空 3 分,共 24 分)1.菜单式程序通常用 while ______: 让菜单反复出现。2.用户选择退出时,要用 ______________ 语句跳出循环。3.菜单的 if / elif 链末尾要加一个 ______________ 分支,用来处理用户乱输入的情况。4.在函数外面定义的变量,函数内部可以直接使用,这种变量叫 ______________ 变量。5.要找出字典中分数最高的那个学生姓名,可以写 max(scores, key=__________)。6.成绩管理小助手中,每项功能写成一个 ______________,主程序负责调度。7.先写好菜单框架、功能暂时打印「待实现」,这种做法叫 ______________。二、判断对错(每题 3 分,共 12 分)1.菜单程序里,只要写了 while True,就一定会变成死循环无法退出。( )2.每个功能写成一个函数,可以让程序更好读、更好改。( )3.如果用户输入了菜单里没有的编号,程序应该直接崩溃退出。( )4.在函数内部可以修改全局变量(如 scores),修改后外部也能看到。( )三、★ 补全代码(每空 5 分,共 25 分)下面是一个菜单框架的骨架,请补全。while ①______:print("1. 录入 2. 查询 3. 退出")choice = input("请选择:")if choice == "1":print("录入功能")elif choice == "2":print("查询功能")elif choice == "3":print("再见")②____________else:/n print("③____________,请重新输入")下面是「列出全部成绩」功能,请补全。def list_all():if len(scores) == 0:print("暂无记录")returnfor name, s in scores.④____________():print(name, s)下面是「统计」功能中找最高分学生的一行。top = max(scores, key=scores.⑤____________)① ______ ② ______ ③ ______ ④ ______ ⑤ ______四、★★ 提高题(每题 10 分,共 30 分)第 1 题 通讯录小程序独立编写一个「通讯录」小程序,要求具备四项功能:① 录入(姓名 + 电话);② 查询(按姓名查电话,查不到要提示);③ 列出全部;④ 退出。请画出菜单,并把每个功能写成函数。________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________第 2 题 需求拆解练习学校要做一个「图书借阅登记」小程序,需要记录书名和借书人姓名,支持「借书」「还书」「查看所有已借出的书」。请先写出需求拆解表(每一小步用到哪一课的知识),再说明你会用什么数据结构存数据。小 步 骤 用到哪一课的知识数据结构选择:________________________________________________________________________________________________________________________________________________________________________________第 3 题 找错并改正下面的成绩管理程序想统计平均分,但报错了。请找出问题并改正。scores = {}def show_stats():vals = scores.values()print("平均分:", sum(vals) / len(vals))show_stats()错误原因:____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________五、★★★ 挑战题(每题 12 分,共 24 分)第 1 题 给成绩管理小助手增加新功能在第 15 课「班级成绩管理小助手」的基础上,增加两项功能:① 删除某个学生的记录;② 按分数从高到低排序输出。请写出新增的函数,并说明如何接入原有菜单。提示:删除可用 del scores[姓名] 或 scores.pop(姓名);排序可用 sorted(scores.items(), key=lambda x: -x[1])。________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________第 2 题 综合设计自选一个小项目(如「单词记忆小工具」「零花钱记账本」),写出:① 功能清单;② 数据结构;③ 关键函数;④ 测试记录(至少包含一组正常输入和一组错误输入)。____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________教师评语:____________________________________________________________________________________________________________________________________第 15 课 参考答案(教师用)与《教师参考答案》册同源,全部数值均已实际运行核验一、填空1.True 2.break 3.else 4.全局 5.scores.get6.函数 7.先搭骨架(分步实现)二、判断对错1.×(选 0 时用 break 就能正常退出) 2.√ 3.×(应该有 else 兜底,提示用户重新输入) 4.√三、★ 补全代码① True ② break ③ 输入有误 ④ items ⑤ get四、★★ 提高题第 1 题:book = {}def show_menu():print("=" * 24)print(" 1. 录入 2. 查询")print(" 3. 列出 0. 退出")print("=" * 24)def add():name = input("姓名:")tel = input("电话:")book[name] = telprint("录入成功")def query():name = input("要查询的姓名:")if name in book:print(f"{name} 的电话是 {book[name]}")else:print("查无此人")def list_all():if len(book) == 0:print("通讯录为空")returnfor name, tel in book.items():print(f"{name}:{tel}")while True:show_menu()c = input("请选择:")if c == "1":add()elif c == "2":query()elif c == "3":list_all()elif c == "0":print("再见")breakelse:print("输入有误")第 2 题参考拆解:小步骤 用到哪一课的知识记录书名与借书人 第 14 课 字典借书(写入记录) 第 9 课 函数、第 14 课 字典赋值还书(删除记录) 第 14 课 del / pop查看所有已借出的书 第 14 课 items() 遍历菜单与循环 第 2 课 分支、第 3 课 循环、第 15 课 菜单框架数据结构选择:用字典 books = {书名: 借书人},因为「按书名查借书人」正是键值对应关系;同一本书只能被一个人借走,字典的键唯一性天然保证了这一点。第 3 题:scores 是空字典,vals = scores.values() 得到的是一个空视图,len(vals) 为 0,sum(vals) / len(vals) 就是除以 0,会报 ZeroDivisionError。应加一句判断:def show_stats():if len(scores) == 0:print("暂无记录,无法统计")returnvals = list(scores.values())print("平均分:", sum(vals) / len(vals))五、★★★ 挑战题第 1 题:def delete_student():name = input("要删除的姓名:")if name in scores:del scores[name]print(f"已删除 {name}")else:print("查无此人")def sort_all():if len(scores) == 0:print("暂无记录")returnfor i, (name, s) in enumerate(sorted(scores.items(), key=lambda x: -x[1]), 1):print(f"第 {i} 名:{name},{s} 分")接入方式:在菜单里增加两项 5. 删除 6. 排序输出,并在 while 循环的 if/elif 链里各加一个分支调用上述函数即可。第 2 题:开放题,只要功能清单、数据结构、关键函数、测试记录四部分齐备即可。评分重点看是否包含错误输入的测试(如输入非数字时程序的表现)。21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)21世纪教育网(www.21cnjy.com) 展开更多...... 收起↑ 资源列表 第15课 综合项目——班级成绩管理小助手课后练习(学生用).docx 第十五课课后练习(答案版).docx