البرمجة

حلقات التكرار في بايثون

جدول المحتوى

حلقات التكرار (Loops) في بايثون: دليل شامل وموسع

مقدمة

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

تمثل الحلقات في بايثون أداة لا غنى عنها في العديد من السيناريوهات مثل معالجة عناصر القوائم، أداء عمليات حسابية متكررة، قراءة الملفات، التعامل مع قواعد البيانات، أو تنفيذ عمليات في الزمن الحقيقي مثل الألعاب أو تطبيقات الويب.

أنواع الحلقات في بايثون

أولًا: الحلقة for

المفهوم العام

تُستخدم حلقة for في بايثون للتكرار عبر عناصر مجموعة قابلة للتكرار مثل القوائم (lists)، السلاسل النصية (strings)، القواميس (dictionaries)، أو أي كائن Iterable.

الصيغة العامة

python
for item in iterable: # تنفيذ التعليمات

أمثلة توضيحية

python
for number in [1, 2, 3, 4, 5]: print(number)

يتم هنا تكرار طباعة الأرقام واحدًا تلو الآخر. هذه الطريقة فعّالة وسهلة في التعامل مع الحلقات مقارنة بلغات برمجة أخرى تتطلب مؤشرات وتعقيدًا إضافيًا.

استخدام range() مع for

تُستخدم الدالة range() لإنشاء تسلسل عددي:

python
for i in range(5): print(i)

الناتج سيكون: 0 1 2 3 4

range(start, stop, step) تسمح بتحكم دقيق في بداية ونهاية وعدد خطوات التكرار.

التكرار العكسي

python
for i in range(10, 0, -1): print(i)

يُستخدم هذا النمط في حالات تحتاج فيها إلى عد تنازلي أو إدارة موارد بشكل عكسي.

التكرار داخل عناصر متداخلة

python
matrix = [[1, 2], [3, 4], [5, 6]] for row in matrix: for value in row: print(value)

هنا يتم استعراض عناصر مصفوفة ثنائية البُعد.


ثانيًا: الحلقة while

المفهوم العام

تُستخدم حلقة while لتكرار تنفيذ التعليمات طالما أن شرطًا معينًا لا يزال محققًا.

الصيغة العامة

python
while condition: # تنفيذ التعليمات

مثال بسيط

python
i = 0 while i < 5: print(i) i += 1

تُستخدم while في الحالات التي يكون فيها من الصعب تحديد عدد مرات التكرار مسبقًا، مثل تلقي مدخلات من المستخدم أو انتظار استجابة من الشبكة.

خطر الحلقات غير المنتهية

إذا لم يتم تعديل الشرط داخل الحلقة، قد يؤدي ذلك إلى حلقة لا نهائية، مما قد يستهلك موارد النظام أو يتسبب في انهيار البرنامج.


التحكم في الحلقات: break و continue

التعليمة break

تستخدم لإنهاء الحلقة بشكل فوري عندما يتحقق شرط معين:

python
for i in range(10): if i == 5: break print(i)

التعليمة continue

تستخدم لتجاوز التكرار الحالي والانتقال مباشرة إلى التكرار التالي:

python
for i in range(10): if i % 2 == 0: continue print(i)

استخدام else مع الحلقات

ميزة فريدة في بايثون، حيث يمكن استخدام كتلة else بعد for أو while. يتم تنفيذها فقط إذا لم يتم تنفيذ break داخل الحلقة.

python
for i in range(5): print(i) else: print("انتهت الحلقة دون كسرها.")

إذا تم استخدام break داخل الحلقة، فلن يتم تنفيذ الكود داخل else.


التكرار باستخدام القواميس والمجموعات

التكرار على القواميس

python
person = {"name": "أحمد", "age": 30} for key in person: print(key, person[key])

أو:

python
for key, value in person.items(): print(f"{key}: {value}")

التكرار على المجموعات

python
colors = {"أحمر", "أخضر", "أزرق"} for color in colors: print(color)

التكرار باستخدام الفهم التكراري (Comprehensions)

توفر بايثون أسلوبًا مختصرًا لتوليد هياكل بيانات باستخدام الفهم التكراري:

