آیا زبان پایتون عملگر سه گانه شرطی دارد؟

  • آخرین بروزرسانی پرسش در کاپ کد در سه‌شنبه 14 آوریل 2020

اگر پایتون اپراتور سه گانه شرطی نداره، آیا امکان شبیه سازی اون از طریق ساختار های دیگه وجود داره؟

پرسش 🔝امتیازی
تعداد بازدید1869128
امتیاز5880👍
رای5897👍
📅 پرسش در
📅 آخرین ویرایش

برای این پرسش 4 پاسخ وجود دارد

4

بله، این اپراتور در ورژن 2.5 اضافه شد. سینتکس دستور به این صورته:

a if condition else b

در ابتدا condition ارزیابی می شه و سپس a یا b بررسی میشه و بر اساس مقدار Boolean مشخص شده از بررسی conditionبازگشت (return) داده میشه. اگر condition به صورت True ارزیابی بشه، در این صورت a اجرا و بازگشت داده میشه و از اجرای b صرف نظر میشه و برعکس

مثال :

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

میتونی از این عبارت شرطی برای انتصاب مقدار برای متغیر استفاده کنی:

x = a if True else b

امتیاز6874👍

پاسخ تایید شده
📅 پاسخ در
📅 آخرین ویرایش

از روی مستندات:

عبارت های شرطی (بعضی موقع تحت عنوان "اپراتور سه گانه" شناخته می شود) در بین اپراتور های پایتون کمترین اولویت را دارد.

عبارت x if C else y در ابتدا شرط را ارزیابی می کند، C (نه x); اگر C درست باشد، x ارزیابی می شود و مقدار آن برگشت داده می شود؛ در غیر این صورت y ارزیابی می شود و مقدارش برگشت داده می شود.

برای آگاهی از جزئیات بیشتر عبارت های شرطی PEP 308 رو ببین.

 

امتیاز155👍

📅 پاسخ در
📅 آخرین ویرایش

برای نسخه های قبل 2.5، یک ترفند هست:

[expression] and [on_true] or [on_false]

در زمانی که on_true مقدار بولین false داره، ممکنه نتیجه اشتباه بشه.

البته خوبیش اینه که عبارت ها رو از چپ به راست ارزیابی می کنه که به نظر من واضح تره.

امتیاز334👍

📅 پاسخ در
📅 آخرین ویرایش

میتونی داخل یک tuple ایندکس کنی:

(falseValue, trueValue)[test]

test باید  True یا False برگردونه.

شاید ایمن تر باشه که همیشه به این صورت پیاده سازی بشه:

(falseValue, trueValue)[test == True]

یا میتونی از تابع bool() برای اطمینان از این که مقدار برگشتی Boolean هست، استفاده کنی.

(falseValue, trueValue)[bool(<expression>)]

امتیاز777👍

📅 پاسخ در
📅 آخرین ویرایش
برای دنبال کردن نوشته های کاپ کد به کانال تلگرامی آن (cupcode_ir@) بپیوندید!
guest
0 دیدگاه ها
بازخورد (Feedback) های اینلاین
View all comments
0
افکار شما را دوست دارم، لطفا نظر دهیدx
()
x