ternary operator لاختصار أسلوب الشرط

الكاتب: محمد الهادي بالطيب.

السلام عليكم و رحمة الله و بركاته ،

أقدّم لكم طريقة مختلفة لكيفية كتابة الشرط if و جوابه :

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

الطريقة تسمَى ternary operator

و يمكنكم التعمق في دراستها بأنفسكم .

لنأخذ هذا المثال البسيط :

a = 5

b = 10

print(f"لدينا العددين {a}و {b}و نريد المقارنة بينهما ")

print("الطريقة القياسية:")

if a>b :

print(f" نتيجة المقارنة : العدد {a} هو الأكبر")

else :

print(f" نتيجة المقارنة : العدد {b} هو الأكبر")

print("طريقة ternary operator:")

سنقوم بإنشاء متغيّر نسميه "العدد الأكبرmax_number " و نعطيه القيمة aاذا كانت أكبر و إلا نعطيه القيمة bان كان العكس ،نضع جواب الشرط بعد علامة يساوي مباشرة ثم الشرط نفسه ثم else ثم جواب الelse و في هذه الطريقة لا وجود ل : بعد الشرط و لا وجود لإزاحة ، بل نختصر 4 أسطر التي نكتب بها الشرط if و جوابه و else و جوابه ، نعوض كل هذه الأسطر الأربعة بسطر وحيد .

max_number = a if a > b else b

print(f" نتيجة المقارنة : العدد {max_number} هو الأكبر")

و كتب الأستاذ سليمان القسيمي هذا الشرح و التوضيح لهذه الطريقة :

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

وفكرتها كما رأيتم أن يكون الشرط مكتوبًأ في سطر واحد لكن ليست هذه هي الغاية الوحيدة من ذلك.

فلو استخدمنا الشرط المعهود هكذا

if True: print("yes")

فالكود سيعمل بشكل طبيعي جدًا.

لكن العبرة هنا في ال ternary operator هو أنه يعد من ضمن ال operators التي على شاكلة علامات الأكبر من والأصغر من وعلامة مقارنة مساواة المقدار.

معنى ذلك أن هذا الشرط يُمكن أن يكون جزء من قيمة علاوة على طبيعته التحققية.

خذوا معي هذا المثال لمزيد من التوضيح

print(5>2+2)

الناتج سيكون True ولن يكون هناك خطأ كون أن علامة > يمكن تمريرها كجزء من قيمة ما

hour = 13

print("مساء الخير" if hour >= 12 else "صباح الخير")

هنا لن يظهر خطأ أيضًا

لكن لو استخدمت الشرط القياسي داخل ال print فسيقلب البايثون رأسًا على عقب. 

تعليقات