الحلقات في Python — كرر المهام بذكاء
دليل شامل لتعلم الحلقات في Python — for و while و range و break و continue مع مشاريع تفاعلية خطوة بخطوة
تخيل أنك تريد طباعة الأرقام من 1 إلى 100. هل ستكتب 100 سطر print؟ بالطبع لا! هنا يأتي دور الحلقات (Loops) — التي تكرر الأوامر تلقائياً.
الحلقات هي ما يجعل البرمجة قوية حقاً. بدلاً من كتابة كود متكرر مئات المرات، تكتبه مرة واحدة وتترك Python تكرره.
بنهاية هذا المقال، ستكون قادراً على:
- استخدام حلقة
forللتكرار على المجموعات - استخدام حلقة
whileللتكرار حسب شرط - استخدام
range()لتوليد تسلسل من الأرقام - التحكم في الحلقات بـ
breakوcontinue - بناء مشاريع تطبيقية باستخدام الحلقات
1. لماذا نحتاج الحلقات؟
المشكلة: التكرار الممل
تخيل أنك تريد طباعة "مرحباً" 5 مرات:
# بدون حلقات — كود مكرر
print("مرحباً")
print("مرحباً")
print("مرحباً")
print("مرحباً")
print("مرحباً")
هذا يعمل، لكنه غير عملي. ماذا لو أردت 1000 مرة؟
الحل: استخدام الحلقات
# مع حلقات — كود أنيق
for i in range(5):
print("مرحباً")
النتيجة: نفس النتيجة بسطرين بدلاً من 5!
2. حلقة for — التكرار على المجموعات
ما هي حلقة for؟
حلقة for تُستخدم للتكرار على مجموعة من العناصر (نص، قائمة، نطاق أرقام...).
الصيغة الأساسية
for variable in sequence:
# الكود الذي يتكرر
⚠️ ملاحظات:
- تنتهي بنقطتين
: - الكود بعدها يكون مُزاحاً (Indented)
- المتغير يتغير تلقائياً في كل تكرار
مثال 1: التكرار على نص
for letter in "Python":
print(letter)
النتيجة:
P
y
t
h
o
n
شرح:
- الحلقة تمر على كل حرف في "Python"
- في كل مرة،
letterيأخذ قيمة الحرف الحالي
مثال 2: التكرار على قائمة
fruits = ["تفاح", "موز", "برتقال", "عنب"]
for fruit in fruits:
print(f"أحب {fruit}")
النتيجة:
أحب تفاح
أحب موز
أحب برتقال
أحب عنب
مثال 3: طباعة الأرقام من 1 إلى 10
for i in range(1, 11):
print(i)
النتيجة:
1
2
3
4
5
6
7
8
9
10
3. دالة range() — مولّد الأرقام
ما هي range()؟
range() هي دالة تولّد تسلسلاً من الأرقام. هي الأكثر استخداماً مع for.
الصيغ الثلاث
| الصيغة | المعنى | مثال | النتيجة |
|---|---|---|---|
range(n) | من 0 إلى n-1 | range(5) | 0, 1, 2, 3, 4 |
range(start, stop) | من start إلى stop-1 | range(2, 7) | 2, 3, 4, 5, 6 |
range(start, stop, step) | مع خطوة | range(0, 10, 2) | 0, 2, 4, 6, 8 |
مثال 1: range(n)
for i in range(5):
print(i)
النتيجة:
0
1
2
3
4
⚠️ مهم: range(5) يبدأ من 0 وينتهي عند 4 (وليس 5).
مثال 2: range(start, stop)
for i in range(3, 8):
print(i)
النتيجة:
3
4
5
6
7
مثال 3: range مع خطوة
# الأرقام الزوجية من 0 إلى 10
for i in range(0, 11, 2):
print(i)
النتيجة:
0
2
4
6
8
10
مثال 4: العد التنازلي
for i in range(10, 0, -1):
print(i)
print("انطلق! 🚀")
النتيجة:
10
9
8
7
6
5
4
3
2
1
انطلق! 🚀
4. حلقة while — التكرار حسب شرط
ما هي حلقة while؟
حلقة while تكرر الكود طالما الشرط متحقق.
الصيغة الأساسية
while condition:
# الكود الذي يتكرر
مثال 1: العد من 1 إلى 5
counter = 1
while counter <= 5:
print(counter)
counter += 1
النتيجة:
1
2
3
4
5
شرح:
counter = 1- هل
1 <= 5؟ نعم → اطبع 1، ثمcounter = 2 - هل
2 <= 5؟ نعم → اطبع 2، ثمcounter = 3 - ... وهكذا حتى
counter = 6 - هل
6 <= 5؟ لا → توقف
⚠️ تحذير: الحلقة اللانهائية
خطأ شائع:
# خطأ — حلقة لا نهائية!
counter = 1
while counter <= 5:
print(counter)
# نسيت counter += 1
النتيجة: البرنامج يطبع "1" للأبد! لإيقافه، اضغط Ctrl + C.
القاعدة الذهبية: تأكد دائماً أن هناك شيء يتغير داخل while ليوقف الحلقة.
مثال 2: التحقق من كلمة المرور
password = ""
while password != "python2026":
password = input("أدخل كلمة المرور: ")
if password != "python2026":
print("❌ خاطئة، حاول مرة أخرى")
print("✅ تم تسجيل الدخول!")
مثال 3: لعبة تخمين الرقم (نسخة كاملة)
import random
secret = random.randint(1, 20)
guess = 0
attempts = 0
print("🎮 خمن الرقم بين 1 و 20!")
while guess != secret:
guess = int(input("تخمينك: "))
attempts += 1
if guess < secret:
print("⬆️ أكبر")
elif guess > secret:
print("⬇️ أصغر")
else:
print(f"🎉 مبروك! خمنت الرقم في {attempts} محاولات")
5. مقارنة بين for و while
| المعيار | for | while |
|---|---|---|
| الاستخدام | عندما تعرف عدد التكرارات | عندما لا تعرف (حسب شرط) |
| مثال | طباعة 10 أرقام | انتظار إدخال صحيح |
| الخطر | لا يوجد | حلقة لا نهائية |
| الاستخدام الشائع | القوائم، النصوص، range | التفاعل مع المستخدم |
6. جملة break — إيقاف الحلقة
ما هي break؟
break تُوقف الحلقة فوراً وتخرج منها، حتى لو لم ينتهِ الشرط.
مثال 1: إيقاف عند رقم معين
for i in range(1, 11):
if i == 5:
print("وصلنا إلى 5! توقف")
break
print(i)
النتيجة:
1
2
3
4
وصلنا إلى 5! توقف
مثال 2: البحث عن عنصر
numbers = [3, 7, 12, 5, 18, 2, 9]
target = 18
for num in numbers:
if num == target:
print(f"وجدنا {target}!")
break
else:
print(f"{target} غير موجود")
النتيجة:
وجدنا 18!
7. جملة continue — تخطي التكرار
ما هي continue؟
continue تتخطى بقية الكود في التكرار الحالي وتنتقل للتكرار التالي.
مثال 1: تخطي الأرقام الزوجية
for i in range(1, 11):
if i % 2 == 0:
continue
print(i)
النتيجة:
1
3
5
7
9
شرح: عندما i يكون زوجياً (i % 2 == 0)، يتم تخطي print والانتقال للتكرار التالي.
مثال 2: تجاوز القيم السالبة
numbers = [5, -3, 8, -1, 10, -7, 4]
total = 0
for num in numbers:
if num < 0:
continue
total += num
print(f"مجموع الأرقام الموجبة: {total}")
النتيجة:
مجموع الأرقام الموجبة: 27
8. مقارنة: break مقابل continue
| الجملة | الوظيفة | التأثير |
|---|---|---|
break | إيقاف الحلقة كاملة | يخرج من الحلقة |
continue | تخطي التكرار الحالي | ينتقل للتكرار التالي |
pass | لا يفعل شيئاً | للتخطيط المستقبلي |
9. جملة else مع الحلقات
ميزة فريدة في Python
في Python، يمكنك إضافة else بعد الحلقة. ينفذ الكود في else إذا انتهت الحلقة بشكل طبيعي (بدون break).
مثال
numbers = [3, 7, 12, 5, 18, 2, 9]
target = 100
for num in numbers:
if num == target:
print(f"وجدنا {target}!")
break
else:
print(f"{target} غير موجود في القائمة")
النتيجة:
100 غير موجود في القائمة
لماذا؟ لأن الحلقة انتهت بدون تنفيذ break.
10. الحلقات المتداخلة
ما هي الحلقات المتداخلة؟
حلقة داخل حلقة أخرى. نستخدمها للمصفوفات ثنائية الأبعاد، أو الجداول.
مثال: جدول الضرب
# جدول ضرب من 1 إلى 5
for i in range(1, 6):
for j in range(1, 6):
print(f"{i} × {j} = {i * j}")
print("-" * 20)
النتيجة:
1 × 1 = 1
1 × 2 = 2
1 × 3 = 3
1 × 4 = 4
1 × 5 = 5
--------------------
2 × 1 = 2
2 × 2 = 4
...
مثال: طباعة نجمة
# مثلث من النجوم
for i in range(1, 6):
print("⭐" * i)
النتيجة:
⭐
⭐⭐
⭐⭐⭐
⭐⭐⭐⭐
⭐⭐⭐⭐⭐
11. مشاريع عملية
المشروع 1: جدول الضرب التفاعلي
# جدول ضرب تفاعلي
num = int(input("أدخل رقماً لعرض جدول ضربه: "))
print(f"\n📊 جدول ضرب {num}:")
print("=" * 20)
for i in range(1, 11):
print(f"{num} × {i} = {num * i}")
print("=" * 20)
المشروع 2: جمع الأرقام حتى الصفر
# يجمع الأرقام حتى يدخل المستخدم 0
total = 0
count = 0
print("أدخل أرقاماً (اكتب 0 للتوقف):")
while True:
num = float(input("الرقم: "))
if num == 0:
break
total += num
count += 1
print(f"المجموع الحالي: {total}")
if count > 0:
print(f"\n📊 ملخص:")
print(f"عدد الأرقام: {count}")
print(f"المجموع: {total}")
print(f"المتوسط: {total / count:.2f}")
else:
print("لم تدخل أي رقم")
المشروع 3: طباعة الأعداد الأولية
# طباعة الأعداد الأولية من 2 إلى 50
print("الأعداد الأولية من 2 إلى 50:")
for num in range(2, 51):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num, end=" ")
print()
النتيجة:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
المشروع 4: عداد تنازلي مع رسم
import time
print("🚀 استعد للإطلاق...")
print()
for i in range(5, 0, -1):
print(f"⏱ {i}...")
time.sleep(1)
print("🚀 انطلق!")
12. أخطاء شائعة
الخطأ 1: نسيان الزيادة في while
# خطأ — حلقة لا نهائية
i = 0
while i < 5:
print(i)
# نسيت i += 1
الحل:
i = 0
while i < 5:
print(i)
i += 1
الخطأ 2: تعديل القائمة أثناء التكرار
# خطأ
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num % 2 == 0:
numbers.remove(num) # خطر!
الحل:
# صحيح
numbers = [1, 2, 3, 4, 5]
numbers = [num for num in numbers if num % 2 != 0]
الخطأ 3: استخدام break خارج الحلقة
# خطأ
if x == 5:
break # SyntaxError
الخطأ 4: نسيان النقطتين
# خطأ
for i in range(5)
print(i)
# صحيح
for i in range(5):
print(i)
الخطأ 5: إزاحة غير صحيحة
# خطأ
for i in range(5):
print(i)
# صحيح
for i in range(5):
print(i)
13. تمارين عملية
التمرين 1: مجموع الأرقام
اكتب برنامجاً يحسب مجموع الأرقام من 1 إلى 100.
النتيجة المتوقعة: 5050
التمرين 2: طباعة الأرقام الزوجية
اكتب برنامجاً يطبع الأرقام الزوجية من 1 إلى 20.
النتيجة المتوقعة: 2 4 6 8 10 12 14 16 18 20
التمرين 3: عدّ حروف الكلمة
اكتب برنامجاً يطلب كلمة ويطبع عدد حروفها.
# مثال
word = input("أدخل كلمة: ")
# اطبع عدد الحروف
التمرين 4: جدول ضرب
اكتب برنامجاً يطبع جدول ضرب كامل من 1 إلى 10.
التمرين 5: حساب المضروب
اكتب برنامجاً يحسب مضروب رقم (Factorial).
مثال: مضروب 5 = 5×4×3×2×1 = 120
قائمة تحقق — هل تعلمت؟
| المهارة | الحالة |
|---|---|
استخدام حلقة for | ⬜ |
استخدام حلقة while | ⬜ |
استخدام range() بجميع صيغها | ⬜ |
استخدام break لإيقاف الحلقة | ⬜ |
استخدام continue لتخطي تكرار | ⬜ |
| الحلقات المتداخلة | ⬜ |
| بناء مشاريع باستخدام الحلقات | ⬜ |
الخلاصة
في هذا المقال، تعلمت:
- حلقة
for— التكرار على المجموعات - حلقة
while— التكرار حسب شرط - دالة
range()— لتوليد تسلسل الأرقام break— إيقاف الحلقةcontinue— تخطي تكرارelseمع الحلقات — ميزة Python الفريدة- الحلقات المتداخلة — حلقة داخل حلقة
الحلقات هي ما يجعل البرمجة قوية — بدونها، ستكتب نفس الكود مئات المرات.
في المقال القادم: سنتعلم الدوال (Functions) — كيف تنظم كودك وتعيد استخدامه!
جرب التمارين الخمسة قبل الانتقال للمقال التالي. الممارسة هي المفتاح!
ما نوع الحلقة التي وجدتها الأسهل؟ شاركنا في التعليقات!
🎁 هدية مجانية: ورقة Python المرجعية
احصل على الدليل السريع لأشهر أوامر Python — 8 صفحات PDF مجاناً
📥 حمّل الورقة الآنالشروط في Python — كيف تجعل برنامجك يتخذ قرارات؟
الدوال (Functions) في Python — نظّم كودك باحتراف
📚 مقالات ذات صلة
المتغيرات وأنواع البيانات في Python — الشرح الكامل
دليل شامل للمتغيرات وأنواع البيانات في Python — النصوص، الأرقام، القوائم، القواميس مع أمثلة عملية
بناء تطبيق مهام كامل بلغة Python — مع قاعدة بيانات
دليل عملي لبناء تطبيق إدارة مهام احترافي بلغة Python — مع قاعدة بيانات SQLite وواجهة رسومية Tkinter
بناء آلة حاسبة بلغة Python — مشروع كامل خطوة بخطوة
دليل عملي كامل لبناء آلة حاسبة احترافية بلغة Python — من التخطيط إلى التنفيذ، مع واجهة رسومية بـ Tkinter