تقرير ملخص
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 53 من 56.
الميزة النهائية: بدلاً من فئة واحدة، قم بتشغيل الاختبار بالكامل وأنشئ ملخصاً لكل فئة في النهاية.
ستعتمد على كل فصل في آن واحد: تفكيك الصفوف (tuple destructuring) من أجل التكرار، والتقييم المتساهل من فصل السلاسل النصية، والقواميس ذات الفهارس الافتراضية من فصل القواميس، والتكرار المرتب للحصول على مخرجات حتمية.
قم ببناء عدادات لكل فئة كقاموسين متوازيين:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]قم بزيادة totals[cat, default: 0] += 1 لكل سؤال؛ قم بزيادة rights[cat, default: 0] فقط عند الإجابة الصحيحة. في النهاية، مر على الفئات بترتيب أبجدي لطباعة التقرير.
التحدي
متوسطنفس بنك الأسئلة المكون من ستة أسئلة من الدرس السابق. اقرأ ست إجابات من stdin، واحدة في كل سطر، بنفس ترتيب البنك. استخدم التقييم المتساهل (lenient grading).
اطبع، بهذا الترتيب:
- سطر واحد لكل فئة، مرتبة أبجديًا، بالتنسيق
<category>: <right>/<total> - سطر نهائي واحد:
Total: <right>/<total>عبر التشغيل بالكامل
بالنسبة للمدخلات 4 / 3.14 / Paris / Atlantic / green / WATER، يكون المخرج هو:
geo: 1/2
math: 2/2
science: 2/2
Total: 5/6ورقة مرجعية
استخدم قاموسين متوازيين لتتبع الدرجات لكل فئة:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]
// لكل سؤال مع الفئة cat:
totals[cat, default: 0] += 1
// عند الإجابة الصحيحة:
rights[cat, default: 0] += 1قم بالمرور على الفئات بترتيب أبجدي باستخدام sorted() للحصول على مخرجات محددة:
for cat in totals.keys.sorted() {
let r = rights[cat, default: 0]
let t = totals[cat]!
print("\(cat): \(r)/\(t)")
}احسب الإجماليات عبر جميع الفئات بجمع قيم القاموس:
let totalRight = rights.values.reduce(0, +)
let totalAll = totals.values.reduce(0, +)
print("Total: \(totalRight)/\(totalAll)")جرّب بنفسك
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 إجابات؛ تقييم مرن؛ بناء المجاميع/الإجابات الصحيحة لكل فئة؛
// طباعة أسطر ملخص مرتبة + Total
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات