الدرس 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 وتوقف البرنامج، فتخطَّها قبل أي مقارنة.
المطلوب
اصنع بـ range القائمة multiples وفيها مضاعفات 7 من 7 إلى 70، واحسب في passed عدد الدرجات التي تساوي 50 أو أكثر متخطّيًا الغائبين، ثم ضع في first_fail موضع أول درجة أقلّ من 50 على أن يبدأ العدّ من 1، وأوقف الحلقة عندها.
الفحوص
4 فحوص- القائمة multiples فيها عشرة أعداد
- القائمة multiples من 7 إلى 70
- المتغيّر passed يعدّ الناجحين ويتخطّى الغائبين
- المتغيّر first_fail هو موضع أول راسب بالعدّ من 1