الحلقات في بايثون loops

سر الأتمتة الذكية: شرح الحلقات التكرارية (Loops) في بايثون بالتفصيل

🔄 ما هي الحلقات التكرارية (Loops) ولماذا نستخدمها؟

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

تخيل لو طلبنا منك طباعة جملة "مرحباً بك" مئة مرة؛ الأسلوب التقليدي النمطي يقتضي كتابة أمر الطباعة مئة سطر متتالي، بينما الأسلوب الهندسي المحترف يختصر العملية كاملة في سطرين فقط باستخدام محرك الحلقات الذكي!

🛠️ معاينة الفارق الهيكلي: الأكواد مع الحلقات وبدونها

انظر كيف يختصر محرك التكرار بنية الكود بذكاء وأناقة:

❌ الأسلوب التقليدي المستهلك للوقت والمساحة:

print("Hello")
print("Hello")
print("Hello")

✅ الأسلوب البرمجي الاحترافي باستخدام الحلقة:

for i in range(3):
    print("Hello")

🖥️ مخرجات المعالجة:

Hello
Hello
Hello

1. المعمارية الأولى: حلقة التكرار المحدود (for Loop)

تُستخدم حلقة for عندما نكون على علم مسبق -غالباً- بعدد مرات التكرار المطلوبة، أو عندما نود المرور بشكل تتابعي على عناصر بداخل مجموعات مهيكلة كالقوائم، النصوص، أو المصفوفات الرقمية.

🔹 تطبيق أول: استخدام دالة النطاق القياسية range()

دالة range(5) تولد تلقائياً سلسلة رقمية تبدأ من الصفر وتتوقف قبل الرقم المذكور (أي تنتج: 0، 1، 2، 3، 4):

for number in range(5):
    print(number)

🖥️ المخرجات الحية:

0
1
2
3
4

🔹 تطبيق ثانٍ: تخصيص بداية ونهاية النطاق

يمكنك تمرير معاملين للدالة لتحديد نقطة الانطلاق ونقطة النهاية صراحة (يتوقف قبل معامل النهاية برقم):

for number in range(1, 6):
    print(number)

🖥️ المخرجات الحية:

1
2
3
4
5

🔹 تطبيق ثالث: تحديد مقدار الخطوة أو الزيادة (Step)

المعامل الثالث في دالة range يمثل القفزة الحركية للعداد؛ هنا نطلب طباعة الأرقام الزوجية من 2 إلى 10 بقفزة مقدارها 2 في كل دورة:

for number in range(2, 11, 2):
    print(number)

🖥️ المخرجات الحية:

2
4
6
8
10

📦 تصفح القوائم والسلاسل النصية حرفاً بحرف

تمتلك حلقة for مرونة خارقة في تفكيك المجموعات والمرور على محتوياتها تلقائياً دون الحاجة لعدادات رقمية يدوية:

🔹 تصفح وعرض عناصر قائمة (List):

names = ["Ali", "Sara", "Omar"]

for name in names:
    print("المطور:", name)

🖥️ المخرجات الحية:

المطور: Ali
المطور: Sara
المطور: Omar

🔹 تفكيك السلاسل النصية حرفاً بحرف:

word = "Python"

for letter in word:
    print(letter)

🖥️ المخرجات الحية:

P
y
t
h
o
n

2. المعمارية الثانية: حلقة التكرار المشروط (while Loop)

تُستخدم حلقة while عندما نود استمرار البرنامج في الدوران والتكرار **طالما كان هناك شرط منطقي معين صحيحاً (True)**. وتتوقف الحلقة فوراً في اللحظة التي ينكسر فيها الشرط ويتحول إلى False. احذر دائماً من السقوط في فخ الحلقة اللانهائية (Infinite Loop) بنسيان تحديث قيم العداد البرمجي!

💻 التطبيق البرمجي الصحيح والمطهر للحلقة المشروطة:

count = 1

while count <= 5:
    print("رقم الدورة الحالية:", count)
    count = count + 1  # سطر التحديث الحي لحماية الذاكرة من التجمد

