أساسيات بايثون 12: شرح Loops في Python للمبتدئين

مرحبًا بك في الدرس الثاني عشر من سلسلة أساسيات بايثون على موقع بايثون العرب. في هذا الدرس سنشرح مفهومًا مهمًا جدًا في البرمجة، وهو Loops أو الحلقات في Python.

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

سنتعلم في هذا الدرس شرح for loop و while loop، واستخدام range()، والفرق بين break و continue، وكيف تتجنب الحلقة اللانهائية، مع أمثلة عملية مناسبة للمبتدئين.

{getToc} $title={محتوى المقال}

{alertInfo} إذا وجدت نفسك تكتب نفس السطر أكثر من مرة، فغالبًا أنت تحتاج إلى Loop بدل تكرار الكود يدويًا.

قبل هذا الدرس، من الأفضل أن تكون لديك فكرة عن الشروط في بايثون، لأننا سنستخدم if داخل الحلقات في أكثر من مثال. يمكنك مراجعة درس: أساسيات بايثون 11: شرح if و else في Python للمبتدئين.

ما معنى Loop في البرمجة؟

كلمة Loop تعني حلقة أو تكرار. في البرمجة نستخدم الحلقات عندما نريد تنفيذ نفس الكود عدة مرات بطريقة منظمة.

مثلاً بدل أن تكتب:

print("مرحبا")
print("مرحبا")
print("مرحبا")

يمكنك استخدام حلقة واحدة:

for i in range(3):
    print("مرحبا")

الناتج في الحالتين هو نفسه، لكن الكود الثاني أفضل لأنه أقصر وأسهل في التعديل. لو أردت طباعة الكلمة 100 مرة، ستغير الرقم فقط بدل كتابة 100 سطر.

لماذا نحتاج إلى Loops في Python؟

نحتاج إلى الحلقات لأن كثيرًا من البرامج تعتمد على التكرار. مثلًا قد تحتاج إلى:

  • طباعة الأرقام من 1 إلى 100.
  • المرور على أسماء الطلاب داخل قائمة.
  • جمع أرقام موجودة داخل List.
  • البحث عن عنصر معين داخل قائمة.
  • تكرار سؤال المستخدم حتى يكتب إجابة صحيحة.
  • قراءة عناصر ملف أو بيانات واحدة تلو الأخرى.

بدون الحلقات ستضطر إلى تكرار الكود يدويًا، وهذا يجعل البرنامج طويلًا وصعب الصيانة.

أنواع الحلقات في Python

في بايثون يوجد نوعان أساسيان من الحلقات:

  • for loop: تستخدم غالبًا عندما تريد المرور على عناصر موجودة، مثل قائمة أو نص أو أرقام من range().
  • while loop: تستخدم عندما تريد تكرار الكود طالما أن شرطًا معينًا ما زال صحيحًا.
نوع الحلقة متى تستخدمها؟ مثال مناسب
for عندما تعرف العناصر التي تريد المرور عليها المرور على قائمة أسماء
while عندما تريد التكرار طالما أن شرطًا صحيح تكرار السؤال حتى يدخل المستخدم قيمة صحيحة

شرح for loop في Python

نستخدم for عندما نريد المرور على مجموعة عناصر وتنفيذ كود معين على كل عنصر.

الشكل العام:

for item in collection:
    # code to repeat

مثال على المرور على قائمة:

fruits = ["apple", "banana", "cherry"]

for fruit in fruits:
    print(fruit)

الناتج:

apple
banana
cherry

هنا أخذت الحلقة كل عنصر من قائمة fruits ووضعته مؤقتًا داخل المتغير fruit، ثم نفذت أمر الطباعة عليه.

{alertSuccess} اسم المتغير داخل for يمكن أن يكون أي اسم، لكن الأفضل اختيار اسم واضح مثل fruit عند المرور على قائمة اسمها fruits.

شرح for loop خطوة بخطوة

في المثال السابق لدينا قائمة:

fruits = ["apple", "banana", "cherry"]

ثم كتبنا:

for fruit in fruits:

معنى هذا السطر: خذ كل عنصر من القائمة fruits وضعه مؤقتًا في المتغير fruit، ثم نفذ الكود الموجود داخل الحلقة.

وفي كل دورة تعمل:

print(fruit)

لذلك يتم طباعة كل عنصر في القائمة.

استخدام for مع النصوص

يمكنك استخدام for مع النصوص أيضًا، لأن النص في بايثون يتكون من أحرف.

for letter in "Python":
    print(letter)

الناتج:

P
y
t
h
o
n

الحلقة هنا مرت على كل حرف داخل كلمة Python وطبعت الحروف واحدًا بعد الآخر.

استخدام range في Python

