1.2الشروط (if / elif / else)
الأساسي في 30 ثانية
- الاختبار يقرر والمسافة تحدد : كتلة بمسافة بادئة 4 فراغات بعد : — دون أقواس، ودون خلط فراغات/جدولة أبدا.
- elif = السلم : تُختبر بالترتيب، والتوقف عند أول صادق — رتّب من الأخص إلى الأعم، وelse تلتقط البقية.
- شروط مقروءة : مقارنات مسلسلة (18 <= age < 65)، وin للانتماء، وقيم كاذبة (None و0 و"" و[]) تُختبر مباشرة.
حالة مستمرة — نبيل يصنّف المجيبين في الجزائر
على نبيل تصنيف مجيبي استقصائه حسب الشريحة : طفل ومراهق وبالغ ومسنّ — مع تعريفة ورشة مرتبطة. فكتب أولا سلسلة if مستقلة بمسافة بادئة مخلوطة : IndentationError، ثم مجيب عمره 26 سنة مُصادق عليه في شريحتين. فصحح بـ if/elif/else مرتبة من الأخص إلى الأعم، و4 فراغات في كل موضع، واختبار مقروء 18 <= age < 65 : فصار كل مجيب في شريحة واحدة تماما.
تتمة الحالة 1.1 — ينتقل نبيل من تخزين المعطيات إلى القرارات.
1. الاختبار يقرر والمسافة تحدد
يوجّه الشرط (condition) البرنامج : if age >= 18: ثم كتلة بمسافة بادئة 4 فراغات — فالمسافة البادئة هي البنية (دون أقواس ودون end). تختبر elif (else if) شرطا آخر إن كان السابق خاطئا ؛ وتغطي else كل الحالات الأخرى. يقيّم Python بالترتيب ويتوقف عند أول كتلة صادقة : فرتّب من الأخص إلى الأعم.
يحوّل نبيل عمره المدخل إلى int ثم يكتب if/elif/else حسب الشرائح : فلا يُحتسب مجيب 26 سنة مرتين بعدها، ويحوّل VS Code جدوله إلى فراغات.
2. شروط تُقرأ
يكتب Python الاختبارات كما تُقرأ : مقارنات مسلسلة (if 18 <= age < 65:)، وin للانتماء (if user in admis:)، ومنطق and/or/not بدائرة قصيرة. القيم « الكاذبة » : None و0 و"" و[] و{} — فتكفي if ma_liste: لاختبار الفراغ. عشر if متداخلة تنذر بخلل تصميم (دالة، قاموس).
يستبدل نبيل مقارنتيه المزدوجتين بـ 18 <= age < 65 ويختبر قائمة مجيبيه بـ if repondants: : فتُقرأ الشيفرة كالقاعدة المهنية.
🔎 مثال ملموس — 🔎 مثال ملموس — تعريفة تُقرأ كالقاعدة
شرائح مرتبة، كما فعل نبيل لورشاته.
age = 26
if age < 12:
tarif = 0
elif age < 26:
tarif = 5
elif age < 65:
tarif = 10
else:
tarif = 7
print(f"Age {age} : tarif {tarif}")
print(18 <= age < 65) # True : مقارنة مسلسلة
القراءة : كل شريحة تُختبر مرة واحدة بالترتيب — وelse الأخيرة تلتقط المنسيين.
الدرس : المقارنة المسلسلة 18 <= age < 65 تُقرأ كالقاعدة المهنية.
مفردات القسم
- if / elif / else
- تختبر if شرطا ؛ وتختبر elif آخر إن كان السابق خاطئا ؛ وتغطي else كل الحالات الأخرى. التقييم بالترتيب، والتوقف عند أول صادق.
مثال بسيط: شرائح العمر التي صنّفها نبيل.
ما ليس كذلك: ثلاث if مستقلة تصادق على الحالة نفسها مرتين.
رد فعل: سلم مرتب، والأخص أولا، وelse في النهاية.
- المسافة البادئة
- إزاحة في بداية السطر (4 فراغات عرفا) تحدد لأي كتلة ينتمي الأمر. إلزامية في Python وليست زخرفة.
مثال بسيط: كتل الشرائح التي باعدها نبيل.
ما ليس كذلك: خلط فراغات/جدولة في الملف نفسه.
رد فعل: 4 فراغات، وتسق صارم، وVS Code محوِّل.
- معاملات المقارنة
- == و!= و< و> و<= و>= : تقارن قيمتين وتردّ منطقيا. يجيز Python المقارنات المسلسلة : 18 <= age < 65.
مثال بسيط: 18 <= age < 65 التي أهّلت بالغي نبيل.
ما ليس كذلك: = في اختبار (إسناد وليست مقارنة).
رد فعل: == تقارن و= تُسند ؛ وسلسِل حين يكون مقروءا.
- المعاملات المنطقية
- and (و) وor (أو) وnot (لا) : تركّب عدة شروط، بدائرة قصيرة (التوقف متى عُرفت النتيجة).
مثال بسيط: age >= 18 and permis لنبيل لورشة القيادة.
ما ليس كذلك: تكديس عشر if متداخلة بدلا من التركيب.
رد فعل: ركّب بـ and/or/not بدلا من التداخل.
- العبارة المنطقية
- كل عبارة تساوي True أو False، يقيّمها الشرط. القيم None و0 و"" و[] كاذبة : فتكفي if ma_liste:.
مثال بسيط: if repondants: التي تحقق بها نبيل أن لديه معطيات.
ما ليس كذلك: المقارنة صراحة بـ True/False في كل موضع.
رد فعل: اختبر الفراغ مباشرة دون التفاف.
في التطبيق — تطبيقيا — اكتب التفرعات بـ if/elif/else
- اكتب برنامجا يقرأ عمرا (input محوَّل إلى int) ويعرض « بالغ » إن كان ≥ 18 وإلا « قاصر ». واعتنِ بمسافة الكتل.
- أضف حالة وسيطة بـ elif : « طفل » (< 12) و« مراهق » (< 18) و« بالغ » (غير ذلك).
- ركّب الشروط : « if age >= 18 and permis == True ». جرّب and وor وnot.
- أثِر عمدا IndentationError (أزِح سطرا)، واقرأ الرسالة، ثم صحح : وتآلف مع هذا الخطأ.
نص جاهز للنطق — اشرح ترتيب elif (30 ث)
« رتبت الشرائح من الأخص إلى الأعم : فيتوقف Python عند أول اختبار صادق، فيضمن الترتيب ألا تقع حالة في شريحتين أبدا. وتلتقط else الأخيرة كل ما لم نتوقعه. »
يُقال في مراجعة الشيفرة ؛ واعرض القاعدة المهنية أمام الشيفرة.
نموذج نسخ ولصق — شرائح مرتبة + اختبار مقروء
age = int(input("العمر ؟ "))
if age < 12:
categorie = "طفل"
elif age < 18:
categorie = "مراهق"
elif age < 65:
categorie = "بالغ"
else:
categorie = "مسن"
print(f"الفئة : {categorie}")
if 18 <= age < 65:
print("الفئة المستهدفة للورشة الرئيسية")
شرائح في الجزائر
كما فعل نبيل : سلم if/elif/else لكل شريحة — فإضافة شريحة تعني إدخال elif في الرتبة الصحيحة دون مساس بالأخرى.
اختبار مهني مقروء
تُقرأ 18 <= age < 65 كالقاعدة : فالمقارنة المسلسلة تتفادى and الزائدة.
الانتماء
if code in valides لرموز الاستقصاء : فالانتماء يعوّض سلسلة == or ==.
قائمة فارغة أم لا
تكفي if repondants: — دون مقارنة الطول بصفر، فالكاذب يقوم بالعمل.
✓ ممارسات جيدة
- باعد بـ 4 فراغات، ودون جدولة مخلوطة أبدا.
- رتّب elif من الأخص إلى الأعم.
- اختبر الكاذب مباشرة (if liste:) وسلسِل المقارنات.
✗ أخطاء شائعة
- خلط الجدولة والفراغات (IndentationError).
- كتابة = بدلا من == في الاختبار.
- تكديس عشر if متداخلة بدلا من إعادة التفكير في البنية.
النقاط الأساسية
- توجّه if / elif / else البرنامج حسب الشروط، المقيَّمة بالترتيب حتى أول صادق.
- تحدد المسافة البادئة (4 فراغات) الكتل : فهي إلزامية وليست زخرفة.
- المقارنات : == و!= و< و> و<= و>= (قابلة للتسلسل) ؛ والمنطق : and وor وnot.
- يقيّم الشرط عبارة منطقية (True/False) ؛ وNone و0 و"" و[] كاذبة.
تحدي 48 ساعة — طبّق غدا
خذ النموذج أعلاه : أضف شريحة رابعة (elif في الرتبة الصحيحة)، واستبدل اختبارا مزدوجا بـ مقارنة مسلسلة، وأثِر ثم صحح IndentationError. وتحقق من كل شريحة محليا. تكفي 20 دقيقة.
- أصنّف بـ if/elif/else مرتبة مع else تلتقط البقية.
- مسافتي صارمة (4 فراغات، وصفر خلط).
- أكتب اختبارات مقروءة (مسلسلة وin وand/or/not).
أسئلة شائعة
كم فراغا للمسافة البادئة ؟
العرف (PEP 8) هو 4 فراغات لكل مستوى. والأساس التسق : لا تخلط الفراغات والجدولة في ملف واحد أبدا. يحوّل VS Code الجدولة إلى فراغات تلقائيا — فعّل عرض البياضات للتحقق.
هل يمكن تسلسل عدة elif ؟
نعم، بقدر الحاجة. يقيّم Python الشروط من أعلى إلى أسفل وينفّذ أول كتلة شرطها صادق، ثم يخرج من البنية. وتلتقط else الأخيرة (الاختيارية) كل الحالات الباقية — فتوقعها للمنسيات.
ماذا يحدث إن خلطنا الفراغات والجدولة ؟