الشروط في Python: if و elif و else
حتى الآن كانت برامجنا تنفّذ كل الأسطر بالترتيب دون أي اختيار. لكن البرامج الذكية تتخذ قرارات: إذا كانت كلمة المرور صحيحة افتح الحساب، وإلا اعرض رسالة خطأ. في هذا الدرس ستتعلم if و elif و else، وستكتشف لماذا تهتم Python كثيراً بالمسافات في بداية السطر.
الشرط if
Section titled “الشرط if”الكلمة if تعني «إذا». تكتب بعدها شرطاً، ثم نقطتين :، ثم الكود الذي يُنفّذ في سطر جديد مُزاح للداخل:
age = 20
if age >= 18: print("يمكنك استخراج رخصة القيادة")يمكنك استخراج رخصة القيادةإذا كان الشرط True يُنفّذ الكود المُزاح، وإذا كان False تتخطاه Python.
المسافة البادئة (Indentation)
Section titled “المسافة البادئة (Indentation)”في Python، المسافات في بداية السطر جزء من اللغة! الأسطر المُزاحة بأربع مسافات بعد if هي «جسم» الشرط، أي الأسطر التي تتبعه:
age = 10if age >= 18: print("هذا السطر تابع للشرط") print("وهذا أيضاً")print("هذا السطر خارج الشرط ويُنفّذ دائماً")هذا السطر خارج الشرط ويُنفّذ دائماًتخيّل الإزاحة مثل الفقرات الفرعية في كتاب: النقاط المُزاحة تتبع العنوان الذي فوقها. لغات أخرى تستخدم أقواساً معقوفة لهذا الغرض، أما Python فتستخدم الإزاحة، فيصبح الكود منظماً بالإجبار.
else: وإلا
Section titled “else: وإلا”age = 16
if age >= 18: print("يمكنك استخراج رخصة القيادة")else: print("انتظر حتى تبلغ 18 عاماً")انتظر حتى تبلغ 18 عاماًالبرنامج الآن أمام طريقين، ويسلك واحداً فقط منهما دائماً. لاحظ النقطتين بعد else أيضاً.
elif: عدة احتمالات
Section titled “elif: عدة احتمالات”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، فتطبع «جيد جداً» وتتجاهل الباقي.
دمج الشروط
Section titled “دمج الشروط”استخدم and و or و not التي تعلمتها في درس العمليات:
temperature = 32is_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 = 7result = "زوجي" if n % 2 == 0 else "فردي"print(result)فردياقرأه كجملة: «النتيجة زوجي إذا كان الباقي صفراً، وإلا فردي».
جرّب بنفسك
Section titled “جرّب بنفسك”اكتب برنامجاً يسأل المستخدم عن درجة الحرارة، ثم ينصحه:
- 30 فأكثر: «الجو حار، اشرب ماءً كثيراً».
- من 20 إلى أقل من 30: «الجو معتدل ولطيف».
- أقل من 20: «الجو بارد، البس جاكيت».
مثال على التشغيل:
كم درجة الحرارة؟ 25الجو معتدل ولطيفلا تنسَ تحويل الإدخال بـ int() أو float().
أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان النقطتين:
if age >= 18بدون:يسببSyntaxError. - خلط الإزاحة: مسافتان في سطر وأربع في الذي يليه تسبب
IndentationError. التزم بأربع مسافات. - استخدام = بدلاً من ==:
if age = 18:خطأ في Python. المقارنة بـ==. - مقارنة نص برقم: إذا قرأت العمر بـ
inputولم تحوّله، فإن"20" >= 18تسببTypeError.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
إذا كانت score = 70، ماذا يطبع مثال الدرجات؟
70 ليست ≥ 90 ولا ≥ 80، لكنها ≥ 65، فيتوقف البحث عند «جيد».
سؤال
ما الذي يحدد الأسطر التابعة لجملة if في Python؟
Python تستخدم الإزاحة لتحديد جسم الشرط، وهي جزء أساسي من قواعد اللغة.
الخلاصة
Section titled “الخلاصة”if شرط:تنفّذ الكود المُزاح إذا كان الشرط صحيحاً، وelse:تنفّذ البديل.elifلعدة احتمالات، وPython تتوقف عند أول شرط صحيح.- الإزاحة بأربع مسافات تحدد الأسطر التابعة للشرط، ولا تنسَ النقطتين
:. - القيم الخاطئة:
Falseو0و""وNoneوالقوائم الفارغة. - الشرط المختصر:
أ if شرط else ب.