الدالة range() تستخدم لإنشاء تسلسل من الأرقام. وهي مفيدة جدًا مع for loop عندما تريد تكرار الكود عددًا معينًا من المرات.

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

الناتج:

0
1
2
3
4

لاحظ أن range(5) تبدأ من 0 وتنتهي قبل 5، لذلك آخر رقم مطبوع هو 4.

{alertWarning} انتبه: range(5) لا تطبع الرقم 5، بل تتوقف عند 4 لأن النهاية غير داخلة في النطاق.

تحديد البداية والنهاية في range

يمكنك تحديد رقم البداية ورقم النهاية داخل range().

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

الناتج:

1
2
3
4
5

هنا بدأت الأرقام من 1، وانتهت قبل 6، لذلك تمت طباعة الأرقام من 1 إلى 5.

تحديد مقدار الزيادة في range

يمكنك أيضًا تحديد مقدار الزيادة. مثلًا لو أردت طباعة الأرقام الزوجية فقط:

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

الناتج:

2
4
6
8
10

معنى range(2, 11, 2): ابدأ من 2، توقف قبل 11، وزد الرقم بمقدار 2 في كل مرة.

مثال عملي: طباعة جدول الضرب

لنستخدم for مع range() لطباعة جدول ضرب رقم معين.

number = 5

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

جزء من الناتج:

5 x 1 = 5
5 x 2 = 10
5 x 3 = 15

هذا المثال يوضح فائدة الحلقات: بدل أن نكتب عمليات الضرب يدويًا، جعلنا الحلقة تكرر العملية من 1 إلى 10.

شرح while loop في Python

نستخدم while عندما نريد تكرار الكود طالما أن شرطًا معينًا صحيح.

الشكل العام:

while condition:
    # code runs while condition is True

مثال:

count = 1

while count <= 5:
    print(count)
    count = count + 1

الناتج:

1
2
3
4
5

الحلقة استمرت طالما أن قيمة count أقل من أو تساوي 5. وبعد كل دورة قمنا بزيادة count حتى يتوقف الشرط في النهاية.

شرح while خطوة بخطوة

بدأنا بقيمة أولية:

count = 1

ثم وضعنا شرط الحلقة:

while count <= 5:

داخل الحلقة نطبع الرقم:

print(count)

ثم نزيده بواحد:

count = count + 1

ويمكن اختصارها هكذا:

count += 1
{alertWarning} عند استخدام while يجب أن تتأكد أن الشرط سيتغير في مرحلة ما، وإلا قد تحصل على حلقة لا نهائية.

ما هي الحلقة اللانهائية Infinite Loop؟

الحلقة اللانهائية تحدث عندما يبقى شرط while صحيحًا دائمًا، فلا تتوقف الحلقة.

مثال خطأ:

count = 1

while count <= 5:
    print(count)

المشكلة هنا أننا لم نغير قيمة count داخل الحلقة، لذلك ستبقى قيمته 1 دائمًا، وسيبقى الشرط صحيحًا.

الصحيح:

count = 1

while count <= 5:
    print(count)
    count += 1
{alertError} الحلقة اللانهائية قد تجعل البرنامج لا يتوقف، لذلك تأكد دائمًا أن شرط while سيتغير داخل الحلقة.

استخدام break لإيقاف الحلقة

الكلمة break تستخدم لإيقاف الحلقة بالكامل فورًا، حتى لو لم تنتهِ كل الدورات.

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

الناتج:

1
2
3
4

عندما وصلت قيمة i إلى 5، نفذت بايثون break وأوقفت الحلقة بالكامل.

استخدام continue لتخطي دورة واحدة

الكلمة continue لا توقف الحلقة بالكامل، لكنها تتخطى الدورة الحالية فقط وتنتقل إلى الدورة التالية.

for i in range(1, 6):
    if i == 3:
        continue
    print(i)

الناتج:

1
2
4
5

لاحظ أن الرقم 3 لم يتم طباعته، لأن continue جعلت الحلقة تتخطى هذه الدورة فقط.

الفرق بين break و continue

الأداة ماذا تفعل؟ متى تستخدمها؟
break توقف الحلقة بالكامل عندما تصل إلى النتيجة المطلوبة ولا تحتاج لإكمال التكرار
continue تتخطى الدورة الحالية فقط عندما تريد تجاهل حالة معينة ومتابعة باقي التكرار

Nested Loops في Python

يمكنك وضع حلقة داخل حلقة أخرى، وهذا يسمى Nested Loop أو الحلقة المتداخلة.

for i in range(1, 4):
    for j in range(1, 4):
        print(i, j)

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

مثال عملي: جمع أرقام قائمة باستخدام for

لنستخدم حلقة لجمع أرقام داخل قائمة:

numbers = [10, 20, 30]
total = 0

