كيفية استخدام عامل بايثون الثلاثي

نشرت: 2023-01-04

سيعلمك هذا الدليل كيفية استخدام العامل الثلاثي في ​​بايثون. ستتعلم عدة أمثلة لبناء الجملة والتعليمات البرمجية لفهم كيفية عملها.

سنبدأ بمراجعة كيفية عمل جملة if-else الشرطية ثم نتعلم كيفية كتابة تعبير مكافئ باستخدام عامل التشغيل الثلاثي.

بعد ذلك ، سنقوم بتشفير بعض الأمثلة ثم نتعلم كيفية محاكاة سلوك عامل بايثون الثلاثي باستخدام مجموعة Python والقاموس. أخيرًا ، سنراجع بعض حالات الاستخدام التي يجب أن تفضل فيها استخدام عامل التشغيل الثلاثي.

هيا نبدأ!

بيان If-Else في Python: مراجعة

يمكنك كتابة التعليمات البرمجية من خلال بدء تشغيل Python REPL أو في محرر Python عبر الإنترنت في Geekflare.

الصيغة العامة لعبارة if-else في بايثون هي كما يلي:

 if condition: # do this else: # do this

في المقتطف أعلاه ، يشير condition إلى الشرط المراد التحقق منه. إذا تم تقييم الشرط إلى True ، فسيتم تشغيل كتلة if. إذا تم تقييم الشرط إلى False ، فسيتم تنفيذ العبارات الموجودة داخل كتلة else.

فيما يلي مثال حيث يتم تعيين قيمة منطقية لمتغير game_over اعتمادًا على ما إذا كانت قيمة energy أقل من أو تساوي الصفر أم لا.

  • إذا كانت energy <= 0 ، فإن game_over True .
  • عدا ذلك ، فإن game_over خطأ.

يوضح مقتطف الشفرة التالي كيفية القيام بذلك باستخدام العبارات الشرطية if-else:

 energy = -1 if energy <= 0: game_over = True else: game_over = False print(game_over) # True

في هذا المثال ، energy هي -1 وهي أقل من 0. لذا فإن game_over صحيحة.

مشغل Python الثلاثي: النحو والأمثلة

بيثون-الثلاثية-عامل -1

لدى Python عامل تشغيل ثلاثي يعمل إلى حد كبير مثل المشغل الشرطي الثلاثي في ​​لغات مثل C و C ++. الصيغة العامة لاستخدامها هي كما يلي:

 expression1 if condition else expression2

دعنا نحلل بناء الجملة أعلاه:

  • condition : الشرط المراد التحقق منه.
  • expression1 : التعبير المراد تقييمه إذا كان الشرط صحيحًا.
  • expression2 2: التعبير المراد تقييمه إذا كان الشرط خطأ.

الآن ، سنحدد ما يجب أن يكون expression1 1 expression2 2 condition من إصدار if-else من الكود.

الثلاثي المرجع ex1

بتجميعها معًا ، لدينا ما يلي باستخدام عامل بايثون الثلاثي.

 game_over = True if energy <= 0 else False print(game_over) # True

دعنا نبرمج مثالًا آخر. لنفترض أنك تدير محل لبيع الكتب ومنحت القراء خصمًا على مشترياتهم اعتمادًا على عدد المرات التي زاروا فيها متجرك في العام الماضي.

دع numVisits يشير إلى عدد الزيارات.

  • إذا كان numVisits > 7 ، فإن النسبة المئوية للخصم ، discount_perc هي 20.
  • عدا ذلك ، فإن discount_perc هي 5.

نستخدم العامل الثلاثي لتعيين قيمة إلى المتغير discount_perc .

 numVisits = 10 discount_perc = 20 if numVisits > 7 else 5 print(discount_perc) # 20 (as numVisits = 10 which is > 7)

بعد ذلك ، سنتعلم كيفية محاكاة العامل الثلاثي باستخدام مجموعة Python وقاموس.

محاكاة العامل الثلاثي مع Python Tuple

