דוח סיכום
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 53 מתוך 56.
התכונה האחרונה: במקום קטגוריה אחת, הריצו את כל הבוחן והפיקו בסוף סיכום לכל קטגוריה.
תסתמך על כל הפרקים בבת אחת: פירוק של tuple לצורך האיטרציה, ניקוד מקל מפרק המחרוזות, מילונים עם גישה לאיבר לפי מפתח כברירת מחדל מפרק המילונים, ואיטרציה ממוינת לקבלת פלט דטרמיניסטי.
בנה מונים לכל קטגוריה כשתי מילונים מקבילים:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]הגדילו את totals[cat, default: 0] += 1 עבור כל שאלה; הגדילו את rights[cat, default: 0] רק עבור תשובה נכונה. בסוף, עברו על הקטגוריות לפי סדר אלפביתי כדי להדפיס את הדוח.
אתגר
בינוניאותו מאגר של שש שאלות מהשיעור הקודם. קראו שש תשובות מ־stdin, אחת בכל שורה, באותו סדר שבו הן מופיעות במאגר. השתמשו בבדיקה מקלה.
הדפיסו, לפי הסדר הזה:
- שורה אחת לכל קטגוריה, ממוינת בסדר אלפביתי, בפורמט
<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נסו בעצמכם
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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
תרגלו בעצמכם: Swift אונליין