python
squares = [x ** 2 for x in range(10)]

أو لفلاتر مشروطة:

python
evens = [x for x in range(20) if x % 2 == 0]

مقارنة بين for و while

الجانب المقارن حلقة for حلقة while
الاستخدام المثالي عند معرفة عدد التكرارات مسبقًا عند عدم معرفة عدد التكرارات مسبقًا
الاعتمادية أكثر أمانًا من التكرار غير المنتهي عرضة للحلقات غير المنتهية إذا لم تتم إدارة الشرط
القابلية للقراءة أكثر وضوحًا وسهولة تحتاج إلى متابعة الشرط والمتغيرات
الأداء متقارب في معظم الحالات متقارب في معظم الحالات

تطبيقات عملية لحلقات التكرار في بايثون

1. جمع أرقام قائمة

python
numbers = [1, 2, 3, 4, 5] total = 0 for num in numbers: total += num print(total)

2. التحقق من كلمة سر باستخدام while

python
password = "" while password != "secret": password = input("أدخل كلمة السر: ")

3. البحث عن عنصر

python
items = ["apple", "banana", "cherry"] for item in items: if item == "banana": print("تم العثور عليها!") break

التعامل مع الحلقات المتداخلة

يمكن استخدام الحلقات المتداخلة (Nested Loops) لتنفيذ عمليات على بنى بيانات متعددة الأبعاد أو تكرارات معقدة:

python
for i in range(3): for j in range(2): print(f"i={i}, j={j}")

تحسين الأداء باستخدام enumerate و zip

استخدام enumerate

للحصول على الفهرس والعنصر في نفس الوقت:

python
names = ["علي", "خالد", "سارة"] for index, name in enumerate(names): print(index, name)

استخدام zip

للتكرار عبر أكثر من قائمة بالتوازي:

python
names = ["علي", "خالد", "سارة"] ages = [25, 30, 22] for name, age in zip(names, ages): print(f"{name} عمره {age}")

أفضل الممارسات عند استخدام الحلقات

  • تجنب الحلقات غير المنتهية عبر ضمان تحديث الشرط الداخلي.

  • استخدام for بدلًا من while متى ما كان عدد التكرارات معروفًا.

  • تقليل الكود داخل الحلقة لتجنب بطء الأداء.

  • استخدام فهم القوائم (comprehensions) عند الحاجة لتوليد هياكل بيانات جديدة بكفاءة.

  • الحذر عند استخدام break و continue لأنها قد تؤثر على منطق البرنامج بشكل غير متوقع.

  • تجنب التكرار المتداخل إلا للضرورات، لأنه قد يؤدي إلى تعقيد الأداء الحسابي O(n²) أو أكثر.


أمثلة متقدمة على استخدام الحلقات

1. رسم نمط هرمي باستخدام الحلقات

python
for i in range(1, 6): print("*" * i)

2. إنتاج جدول الضرب

python
for i in range(1, 11): for j in range(1, 11): print(f"{i} × {j} = {i*j}") print("-" * 20)

الجدول التوضيحي لأنواع الحلقات واستخدامها

نوع الحلقة الاستخدام الرئيسي قابلة للتكرار تحتاج إلى شرط تدعم else تدعم break/continue
for التكرار عبر عناصر قابلة للتكرار نعم لا نعم نعم
while التكرار بناءً على شرط لا نعم نعم نعم

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

تشكل حلقات التكرار أداة حيوية في بناء البرامج والخوارزميات باستخدام بايثون. من خلال أنواع الحلقات for و while والتعليمات المساعدة مثل break و continue و else، تتيح بايثون بيئة مرنة وقوية للتحكم في تدفق البرامج. وتعتبر التمارين العملية والممارسات السليمة حجر الأساس لتطوير فهم عميق لاستعمال الحلقات، خاصة في مشاريع كبيرة ومعقدة مثل تحليل البيانات، تطوير تطبيقات الذكاء الاصطناعي، أو أتمتة الأنظمة.


المصادر

  1. Python Documentation – Control Flow Tools: https://docs.python.org/3/tutorial/controlflow.html

  2. Real Python – For Loops in Python: https://realpython.com/python-for-loop/