1.2 · الشروط (if / elif / else)

المستوى 1 · أساسيات اللغة

1.2الشروط (if / elif / else)

الهدف: كتابة التفرعات بـ if/elif/else، وفهم المسافة البادئة (indentation) الإلزامية، وتركيب المقارنات والمنطق and/or/not.
الوقت المقدّر: 12 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 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: : فتُقرأ الشيفرة كالقاعدة المهنية.

خطأ شائع في الفهم: « المسافة البادئة زخرفة » أو « = و== قابلتان للتبادل في اختبار ». لا. ففي Python الإزاحة هي البنية : فخلط الفراغات/الجدولة يثير IndentationError والكتلة السيئة المسافة تغيّر المعنى. و= تُسند (خطأ صياغة في if)، و== تقارن : فكتابة if age = 18 لا تختبر شيئا بل تكسر.
قرر بنظافة اختبر بالترتيب، وبمَسافة بالفراغات if / elif / else اختبربالترتيب، والأخص أولاالمسافة البادئة (4فراغات) الإزاحة هي البنيةاختبارات مقروءة مسلسلةوin وand/or/not
اختبر بالترتيب، وبمَسافة بالفراغات
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) قرر : يكتب نبيل if/elif/else حسب الشرائح، من الأخص إلى الأعم، مع else تلتقط البقية. 2) حدد : 4 فراغات بعد كل :، وتسق صارم بين الفراغات والجدولة. 3) اقرأ : مقارنات مسلسلة، وin للانتماء، واختبار مباشر للقيم الكاذبة. الدرس : السلم المرتب + المسافة الصارمة = قرارات صحيحة.

🔎 مثال ملموس — 🔎 مثال ملموس — تعريفة تُقرأ كالقاعدة

شرائح مرتبة، كما فعل نبيل لورشاته.

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

  1. اكتب برنامجا يقرأ عمرا (input محوَّل إلى int) ويعرض « بالغ » إن كان ≥ 18 وإلا « قاصر ». واعتنِ بمسافة الكتل.
  2. أضف حالة وسيطة بـ elif : « طفل » (< 12) و« مراهق » (< 18) و« بالغ » (غير ذلك).
  3. ركّب الشروط : « if age >= 18 and permis == True ». جرّب and وor وnot.
  4. أثِر عمدا IndentationError (أزِح سطرا)، واقرأ الرسالة، ثم صحح : وتآلف مع هذا الخطأ.
صرت تكتب قرارات واضحة بـ if/elif/else وتتقن المسافة البادئة — النقطة التي تربك المبتدئين أكثر.

نص جاهز للنطق — اشرح ترتيب 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).
تقييم ذاتي 1-5 : هل شرائحي مرتبة دون تداخل ؟هل تُقرأ شروطي كالقاعدة المهنية ؟

أسئلة شائعة

كم فراغا للمسافة البادئة ؟

العرف (PEP 8) هو 4 فراغات لكل مستوى. والأساس التسق : لا تخلط الفراغات والجدولة في ملف واحد أبدا. يحوّل VS Code الجدولة إلى فراغات تلقائيا — فعّل عرض البياضات للتحقق.

هل يمكن تسلسل عدة elif ؟

نعم، بقدر الحاجة. يقيّم Python الشروط من أعلى إلى أسفل وينفّذ أول كتلة شرطها صادق، ثم يخرج من البنية. وتلتقط else الأخيرة (الاختيارية) كل الحالات الباقية — فتوقعها للمنسيات.

تحقّق من فهمك

ماذا يحدث إن خلطنا الفراغات والجدولة ؟

موارد إضافية (اختياري، للتعمّق أكثر)

اختبار المستوى 1أسئلة جديدة وأصعب للتحقق من مكتسباتك