كيفية كتابة عبارة if في بايثون في سطر واحد

تعتبر عبارة if واحدة من أهم العبارات الأساسية في بايثون. في هذه المقالة، سنتعلم كيفية كتابة عبارة if في بايثون في سطر واحد.

if جزء أساسي في كتابة كود بايثون. فهو يسمح للمطورين بالتحكم في تدفق ومنطق الكود الخاص بهم بناءً على المعلومات التي تم تلقيها في وقت التشغيل. ومع ذلك، لا يعرف العديد من مطوري بايثون أنه يمكنهم تقليل طول وتعقيد عبارات الشرط if عن طريق كتابتها في سطر واحد.

بالنسبة لهذه المقالة، نفترض أنك على دراية إلى حد ما بشروط ومقارنات بايثون. إذا لم تكن كذلك، فلا تقلق! ستجعلك دورة أساسيات بايثون الخاصة بنا على دراية بكل شيء في وقت قصير. هذه الدورة متضمنة في مسار أساسيات بايثون، وهو مسار تعليمي كامل لـبايثون مصمم للمبتدئين تمامًا.

سنبدأ بتلخيص كيفية عمل عبارات if في بايثون. ثم سنستكشف بعض الأمثلة حول كيفية كتابة عبارات if في سطر واحد. لنبدأ!

كيفية عمل عبارة if في بايثون

لنبدأ بالأساسيات. تُستخدم عبارة if في بايثون لتحديد ما إذا كان الشرط صحيحًا أم خاطئًا. ومن ثم يمكن استخدام هذه المعلومات لأداء إجراءات محددة في الكود، والتحكم بشكل أساسي في منطقه أثناء التنفيذ.

البنية الأساسية لعبارات if هي كما يلي:

if <expression>:
    <perform_action>

<expression> هو الكود الذي يتم تقييمه إما بـ True أو False. إذا تم تقييم هذا الكود بـ True، فسيتم تنفيذ الكود أدناه (الممثل بـ ) <perform_action>

يستخدم بايثون المسافات البيضاء للإشارة إلى الأسطر التي يتم التحكم فيها بواسطة عبارة if. تتحكم عبارة if في جميع الأسطر المسننة أسفلها. عادةً، يتم تعيين المسافة البادئة على أربع مسافات .

كمثال بسيط، يقوم الكود أدناه بطباعة رسالة إذا وفقط إذا كان الطقس الحالي مشمسًا:

weather = "sunny"
if weather == "sunny":
    print("I should take a walk outside!")
# output:
# I should take a walk outside!

تحتوي عبارة if في بايثون على مكونين اختياريين: عبارة elif، التي يتم تنفيذها فقط إذا كانت عبارات if/elif السابقة خاطئة؛ وعبارة else، التي يتم تنفيذها فقط إذا كانت كل عبارات if/elif السابقة خاطئة. وبينما قد يكون لدينا عدد لا حصر له من عبارات elif، فقد يكون لدينا عبارة else واحدة فقط في نهاية كتلة التعليمات البرمجية.

if <expression_01>:
    <perform_action_01>
elif <expression_02>:  # executes only if expression_01 is False
    <perform_action_02>
elif <expression_03>:
    <perform_action_03>
 
#  ... Add as many "elifs" as you want
 
else:  # executes only if all expressions above are False
    <perform_another_action>
</perform_another_action>

فيما يلي الشكل الذي يبدو عليه مثالنا السابق بعد إضافة عبارات elif وelse. غيّر قيمة متغير الطقس لرؤية رسالة مختلفة مطبوعة:

weather = "sunny"
 
if weather == "sunny":
    print("I should take a walk outside!")
elif weather == "cloudy":
    print("I'm not sure it will rain. Maybe I will take a walk?")
elif weather == "rainy":
    print("It is raining. I will stay at home.")
else:
    print("I don't know what the weather is...")
 
# output:
# I should take a walk outside!

كيفية كتابة أمر if في سطر واحد بلغة البايثون

إن كتابة عبارة if في بايثون (إلى جانب عبارات elif وelse الاختيارية) تستخدم الكثير من المسافات الفارغة. قد يجد بعض الأشخاص أن متابعة كل عبارة والأسطر المسننة المقابلة لها أمر مربك أو مرهق.

للتغلب على هذه المشكلة، هناك خدعة يتجاهلها العديد من مطوري بايثون: اكتب عبارة if في سطر واحد!

على الرغم من أنها ليست المعيار، فإن بايثون تسمح لنا بكتابة عبارة if والإجراء المرتبط بها في نفس السطر. إليك البنية الأساسية:

if <expression>: <perform_action></perform_action></expression>

كما ترى، لم يتغير الكثير. كل ما نحتاجه هو سحب السطر المسنن <perform_action> إلى يمين حرف النقطتين (:). الأمر بهذه البساطة!

دعنا نتحقق من ذلك من خلال مثال حقيقي. يعمل الكود أدناه كما كان يعمل من قبل على الرغم من أن عبارة if موجودة في سطر واحد. اختبره وشاهد بنفسك:

weather = "sunny"
 
