Chấm điểm linh hoạt
Thuộc phần Logic và luồng thực thi trong hành trình Swift của Coddy. Bài học 51 trên 56.
So sánh bằng nghiêm ngặt quá chặt chẽ. Các bài trắc nghiệm thực tế chấp nhận paris, Paris và PARIS là cùng một đáp án.
Công thức từ chương 1: xóa khoảng trắng, chuyển cả hai vế thành chữ thường rồi so sánh:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Đây là kiểu hàm hỗ trợ đáng để tách riêng thành một hàm. Vòng lặp trắc nghiệm sẽ dễ đọc hơn khi mỗi câu hỏi nằm trên một dòng, và ngày mai bạn chỉ cần sửa lỗi ở một chỗ.
Thử thách
DễĐịnh nghĩa hàm grade(_ given: String, _ answer: String) -> Bool trả về true khi hai chuỗi khớp nhau sau khi cắt khoảng trắng và chuyển cả hai về chữ thường.
Đã cho sẵn ngân hàng questions. Đọc ba dòng từ stdin. Với mỗi câu hỏi, hãy in ra:
- Nội dung câu hỏi
correcthoặcwrong, tùy theo kết quả so sánh linh hoạt
Sau khi chạy, in ra Score: <n>/3.
Với đầu vào 4 / PARIS / Green, đầu ra là:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Tự làm thử
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: viết hàm (function) func grade(_:_:)->Bool, so sánh sau khi trim và chuyển thành chữ thường
// Sau đó lặp qua các câu hỏi, in câu hỏi, đọc câu trả lời, rồi in đúng hoặc sai;
// Kết thúc bằng 'Score: <n>/3'
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng thực thi
1Chuỗi chuyên sâu
Đếm và chỉ sốChữ hoa, chữ thường và xóa khoảng trắngTìm kiếm trong chuỗiTách và nối chuỗiThay thế chuỗi conÔn tập: Kiểm tra tên người dùng4Tập hợp
Tạo tập hợpPhép hợp và phép giaoPhép trừ và hiệu đối xứngTập con và tập hợp conÔn tập: Bộ lọc thẻ7Dự án: Theo dõi thói quen
Tổng quan dự ánĐánh dấu hoàn thành10Dự án: bộ máy trắc nghiệm
Tổng quan dự ánĐặt câu hỏiTự luyện tập: Playground Swift