宽松评分
本课属于 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
}这种辅助逻辑值得单独提取成一个函数。测验循环中每个问题只占一行,读起来更清晰,而且明天修复错误时只需改一个地方。
挑战
简单定义一个函数 grade(_ given: String, _ answer: String) -> Bool,当两个字符串在去除空白并将两边都转换为小写后匹配时,返回 true。
题目库 questions 已给出。从标准输入读取三行。对每道题,打印:
- 题目文本
- 根据宽松比较结果打印
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'
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Swift 在线编辑器