🧠 فهم جمل if المتداخلة في بايثون: اتخاذ قرارات أكثر ذكاءً
اليوم سنتعلم مفهومًا مهمًا جدًا في البرمجة يسمى جمل if المتداخلة (Nested If). إذا كنت قد تعلمت سابقاً كيفية استخدام الجمل الشرطية البسيطة (if، elif، else)، فأنت مستعد الآن للانتقال إلى مستوى أعلى قليلاً لاتخاذ قرارات أكثر تعقيداً وتفصيلاً في برامجك.
🤔 ما هي جمل if المتداخلة؟
ببساطة شديدة، جمل if المتداخلة تعني وضع جملة شرطية (if) داخل جملة شرطية أخرى. تخيل أنك تتخذ قراراً كبيراً، وقبل أن تتخذه، تحتاج إلى التحقق من عدة شروط صغيرة داخله. هذا بالضبط ما تفعله الـ Nested If.
التشبيه الواقعي: لنفترض أنك تريد الخروج من المنزل.
- الشرط الرئيسي: إذا كان الطقس جيداً... (if weather == "good")
- الشرط المتداخل (داخل الشرط الرئيسي): ... وإذا كان لديّ مال كافٍ... (if money >= 50)
- القرار النهائي: ... إذن سأذهب إلى السينما. (then I will go to the cinema)
يتم تنفيذ الشرط المتداخل فقط إذا كان الشرط الرئيسي صحيحاً (True).
📝 بناء جملة if المتداخلة (Syntax)
هذا هو الشكل العام لكتابة جمل if متداخلة في بايثون. لاحظ كيفية المسافات البادئة (Indentation) التي تحدد بداية ونهاية كل كتلة شرطية.
if الشرط_الرئيسي:
# هذه الأوامر تنفذ فقط إذا كان الشرط_الرئيسي صحيحاً
تنفيذ_بعض_الأوامر
if الشرط_المتداخل:
# هذه الأوامر تنفذ فقط إذا كان كلا الشرطين صحيحين
تنفيذ_أوامر_أخرى
else:
# هذه الأوامر تنفذ إذا كان الشرط_الرئيسي صحيحاً لكن الشرط_المتداخل خاطئاً
تنفيذ_أوامر_بديلة
# قد يكون هناك else للشرط الرئيسي أيضاً
else:
# هذه الأوامر تنفذ إذا كان الشرط_الرئيسي خاطئاً من الأساس
print("الشرط الرئيسي غير محقق")
💡 مثال عملي بسيط: فحص عمر المستخدم وتذكرة الدخول
لنفترض أننا نبرمج نظاماً للتحقق من أهلية دخول مدينة الألعاب. شروط الدخول هي:
- يجب أن يكون عمر الشخص 18 سنة أو أكثر للدخول بمفرده.
- إذا كان عمره 18 أو أكثر، نتحقق من شرط متداخل: إذا كان يملك تذكرة دخول، فيمكنه الدخول.
# نطلب من المستخدم إدخال عمره
user_age = int(input("أدخل عمرك: "))
if user_age >= 18:
# هذا الشرط الرئيسي. إذا كان العمر >= 18، ندخل إلى هذه الكتلة
print("عمرك مناسب للدخول.")
# الآن نتحقق من شرط متداخل داخل الشرط الرئيسي
has_ticket = input("هل تملك تذكرة دخول؟ (نعم/لا): ")
if has_ticket == "نعم":
print("✅ تهانينا! يمكنك الدخول إلى مدينة الألعاب.")
else:
print("❌ العمر مناسب، لكنك تحتاج إلى شراء تذكرة أولاً.")
else:
# هذا الجزء ينتمي إلى الشرط الرئيسي (if user_age >= 18)
print("⚠️ عذراً، يجب أن يكون عمرك 18 سنة أو أكثر للدخول.")
شرح المثال:
- البرنامج يتحقق أولاً من الشرط الرئيسي (
user_age >= 18). - فقط إذا كان هذا الشرط صحيحاً، ينتقل البرنامج لسؤال المستخدم عن التذكرة والتحقق من الشرط المتداخل (
has_ticket == "نعم"). - إذا فشل الشرط الرئيسي (العمر أقل من 18)، فلن يصل البرنامج أبداً إلى السؤال عن التذكرة، وسيتم تنفيذ كتلة
elseالخاصة بالشرط الرئيسي مباشرة.
🧩 مثال آخر: تقييم درجة الطالب
لنصنع برنامجاً يقيم درجة طالب بتفصيل أكثر.
# تخزين درجة الطالب
student_score = 85
if student_score >= 50:
print("ممتاز! لقد نجحت في المادة.")
# شرط متداخل لمعرفة التقدير
if student_score >= 90:
print("تقديرك هو: امتياز (A)")
elif student_score >= 80:
print("تقديرك هو: جيد جداً (B)")
elif student_score >= 70:
print("تقديرك هو: جيد (C)")
else:
print("تقديرك هو: مقبول (D)")
else:
print("للأسف، لم تنجح في المادة. حظاً أوفر في المرة القادمة!")
ماذا يحدث هنا؟
- الشرط الرئيسي يتحقق من النجاح (
score >= 50). - إذا نجح الطالب، ندخل في سلسلة من الشروط المتداخلة (
if/elif/else) لتحديد تقديره الدقيق. هذه السلسلة كلها تعتبر "متداخلة" داخل الشرط الرئيسي.
⚠️ نصائح مهمة عند استخدام if المتداخلة
- الانتباه للمسافات البادئة (Indentation): المسافات البادئة هي التي تحدد أي كتلة شرطية تنتمي لأي شرط. استخدم 4 مسافات لكل مستوى تداخل لتظل الشفرة مرتبة وواضحة.
- لا تبالغ في التداخل: حاول ألا تتداخل أكثر من 2 أو 3 مستويات (
ifداخلifداخلif) لأن ذلك يجعل الكود صعب القراءة والصيانة. إذا وجدت نفسك تفعل ذلك، ففكر في إعادة تنظيم منطقك البرمجي. - البدء بالشروط الأبسط: رتب شروطك بحيث تضع الشرط الأكثر عمومية أو الأبسط كشرط رئيسي، ثم قم بتفصيل الشروط داخله.
🚀 ماذا سنتعلم في الدرس القادم؟
لقد أصبحت الآن قادراً على بناء قرارات معقدة وذكية في برامجك باستخدام if المتداخلة! في الدرس القادم، سنتعلم أداة برمجية قوية أخرى ستجعل كودك أكثر كفاءة وأناقة، وهي جملة match-case (المعروفة أيضاً باسم Switch Case في لغات أخرى). ستساعدنا هذه الجملة في التعامل مع scenarios متعددة بطريقة منظمة جداً بدلاً من استخدام سلسلة طويلة من elif. استعدّ لموضوع شيق!
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال