Esnek Puanlama
Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 51 / 56.
Katı eşitlik acımasızdır. Gerçek sınavlar paris, Paris ve PARIS yanıtlarını aynı kabul eder.
1. bölümdeki tarif: baştaki ve sondaki boşlukları kırp, her iki tarafı da küçük harfe çevir, karşılaştır:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Bu, kendi işlevine ayırmaya değer türden bir yardımcıdır. Test döngüsü, her soru için tek satır olduğunda daha okunaklı olur ve yarınki hata düzeltmesi tek bir yerde yapılır.
Görev
KolayBoşlukları kırptıktan ve her iki tarafı da küçük harfe dönüştürdükten sonra iki dize eşleştiğinde true döndüren bir grade(_ given: String, _ answer: String) -> Bool işlevi tanımla.
Programına, önceki adımdakiyle aynı olan bu questions soru bankasıyla başla:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]stdin'den üç satır oku. Her soru için şunları yazdır:
- Soru metni
- Esnek karşılaştırmanın sonucuna göre
correctveyawrong
Çalıştırmadan sonra Score: <n>/3 yazdır.
Girdi 4 / PARIS / Green olduğunda çıktı şöyledir:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Kendin dene
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: boşlukları kırpıp küçük harfe dönüştürerek karşılaştırma yapan func grade(_:_:)->Bool
// ardından döngüye gir, soruyu yazdır, cevabı oku, doğru/yanlış sonucunu yazdır;
// 'Score: <n>/3' ile bitir
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleriKendi başına pratik yap: Swift playground