مرحبًا بك في الدرس الثاني عشر من سلسلة أساسيات بايثون على موقع بايثون العرب.
{getToc} $title={محتوى المقال}
في الدرس السابق تعلمنا الشروط if و else، وفهمنا كيف نجعل البرنامج يتخذ قرارًا حسب حالة معينة.
أما في هذا الدرس فسنتعلم مفهومًا مهمًا جدًا في البرمجة، وهو:
Loops أو بالعربية: الحلقات / التكرار.
الحلقات تساعدك على تكرار تنفيذ نفس الكود أكثر من مرة بدون أن تكتبه يدويًا في كل مرة.
{alertInfo} إذا كنت تريد كتابة نفس الأمر أكثر من مرة، فغالبًا تحتاج إلى Loop بدل تكرار الكود يدويًا.
إذا لم تقرأ درس الشروط، أنصحك بمراجعته أولًا لأنه يرتبط كثيرًا بهذا الدرس: أساسيات بايثون 11: شرح if و else في Python للمبتدئين.
ما معنى Loop في البرمجة؟
كلمة Loop تعني حلقة أو تكرار.
في البرمجة، نستخدم الحلقات عندما نريد تنفيذ نفس الكود أكثر من مرة.
مثلاً بدل أن تكتب:
print("مرحبا")
print("مرحبا")
print("مرحبا")
يمكنك استخدام حلقة تكرر الأمر:
for i in range(3):
print("مرحبا")
والنتيجة ستكون نفس الشيء، لكن الكود أصبح أقصر وأفضل.
أنواع Loops في Python
في بايثون يوجد نوعان أساسيان من الحلقات:
for loopwhile loop
كل نوع له استخدامه، وسنتعلم الاثنين في هذا الدرس.
| نوع الحلقة | متى نستخدمها؟ |
|---|---|
for |
عندما تريد التكرار على عناصر موجودة، مثل قائمة أو نص أو range. |
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 = ["apple", "banana", "cherry"]
ثم كتبنا الحلقة:
for fruit in fruits:
معناها: خذ كل عنصر من قائمة fruits وضعه مؤقتًا داخل المتغير fruit.
ثم نفذ:
print(fruit)
لكل عنصر في القائمة.
{alertInfo} اسم المتغير داخل for يمكن أن يكون أي اسم، لكن الأفضل أن يكون واضحًا مثل fruit عند المرور على fruits.
استخدام for مع النصوص
يمكنك استخدام for مع النصوص أيضًا، لأن النص يتكون من أحرف.
for letter in "Python":
print(letter)
الناتج:
P
y
t
h
o
n
الحلقة هنا مرت على كل حرف داخل كلمة Python.
استخدام range في Python
الدالة range() تستخدم لإنشاء تسلسل من الأرقام.
مثال:
for i in range(5):
print(i)
الناتج:
0
1
2
3
4
لاحظ أن range(5) تبدأ من 0 وتنتهي قبل 5.
{alertWarning} انتبه: range(5) لا تطبع الرقم 5، بل تتوقف عند 4 لأن البداية تكون من 0.
تحديد البداية والنهاية في range
يمكنك تحديد رقم البداية ورقم النهاية:
for i in range(1, 6):
print(i)
الناتج:
1
2
3
4
5
هنا بدأنا من 1 وانتهينا قبل 6.
تحديد مقدار الزيادة في range
يمكنك أيضًا تحديد مقدار الزيادة.
for i in range(2, 11, 2):
print(i)
الناتج:
2
4
6
8
10
هنا بدأنا من 2، وتوقفنا قبل 11، وكانت الزيادة 2 في كل مرة.
مثال عملي: طباعة جدول الضرب
لنستخدم for لطباعة جدول ضرب رقم معين.
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
وهكذا حتى الرقم 10.
شرح while loop في Python
نستخدم while عندما نريد تكرار الكود طالما أن الشرط صحيح.
الشكل العام:
while condition:
# code to repeat while condition is True
مثال:
count = 1
while count <= 5:
print(count)
count = count + 1
الناتج:
1
2
3
4
5
الحلقة استمرت طالما أن count <= 5.
شرح while خطوة بخطوة
بدأنا بقيمة:
count = 1
ثم كتبنا الشرط:
while count <= 5:
بعد كل مرة نطبع فيها الرقم، نزيده بواحد:
count = count + 1
ويمكن كتابتها بشكل مختصر:
count += 1
{alertWarning} انتبه: إذا نسيت زيادة المتغير داخل while، قد تدخل في حلقة لا نهائية.
ما هي الحلقة اللانهائية Infinite Loop؟
الحلقة اللانهائية تحدث عندما يبقى شرط while صحيحًا دائمًا، فلا تتوقف الحلقة.
مثال خطر:
count = 1
while count <= 5:
print(count)
هنا لم نغيّر قيمة count، لذلك سيبقى الشرط صحيحًا دائمًا.
الصحيح:
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
عندما وصلنا إلى 5، توقفت الحلقة.
استخدام 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)
هذا المثال يمر على أكثر من قيمة، ويستخدم في أشياء مثل الجداول والمصفوفات وبعض الأنماط.
مثال عملي: جمع أرقام قائمة
لنستخدم حلقة لجمع أرقام داخل قائمة.
numbers = [10, 20, 30]
total = 0
for number in numbers:
total += number
print(total)
الناتج:
60
الحلقة مرت على كل رقم وأضافته إلى المتغير total.
مثال عملي: البحث عن اسم داخل قائمة
يمكنك استخدام الحلقة للبحث داخل قائمة.
names = ["Ahmed", "Sara", "Omar"]
for name in names:
if name == "Sara":
print("تم العثور على الاسم")
هذا المثال يجمع بين for و if.
أخطاء شائعة عند استخدام 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
{alertSuccess} أفضل طريقة لتعلم Loops هي كتابة أمثلة صغيرة مثل طباعة الأرقام، جمع قائمة، والبحث داخل قائمة.
متى أستخدم for ومتى أستخدم while؟
استخدم for عندما تعرف ما الذي تريد المرور عليه، مثل قائمة أو range أو نص.
واستخدم while عندما تريد التكرار طالما أن شرطًا معينًا صحيح.
| الحالة | الأفضل |
|---|---|
| المرور على قائمة أسماء | for |
| طباعة أرقام من 1 إلى 10 | for مع range |
| تكرار عملية حتى يكتب المستخدم كلمة خروج | while |
| تنفيذ كود طالما الشرط صحيح | while |
روابط مفيدة
لفهم القوائم التي نمر عليها باستخدام الحلقات، اقرأ: أساسيات بايثون 8: شرح Lists في Python.
ولفهم الشروط التي نستخدمها داخل الحلقات، اقرأ: أساسيات بايثون 11: شرح if و else في Python.
ويمكنك الرجوع إلى توثيق بايثون الرسمي حول التحكم في تدفق البرنامج: Python Control Flow Documentation.
مقالات مقترحة من بايثون العرب
- بايثون بالمثال 2: معرفة هل الرقم زوجي أم فردي في Python
- مشكلة وحل: حل خطأ ValueError invalid literal for int في Python
- أساسيات بايثون 10: شرح Dictionaries في Python للمبتدئين
خلاصة الدرس
في هذا الدرس تعلمنا شرح Loops في Python، وفهمنا كيف تساعدنا الحلقات على تكرار الكود بطريقة منظمة.
تعلمنا:
- ما معنى Loop في البرمجة.
- كيفية استخدام
for loop. - كيفية استخدام
range(). - كيفية استخدام
while loop. - ما هي الحلقة اللانهائية.
- الفرق بين
breakوcontinue. - متى نستخدم
forومتى نستخدمwhile.
الحلقات من أهم أساسيات بايثون، وستستخدمها كثيرًا عند التعامل مع القوائم، النصوص، الملفات، والبيانات.
تمرين بسيط لك
اكتب برنامجًا يطبع الأرقام من 1 إلى 10 باستخدام for.
ثم اكتب نفس البرنامج باستخدام while.
ابدأ بهذا المثال:
for i in range(1, 11):
print(i)
ثم جرّب كتابته باستخدام while.
في الدرس القادم
في الدرس القادم من سلسلة أساسيات بايثون سنتعلم:
شرح Functions في Python للمبتدئين
وسنفهم كيف ننشئ دوال تساعدنا على تنظيم الكود وإعادة استخدامه.