בדיקה מקלה
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 51 מתוך 56.
שוויון מחמיר הוא נוקשה. חידונים אמיתיים מקבלים את paris, את Paris ואת PARIS כתשובה זהה.
המתכון מפרק 1: הסרת רווחים לבנים, המרה לאותיות קטנות בשני הצדדים, השוואה:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}זה מסוג העזרים שכדאי להוציא לפונקציה משלהם. לולאת השאלון נעשית ברורה יותר כשיש שורה אחת לכל שאלה, ותיקון הבאג של מחר יתבצע במקום אחד.
אתגר
קלהגדירו פונקציה grade(_ given: String, _ answer: String) -> Bool שמחזירה true כאשר שתי המחרוזות תואמות לאחר הסרת הרווחים הלבנים והמרת שתי המחרוזות לאותיות קטנות.
התחילו את התוכנית עם מאגר questions הזה, זהה לזה מהשלב הקודם:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]קראו שלוש שורות מהקלט הסטנדרטי. הדפיסו עבור כל שאלה:
- את טקסט השאלה
correctאוwrong, בהתאם להשוואה המקלה
לאחר הרצת התוכנית, הדפיסו Score: <n>/3.
עבור הקלט 4 / PARIS / Green, הפלט הוא:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3נסו בעצמכם
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: לממש func grade(_:_:)->Bool עם השוואה לאחר trim + lowercase
// לאחר מכן לעבור בלולאה, להדפיס את השאלה, לקרוא את התשובה ולהדפיס נכון/לא נכון;
// לסיים עם 'Score: <n>/3'
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
תרגלו בעצמכם: Swift אונליין