🖥️ 上机练习

第 5 章 · 序列 · 共 8 题 · 请打开 PyCharm 或交互式环境独立完成 · 覆盖字符串、列表、元组、集合、字典核心操作

💡 本页只显示题目,参考答案请课后向老师索取,或参考课堂习题部分。
练习 01
字符编码探索
使用 ord()chr() 函数,完成以下操作:
  • 输出大写字母 A~Z 对应的 ASCII 码
  • 输出小写字母 a~z 对应的 ASCII 码
  • 输入你的中文姓名,输出每个字的 Unicode 编码
  • 从 Unicode 编码 19968 开始,输出前 10 个编码对应的汉字

提示:用 for 循环 + ord()/chr(),Unicode 编码 19968 对应"一"。

⏱ 参考用时:8 分钟
练习 02
字符串处理综合
接收用户输入的一行英文句子,完成以下处理并输出:
  • 将句子中每个单词的首字母大写(title)
  • 统计句子中元音字母(a, e, i, o, u)的总数
  • 将句子按单词拆分,输出单词列表
  • 将拆分后的单词用 "-" 连接成一个新字符串

提示:使用 .lower() 统一转小写后再统计;使用 split()join()

⏱ 参考用时:10 分钟
练习 03
列表操作:成绩管理
创建一个包含 10 个整数成绩的列表(如 [78, 92, 65, 88, 73, 95, 60, 85, 70, 90]),完成:
  • 输出最高分、最低分、平均分
  • 将成绩从高到低排序并输出
  • 统计及格人数(≥60分)和不及格人数
  • 将不及格的成绩替换为 "不及格" 字符串

提示:使用 max()min()sum()/len()sort(reverse=True)

⏱ 参考用时:12 分钟
练习 04
列表生成式练习
使用列表生成式(一行代码)完成以下任务:
  • 生成 1~100 之间所有被 3 整除但不能被 5 整除的数
  • 生成 1~20 每个数的阶乘列表(需要先定义一个阶乘函数)
  • 生成一个 3×3 的嵌套列表,每个元素为其行号和列号之和(如 [[0,1,2],[1,2,3],[2,3,4]]

提示:嵌套列表 [[i+j for j in range(3)] for i in range(3)]

⏱ 参考用时:10 分钟
练习 05
元组应用:学生信息
创建 3 个学生的信息元组(姓名, 年龄, 语文成绩, 数学成绩, 英语成绩),然后:
  • 使用解包分别取出每个学生的信息并计算总分
  • 将 3 个元组放入一个列表,遍历输出每个学生的姓名和总分
  • 使用星号表达式提取每个学生的姓名和成绩列表

提示:name, *scores = student(姓名在前,成绩用星号打包)。

⏱ 参考用时:10 分钟
练习 06
集合运算
有两个兴趣小组:A组 = {"张三", "李四", "王五", "赵六", "钱七"},B组 = {"李四", "赵六", "孙八", "周九"}。完成:
  • 输出同时参加两个组的学生(交集)
  • 输出参加了任意一个组的学生(并集)
  • 输出只参加了 A 组的学生(差集)
  • 输出只参加了一个组的学生(对称差)
  • 判断 A 组是否包含 {"张三", "李四"}(子集判断)

提示:使用 &、|、-、^ 运算符和 .issuperset() 方法。

⏱ 参考用时:8 分钟
练习 07
字典应用:通讯录
创建一个通讯录字典(以姓名为键,以电话号码列表为值),至少包含 3 个联系人。实现功能菜单:
  • 1. 添加联系人:输入姓名和电话,存入通讯录
  • 2. 查找联系人:输入姓名,输出其所有电话号码(使用 get 安全取值)
  • 3. 删除联系人:输入姓名,如果存在则删除(先判断 in)
  • 4. 显示全部:使用 items() 遍历输出所有联系人

提示:使用 input() 循环接收用户选择,用 dict.get(key, "未找到") 安全取值。

⏱ 参考用时:15 分钟
练习 08
综合挑战:词频统计
输入一段英文文本(可多行),统计每个单词出现的次数(忽略大小写),并按出现次数从高到低输出。
  • 将文本按空格和标点拆分(提示:可以用 replace() 去除标点)
  • 使用字典记录每个单词的出现次数
  • 使用 sorted() 按次数降序排列
  • 输出格式:单词: 次数,只输出前 10 个

进阶:尝试也统计中文字符的出现频率。

⏱ 参考用时:15 分钟