حلقة for والدالة range في Python
تخيّل أنك تريد أن تطبع رسالة ترحيب لكل طالب في فصل من 30 طالباً. هل ستكتب print ثلاثين مرة؟ بالطبع لا! في هذا الدرس ستتعلم حلقة for التي تكرر الكود تلقائياً، وستتعرف على الدالة range لتوليد الأرقام، وعلى طرق ذكية تجعل الحلقات أقصر وأوضح.
حلقة for مع القوائم
Section titled “حلقة for مع القوائم”حلقة for تمر على عناصر مجموعة واحداً تلو الآخر:
for fruit in ["تفاح", "موز", "عنب"]: print(fruit)تفاحموزعنباقرأها كجملة: «لكل فاكهة في القائمة، اطبع الفاكهة». في كل دورة يأخذ المتغير fruit قيمة العنصر التالي، ثم يُنفّذ الكود المُزاح.
تخيّلها مثل ساعي البريد الذي يمر على بيوت الشارع بيتاً بيتاً، ويسلّم كل بيت رسالته.
المرور على حروف النص
Section titled “المرور على حروف النص”النص مجموعة من الحروف، فيمكنك المرور عليه بنفس الطريقة:
for letter in "كود": print(letter)كودالدالة range: توليد الأرقام
Section titled “الدالة range: توليد الأرقام”عندما تريد أن تكرر شيئاً عدداً معيناً من المرات، استخدم range:
for i in range(5): print(i, end=" ")0 1 2 3 4range(5) تولّد الأرقام من 0 حتى 4، أي خمسة أرقام، والرقم 5 نفسه لا يدخل.
أشكال range
Section titled “أشكال range”for i in range(1, 6): # من 1 حتى 5 print(i, end=" ")print()
for i in range(0, 11, 2): # من 0 حتى 10 بخطوة 2 print(i, end=" ")print()1 2 3 4 50 2 4 6 8 10range(نهاية): من 0 حتى قبل النهاية.range(بداية, نهاية): من البداية حتى قبل النهاية.range(بداية, نهاية, خطوة): مع تحديد مقدار القفز.
ويمكنك العد للخلف بخطوة سالبة:
for i in range(3, 0, -1): print(i)print("انطلق!")321انطلق!أمثلة عملية
Section titled “أمثلة عملية”مجموع الأرقام من 1 إلى 100
Section titled “مجموع الأرقام من 1 إلى 100”total = 0for i in range(1, 101): total += iprint(total)5050جدول الضرب
Section titled “جدول الضرب”for i in range(1, 6): print(f"7 × {i} = {7 * i}")7 × 1 = 77 × 2 = 147 × 3 = 217 × 4 = 287 × 5 = 35enumerate: العنصر ورقمه معاً
Section titled “enumerate: العنصر ورقمه معاً”أحياناً تحتاج أن تعرف رقم العنصر بجانب قيمته. الدالة enumerate تعطيك الاثنين:
names = ["أحمد", "سارة"]
for index, name in enumerate(names): print(index, name)
for index, name in enumerate(names, start=1): print(f"{index}. {name}")0 أحمد1 سارة1. أحمد2. سارةالخيار start=1 يجعل العدّ يبدأ من 1 بدلاً من 0، وهذا مناسب لعرض قائمة مرقّمة للمستخدم.
القوائم المختصرة (List Comprehension)
Section titled “القوائم المختصرة (List Comprehension)”Python تسمح لك ببناء قائمة جديدة من حلقة في سطر واحد:
squares = [n ** 2 for n in range(1, 6)]print(squares)[1, 4, 9, 16, 25]اقرأها: «أعطني n تربيع، لكل n في الأرقام من 1 إلى 5». هذه الكتابة من أشهر ميزات Python، وستراها كثيراً في كود الآخرين.
جرّب بنفسك
Section titled “جرّب بنفسك”اكتب برنامجاً يطلب من المستخدم رقماً، ثم يطبع جدول ضربه من 1 إلى 10، ثم يطبع مجموع نتائج الجدول. مثال:
اكتب رقماً: 33 × 1 = 33 × 2 = 6...3 × 10 = 30المجموع: 165تحدٍّ إضافي: اطبع نتائج الجدول الزوجية فقط.
أخطاء شائعة
Section titled “أخطاء شائعة”- توقع أن range تشمل النهاية:
range(1, 10)تتوقف عند 9. لتصل إلى 10 اكتبrange(1, 11). - نسيان النقطتين أو الإزاحة: تسبب
SyntaxErrorأوIndentationError. - تعديل القائمة أثناء المرور عليها: حذف عناصر من قائمة داخل حلقة
forتمر عليها يسبب نتائج غريبة. أنشئ قائمة جديدة بدلاً من ذلك.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما الأرقام التي تولّدها range(2, 6)؟
range تبدأ من البداية وتتوقف قبل النهاية، فالرقم 6 لا يدخل.
سؤال
كم مرة تُنفّذ الحلقة for i in range(4):؟
range(4) تولّد 0 و 1 و 2 و 3، أي أربعة أرقام.
الخلاصة
Section titled “الخلاصة”for عنصر in مجموعة:تمر على العناصر واحداً تلو الآخر.- تعمل مع القوائم والنصوص وأي مجموعة.
range(بداية, نهاية, خطوة)تولّد أرقاماً، والنهاية لا تدخل.enumerateتعطيك رقم العنصر وقيمته معاً.- القائمة المختصرة
[تعبير for x in مجموعة]تبني قائمة في سطر واحد.