Menu
CoddyTech

宽松评分

本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 51 课,共 56 课。

严格相等的要求很苛刻。实际的测验会把 paris、Paris 和 PARIS 视为相同的答案。

第 1 章中的做法:去除空白,将两边都转换为小写,然后进行比较:

func grade(_ given: String, _ answer: String) -> Bool {
    let g = given.trimmingCharacters(in: .whitespaces).lowercased()
    let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
    return g == a
}

这种辅助逻辑值得单独提取成一个函数。测验循环中每个问题只占一行,读起来更清晰,而且明天修复错误时只需改一个地方。

challenge icon

挑战

简单

定义一个函数 grade(_ given: String, _ answer: String) -> Bool,当两个字符串在去除空白并将两边都转换为小写后匹配时,返回 true。

题目库 questions 已给出。从标准输入读取三行。对每道题,打印:

  1. 题目文本
  2. 根据宽松比较结果打印 correct 或 wrong

运行后,打印 Score: <n>/3。

对于输入 4 / PARIS / Green,输出为:

2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3

亲手试试

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("geo", "Capital of France?", "Paris"),
    ("science", "Color of grass?", "green")
]

// TODO:编写 func grade(_:_:)->Bool,去除首尾空白后转为小写再比较
// 然后循环打印问题、读取答案,并打印正确或错误;
// 最后打印 'Score: <n>/3'
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Swift 在线编辑器