مثل كل العناصر التكرارية في Python ، تتبع المجموعات الصفرية في الفهرسة. لذلك إذا كان لديك عنصران في المجموعة ، فإن tuple_name[0] يشير إلى العنصر الأول في المجموعة tuple_name[1] العنصر الثاني في المجموعة.

أنواع البيانات الأساسية في بايثون هي الأعداد الصحيحة والعائمة والسلسلة والمنطقية. يدعم Python صب النوع الذي يتيح لك تمثيل نوع بيانات معين من خلال تمثيله المكافئ في نوع بيانات آخر.

ابدأ تشغيل Python REPL وقم بتشغيل الأمثلة التالية. إذا حاولت تحويل الأعداد الصحيحة إلى قيمة منطقية ، فستلاحظ ما يلي:

  • bool(0) False .
  • bool(<any non-zero integer>) ترجع True .
 >>> bool(0) False >>> bool(1) True >>> bool(-1) True >>> bool(10) True

وبالمثل ، عند تحويل قيمة Boolean إلى أعداد صحيحة ، لدينا ما يلي:

 >>> int(True) 1 >>> int(False) 0

بتجميع نوع الصب والفهرسة معًا ، يمكننا القيام بما يلي:

  • العنصر في الفهرس 0 في المجموعة: القيمة التي يجب استخدامها عندما يكون condition False .
  • العنصر في الفهرس 1 في المجموعة: القيمة التي يجب استخدامها عندما يكون condition True .

Uisng ما سبق ، لدينا ما يلي:

 >>> numVisits = 10 >>> discount_perc = (5,20)[numVisits > 7] >>> discount_perc # 20

هنا ، الشرط numVisits > 7 هو True لأن numVisits هو 10. نظرًا لأن int(True) هي 1 ، فإن قيمة discount_perc هي 20 ، والعنصر في الفهرس 1.

محاكاة المشغل الثلاثي مع قاموس بايثون

يمكنك تعيين True False كمفاتيح القاموس. ويمكنك تعيين expression1 expression2 على أنهما القيمتان المناظرتان للمفاتيح True و False على التوالي.

 some_dict = {True: expression1, False: expression2 }

ماذا ستفعل لاحقا؟ الآن إذا كنت تستخدم some_dict[condition] ، فسيتم تقييم expression1 1 المقابل لمفتاح True إذا كان condition True . ويتم تقييم expression2 2 عندما يكون condition False .

لنقم بترميز مثال discount_perc (مرة أخرى) ولكن هذه المرة باستخدام قاموس Python.

 >>> numVisits = 10 >>> discount_dict = {True: 20, False:5} >>> discount_perc = discount_dict[numVisits > 7] >>> discount_perc # 20

هنا ، numVisits = 10 وهو أكبر من 7. لذلك ، فإن عدد numVisits > 7 هو True . لذلك يتم تقييم discount_dict[numVisits > 7] إلى discount_dict[True] وهي القيمة 20.

هل يجب عليك دائمًا استخدام عامل بايثون الثلاثي؟

هل يجب عليك دائمًا استخدام عامل التشغيل الثلاثي بيثون

حتى الآن ، تعلمنا كيفية استخدام العامل الثلاثي. ولكن هل يجب علينا دائمًا استخدام العامل الثلاثي؟ حسنًا ، قد لا يكون عامل التشغيل الثلاثي هو الخيار الأفضل لجميع حالات الاستخدام. ينقسم هذا القسم إلى متى يجب أن تفضل استخدام عامل التشغيل الثلاثي على عبارات if-else. سنغطي أيضًا متى يجب أن نفكر في استخدام عبارة if-else بدلاً من عامل التشغيل الثلاثي.

أكثر إيجازًا من الكتل إذا كانت أخرى

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

