Penilaian Toleran
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 51 dari 56.
Kesetaraan ketat terasa kaku. Kuis sungguhan menerima paris, Paris, dan PARIS sebagai jawaban yang sama.
Resep dari bab 1: hapus spasi di awal dan akhir, ubah kedua sisi menjadi huruf kecil, lalu bandingkan:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Fungsi pembantu seperti ini layak dipisahkan menjadi fungsinya sendiri. Perulangan kuis lebih mudah dibaca dengan satu baris untuk setiap pertanyaan, dan perbaikan bug besok bisa dilakukan di satu tempat.
Tantangan
MudahTentukan fungsi grade(_ given: String, _ answer: String) -> Bool yang mengembalikan true ketika kedua string cocok setelah spasi dihapus dan huruf pada kedua sisi diubah menjadi huruf kecil.
Mulai programmu dengan bank questions ini, sama seperti pada langkah sebelumnya:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]Baca tiga baris dari stdin. Cetak, untuk setiap pertanyaan:
- Teks pertanyaan
correctatauwrongberdasarkan perbandingan yang toleran
Setelah program dijalankan, cetak Score: <n>/3.
Untuk input 4 / PARIS / Green, output-nya adalah:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Coba sendiri
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: buat func grade(_:_:)->Bool dengan perbandingan setelah trim + lowercase
// lalu lakukan perulangan, tampilkan pertanyaan, baca jawaban, tampilkan benar/salah;
// akhiri dengan 'Score: <n>/3'
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Jumlah dan indeksHuruf besar, huruf kecil, dan hapus spasiMencari dalam stringMemisahkan dan menggabungkanMengganti substringUlasan: Memeriksa nama pengguna4set
Membuat setGabungan dan IrisanSelisih dan Selisih SimetrisHimpunan Bagian dan Himpunan SupersetRingkasan: Filter Tag7Proyek: Pelacak Kebiasaan
Gambaran Umum ProyekTandai Selesai10Proyek: Mesin Kuis
Ikhtisar ProyekAjukan Pertanyaan2Rentang dan Langkah
Rentang Tertutup vs Setengah TerbukaLangkahMetode RentangRentang dalam SwitchRangkuman: Kisi KalenderLatihan sendiri: Playground Swift