Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التقييم المرن

جزء من قسم المنطق والتدفق في رحلة 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) أسهل في القراءة مع سطر واحد لكل سؤال، كما أن إصلاح الأخطاء في المستقبل سيتم في مكان واحد.

challenge icon

التحدي

سهل

قم بتعريف دالة grade(_ given: String, _ answer: String) -> Bool التي تعيد true عندما تتطابق السلسلتان النصيتان بعد إزالة المسافات البيضاء وتحويل كليهما إلى أحرف صغيرة (lowercasing).

بنك الأسئلة questions معطى. اقرأ ثلاثة أسطر من stdin. اطبع، لكل سؤال:

  1. نص السؤال
  2. 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'
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتدفق