طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 111 · أساسيات برمجة الحاسب
الدرس 19 · الوحدة 4: الدوال والقوائم

المرور على القائمة والبحث فيها

نمرّ على كل عناصر القائمة لنجمعها ونعدّها ونبحث فيها. ⏱ نحو 20 دقيقة.

12730518for x in nums
بعد هذا الدرس ستستطيع أن:
  • تمرّ على عناصر القائمة بحلقة for.
  • تجمع وتعدّ العناصر بالحلقة.
  • تبحث عن عنصر باستخدام العَلَم و break.
  • تمرّ على القائمة مع رقم الخانة.

١المرور على كل العناصر

تعلّمت أن for تمرّ على حروف النص. وهي تمرّ أيضًا على عناصر القائمة، عنصرًا بعد عنصر:

main.py
names = ["علي", "سارة", "خالد"]for name in names:    print("مرحبًا", name)
Shell×
>>> %Run main.py
مرحبًا علي
مرحبًا سارة
مرحبًا خالد
>>>

في كل دورة يأخذ المتغيّر name العنصر التالي، حتى تنتهي القائمة.

٢الجمع والعدّ بالحلقة

نستطيع أن نحسب المجموع بأنفسنا، وهذه الطريقة أساس كثير من البرامج:

🔎 تتبّع: جمع عناصر القائمة
main.py
nums = [4, 7, 2]total = 0for x in nums:    total += xprint(total)
Variables · المتغيّرات في الذاكرة
Shell×

ونستطيع أن نعدّ العناصر التي تحقق شرطًا، مثل عدد الناجحين:

main.py
marks = [70, 45, 88, 52, 91]count = 0for m in marks:    if m >= 60:        count += 1print("عدد الناجحين:", count)
Shell×
>>> %Run main.py
عدد الناجحين: 3
>>>

٣البحث عن عنصر

نمرّ على القائمة ونقارن كل عنصر بما نبحث عنه. إذا وجدناه توقفنا بـ break:

main.py
names = ["علي", "سارة", "خالد", "منى"]target = input("اسم الطالب: ")found = Falsefor name in names:    if name == target:        found = True        breakif found:    print("موجود")else:    print("غير موجود")
Shell×
>>> %Run main.py
اسم الطالب: خالد
موجود
>>>

المتغيّر found يبدأ False، ويصبح True فقط إذا وجدنا الاسم. وهذه فكرة «العَلَم» التي تتكرر كثيرًا.

٤المرور مع رقم الخانة

إذا احتجت رقم الخانة مع العنصر، فمرّ على الأرقام بـ range(len(...)):

main.py
names = ["علي", "سارة", "خالد"]for i in range(len(names)):    print(i + 1, "-", names[i])
Shell×
>>> %Run main.py
1 - علي
2 - سارة
3 - خالد
>>>
📎 للاستزادة (اختياري): بناء قائمة جديدة

نبدأ بقائمة فارغة [] ونضيف إليها ما يحقق الشرط:

main.py
marks = [70, 45, 88, 52]passed = []for m in marks:    if m >= 60:        passed.append(m)print(passed)
Shell×
>>> %Run main.py
[70, 88]
>>>

توقّع وتحقّق

for x in [3, 6, 9]: كم مرة تتكرر الحلقة؟

مرة لكل عنصر.

أين نكتب total = 0 عند جمع عناصر القائمة؟

قبلها حتى لا يرجع إلى الصفر.

ما فائدة break في البحث؟

لا داعي لإكمال البحث.

المتغيّر found يبدأ بالقيمة:

نفترض أننا لم نجده بعد.

الخلاصة

تحدٍّ برمجي: عدد الراسبين

متوسط

لديك marks = [55, 80, 40, 90, 59, 75]. اكتب برنامجًا يمرّ على القائمة ويعدّ الدرجات الأقل من 60، ويطبع العدد.

المطلوب:
  • ابدأ العدّاد من 0.
  • مرّ على القائمة بـ for.
  • اطبع: عدد الراسبين: ثم العدد.

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

main.py
marks = [55, 80, 40, 90, 59, 75]count = 0
المطلوب×
عدد الراسبين: 3
💡 تلميح 1
for m in marks:
💡 تلميح 2
if m < 60: count += 1

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

main.py
marks = [55, 80, 40, 90, 59, 75]count = 0for m in marks:    if m < 60:        count += 1print("عدد الراسبين:", count)
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←