if weather == "sunny": print("I should take a walk outside!")
 
# output:
# I should take a walk outside!

كتابة عبارة if في بايثون تحتوي على عدة إجراءات في سطر واحد

هذا جيد وجميل، ولكن ماذا لو كانت عبارة if الخاصة بي تحتوي على إجراءات متعددة تحت سيطرتها؟ عند استخدام المسافة البادئة القياسية، نقوم بفصل الإجراءات المختلفة في أسطر متعددة المسافة البادئة كما يوضح الهيكل أدناه:

if <expression>:
    <perform_action_01>
    <perform_action_02>
    <perform_action_03>

هل يمكننا القيام بذلك في سطر واحد؟ الإجابة المدهشة هي نعم! نستخدم الفواصل المنقوطة لفصل كل إجراء في نفس السطر كما لو تم وضعه في أسطر مختلفة.

هكذا يبدو الهيكل:

if <expression>: <perform_action_01>; <perform_action_02>; <perform_action_03>

ومثال على هذه الوظيفة:

weather = "sunny"
 
if weather == "sunny": print("It's sunny."); print("I should take a walk outside!"); print("The sun is very warm.")
 
# output:
# It's sunny.
# I should take a walk outside!
# The sun is very warm.

هل لاحظت كيف يظهر كل استدعاء لدالة print() في سطر منفصل؟ يشير هذا إلى أننا قمنا بنجاح بتنفيذ إجراءات متعددة من سطر واحد. رائع!

بالمناسبة، هل أنت مهتم بمعرفة المزيد عن دالة print()؟ لدينا مقال عن تفاصيل دالة print.

كتابة كتلة if/elif/else كاملة في بايثون باستخدام أسطر مفردة

ربما تكون قد توقعت حدوث ذلك، ولكن يمكننا حتى كتابة جمل elif وelse في سطر واحد. للقيام بذلك، نستخدم نفس بناء الجملة المستخدم في كتابة جملة if في سطر واحد.

وهنا الهيكل العام:

if <expression_01>: <perform_action_01>
elif <expression_02>: <perform_action_02>
elif <expression_03>: <perform_action_03>
else : <perform_another_action>
</perform_action_03></perform_action_02></perform_action_01>

يبدو الأمر بسيطًا، أليس كذلك؟ بناءً على محتوى تعبيراتك وأفعالك، قد تجد أن هذا الهيكل أسهل في القراءة والفهم مقارنة بالكتل المسننة.

فيما يلي مثالنا السابق لكتلة if/elif/else كاملة، تمت إعادة كتابتها على هيئة أسطر مفردة:

weather = "sunny"
 
if weather == "sunny": print("I should take a walk outside!")
elif weather == "cloudy": print("I'm not sure it will rain. Maybe I will take a walk?")
elif weather == "rainy": print("It is raining. I will stay at home.")
else: print("I don't know what the weather is...")
 
# output:
# I should take a walk outside!

استخدام تعبيرات بايثون الشرطية لكتابة كتلة if/else في سطر واحد

لا تزال هناك خدعة أخيرة لكتابة شرط if في بايثون في سطر واحد. يمكن أن تقوم التعبيرات الشرطية في بايثون (المعروفة أيضًا باسم مشغلات بايثون الثلاثية) بتشغيل كتلة if/else في سطر واحد.

إن التعبير الشرطي أكثر إحكاما! تذكر أن كتابة كتلة تحتوي على جملتي if وelse في مثالنا الأخير استغرقت سطرين على الأقل.

على النقيض من ذلك، إليك كيفية بناء التعبير الشرطي:

value = <value_if_true> if <expression> else <value_if_false>

قد يكون من الصعب بعض الشيء فهم بناء الجملة في البداية، لكن الفكرة الأساسية هي أن <expression> عبارة عن اختبار. إذا تم تقييم الاختبار على أنه True، فإن <value_if_true> هي النتيجة. وإلا، فإن التعبير ينتج عنه <value_if_false>.

كما ترى، فإن التعبيرات الشرطية تُقيَّم دائمًا إلى قيمة واحدة في النهاية. وهي ليست بدائل كاملة لكتلة if/elif/else. في الواقع، لا يمكننا أن نمتلك عبارات elif فيها على الإطلاق. ومع ذلك، فهي مفيدة للغاية عند تحديد قيمة واحدة بناءً على شرط واحد.

ألق نظرة على الكود أدناه، والذي يحدد قيمة is_baby اعتمادًا على ما إذا كان العمر أقل من خمس سنوات أم لا:

age = 8
 
if age < 5:
    is_baby = True
else:
    is_baby = False
 
print(is_baby)
 
# output:
# False

هذه هي حالة الاستخدام الدقيقة للتعبير الشرطي! إليك كيفية إعادة كتابة كتلة if/else هذه في سطر واحد:

age = 8
is_baby = True if age < 5 else False
 
print(is_baby)
 
# output:
# False

نأمل أن تكون قد تعرفت الآن على العديد من الطرق لكتابة عبارة if في سطر واحد. لقد وصلنا إلى نهاية المقال، ولكن لا تتوقف عن التدريب الآن!


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading