Pythonのブール演算子 "and" "or" についての質問です。
html
1name1,name2,name3,name4= '', 'suzuki','tanaka','sato' 2selected_name = name1 and name2 or name3 and name4 3print(selected_name) 4 5>> sato
の出力結果が、'sato'になるのはなぜでしょうか。
私の理解では
name1 and name2 で偽を返し、次の or name3 で評価を終了し、
name3 である 'tanaka' を返すと考えました。
補足----------------------------------------------------
下記2つのURLから以下のコードは
html
1name1,name2,name3,name4= '', 'suzuki','tanaka','sato' 2selected_name = name1 or name2 or name3 or name4 3print(selected_name) 4 5>> suzuki
と 'suzuki' を返すのは理解できました。
・https://teratail.com/questions/104207
・https://docs.python.org/ja/3/tutorial/datastructures.html#more-on-conditions
ブール演算子 and と or は、いわゆる 短絡 (short-circuit) 演算子です。これらの演算子の引数は左から右へと順に評価され、結果が確定した時点で評価を止めます。例えば、 A と C は真で B が偽のとき、 A and B and C は式 C を評価しません。一般に、短絡演算子の戻り値をブール値ではなくて一般的な値として用いると、値は最後に評価された引数になります。
ご回答のほどどうぞよろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/26 06:26