for number in numbers:
    total += number

print(total)

الناتج:

60

الحلقة مرت على كل رقم داخل القائمة وأضافته إلى المتغير total.

هذا المثال مرتبط بدرس: بايثون بالمثال: جمع عناصر قائمة في Python.

مثال عملي: البحث عن اسم داخل قائمة

يمكن استخدام الحلقة للبحث عن عنصر داخل قائمة.

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

for name in names:
    if name == "Sara":
        print("تم العثور على الاسم")

هذا المثال يجمع بين for و if. نمر على الأسماء واحدًا واحدًا، وإذا كان الاسم يساوي "Sara" نطبع رسالة.

مثال عملي: تكرار السؤال حتى يدخل المستخدم كلمة صحيحة

هذا مثال مناسب لاستخدام while. نريد أن يستمر البرنامج في سؤال المستخدم حتى يكتب كلمة المرور الصحيحة.

password = ""

while password != "python123":
    password = input("أدخل كلمة المرور: ")

print("تم تسجيل الدخول بنجاح")

هنا ستستمر الحلقة طالما أن كلمة المرور غير صحيحة. وعندما يكتب المستخدم python123 يتوقف الشرط وتخرج بايثون من الحلقة.

أخطاء شائعة عند استخدام Loops

الخطأ الأول: نسيان النقطتين

هذا كود خاطئ:

for i in range(5)
    print(i)

الصحيح:

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

الخطأ الثاني: نسيان المسافة البادئة

هذا كود خاطئ:

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

الصحيح:

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

الخطأ الثالث: حلقة while لا تتوقف

عند استخدام while تأكد أن الشرط سيتغير داخل الحلقة.

مثال صحيح:

count = 1

while count <= 5:
    print(count)
    count += 1

الخطأ الرابع: استخدام while بدل for بدون حاجة

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

{alertSuccess} أفضل طريقة لتعلم Loops هي كتابة أمثلة صغيرة: طباعة أرقام، المرور على قائمة، جمع عناصر، والبحث عن قيمة.

متى أستخدم for ومتى أستخدم while؟

الحالة الأفضل السبب
المرور على قائمة أسماء for لأن العناصر موجودة مسبقًا
طباعة الأرقام من 1 إلى 10 for مع range() لأن عدد التكرارات معروف
تكرار السؤال حتى يكتب المستخدم كلمة خروج while لأن التوقف يعتمد على إدخال المستخدم
تنفيذ كود طالما الشرط صحيح while لأن التكرار يعتمد على شرط

أسئلة شائعة عن Loops في Python

هل يمكن استخدام for بدون range؟

نعم، يمكنك استخدام for مع القوائم والنصوص والقواميس والكثير من الكائنات القابلة للتكرار في Python.

هل range تبدأ دائمًا من صفر؟

إذا كتبت range(5) فستبدأ من صفر. أما إذا كتبت range(1, 6) فستبدأ من 1 وتنتهي قبل 6.

ما الفرق بين for و while؟

استخدم for عندما تعرف ما الذي تريد المرور عليه أو تعرف عدد مرات التكرار. واستخدم while عندما تريد استمرار التكرار طالما شرط معين صحيح.

لماذا تحدث الحلقة اللانهائية؟

تحدث غالبًا عندما تستخدم while وتنسى تغيير المتغير الذي يعتمد عليه الشرط، فيبقى الشرط صحيحًا دائمًا.

هل break و continue تعملان مع for و while؟

نعم، يمكن استخدام break و continue مع حلقات for وحلقات while.

روابط مفيدة

خلاصة الدرس

في هذا الدرس تعلمنا شرح Loops في Python، وفهمنا كيف تساعدنا الحلقات على تكرار الكود بطريقة منظمة بدل كتابته أكثر من مرة.

تعلمنا استخدام for loop للمرور على القوائم والنصوص والأرقام، وتعلمنا استخدام range() لتوليد أرقام، وتعلمنا استخدام while loop للتكرار حسب شرط معين.

كما فهمنا معنى الحلقة اللانهائية، والفرق بين break و continue، ومتى نستخدم for ومتى نستخدم while.

{alertSuccess} الخلاصة السريعة: استخدم for عندما تعرف العناصر أو عدد التكرارات، واستخدم while عندما تريد التكرار طالما أن شرطًا معينًا صحيح.

تمرين بسيط لك

اكتب برنامجًا يطبع الأرقام من 1 إلى 10 باستخدام for.

for i in range(1, 11):
    print(i)

ثم حاول كتابة نفس البرنامج باستخدام while. بعد ذلك جرّب تعديل البرنامج ليطبع الأرقام الزوجية فقط من 2 إلى 20.

إرسال تعليق

أحدث أقدم