التقييم المرن
جزء من قسم المنطق والتدفق في رحلة 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
}هذا هو نوع المساعد الذي يستحق استخراجه في دالة خاصة به. تصبح حلقة الاختبار (quiz loop) أسهل في القراءة مع سطر واحد لكل سؤال، كما أن إصلاح الأخطاء في المستقبل سيتم في مكان واحد.
التحدي
سهلقم بتعريف دالة grade(_ given: String, _ answer: String) -> Bool التي تعيد true عندما تتطابق السلسلتان النصيتان بعد إزالة المسافات البيضاء وتحويل كليهما إلى أحرف صغيرة (lowercasing).
بنك الأسئلة questions معطى. اقرأ ثلاثة أسطر من stdin. اطبع، لكل سؤال:
- نص السؤال
correctأوwrongبناءً على المقارنة المتساهلة
بعد الانتهاء، اطبع Score: <n>/3.
للمدخلات 4 / PARIS / Green، يكون المخرج:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3ورقة مرجعية
مقارنة النصوص المتساهلة: إزالة المسافات البيضاء وتحويل كلا الطرفين إلى أحرف صغيرة قبل المقارنة.
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}جرّب بنفسك
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
// ثم قم بعمل loop، واطبع السؤال، واقرأ الإجابة، واطبع صحيح/خطأ؛
// انتهِ بـ 'Score: <n>/3'
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات