الدرس 6 من 10
حلقة for
- 13 دقيقة
- 4 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
مرّ على كل عنصر
الشرح
for تمرّ على عناصر القائمة واحدًا واحدًا: for s in scores: — بلا عدّاد ولا فهارس. وحين تحتاج أعدادًا متتالية فـ range(1, 11) تعطيك من 1 إلى 10: البداية تدخل والنهاية لا تدخل، ومنها يأتي أكثر أخطاء «ناقص واحد».
وإن احتجت الموضع مع القيمة فلا تكتب range(len(scores))؛ enumerate(scores, start=1) تعطيك الاثنين معًا: for pos, s in enumerate(scores, start=1):.
وcontinue تتخطّى بقية الدورة إلى العنصر التالي، وbreak تُنهي الحلقة كلها. والحاجة إليهما هنا حقيقية: None علامة غياب، ومقارنته برقم كـ None >= 50 ترمي TypeError وتوقف البرنامج. تخطَّه قبل أي مقارنة.
المطلوب
اصنع multiples: مضاعفات 7 من 7 إلى 70، بـ range. واحسب passed: عدد الدرجات 50 فأكثر، متخطّيًا الغياب. ثم first_fail: ترتيب أول درجة دون 50 والعدّ من 1، وأوقف الحلقة عندها.
معايير التصحيح
4 معايير- multiples فيها عشرة أعداد
- multiples من 7 إلى 70
- passed يعدّ الناجحين ويتخطّى الغياب
- first_fail موضع أول راسب والعدّ من 1