في المثال التالي ، nums عبارة عن قائمة من 100 عدد صحيح تم إنشاؤه عشوائيًا. لكل من 100 رقم ، نتحقق مما إذا كان عددًا فرديًا أم زوجيًا. ويحدث هذا التقييم داخل السلسلة f.

 import random nums = [random.choice(range(100)) for i in range(10)] for num in nums: print(f"{num} is {'even' if num%2==0 else 'odd'}")
 # sample output 0 is even 56 is even 6 is even 53 is odd 62 is even 7 is odd 8 is even 77 is odd 41 is odd 94 is even

المشغل الثلاثي يتطلب شرط آخر

عندما تستخدم العبارات الشرطية if-else ، فإن جملة else اختيارية. لنأخذ مثالا. يتم تعيين متغير game_over على True إذا انخفضت energy إلى قيمة أقل من أو تساوي الصفر.

ومع ذلك ، إذا كانت energy أكبر من الصفر ، فلن تتم تهيئة متغير game_over مطلقًا. لذلك ستواجه أخطاء إذا حاولت الوصول إلى متغير game_over .

 energy = 5 if energy <= 0: game_over = True print(f"Is the game over? {game_over}")
 Traceback (most recent call last): File "ternary_op.py", line 39, in <module> print(f"Is the game over? {game_over}") NameError: name 'game_over' is not defined

تتمثل إحدى طرق إصلاح ذلك في ضبط game_over على False مبدئيًا وتحديثه إلى True إذا كان مستوى الطاقة أقل من أو يساوي الصفر.

 energy = 5 game_over = False if energy <= 0: game_over1 = True print(f"Is the game over? {game_over}")

ومع ذلك ، عند استخدام مكافئ عامل تشغيل Python الثلاثي لما سبق ، فإن عبارة else ليست اختيارية. يتطلب العامل الثلاثي تقييم التعبير عندما يكون condition False .

 game_over = True if energy <= 0 else False

إذا قمت بتغيير ما سبق إلى game_over = True if energy <= 0 عن طريق إزالة الجزء الآخر ، فسوف تواجه خطأ في بناء الجملة ، كما هو موضح:

 File "ternary_op.py", line 42 game_over = True if energy <= 0 ^ SyntaxError: invalid syntax

للتحقق من وجود شروط متعددة ، استخدم عبارات If-Else

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

نتيجة مستوى الصعوبة
اقل من 10 سهل
بين 10 و 20 متوسط
أكبر من 20 الصعب

بالنظر إلى درجة الصعوبة ، يمكنك الحصول على مستوى الصعوبة باستخدام عامل بايثون الثلاثي كما هو موضح:

 score = 12 difficulty_level = "easy" if score < 10 else "hard" if score > 20 else "medium" print(difficulty_level) # medium

تعبير المشغل الثلاثي في ​​كتلة التعليمات البرمجية أعلاه هو بالشكل التالي:

 expression1 if condition1 else expression2 if condition2 else expression3

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

مثال عامل ثلاثي

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

 if score < 10: difficulty_level="easy" elif score > 20: difficulty_level="hard" else: difficulty_level="medium" print(difficulty_level)

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

أيضًا ، عندما تحتاج إلى تنفيذ عبارات متعددة - اعتمادًا على ما إذا كان الشرط صحيحًا أم خطأ - يجب أن تفكر في استخدام عبارة if-else.

استنتاج

فيما يلي ملخص لما تعلمته في هذا البرنامج التعليمي.

  • في Python ، يمكن استخدام العامل الثلاثي بالصيغة التالية: expression1 if condition else expression2 .
  • يمكنك محاكاة سلوك العامل الثلاثي باستخدام مجموعات Python والقواميس.
  • في حين أن عامل التشغيل الثلاثي يمكن أن يكون بديلاً أكثر إيجازًا لكتل ​​if-else ، يجب عليك التأكد من أن الشفرة قابلة للقراءة. لتحسين قابلية قراءة الكود ، يمكنك استخدام عبارات if-else بدلاً من عامل التشغيل الثلاثي ، خاصةً عندما تحتاج إلى ربط شروط متعددة.

بعد ذلك ، تعلم كيفية التحقق من البرنامج التعليمي حول العوامل المتساوية وغير المتساوية في Python.