المرور على القائمة والبحث فيها
نمرّ على كل عناصر القائمة لنجمعها ونعدّها ونبحث فيها. ⏱ نحو 20 دقيقة.
- تمرّ على عناصر القائمة بحلقة
for. - تجمع وتعدّ العناصر بالحلقة.
- تبحث عن عنصر باستخدام العَلَم و
break. - تمرّ على القائمة مع رقم الخانة.
١المرور على كل العناصر
تعلّمت أن for تمرّ على حروف النص. وهي تمرّ أيضًا على عناصر القائمة، عنصرًا بعد عنصر:
names = ["علي", "سارة", "خالد"]for name in names: print("مرحبًا", name)
في كل دورة يأخذ المتغيّر name العنصر التالي، حتى تنتهي القائمة.
٢الجمع والعدّ بالحلقة
نستطيع أن نحسب المجموع بأنفسنا، وهذه الطريقة أساس كثير من البرامج:
nums = [4, 7, 2]total = 0for x in nums: total += xprint(total)
ونستطيع أن نعدّ العناصر التي تحقق شرطًا، مثل عدد الناجحين:
marks = [70, 45, 88, 52, 91]count = 0for m in marks: if m >= 60: count += 1print("عدد الناجحين:", count)
٣البحث عن عنصر
نمرّ على القائمة ونقارن كل عنصر بما نبحث عنه. إذا وجدناه توقفنا بـ break:
names = ["علي", "سارة", "خالد", "منى"]target = input("اسم الطالب: ")found = Falsefor name in names: if name == target: found = True breakif found: print("موجود")else: print("غير موجود")
المتغيّر found يبدأ False، ويصبح True فقط إذا وجدنا الاسم. وهذه فكرة «العَلَم» التي تتكرر كثيرًا.
٤المرور مع رقم الخانة
إذا احتجت رقم الخانة مع العنصر، فمرّ على الأرقام بـ range(len(...)):
names = ["علي", "سارة", "خالد"]for i in range(len(names)): print(i + 1, "-", names[i])
📎 للاستزادة (اختياري): بناء قائمة جديدة
نبدأ بقائمة فارغة [] ونضيف إليها ما يحقق الشرط:
marks = [70, 45, 88, 52]passed = []for m in marks: if m >= 60: passed.append(m)print(passed)
توقّع وتحقّق
for x in [3, 6, 9]: كم مرة تتكرر الحلقة؟
أين نكتب total = 0 عند جمع عناصر القائمة؟
ما فائدة break في البحث؟
المتغيّر found يبدأ بالقيمة:
الخلاصة
for x inالقائمة تمرّ على كل عنصر بالترتيب.- للجمع والعدّ: نبدأ المتغيّر من 0 قبل الحلقة.
- البحث: عَلَم يبدأ
False، ويصبحTrueعند إيجاد العنصر، ثمbreak. range(len(القائمة))تعطي أرقام الخانات.
تحدٍّ برمجي: عدد الراسبين
متوسطلديك marks = [55, 80, 40, 90, 59, 75]. اكتب برنامجًا يمرّ على القائمة ويعدّ الدرجات الأقل من 60، ويطبع العدد.
- ابدأ العدّاد من 0.
- مرّ على القائمة بـ for.
- اطبع: عدد الراسبين: ثم العدد.
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
marks = [55, 80, 40, 90, 59, 75]count = 0
💡 تلميح 1
💡 تلميح 2
if m < 60: count += 1حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
marks = [55, 80, 40, 90, 59, 75]count = 0for m in marks: if m < 60: count += 1print("عدد الراسبين:", count)