شرح حلقة for في بايثون: استخدام ‎range()‎ مع ‎for i in range‎ بالأمثلة

دقائق القراءة: 4

مقدمة إلى حلقة for في بايثون

تُعد الحلقات التكرارية من أهم أدوات التحكم في تدفق التنفيذ داخل أي لغة برمجة، ولغة Python ليست استثناءً. ومن بين أكثر الحلقات استخداماً تأتي حلقة for، التي تساعدك على تنفيذ جزء من الشيفرة عدة مرات بطريقة منظمة وسهلة القراءة.

في هذا المقال، سنتعرف على كيفية استخدام حلقة for في بايثون، مع التركيز على الصيغة الشائعة for i in range()، إلى جانب أمثلة عملية توضح طريقة عملها ومتى يكون استخدامها هو الخيار الأفضل.

شرح حلقة فور في بايثون واستخدام الدالة range مع أمثلة برمجية

ما هي حلقة for في بايثون؟

تُستخدم حلقة for لتكرار تنفيذ كتلة من الأوامر على مجموعة من القيم. ويمكن أن تكون هذه القيم داخل قائمة list أو نص string أو أي كائن قابل للتكرار iterable.

في بايثون، تختلف حلقة for قليلاً عن نظيراتها في لغات مثل JavaScript أو C. فهي لا تعتمد فقط على عدّاد رقمي تقليدي، بل تمر على كل عنصر موجود داخل تسلسل معين، وتُسنِد هذا العنصر في كل دورة إلى متغير التكرار.

مثال بسيط على حلقة for

في المثال التالي، نستخدم حلقة for لطباعة كل رقم داخل قائمة:

# Example for loop
for i in [1, 2, 3, 4]:
    print(i, end=", ")

# prints: 1, 2, 3, 4,

هنا يأخذ المتغير i في كل مرة قيمة جديدة من القائمة، ثم تُنفذ الدالة print() لطباعة هذه القيمة.

إضافة منطق برمجي داخل الحلقة

لا يقتصر دور حلقة for على الطباعة فقط، بل يمكن تنفيذ عمليات حسابية أو شروط أو أي منطق برمجي آخر داخل جسم الحلقة.

# More complex example
for i in [1, 3, 5, 7, 9]:
    x = i**2 - (i - 1) * (i + 1)
    print(x, end=", ")

# prints: 1, 1, 1, 1, 1,

في هذا المثال، يتم حساب قيمة المتغير x في كل دورة بناءً على قيمة i الحالية، ثم تُطبع النتيجة مباشرة.

متى نستخدم range() مع حلقة for؟

عندما تكون القيم التي نريد التكرار عليها متتابعة، فمن الأفضل استخدام الدالة range() بدلاً من كتابة جميع القيم يدوياً داخل قائمة. هذا يجعل الشيفرة أنظف وأسهل في الصيانة، خصوصاً عند التعامل مع نطاقات رقمية كبيرة.

ما هي الدالة range() في بايثون؟

توفر الدالة range() تسلسلاً من الأعداد الصحيحة وفقاً للمعاملات التي تمررها إليها. وهي من أكثر الأدوات شيوعاً مع حلقة for عند الحاجة إلى تنفيذ التكرار عدداً محدداً من المرات.

range(stop)
range(start, stop[, step])

شرح معاملات range()

  • start: القيمة التي يبدأ منها التسلسل.
  • stop: الحد الأعلى للنطاق، وهو غير مشمول في النتائج.
  • step: مقدار الزيادة بين كل قيمة والتي تليها، والقيمة الافتراضية له هي 1.

إذا استدعيت الدالة range() بمعامل واحد فقط، فإن بايثون تفترض تلقائياً أن قيمة start تساوي 0.

مثال على range() بمعامل واحد

في المثال التالي، يبدأ النطاق من 0 وينتهي قبل 5:

# Example with one argument
for i in range(5):
    print(i, end=", ")

# prints: 0, 1, 2, 3, 4,

لاحظ أن الرقم 5 لم يُطبع، لأن القيمة stop لا تدخل ضمن النتائج.

مثال على range() بمعاملين

يمكنك تحديد نقطة البداية ونقطة النهاية معاً كما يلي:

# Example with two arguments
for i in range(-1, 5):
    print(i, end=", ")

# prints: -1, 0, 1, 2, 3, 4,

في هذا المثال، يبدأ التكرار من -1 ويستمر حتى ما قبل 5.

مثال على range() بثلاثة معاملات

إذا أردت تغيير مقدار القفزة بين القيم، يمكنك استخدام المعامل step:

# Example with three arguments
for i in range(-1, 5, 2):
    print(i, end=", ")

# prints: -1, 1, 3,

هنا يبدأ النطاق من -1، ويتوقف قبل 5، مع زيادة مقدارها 2 في كل دورة.

لماذا تُعد range() مفيدة في التطبيقات العملية؟

تكمن أهمية range() في أنها تمنحك طريقة مختصرة ومرنة للتحكم في عدد مرات التكرار. وبدلاً من إنشاء قائمة يدوية مثل [0, 1, 2, 3, 4]، يمكنك توليد هذا التسلسل مباشرة باستخدام range(5).

ومن أبرز فوائدها:

  • تقليل حجم الشيفرة وتحسين وضوحها.
  • تسهيل التحكم في البداية والنهاية وخطوة الزيادة.
  • جعل الحلقات أكثر قابلية للتعديل عند تطوير البرنامج لاحقاً.
  • مناسبة جداً للتعامل مع العدادات والفهارس indexes.

الفرق بين التكرار على قائمة والتكرار باستخدام range()

الحالة الاستخدام الأنسب
لديك عناصر جاهزة داخل قائمة استخدم for مباشرة على القائمة
تحتاج إلى أرقام متتابعة استخدم range()
تحتاج إلى عدد محدد من التكرارات استخدم range()
تريد الوصول إلى كل عنصر كقيمة مستقلة استخدم التكرار المباشر على العناصر

نصائح مهمة عند استخدام for i in range()

  1. تذكر دائماً أن قيمة stop غير مضمنة في الناتج.
  2. استخدم step عندما تحتاج إلى أرقام فردية أو زوجية أو قفزات ثابتة.
  3. لا تلجأ إلى range() إذا كانت لديك قيم غير متسلسلة؛ في هذه الحالة تكون القائمة المباشرة أوضح.
  4. احرص على اختيار أسماء متغيرات معبرة عندما لا يكون i مناسباً للسياق.

ملخص استخدام حلقة for مع range()

تعلمنا في هذا المقال أن حلقة for في بايثون تُستخدم لتكرار تنفيذ كتلة من الشيفرة على مجموعة من القيم، وأن الدالة range() تُعد أداة مثالية عندما تكون هذه القيم أعداداً صحيحة متتابعة.

كما رأينا أن:

  • range(stop) تبدأ من 0 تلقائياً.
  • range(start, stop) تسمح بتحديد البداية والنهاية.
  • range(start, stop, step) تضيف مرونة أكبر عبر التحكم في مقدار الزيادة.

الخلاصة التقنية

من الناحية العملية، يُعد الجمع بين for وrange() من الأساسيات التي يجب إتقانها في Python، لأنه يظهر في عدد كبير من البرامج والخوارزميات. وإذا فهمت جيداً كيف تعمل معاملات start وstop وstep، فستتمكن من كتابة حلقات أكثر كفاءة ووضوحاً، مع شيفرة منظمة يسهل تطويرها وقراءتها لاحقاً.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *