2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Python中級者への道】三項演算子を利用する

Posted at

まとめへのリンク

はじめに

Pythonの勉強をするために、acopyという群知能ライブラリを写経していました。

acopyでは、多くのPythonの面白い文法・イディオムが使われており、その中でも便利だなぁというのをまとめています。

今回は、Pythonの三項演算子を学びます。

三項演算子

三項演算子は、C++などでは
条件式: trueの値: falseの値などで、if-elseで表現できる文を一行で終わらす演算子です。

当然記述量は断然短くなりますが、その分三項演算子をネストすると可視化性は著しく下がります。

もし、ネストするならばアルゴリズムの見直しや、if文で普通に書くことを意識しましょう。

Pythonの三項演算子

Pythonの三項演算子は
Trueの値 if 条件式 else Falseの値
C++やC言語と順番が違います。

C++やCを使っている自分にとっては、かなり違和感がする記法です。
C++なら

  1. とりあえず条件式書いたろ!
  2. Trueの値書いちゃえ
  3. Falseの値書いちゃえ

と自然な流れが出来るので嬉しいのですがPythonの場合

  1. 条件式なんやろ・・・たしかTrueのときはこの値やな
  2. 条件式こうやな
  3. Falseはこう

のように順序が逆で非常にやりずらいなぁって感じます。
Vimmerなどならこれがすらってかけるんだろうなぁって思いますね。

偶数奇数

とりあえず偶数奇数判定を書いてみます。
 


a = int(input())

s = "odd" if a % 2 else "even"
print(s)

ここらへんの書き方が、英語っぽいなぁってなんか感じます。
先に真 条件式 偽 の順を早く覚えたいですね。

偶数奇数(負を除く)

負があると、面倒なので、負の場合はminusと出力するようにしましょう。

a = int(input())

s = "minus" if a < 0 else "even" if a % 2 == 0 else "odd"
print(s)

まず、マイナスかどうかをチェックしてマイナスならminusで終了です。
そうでないなら、入れ子になっている三項演算子で再びeven, oddをチェックします。

最後に

三項演算子を使うのはやめよう!(適度に)

2
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?