شرح جمل if و else و elif في بايثون: أساسيات العبارات الشرطية للمبتدئين
ما هي العبارات الشرطية في بايثون؟
في كثير من البرامج، لا نريد تنفيذ جميع الأسطر البرمجية بالطريقة نفسها في كل مرة. أحيانًا نحتاج إلى تشغيل جزء معين من الكود فقط عند تحقق شرط محدد، وفي حالات أخرى نرغب في تنفيذ مسار مختلف عندما لا يتحقق ذلك الشرط. هنا تظهر أهمية العبارات الشرطية في لغة Python.
تساعدك العبارات الشرطية على التحكم في التدفق المنطقي للبرنامج، بحيث يتخذ البرنامج قرارًا بناءً على نتيجة شرط معيّن. ويمكن تشبيه ذلك بمفترق طرق: إذا تحقق الشرط يسلك البرنامج مسارًا، وإذا لم يتحقق ينتقل إلى مسار آخر.
في هذا المقال، ستتعرف على أساسيات استخدام if وif...else وelif في Python، مع أمثلة عملية توضح طريقة العمل الصحيحة.
الصيغة الأساسية لجملة if في بايثون
تعبّر جملة if عن الفكرة التالية: إذا كان الشرط صحيحًا، نفّذ الكود المرتبط به. وإذا لم يكن صحيحًا، فلا تنفّذ هذا الجزء من الكود.
الصيغة العامة
if condition:
execute_statement
مم تتكوّن جملة if؟
- الكلمة المفتاحية
ifالتي تبدأ الجملة الشرطية. - شرط يمكن أن تكون نتيجته
TrueأوFalse. - علامة النقطتين الرأسيتين
:للفصل بين الشرط والكود الذي سيتم تنفيذه. - سطر جديد مع مسافة بادئة، وغالبًا تكون
4مسافات وفقًا للعرف الشائع فيPython. - جسم الجملة، وهو الكود الذي يعمل فقط إذا كانت نتيجة الشرط
True.
ويمكن أن يحتوي جسم الجملة على أكثر من سطر، لكن يجب الحفاظ على المستوى نفسه من indentation لكل سطر داخل الكتلة البرمجية.
مثال عملي على if
a = 1
b = 2
if b > a:
print("b is in fact bigger than a")
الناتج سيكون:
b is in fact bigger than a
في هذا المثال أنشأنا المتغيرين a وb، وأسنَدنا إليهما القيمتين 1 و2. وبما أن الشرط b > a صحيح، فقد تم تنفيذ السطر الموجود داخل جملة if.
أما إذا كان الشرط غير صحيح، فلن يُنفَّذ شيء:
a = 1
b = 2
if a > b:
print("a is in fact bigger than b")
في هذه الحالة لن يظهر أي ناتج، لأن الشرط a > b غير متحقق.
كيف تعمل جملة if...else في بايثون؟
عندما تستخدم if فقط، فإن الكود يعمل عند تحقق الشرط، ولا يحدث شيء عند عدم تحققه. لكن ماذا لو أردت تنفيذ كود بديل عندما تكون النتيجة False؟ هنا نستخدم else.
الصيغة العامة
if condition:
execute_statement_if_true
else:
execute_statement_if_false
المعنى هنا واضح: إذا تحقق الشرط الموجود بعد if، يُنفَّذ الكود الأول. وإذا لم يتحقق، ينتقل البرنامج مباشرة إلى الكود الموجود داخل else.
مثال على if...else
a = 1
b = 2
if a < b:
print("b is in fact bigger than a")
else:
print("a is in fact bigger than b")
في هذا المثال، الشرط a < b صحيح، لذا سيتم تنفيذ السطر الأول فقط، ولن يصل البرنامج إلى كتلة else.
أما إذا انعكس الشرط:
a = 1
b = 2
if a > b:
print("a is in fact bigger than b")
else:
print("b is in fact bigger than a")
فسيكون الناتج:
b is in fact bigger than a
ملاحظة مهمة حول موضع else
لا يمكنك وضع أي سطر برمجي بين if وelse خارج الكتلة المحددة، لأن ذلك يؤدي إلى ظهور خطأ من نوع SyntaxError.
if 1 > 2:
print("1 is bigger than 2")
print("hello world")
else:
print("1 is less than 2")
الناتج:
File "<stdin>", line 3
print("hello world")
^
SyntaxError: invalid syntax
السبب هو أن else يجب أن تكون مرتبطة مباشرةً بجملة if نفسها.
ما وظيفة elif في بايثون؟
في بعض الحالات، لا يكون لدينا خياران فقط. قد نحتاج إلى اختبار عدة احتمالات بالتتابع. وهنا يأتي دور elif، وهي اختصار لعبارة else if.
تُستخدم elif عندما تريد أن تقول: إذا لم يتحقق الشرط الأول، فجرّب شرطًا ثانيًا، ثم ثالثًا، وهكذا.
الصيغة العامة
if first_condition:
execute_statement
elif second_condition:
execute_statement
else:
alternative_execute_statement
مثال عملي على elif
x = 1
if x > 10:
print("x is greater than 10!")
elif x < 10:
print("x is less than 10!")
elif x < 20:
print("x is less than 20!")
else:
print("x is equal to 10")
الناتج:
x is less than 10!
يفحص البرنامج الشروط من الأعلى إلى الأسفل. وبمجرد العثور على أول شرط صحيح، ينفّذ الكود المرتبط به ثم يتوقف عن فحص بقية الشروط.
ترتيب شروط elif مهم جدًا
ترتيب الشروط ليس تفصيلًا شكليًا، بل يؤثر مباشرةً في النتيجة النهائية. انظر إلى المثال التالي:
x = 1
if x > 10:
print("x is greater than 10!")
elif x < 20:
print("x is less than 20!")
elif x < 10:
print("x is less than 10!")
else:
print("x is equal to 10")
في هذه الحالة، سيتم تنفيذ السطر الذي يطبع x is less than 20! لأن الشرط x < 20 تحقق أولًا، ولن يصل البرنامج إلى الشرط الذي يليه، رغم أنه صحيح أيضًا.
لذلك، عند كتابة سلاسل من elif، ابدأ عادةً بالشروط الأكثر تحديدًا أو الأكثر أهمية، ثم انتقل إلى الشروط الأوسع.
متى يتم تنفيذ else مع elif؟
تُنفَّذ كتلة else فقط إذا فشلت جميع الشروط السابقة في if وelif.
x = 10
if x > 10:
print("x is greater than 10!")
elif x < 10:
print("x is less than 10!")
elif x > 20:
print("x is greater than 20!")
else:
print("x is equal to 10")
الناتج:
x is equal to 10
أفضل الممارسات عند كتابة الشروط في Python
- اكتب الشروط بوضوح وتجنب التعقيد غير الضروري.
- احرص على استخدام
indentationبشكل صحيح، لأنPythonتعتمد عليه لتحديد الكتل البرمجية. - رتّب شروط
elifمنطقياً حتى لا يتم استهلاك حالة عامة قبل حالة أكثر دقة. - استخدم
elseكخيار نهائي لمعالجة الحالات غير المتوقعة أو الافتراضية. - اختبر الشروط بأكثر من قيمة للتأكد من أن جميع المسارات تعمل كما تتوقع.
مقارنة سريعة بين if وif...else وelif
| البنية | الاستخدام | متى تناسبك؟ |
|---|---|---|
if |
تنفيذ كود عند تحقق شرط واحد | عندما لا تحتاج إلى مسار بديل |
if...else |
الاختيار بين مسارين | عندما تريد نتيجة عند تحقق الشرط وأخرى عند فشله |
if...elif...else |
معالجة عدة احتمالات | عندما توجد أكثر من حالة محتملة |
لماذا تعد العبارات الشرطية أساسية في البرمجة؟
البرامج الذكية لا تعمل بطريقة جامدة، بل تتخذ قرارات بناءً على البيانات المدخلة أو حالة النظام أو سلوك المستخدم. ومن هنا تأتي أهمية العبارات الشرطية، لأنها تمنحك القدرة على بناء منطق مرن يستجيب للحالات المختلفة.
ومع تقدمك في تعلم Python، ستجد أن العبارات الشرطية لا تُستخدم فقط بصيغتها البسيطة، بل يمكن أيضًا دمجها داخل حلقات التكرار أو حتى تضمينها داخل عبارات شرطية أخرى فيما يُعرف باسم nested conditionals.
الخلاصة التقنية
تُعد جمل if وelse وelif من أهم الأدوات لبناء منطق اتخاذ القرار في Python. الفهم الجيد لها لا يساعدك فقط على كتابة كود صحيح، بل يمنحك قدرة أكبر على تنظيم الحالات المختلفة داخل البرنامج بطريقة واضحة وقابلة للتوسع. وكلما أتقنت ترتيب الشروط واستخدام المسافات البادئة بدقة، أصبحت برامجك أكثر احترافية وأسهل في الصيانة والتطوير.