Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Boş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:

  1. Soru metni
  2. Esnek karşılaştırmanın sonucuna göre correct veya wrong

Ç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/3

Kendin 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
quiz iconKendini test et

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

Kendi başına pratik yap: Swift playground