🖥️ المخرجات الحية:

رقم الدورة الحالية: 1
رقم الدورة الحالية: 2
رقم الدورة الحالية: 3
رقم الدورة الحالية: 4
رقم الدورة الحالية: 5

⚡ أدوات التحكم الفائقة: معاملات كسر وتخطي الدورات

تمنحك بايثون الكلمات المفتاحية break و continue لفرض سيطرتك المطلقة على حركة تدفق الحلقات التكرارية من الداخل:

🛠️ أولاً: معامل الحظر والإنهاء المفاجئ (break)

يُستخدم للخروج الفوري والنهائي من الحلقة وسحقها فوراً بمجرد تحقق شرط معين، حتى لو لم تنتهِ الدورات المجدولة سلفاً:

for number in range(1, 10):
    if number == 5:
        break  # سيتم إيقاف وتدمير الحلقة هنا فوراً
    print(number)

🖥️ مخرجات الكسر:

1
2
3
4

🛠️ ثانياً: معامل التخطي والقفز (continue)

يُستخدم لتخطي الدورة الحالية وتجاهل الأسطر التي تقع أسفل منه فوراً، والقفز مباشرة لبدء الدورة التالية بداخل الحلقة:

for number in range(1, 6):
    if number == 3:
        continue  # سيتم قفز وتجاهل الرقم 3 والتحول للرقم 4
    print(number)

🖥️ مخرجات التخطي:

1
2
4
5

🚀 المعماريات المتقدمة: الحلقات المتداخلة ووسم المخرجات الكلي

الحلقات المتداخلة (Nested Loops) تعني بناء حلقة تكرارية كاملة بداخل نطاق حلقة أخرى؛ حيث تدور الحلقة الداخلية بكامل دوراتها في كل لفة مفردة تلتفها الحلقة الخارجية، وهي المعمارية الحاكمة لتصميم المصفوفات ثنائية الأبعاد واللوحات الحركية للألعاب:

for row in range(1, 4):
    for column in range(1, 4):
        print(f"الصف: {row} | العمود: {column}")

📊 تطبيق عملي أسطوري: خوارزمية هندسة جدول الضرب للرقم 5

number = 5
for i in range(1, 11):
    print(f"{number} x {i} = {number * i}")

💻 السكريبت التجميعي الكامل للتجربة والتحدي البرمجي الشامل

إليك الشيفرة البرمجية التأسيسية الشاملة لجميع محاور درس اليوم؛ معزولة، ومطهرة ومحمية بنسبة 100% لتكون جاهزة للنسخ السليم والتجريب الحي:

print("Python Loops Master Tutorial")
print("----------------------------")

print("\n1. Testing for loop with custom range:")
for number in range(1, 6):
    print("Current Number:", number)

print("\n2. Testing for loop parsing a List:")
students = ["Ali", "Sara", "Omar"]
for student in students:
    print(f"Welcome back to Matrix, {student}")

print("\n3. Testing while loop with safe update:")
count = 1
while count <= 3:
    print("Safe Count:", count)
    count += 1

print("\n4. Execution of break logic:")
for number in range(1, 10):
    if number == 6:
        break
    print("Output:", number)

print("\n5. Execution of continue logic:")
for number in range(1, 6):
    if number == 3:
        continue
    print("Skip 3 output:", number)

print("\n6. Building full multiplication table for 5:")
table_number = 5
for i in range(1, 11):
    print(f"{table_number} x {i} = {table_number * i}")

print("\nAll loop architectures compiled successfully!")

🔥 مساحة التطبيق والإنتاج الحي: قمنا بتجهيز وتهيئة كافة الأكواد الحوارية والشرطية لهذا الدرس بداخل محرر ومجمع بايثون تفاعلي مباشر؛ لتقوم بتجربتها، وتطويع العدادات، ومعاينة نتائجك الفورية: انقر هنا وافتح المحرر التفاعلي لدرس الحلقات التكرارية ←