04. Pythonの条件分岐

より複雑な処理を行うためには、「条件分岐」が必要になってきます。
基本的なif文をはじめ、インデントを使った記述方法に慣れていきましょう。

if・else文

  • 条件分岐で実行する部分を「ブロック」と呼ぶ
  • ブロックは「インデント(タブやスペースによる空白の字下げ)」で表現する
  • インタラクティブシェルの場合、ブロックの終わりは空の改行
>>> if str == "kura": # 条件の後に「:」を入れる
...     print "lab" # インデントに注意(タブでもスペースでもよい)
...     print "python" # 上のprintと同じ位置に合わせる
...                 # インタラクティブシェルの時は改行で実行
「True」または「False」のbool型の結果を返します。
  • x == y # 等しい?
  • x != y # 等しくないか?
  • x < y, x > y # どっちが大きい?
  • x <= y, x >= y # どっちが大きい?(等しい場合も含む)
  • x in y # xの要素がyのシーケンスに含まれている?
  • not # 否定
JavaやCのように&&,||は使用できません。また、優先順位に注意。
  • 積集合、かつ「and」
  • 和集合、または「or」
  • 優先順位は「and > or」
  • ()カッコを利用して条件を複雑にできる

文字列検索


条件演算子

CやJavaではif文と同じような条件分岐に次のような方法があります。
<条件> ? <真の場合の値> : <偽の場合の値>
Pythonにも以下のような条件演算子を用いることができます。
Pythonでは「and / or」をつかって以下のように書くことができます。
...     print a % 2 == 0 and (a,) or "other"
タプルをつかっているのは「aが偽のときに"other"が代入される」ことを避けるためです。
タプルを使用しないと以下のように0のときに"other"が代入されてしまっています。
...     print a % 2 == 0 and a or "other"

「ifとelse」をつかった条件演算子

Python2.5では条件演算子は、CやJavaのものとは順序が異なっているので注意してください。
<正の場合の値> if <条件式> else <偽の場合の値>
...     print a if a % 2 == 0 else "other"
ある文字列中に対象の文字列が含まれるか調べることができます。
>>> a = "kokakokarakurakerara"
シーケンスを利用して辞書のキーや値の検索をすることができます。
>>> dic = {"kura":"lab", "ku":"ra"}
>>> dic = {"kura":"lab", "ku":"ra"}
>>> if "lab" in dic.values():
if文で使用する条件には以下の内容も利用することができます。
 真(True)偽(Flase)
  •  0以外の数値
  • 空でない文字列
  • 要素のあるシーケンス
  • 要素を持つ辞書
  •  0
  • 空の文字列("")
  • 空のシーケンス([], ())
  • 空の辞書({})