if文（条件分岐）


# 今回の授業資料

<script async class="speakerdeck-embed" data-id="1584d53022f54a64a20426a286ead2cb" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

# 本日の内容
どんなプログラミング言語に限らず，
・(前々回扱った)リスト
・(今回扱う)if文
・(次回以降…)繰り返しの処理
は日常どーーんなアプリケーションでも使われているアルゴリズムになります．そこで今回は，

### if文でコードが書け，実行までできるようになろう！

例えば…
**【条件分岐前までの順次処理】** moneyという変数を宣言（手持ちの値段と想定）
**【条件】** お寿司が1500円
とすると，moneyが仮に3000だとしたらTrue, 1000だとしたらFalseへ分岐することになります．これをコードにすると…

![スクリーンショット 2021-12-06 7.34.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271604/71b0de27-de87-7fa9-50a2-9b561489f024.png)

エディタの**新規作成**はVS Codeにて，**Cmd/Control** を押しながら，**N**を押すと，作成できます．

## 【例題】 手持ちのお金でお寿司が食べれるのか？ (if,elseを用いた条件分岐)

「money」というint型の変数を宣言し，(ためしに)3000を代入．
**＝3000円持っていると仮定．**

```
money=3000
```

本格的にif文を書いていきましょう．まず1つ目の条件である「1500円以上持っていたらお寿司屋へ行くことを勧める」コードが以下になります．ポイントは，
**・2行目，条件分岐の行末は「コロン(:)」をつけます**
**・3行目，条件の中身の処理を書くときは，インデント(字数を半角4字 or Tabキー1押し)下げて表記**

ここで1つ目の条件分岐の記述が完成です．

```
money=3000
if money >= 1500:
    print("お寿司屋に行ってみてはどうでしょうか？")
```

しかし今はmoney=3000ですが，これが仮にmoney=1000の場合(条件に対してfalseの場合)，何もその後の処理を記述しておらず，**実行した際「どんな処理すればいいの？」とエラーになります．**
そこで条件がfalseの場合は，**else:**の"中身"に処理の内容を書いていきます．基本的にif文の最後はelse:ですべて条件が満たされなかった場合の処理までを考慮するようにしましょう．

```
money=1000
if money >= 1500:
    print("お寿司屋に行ってみてはどうでしょうか？")
else:
    print("スーパーで買える範囲のものを探しに行きましょう．")
```

ターミナルを開き実行してみましょう．
**「python3」と入力し，半角スペースを押してから，ファイルのタブをドラッグ&ドロップ**し，Enter/Returnを押しましょう．
![20211206_jikkoh.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271604/68ec790e-9c57-6b79-ad0d-672a60059f79.gif)


#【例題】elifを用いて条件を増やそう

money=10000にしてみましょう．もう少しいろいろな条件が練れるはずです．
条件を細かく付け加えたい場合は，**elif**を用い，if文と同じように比較演算子(…後述)を用いて条件を設定し，"中身"に条件の内容を書いていきます．

```
money=10000
if money >= 7000:
    print("高級うな重はいかがでしょうか？")
elif money >= 5000:
    print("ステーキハウスはいかがでしょうか？")
elif money >= 1500:
    print("お寿司屋に行ってみてはどうでしょうか？")
else:
    print("スーパーで買える範囲のものを探しに行きましょう．")
```

上記のコードは，以下の条件分岐を参考にしてprint文にておすすめの文を作っています．

![スクリーンショット 2021-12-06 9.02.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271604/323b6d9b-90a1-d356-79ea-478f1b6621b9.png)


#if文を書くにあたっての細かいテクニック
### インデント
基本，条件式を書いたら行末は「**：(コロン)**」((**Shift+け**))で締めます．

### 比較演算子

|記法|意味|
|:-:|:--|
|x == y|xとyが等しい|
|x != y|xとyが等しくない|
|x > y|xはyよりも大きい|
|x < y|xはyよりも小さい|
|x >= y|xはyと等しいか大きい|
|x <= y|xはyと等しいか小さい|
|x in y|xという要素にyがある|
|x not in y|xという要素にyがない|

### 論理演算子
|記法|True|False|
|:-:|:--|:--|
|x and y|xかつyを満たせばTrue|⇠以外はfalse|
|x or y|x または y の少なくともどちらか 1 つが True なら True||
|not x|x が False なら True|x が True なら False|

参照：https://www.javadrive.jp/python/if/index6.html 

# これまでのFAQ
・[【Python】実行結果をデスクトップに保存しようとしたら「No such file or directory」エラーが。原因はOnedriveだった。](https://yumeriku.com/python-no-such-file-onedrive/107/)
・[Visual Studio Codeを日本語化する](https://www.javadrive.jp/vscode/install/index4.html)

# これまでの演習
解き終わり次第，[まなBOX](https://daltontokyo.mana-box.jp/epf-web/Servlet/)にて提出しましょう．演習の提出状況で成績判断をします．

|演習番号|問題内容|
|:-:|:--|
|1|[計算してみよう(授業資料1 演習)](https://qiita.com/hakukikun/items/c6fa44ca0168894ecca1)|
|2|[複合代入演算子を用いた四則演算（授業資料3 演習）](https://qiita.com/hakukikun/items/9535d71e76a67d9844fd)|
|3|[python キャスト（授業資料3 演習）](https://qiita.com/hakukikun/items/592dd63ab74a863edee5)|
|4|[リストの要素同士の計算](https://qiita.com/hakukikun/items/44036f883ee19c681cf8)|
|5|[辞書型で自販機データを作ろう](https://qiita.com/hakukikun/items/8f8a1a58d0fe0ecab47a)|

# 参考
[08. 制御構文（if文） | 中学生でもわかるPython入門シリーズ](https://www.youtube.com/watch?v=yutXz217ttQ)
[たった1日で基本が身に付く! Python超入門](https://www.amazon.co.jp/%E3%81%9F%E3%81%A3%E3%81%9F1%E6%97%A5%E3%81%A7%E5%9F%BA%E6%9C%AC%E3%81%8C%E8%BA%AB%E3%81%AB%E4%BB%98%E3%81%8F%EF%BC%81-Python%E8%B6%85%E5%85%A5%E9%96%80-%E4%BC%8A%E8%97%A4-%E8%A3%95%E4%B8%80-ebook/dp/B074WVKQVP/ref=as_li_ss_tl?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=Python+%E4%BC%8A%E8%97%A4&qid=1586415008&sr=8-1&linkCode=sl1&tag=grit-22&linkId=b689fc38acfbc841b9b1d2dc3af4cc32)
[1日で基本が身につく! Python超入門 - Speaker Deck](https://speakerdeck.com/yuichi110/1ri-deji-ben-gashen-nituku-pythonchao-ru-men)
[Python チュートリアル](https://docs.python.org/ja/3/tutorial/)