كيفية استخدام عامل بايثون الثلاثي
نشرت: 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 الثلاثي: النحو والأمثلة
لدى Python عامل تشغيل ثلاثي يعمل إلى حد كبير مثل المشغل الشرطي الثلاثي في لغات مثل C و C ++. الصيغة العامة لاستخدامها هي كما يلي:
expression1 if condition else expression2
دعنا نحلل بناء الجملة أعلاه:
-
condition
: الشرط المراد التحقق منه. -
expression1
: التعبير المراد تقييمه إذا كان الشرط صحيحًا. -
expression2
2: التعبير المراد تقييمه إذا كان الشرط خطأ.
الآن ، سنحدد ما يجب أن يكون expression1
1 expression2
2 condition
من إصدار if-else من الكود.
بتجميعها معًا ، لدينا ما يلي باستخدام عامل بايثون الثلاثي.
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.