第15课 综合项目——班级成绩管理小助手课后练习--小学信息科技Python程序设计

资源下载
  1. 二一教育资源

第15课 综合项目——班级成绩管理小助手课后练习--小学信息科技Python程序设计

资源简介

/ 让教学更有效 精品试卷 | 信息
第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("暂无记录")
return
for 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("暂无记录")
return
for 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.get
6.函数 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] = tel
print("录入成功")
def query():
name = input("要查询的姓名:")
if name in book:
print(f"{name} 的电话是 {book[name]}")
else:
print("查无此人")
def list_all():
if len(book) == 0:
print("通讯录为空")
return
for 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("再见")
break
else:
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("暂无记录,无法统计")
return
vals = 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("暂无记录")
return
for 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)

展开更多......

收起↑

资源列表