جملة elif (الشروط المتعددة)
تخيل أنك مديراً لمطعم يقدم قوائم طعام مختلفة حسب الوقت. إذا كانت الساعة قبل 11 صباحاً، تقدم وجبة الإفطار. أما إذا كانت بين 11 و 3 ظهراً، تقدم الغداء. أما إذا كانت بعد 3 عصراً، تقدم العشاء. لاحظ أنك لا تتحقق من كل الخيارات في نفس الوقت، بل تتوقف عند أول خيار صحيح.
هذا بالضبط ما تفعله جملة elif في بايثون (وهي اختصار لـ else if). إنها تسمح لك ببناء "سلسلة قرارات" حيث يتم فحص الشروط بالترتيب، وينفذ فقط الكود المرتبط بأول شرط صحيح، ثم يتجاهل الباقي. هذا الأسلوب يجعل برامجك أكثر كفاءة ووضوحاً.
في هذا الدرس، ستتعلم كيفية استخدام elif لبناء برامج تتخذ قرارات معقدة بناءً على مدخلات متنوعة ومتعددة.
1. ما هي elif ولماذا نحتاجها؟
عندما يكون أمامك أكثر من خيارين، جملة if وحدها ليست كافية. تحتاج إلى طريقة لفحص عدة احتمالات بشكل منظم ومنطقي. elif تحل هذه المشكلة بأناقة.
الفكرة الأساسية: "إذا لم يتحقق الشرط الأول، جرب الشرط الثاني. إذا لم يتحقق الثاني، جرب الثالث... وهكذا."
- الاستخدام المثالي: عندما تكون الخيارات متنافية (Mutually Exclusive) - أي لا يمكن أن يحدث أكثر من خيار في نفس الوقت.
- الكفاءة: تتوقف بمجرد تحقق أول شرط، مما يوفر وقت المعالجة.
- الوضوح: توضح العلاقة المنطقية بين الشروط بشكل أفضل من جمل
ifالمنفصلة.
2. صيغة جملة elif الكاملة
تأتي elif دائماً بعد if الأولى، ويمكنك استخدام عدد غير محدود من جمل elif. لاحظ البنية الهرمية:
# الصيغة العامة
# if condition1:
# # ينفذ إذا كان الشرط الأول صحيحاً
# elif condition2:
# # ينفذ إذا كان الشرط الأول خطأ والثاني صحيحاً
# elif condition3:
# # ينفذ إذا كان الأول والثاني خطأ والثالث صحيحاً
# مثال: نظام تقدير الطلاب
score = 85
if score >= 90:
print("التقدير: ممتاز (A) 🌟")
print("أداء استثنائي!")
elif score >= 80:
print("التقدير: جيد جداً (B) 👏")
print("أداء رائع!")
elif score >= 70:
print("التقدير: جيد (C) 👍")
print("أداء جيد.")
elif score >= 60:
print("التقدير: مقبول (D) ✓")
print("يمكنك تحسين أدائك.")
elif score >= 50:
print("التقدير: ضعيف (E) ⚠️")
print("تحتاج لمزيد من الجهد.")
3. آلية عمل elif: فهم تدفق التنفيذ
دعنا نفهم بالضبط كيف يقرأ بايثون سلسلة الشروط. المفسر يعمل بترتيب صارم:
- يفحص الـ if الأولى: إذا كانت
True، ينفذ كودها المزاح، ثم يخرج تماماً من السلسلة بأكملها. - إذا كانت if خاطئة: ينتقل فوراً للـ
elifالأولى. - يفحص elif الأولى: إذا كانت صحيحة، ينفذها ويخرج. إذا كانت خاطئة، ينتقل للـ
elifالتالية. - وهكذا... حتى يجد شرطاً صحيحاً أو تنتهي جميع الشروط.
number = 10
print("🔍 نفحص الشرط الأول...")
if number > 0:
print("✅ الرقم موجب")
print("🚪 الخروج من السلسلة (لن نفحص الباقي)")
elif number > 5:
print("❌ هذا لن يُطبع! لماذا؟")
print("لأن الشرط الأول تحقق بالفعل")
elif number == 10:
print("❌ وهذا أيضاً لن يُطبع!")
print("رغم أنه شرط صحيح!")
print("\n📊 نتيجة التحليل:")
print("- تم فحص الشرط الأول فقط (number > 0)")
print("- الشرط كان صحيحاً، فتم تنفيذه")
print("- تم تجاهل جميع شروط elif التالية")
4. الفرق الجوهري: elif مقابل if المتعددة
هذا من أكثر الأخطاء شيوعاً عند المبتدئين! دعنا نوضح الفرق بمثال عملي:
استخدام elif (مرتبطة)
شروط تنافسية - واحد فقط سينفذ
استخدام if منفصلة (مستقلة)
كل شرط مستقل - قد ينفذ الكل
x = 10
print("========== استخدام elif (مرتبطة) ==========")
if x > 0:
print("✅ موجب")
elif x % 2 == 0:
print("❌ زوجي (لن يُطبع!)")
elif x > 5:
print("❌ أكبر من 5 (لن يُطبع!)")
print("\n💡 النتيجة: طُبعت رسالة واحدة فقط.\n")
print("========== استخدام if منفصلة (مستقلة) ==========")
if x > 0:
print("✅ موجب")
if x % 2 == 0:
print("✅ زوجي")
if x > 5:
print("✅ أكبر من 5")
print("\n💡 النتيجة: طُبعت كل الرسائل لأن كل الشروط صحيحة!")
- استخدم
elifعندما تريد تنفيذ خيار واحد فقط من عدة خيارات متنافية. - استخدم
ifمنفصلة عندما تريد فحص شروط مستقلة قد تتحقق جميعها.
5. تطبيق عملي: نظام إشارات المرور الذكي
لنبني برنامجاً واقعياً يحاكي سلوك السائق عند إشارة المرور، مع إضافة حالات متقدمة.
print("🚦 نظام إشارات المرور الذكي")
print("-" * 40)
light_color = input("ما هو لون الإشارة؟ (red/yellow/green/off): ").lower()
if light_color == "red":
print("\n🛑 إشارة حمراء")
print("📋 الإجراء: توقف فوراً!")
print("⏱️ انتظر حتى تتحول للأخضر")
print("⚠️ لا تتجاوز الإشارة - خطر الحوادث!")
elif light_color == "yellow":
print("\n⚠️ إشارة صفراء")
print("📋 الإجراء: استعد للتوقف")
print("🐢 قلل السرعة تدريجياً")
print("❌ لا تحاول تجاوزها بسرعة")
elif light_color == "green":
print("\n✅ إشارة خضراء")
print("📋 الإجراء: يمكنك الانطلاق")
print("👀 تأكد من خلو الطريق أولاً")
print("🚗 قد بحذر والتزم بالسرعة")
elif light_color == "flashing yellow":
print("\n⚠️ إشارة صفراء وامضة")
print("📋 الإجراء: تقاطع يتطلب الحذر")
print("👁️ انتبه للسيارات من الجوانب")
print("🐌 قلل السرعة واعبر بحذر")
elif light_color == "off":
print("\n🔴 الإشارة معطلة!")
print("📋 الإجراء: تعامل معها كعلامة STOP")
print("⚠️ توقف تماماً، ثم اعبر بحذر شديد")
# ماذا لو أدخل المستخدم لوناً غير معروف؟
# سنتعامل مع هذا في الدرس القادم باستخدام else!
6. مثال متقدم: تصنيف العمر والفئات
لنبني نظاماً يصنف الأشخاص إلى فئات عمرية مختلفة مع نصائح خاصة لكل فئة.
age = int(input("أدخل عمرك: "))
if age < 0:
print("⚠️ خطأ: العمر لا يمكن أن يكون سالباً!")
elif age <= 2:
print("👶 فئة: رضيع")
print("💡 مرحلة النمو السريع والتطور الحركي")
elif age <= 12:
print("🧒 فئة: طفل")
print("💡 مرحلة التعليم الأساسي واللعب")
print("📚 التركيز على القراءة والتعلم")
elif age <= 17:
print("👦 فئة: مراهق")
print("💡 مرحلة النضج والاستقلالية")
print("🎓 التحضير للمستقبل الأكاديمي")
elif age <= 30:
print("👨 فئة: شاب")
print("💡 مرحلة بناء المسار المهني")
print("💼 الفرص والتحديات الكبيرة")
elif age <= 60:
print("🧑 فئة: ناضج")
print("💡 مرحلة الخبرة والاستقرار")
print("🏆 الإنجازات والمسؤوليات")
elif age <= 80:
print("👴 فئة: كبير السن")
print("💡 مرحلة الحكمة والاسترخاء")
print("🌟 الاستمتاع بثمار العمر")
elif age > 80:
print("🎖️ فئة: معمّر")
print("💡 عمر مديد مبارك!")
print("🙏 تجربة حياة غنية بالدروس")
7. نصائح وأفضل الممارسات
✅ افعل
- رتب الشروط من الأكثر تحديداً للأقل
- استخدم elif عندما تكون الخيارات متنافية
- أضف تعليقات توضيحية لسلاسل الشروط الطويلة
- فكر في الأداء: elif أسرع من if المتعددة
❌ لا تفعل
- لا تستخدم elif إذا كانت الشروط مستقلة
- لا تضع أكثر من 5-7 elif (فكر في بدائل)
- لا تنسى: elif تحتاج if قبلها دائماً
- لا تكرر نفس الشرط في elif مختلفة
💡 متى تستخدم elif بالضبط؟
استخدم elif في الحالات التالية:
- خيارات متنافية: مثل تحديد التقدير (لا يمكن أن يكون الطالب A و B معاً)
- تصنيفات متدرجة: مثل الفئات العمرية أو مستويات الرواتب
- قوائم محددة: مثل أيام الأسبوع أو فصول السنة
- تحسين الأداء: عندما تريد توفير وقت المعالجة بالتوقف عند أول شرط صحيح
الفائدة الرئيسية: كود أنظف، أسرع، وأسهل للفهم والصيانة!
الخطوة التالية
ماذا لو لم يتحقق أي شرط من شروط if أو elif؟ كيف نضع "خطة بديلة" تلقائية؟
الدرس التالي: جملة else (الخيار الافتراضي)