Ö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 sınavın tamamını çalıştır ve sonunda kategori başına bir özet oluştur.
İterasyon için demetlerin parçalarına ayırılmasından, dizgiler bölümündeki esnek değerlendirmeden, sözlükler bölümündeki varsayılan alt indisli sözlüklerden ve belirleyici çıktı için sıralı iterasyondan yararlanacaksın.
Kategori başına sayaçları, paralel iki sözlük olarak oluştur:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]Her soru için totals[cat, default: 0] += 1 değerini artır; yalnızca doğru yanıt verildiğinde rights[cat, default: 0] değerini artır. Sonunda, raporu yazdırmak için kategorileri alfabetik sırayla dolaş.
Görev
OrtaProgramını, önceki adımdakiyle aynı olan bu altı soruluk listeyle başlat:
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")
]Standart girdiden, her satıra bir tane gelecek şekilde ve listedeki sırayla altı yanıt oku. Esnek bir değerlendirme yöntemi kullan.
Şu sırayla yazdır:
- Her kategori için alfabetik sırayla,
<category>: <right>/<total>biçiminde bir satır - Tüm çalıştırmanın toplamını gösteren son bir satır:
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/6Kendin 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")
]
// TODO: 6 cevap oku; esnek değerlendir; kategori başına toplamları/doğru sayılarını hesapla;
// sıralanmış özet satırlarını + Total satırını yazdır
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