الحلقات والتكرار في بايثون
مقدمة عن الحلقات والتكرار
الدرس الرابع: الحلقات والتكرار في بايثون (Loops and Iteration)
ما هي الحلقات التكرارية؟
الحلقات (Loops) هي إحدى أقوى الأدوات في البرمجة. تتيح لك تنفيذ كتلة من الأوامر بشكل متكرر دون الحاجة لكتابتها يدوياً. تخيل أنك تريد طباعة الأرقام من 1 إلى 100. بدون الحلقات، ستضطر لكتابة 100 أمر طباعة. مع الحلقات، تكتب 3 أسطر فقط!
لماذا نحتاج الحلقات؟
في عالم البرمجة، نواجه دائماً مهام متكررة: معالجة قوائم بيانات، قراءة ملفات سطراً سطراً، أو تكرار عملية حتى تتحقق حالة معينة. الحلقات تجعل الكود أقصر، أسهل للقراءة، وأقل عرضة للأخطاء. في مشروعنا المستقبلي (API المهام)، سنستخدم الحلقات لمعالجة قوائم المهام والبحث فيها.
أنواع الحلقات في بايثون
بايثون توفر نوعين رئيسيين من الحلقات:
- حلقة for: تستخدم للتكرار على مجموعة محددة من العناصر (قائمة، نص، نطاق أرقام).
- حلقة while: تستمر في التكرار طالما شرط معين صحيح (True).
1. حلقة for: التكرار على المجموعات
هذه الحلقة هي الأكثر استخداماً في بايثون. تعمل على تمرير كل عنصر من عناصر مجموعة محددة.
# قائمة بأسماء طلاب
students = ["أحمد", "سارة", "خالد", "نورة"]
# حلقة for تطبع كل اسم
for student in students:
print(f"مرحباً {student}!")
# الناتج:
# مرحباً أحمد!
# مرحباً سارة!
# مرحباً خالد!
# مرحباً نورة!
شرح الكود خطوة بخطوة:
- أنشأنا قائمة students تحتوي على 4 أسماء.
- كلمة
forتبدأ الحلقة. studentهو متغير مؤقت يأخذ قيمة كل عنصر في القائمة بالتتابع.in studentsتحدد المجموعة التي نريد التكرار عليها.- الأمر
printينفذ لكل اسم في القائمة.
استخدام range() مع حلقة for
دالة range() تولد سلسلة من الأرقام. مفيدة جداً عندما نريد تكرار عدد محدد من المرات.
# range(5) يولد الأرقام 0,1,2,3,4
for i in range(5):
print(f"الرقم: {i}")
# الناتج:
# الرقم: 0
# الرقم: 1
# الرقم: 2
# الرقم: 3
# الرقم: 4
# للبدء من 1 بدلاً من 0:
for i in range(1, 6):
print(f"الرقم: {i}")
# الناتج:
# الرقم: 1
# الرقم: 2
# الرقم: 3
# الرقم: 4
# الرقم: 5
2. حلقة while: التكرار بشرط
تستمر حلقة while في التنفيذ طالما الشرط المحدد صحيح. يجب توخي الحذر لتجنب الحلقات اللانهائية!
count = 5
while count > 0:
print(f"العد التنازلي: {count}")
count -= 1 # ننقص 1 من count في كل مرة
print("انتهى العد!")
# الناتج:
# العد التنازلي: 5
# العد التنازلي: 4
# العد التنازلي: 3
# العد التنازلي: 2
# العد التنازلي: 1
# انتهى العد!
شرح الكود:
- بدأنا بمتغير
count = 5. - الشرط
count > 0يتحقق قبل كل تكرار. - داخل الحلقة، نطبع القيمة ثم ننقصها بواحد (
count -= 1). - عندما يصبح count = 0، الشرط يصبح False وتتوقف الحلقة.
أخطاء شائعة وكيفية تجنبها
- الحلقة اللانهائية: نسيان تحديث المتغير في حلقة while يؤدي إلى تكرار لا نهائي. تأكد دائماً من أن الشرط سيصبح False في النهاية.
- نسيان النقطتين (:) بعد for أو while: هذا خطأ نحوي شائع. تذكر دائماً وضع النقطتين.
- المسافات البادئة (Indentation): كل الأوامر داخل الحلقة يجب أن تكون ذات مسافة بادئة واحدة (4 مسافات أو tab). أي أمر بدون مسافة يعتبر خارج الحلقة.
break للخروج من الحلقة مبكراً، و continue لتخطي التكرار الحالي والانتقال للتالي. مثال:
for i in range(10):
if i == 3:
continue # يتخطى الرقم 3
if i == 7:
break # يتوقف عند الرقم 7
print(i)
# الناتج: 0,1,2,4,5,6
مثال تطبيقي: حساب مجموع الأرقام
لنطبق ما تعلمناه في مثال عملي لحساب مجموع الأرقام من 1 إلى 10.
# حساب مجموع الأرقام من 1 إلى 10
total = 0
for number in range(1, 11):
total += number # نفس total = total + number
print(f"مجموع الأرقام من 1 إلى 10 هو: {total}")
# الناتج: مجموع الأرقام من 1 إلى 10 هو: 55
تمرين صغير (تطبيق عملي)
- أنشئ قائمة تحتوي على 5 أرقام من اختيارك.
- استخدم حلقة for لطباعة كل رقم مضروباً في 2.
- استخدم حلقة while لحساب مجموع الأرقام في القائمة.
الحل المتوقع:
# القائمة
numbers = [3, 7, 12, 5, 9]
# طباعة كل رقم مضروب في 2
print("الأرقام مضروبة في 2:")
for num in numbers:
print(num * 2)
# حساب المجموع باستخدام while
total = 0
index = 0
while index < len(numbers):
total += numbers[index]
index += 1
print(f"مجموع الأرقام هو: {total}")
خلاصة الدرس
في هذا الدرس تعلمنا:
- ما هي الحلقات التكرارية ولماذا نحتاجها.
- حلقة for للتكرار على المجموعات واستخدام range().
- حلقة while للتكرار بشرط.
- الأخطاء الشائعة وكيفية تجنبها.
- كيفية استخدام break و continue للتحكم في الحلقات.
في الدرس القادم، سننتقل إلى الدوال (Functions) وكيفية تنظيم الكود لجعله أكثر قابلية لإعادة الاستخدام. الحلقات التي تعلمتها اليوم ستكون أساسية في بناء دوال فعالة.
جاري تحميل التقييمات...