汇总报告
本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 53 课,共 56 课。
最后一个功能:运行整个测验,而不是只运行一个类别,并在最后生成每个类别的总结。
你会同时用到每一章的内容:用元组解包进行迭代,沿用字符串章节中宽松的评分方式,使用字典章节中的默认下标字典,并通过排序迭代确保输出稳定。
将每个类别的计数器构建为两个并行字典:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]每道题都将 totals[cat, default: 0] += 1 加 1;只有答对时,才将 rights[cat, default: 0] 加 1。最后,按字母顺序遍历各个类别并打印报告。
挑战
中等使用上一课中的同一组 6 道题目。从标准输入读取 6 个答案,每行一个,顺序与题目组相同。采用宽松的评分方式。
按以下顺序输出:
- 每个类别输出一行,按字母顺序排序,格式为
<category>: <right>/<total> - 最后输出一行:
Total: <right>/<total>,表示整个运行过程的总计
对于输入 4 / 3.14 / Paris / Atlantic / green / WATER,输出为:
geo: 1/2
math: 2/2
science: 2/2
Total: 5/6亲手试试
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("math", "Value of pi to 2 decimals?", "3.14"),
("geo", "Capital of France?", "Paris"),
("geo", "Largest ocean?", "Pacific"),
("science", "Color of grass?", "green"),
("science", "H2O is?", "water")
]
// TODO:读取 6 个答案;宽松评分;统计各类别的题目总数和答对数;
// 按顺序输出各类别的汇总行和 Total
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Swift 在线编辑器