Menu
Coddy logo textTech

Özet Rapor

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 53 / 56.

Son özellik: tek bir kategori yerine, tüm testi çalıştırın ve sonunda kategori başına bir özet oluşturun.

Her bölüme aynı anda başvuracaksınız: yineleme için tuple destructuring, dizeler bölümünden esnek derecelendirme, sözlükler bölümünden varsayılan alt simgeli sözlükler, deterministik çıktı için sıralı yineleme.

Kategori başına sayaçları iki paralel sözlük olarak oluşturun:

var totals: [String: Int] = [:]
var rights: [String: Int] = [:]

Her soru için totals[cat, default: 0] += 1 değerini artırın; rights[cat, default: 0] değerini sadece doğru cevaplarda artırın. Sonunda, raporu yazdırmak için kategorileri alfabetik sırayla gezin.

challenge icon

Görev

Orta

Önceki dersteki aynı altı soruluk banka. Stdin'den, bankadakiyle aynı sırada, her satıra bir tane olacak şekilde altı cevap okuyun. Esnek puanlama kullanın.

Şu sırayla yazdırın:

  1. Kategori başına bir satır, alfabetik olarak sıralanmış, <category>: <right>/<total> formatında
  2. Son bir satır: Tüm çalışma için Total: <right>/<total>

4 / 3.14 / Paris / Atlantic / green / WATER girdisi için çıktı şöyledir:

geo: 1/2
math: 2/2
science: 2/2
Total: 5/6

Kopya kağıdı

Kategori başına puanları takip etmek için iki paralel sözlük (dictionary) kullanın:

var totals: [String: Int] = [:]
var rights: [String: Int] = [:]

// For each question with category cat:
totals[cat, default: 0] += 1
// On correct answer:
rights[cat, default: 0] += 1

Belirlenebilir (deterministic) bir çıktı için sorted() kullanarak kategorileri alfabetik sırayla gezin:

for cat in totals.keys.sorted() {
    let r = rights[cat, default: 0]
    let t = totals[cat]!
    print("\(cat): \(r)/\(t)")
}

Sözlük değerlerini toplayarak tüm kategorilerdeki toplamları hesaplayın:

let totalRight = rights.values.reduce(0, +)
let totalAll = totals.values.reduce(0, +)
print("Total: \(totalRight)/\(totalAll)")

Kendin dene

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("math", "Value of pi to 2 decimals?", "3.14"),
    ("geo", "Capital of France?", "Paris"),
    ("geo", "Largest ocean?", "Pacific"),
    ("science", "Color of grass?", "green"),
    ("science", "H2O is?", "water")
]

// YAPILACAKLAR: 6 cevabı oku; esnek puanlama yap; kategori bazlı toplamları/doğruları oluştur;
// sıralanmış özet satırlarını + Toplamı yazdır
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