تخطَّ إلى المحتوى

الشروط في Python: if و elif و else

الدرس 8 من 25 · Python

حتى الآن كانت برامجنا تنفّذ كل الأسطر بالترتيب دون أي اختيار. لكن البرامج الذكية تتخذ قرارات: إذا كانت كلمة المرور صحيحة افتح الحساب، وإلا اعرض رسالة خطأ. في هذا الدرس ستتعلم if و elif و else، وستكتشف لماذا تهتم Python كثيراً بالمسافات في بداية السطر.

الكلمة if تعني «إذا». تكتب بعدها شرطاً، ثم نقطتين :، ثم الكود الذي يُنفّذ في سطر جديد مُزاح للداخل:

age = 20
if age >= 18:
print("يمكنك استخراج رخصة القيادة")
الناتج
يمكنك استخراج رخصة القيادة

إذا كان الشرط True يُنفّذ الكود المُزاح، وإذا كان False تتخطاه Python.

المسافة البادئة (Indentation)

Section titled “المسافة البادئة (Indentation)”

في Python، المسافات في بداية السطر جزء من اللغة! الأسطر المُزاحة بأربع مسافات بعد if هي «جسم» الشرط، أي الأسطر التي تتبعه:

age = 10
if age >= 18:
print("هذا السطر تابع للشرط")
print("وهذا أيضاً")
print("هذا السطر خارج الشرط ويُنفّذ دائماً")
الناتج
هذا السطر خارج الشرط ويُنفّذ دائماً

تخيّل الإزاحة مثل الفقرات الفرعية في كتاب: النقاط المُزاحة تتبع العنوان الذي فوقها. لغات أخرى تستخدم أقواساً معقوفة لهذا الغرض، أما Python فتستخدم الإزاحة، فيصبح الكود منظماً بالإجبار.

age = 16
if age >= 18:
print("يمكنك استخراج رخصة القيادة")
else:
print("انتظر حتى تبلغ 18 عاماً")
الناتج
انتظر حتى تبلغ 18 عاماً

البرنامج الآن أمام طريقين، ويسلك واحداً فقط منهما دائماً. لاحظ النقطتين بعد else أيضاً.

elif اختصار لـ «else if»، أي «وإلا إذا». تستخدمها عندما يكون هناك أكثر من احتمالين:

score = 83
if score >= 90:
print("ممتاز")
elif score >= 80:
print("جيد جداً")
elif score >= 65:
print("جيد")
elif score >= 50:
print("مقبول")
else:
print("راسب")
الناتج
جيد جداً

Python تفحص الشروط من الأعلى إلى الأسفل، وتتوقف عند أول شرط صحيح. الدرجة 83 ليست ≥ 90، لكنها ≥ 80، فتطبع «جيد جداً» وتتجاهل الباقي.

استخدم and و or و not التي تعلمتها في درس العمليات:

temperature = 32
is_weekend = True
if temperature > 30 and is_weekend:
print("وقت مناسب للذهاب إلى البحر")
الناتج
وقت مناسب للذهاب إلى البحر

القيم الصحيحة والخاطئة

Section titled “القيم الصحيحة والخاطئة”

يمكنك أن تضع في الشرط أي قيمة، وليس مقارنة فقط. هذه القيم تُعتبر خاطئة (Falsy): False و 0 و "" (النص الفارغ) و None، والقوائم الفارغة []. وكل ما عداها صحيح:

username = ""
if username:
print(f"أهلاً {username}")
else:
print("من فضلك اكتب اسمك")
الناتج
من فضلك اكتب اسمك

هذه طريقة مختصرة وشائعة لفحص «هل كتب المستخدم شيئاً؟».

الشرط المختصر في سطر واحد

Section titled “الشرط المختصر في سطر واحد”

عندما تريد أن تختار بين قيمتين فقط، يمكنك كتابة الشرط في سطر واحد:

n = 7
result = "زوجي" if n % 2 == 0 else "فردي"
print(result)
الناتج
فردي

اقرأه كجملة: «النتيجة زوجي إذا كان الباقي صفراً، وإلا فردي».

اكتب برنامجاً يسأل المستخدم عن درجة الحرارة، ثم ينصحه:

  • 30 فأكثر: «الجو حار، اشرب ماءً كثيراً».
  • من 20 إلى أقل من 30: «الجو معتدل ولطيف».
  • أقل من 20: «الجو بارد، البس جاكيت».

مثال على التشغيل:

الناتج
كم درجة الحرارة؟ 25
الجو معتدل ولطيف

لا تنسَ تحويل الإدخال بـ int() أو float().

  • نسيان النقطتين: if age >= 18 بدون : يسبب SyntaxError.
  • خلط الإزاحة: مسافتان في سطر وأربع في الذي يليه تسبب IndentationError. التزم بأربع مسافات.
  • استخدام = بدلاً من ==: if age = 18: خطأ في Python. المقارنة بـ ==.
  • مقارنة نص برقم: إذا قرأت العمر بـ input ولم تحوّله، فإن "20" >= 18 تسبب TypeError.

سؤال

إذا كانت score = 70، ماذا يطبع مثال الدرجات؟

سؤال

ما الذي يحدد الأسطر التابعة لجملة if في Python؟

  • if شرط: تنفّذ الكود المُزاح إذا كان الشرط صحيحاً، و else: تنفّذ البديل.
  • elif لعدة احتمالات، وPython تتوقف عند أول شرط صحيح.
  • الإزاحة بأربع مسافات تحدد الأسطر التابعة للشرط، ولا تنسَ النقطتين :.
  • القيم الخاطئة: False و 0 و "" و None والقوائم الفارغة.
  • الشرط المختصر: أ if شرط else ب.