Python独学ならTech-Joho TOP > Python入門カリキュラム > 場合によって処理を分ける
If文とは
>や<といった演算子を使ってPythonに式を渡すと、与えられた条件式が成り立つときはTrue(真)、成立しないときはFalse(偽)が返ってきます。
if文は、この診断結果によって、プログラムの流れを変化させることができるものです。
例えば、変数suujiが2より大きいと’2より大きい’、小さいと’2より小さい’と表示するプログラムは以下になります。(下の黒い欄に1行ずついれてみてください。)
>>> suuji = 1 >>> if suuji > 2: ... print('2より大きい') ... else: ... print('2より小さい') ... '2より小さい'
if suuji > 2:を入れると、>>>となっていたところが…と変化します。
最後の(‘2より小さい’)の行のあとは、1行何もいれないままエンターキーを押して改行してください。
suujiは1なので、常に’2より小さい’が表示されるはずです。
ifの練習1
上の例で、suujiを2, 3, 4, 5にして実行してみてください。何が表示されますか?
値がその都度変わるものを使わないと、if文のありがたさはわかりません。
ユーザの入力を受け付けるinput関数を使う例をみてみましょう。
>>> nyuuryoku = input('数字を入力して下さい') >>> suuji = int(nyuuryoku) >>> if suuji > 2: ... print('2より大きい') ... else: ... print('2より小さい') ...
else
if のあとに書く、条件が成立しなかった時に、別の処理が実行させるようにするのが、elseです。
上と同じ例ですが、もう一度見て下さい。
>>> suuji = 1 >>> if suuji > 2: ... print('2より大きい') ... else: ... print('2より小さい') ... '2より小さい'
suujiという変数に代入されたのは、1です。
ifの後にある条件は、「suujiが2より大きい」です。
すると、ifのあとの条件は成立していません。
その場合、
ifのすぐ下に書いた内容ではなく、ifに続いて書いたelseの後の下に書いた内容が実行されます。
elif
elifという、elseとifをくっつけたような文もあります。
上の例を少し変えて、elifという文が真ん中辺りに増えています。
elifの下の部分が実行される条件を日本語にすると、「suujiが2以下で、もし1より大きければ」となります。
>>> suuji = 2 >>> if suuji > 2: ... print('2より大きい') ... elif suuji > 1: ... print('1より大きい') ... else: ... print('1以下') '2より小さい'
elifは、もし上に書いてある条件が当てはまらかなったら、右に書いてある条件をチェックする、という意味です。
下の例のように、elifをたくさん書くこともできます。
>>> suuji = -2 >>> if suuji > 2: # 最初の条件 ... print('2より大きい') ... elif suuji > 1: # 最初の条件が当てはまらかなったらチェックする条件 ... print('1より大きい') ... elif suuji > 0: # 次の条件が当てはまらかなったらチェックする条件 ... print('0より大きい') ... else: # 上に書いてある条件が全て当ては余らなかったら ... print('0以下') '0以下'
この例だと、まず、suujiが2より大きいかをチェックします。(最初の条件)
当てはまらかなったら、suujiが1より大きいかをチェックします。(最初の条件が当てはまらかなったらチェックする条件)
さらに、これも当てはまらかなったら、suujiが0より大きいかをチェックします。(次の条件が当てはまらかなったらチェックする条件)
さらに、これも当てはまらかなったらelseの下に書いてある内容が実行されます。
どんどん下の条件に流れていく感じです。
ifの練習2
下の条件を満たすif、elif、elseを使ったコードを黒い欄で実行してみて下さい。
- input関数を使ってユーザに数字入力させる
- ユーザが入力した数字をint関数でint型に変換する
- 変数suujiに、int型に変換した数字を代入する
- suujiが10より大きかったら’10より大きい’と表示
- suujiが10以下で、5より大きかったら’5より大きい’と表示
- suujiが5以下だったら’小さい!!!’と表示
andとor
ifの後には、andとorで2つの条件を書くこともできます。
>>> suuji = -2 >>> if suuji > 2 and suuji < 5 : ... print('5と2の間') ... else: ... print('5以上か、2以下') '0以下'
くわしくはこちら(執筆中….)で解説する予定です。
<< 前へ 第9回 たくさんのデータを1つにまとめる
>> 次へ 第11回 たくさんのデータで同じ処理を繰り返す