数据转换器
本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 56 课,共 56 课。
综合挑战:将数据集整理成汇总报告。在一个程序中结合筛选、映射、分组、错误处理和方法定义。
挑战
中等给定数组 students。每个条目都是一个哈希,包含 :id、:grades(一个可能为空的整数数组)和 :subjects(一个字符串数组)。
定义一个方法 transform_dataset(students),返回一个包含两个键的哈希:
:qualified_ids:符合条件的学生的:id排序数组。学生必须至少有一个成绩,且所有成绩都严格高于70(使用all?)。:subject_counts:一个哈希,将符合条件学生选修的每个科目映射到选修该科目的符合条件学生人数。
如果某个学生的 :grades 数组为空,他们就不符合条件,直接跳过。
然后调用该方法并打印:
- 用
,连接符合条件的学生 ID,并在前面加上Qualified:。如果没有符合条件的学生,则打印Qualified: (none)。 - 每个科目占一行(按字母顺序排序),格式为
<subject>: <count>。
对于默认的 students,输出为:
Qualified: S1, S4
biology: 1
history: 1
math: 2
physics: 1亲手试试
students = [
{ id: "S1", grades: [85, 92, 78], subjects: ["math", "physics"] },
{ id: "S2", grades: [65, 80, 90], subjects: ["math", "biology"] },
{ id: "S3", grades: [], subjects: ["art"] },
{ id: "S4", grades: [88, 95], subjects: ["math", "biology", "history"] },
{ id: "S5", grades: [70, 75], subjects: ["chemistry"] }
]
# TODO: 定义 def transform_dataset(students),返回 { qualified_ids:, subject_counts: }
# TODO: 输出符合条件的 ID 和各科目数量
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Ruby 在线编译器