プログラミングをやってみよう【Python編Part1】

# あいさつ
皆さんはじめまして．C3の鳩屋敷です．
今回はPythonを使ってプログラミングの基礎を学んでいきたいと思います．

# 準備するもの
・パソコン(今回はWindows10基準で教えます)
・VSCode(好みのエディタがあればそちらでも)
・Python3(揃えた方が楽なので最新版を使う)
・気合い
・おやつ(バナナも可)

## 準備の手順
一応準備するまでの流れも掲載しておきます．

### パソコン
パソコンは買ってください．

### エディタ
エディタはVSCodeを推奨します(今回VSCodeを使って教えるので)．こちらから「今すぐダウンロード」でダウンロードしてください→[Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
好きなエディタがメモ帳ならそちらでもどうぞ．

### Python3
最後にPythonの言語のライブラリをダウンロードします．このサイト([Download Python](https://www.python.org/downloads/))を開いてWindowsユーザーは一番上のでかいボタンからダウンロードしてください．インストーラを起動したら進める前に`Add Python 3.X.X to PATH`のチェックを忘れ内容にしてください．後はインストーラの手順に従いましょう．

### おやつ
食べる時間は設けませんので適宜食べましょう．たけのこの里が好ましい．

# 実行の準備
VSCodeを開いて，上のツールバーから`ファイル > フォルダーを開く…`で好きな所のフォルダを開きます．開いたら`ファイル > 新規ファイル`で新規ファイルを作ります．新規ファイルの名前は`choukankaku.py`のように最後に`.py`を付けましょう．うっかり変え忘れても後から変えられるので焦らなくても大丈夫です．これでpythonのプログラムを書く準備は完成です．
ファイルを実行するためのターミナルも用意しましょう．せっかく作っても実行できなければ意味がありませんね．上のツールバーから`ターミナル > 新しいターミナル`でターミナルを出します．選択肢が出てきた場合は多分一番上を選べばなんとかなると思います．
ターミナルに

```
python3 choukankaku.py
```
(choukankaku.pyの部分は自分のファイル名に置き換える)
と書いてEnterキーを押せば実行できます．

# やってみよう
## その前に
### コメントアウト
プログラミングのファイルには日本語でメモすることは出来ません．それぞれの言語の文法があるからです．
それでもコメントを残したいと思うタイミングはあると思います．そんな時にはコメントアウトを使ってみましょう．今からやっていくことで忘れそうなところにメモとしてコメントを書いてもいいかも知れませんね．

```python:choukankaku.py
# Pythonの馬鹿！！
'''
複数行のコメントアウトも
こうやったらできるよ
Pythonの阿呆！！
'''
```
この記事でも，命令の説明や使い方などでコメントを使っています．
また，(本来の使い方はこっちな気もしますが，)プログラムが上手く動かない時に悪さをしていそうな記述を一旦消して後でもとに戻したいときにも使えます．
ちなみにVSCodeでコメントアウトしたい行を選択して`Ctrl+/`を押すと一気にコメントアウトしてくれます．(もう一度押すとコメントアウト解除)

## 1: 自己紹介を表示する(print)
まずは出力(表示)を覚えましょう．下の文をPythonファイルに記述します．(名前は適宜変えましょう．)

```Python:choukankaku.py
print("私の名前は鳰屋敷です．")
```
これを実行するとコマンドプロンプトに`私の名前は鳰屋敷です．`と表示されます．
もっと増やして自己紹介にしてみましょう．

```Python:choukankaku.py
print("私の名前は鳰屋敷です．")
print("鳰屋敷の年齢は19歳です．")
print("鳰屋敷の年齢は19歳なのでお酒は飲めません．")
```
これを実行すると上記の通り表示されますね．

## 2: 変数を使う
うっかりしてました．私の名前は「鳩屋敷」なのですが，鳩が鳰になっています．書き直しましょう．
今回は修正箇所は3行で済みましたが，これがもっと書いた後だったらもっと大変でした．

こんな時に役立つのが**変数**です．変数の中に名前を入れてそれを使い回せば必ず同じ名前が表示されるし，変数の中身を1箇所変えるだけで何百行使っていようが全部修正できます．これで楽できますね．

変数の使い方はこうです．

```py
# 変数の定義(nameという変数の中に「鳩屋敷」という文字列が入っている)
name = "鳩屋敷"

# 変数の使用
print(f"{ name }だよ～")
```
このように，変数の中身を一度定義してあげると変数を使えばずっと同じ値を使えます．
文字列の中に変数を使う時は`f"{name}"`のように，変数を{}で括り，""の前にfを付けてあげる必要があります．こういうもんだと割り切ってください笑

では書いてみましょう．
年齢もついでに変数にしておきました．

```Python:choukankaku.py
name = "鳩屋敷"
age = 19
print(f"私の名前は{ name }です．")
print(f"{ name }の年齢は{ age }歳です．")
print(f"{ name }の年齢は{ age }歳なのでお酒は飲めません．")
```
`name`という変数の中に"鳩屋敷"という値を保存することで`name`という変数を全部"鳩屋敷"という値に置き換えてくれます．
""(ダブルクォート)の前のfは文字列の中に変数を使うために必要な表記です．変数のみprintするときには不必要です．

## 3: キーボード入力を受け付ける(input)
さて皆さんは19歳でしょうか．この講座を受けてる人は18の人が多いでしょうしこの記事を読んでる人は19歳であるほうが珍しいでしょう．名前も実行する人によって変えたいですよね．
実行する人の名前と年齢を確認してから自己紹介を表示しましょう．キーボードで文字入力をさせます．
書き方はこうです．

```py
# Enterキーを押すまで待機し，それまでに入力した文字列を変数に代入
key = input()

# 試しにプリント
print(key)
```
ではinput()を使って入力させてみましょう．

```Python:choukankaku.py
print("名前を入力してください．")
name = input()
print("年齢を入力してください．")
age = input()

# 文頭のfは文章の中に変数を使うために必要な記述
print(f"私の名前は{ name }です．")
print(f"{ name }の年齢は{ age }歳です．")
print(f"{ name }の年齢は{ age }歳なのでお酒は飲めません．")
```
`input()`が出てきましたね．これは文字入力させて，エンターを押すと入力した文字列を変数に代入する関数です．

## 4: 条件で分岐させる(if)
ですが20歳以上の人はどうでしょうか．お酒は飲めます．これでは自己紹介が嘘になりますね．
年齢を条件に分岐してprintする文字列を変更したいですね．
こんな時に役立つのがif文です．

```Python
if <条件文>:
    <処理1>
else:
    <処理2>
```
こんな風に書くと，条件文を満たすと処理1が，満たさないと処理2が実行されます．
処理の部分はタブキーで必ず一つ高く上げましょう．
自己紹介に実装するとこうなります．

```Python:choukankaku.py
print("名前を入力してください．")
name = input()
print("年齢を入力してください．")
age = int( input() )
print(f"私の名前は{ name }です．")
print(f"{ name }の年齢は{ age }歳です．")
if age < 20:
    print(f"{ name }の年齢は{ age }歳なのでお酒は飲めません．")
else:
    print(f"{ name }の年齢は{ age }歳なのでお酒は飲めます．")
```


## 5: ループ文と配列(while)
さて次は2人分の自己紹介を表示できるようにしてみましょう．
コピペっ．

```Python:choukankaku.py
print("1人目の名前を入力してください．")
name_1 = input()
print("1人目の年齢を入力してください．")
age_1 = int( input() )
print("2人目の名前を入力してください．")
name_2 = input()
print("2人目の年齢を入力してください．")
age_2 = int( input() )
print(f"1人目の名前は{ name_1 }です．")
print(f"{ name_1 }の年齢は{ age_1 }歳です．")
if age_1 < 20:
    print(f"{ name_1 }の年齢は{ age_1 }歳なのでお酒は飲めません．")
else:
    print(f"{ name_1 }の年齢は{ age_1 }歳なのでお酒は飲めます．")
print(f"2人目の名前は{ name_2 }です．")
print(f"{ name_2 }の年齢は{ age_2 }歳です．")
if age_2 < 20:
    print(f"{ name_2 }の年齢は{ age_2 }歳なのでお酒は飲めません．")
else:
    print(f"{ name_2 }の年齢は{ age_2 }歳なのでお酒は飲めます．")
```
じゃあこれを3人分にしましょう．5人分，100人分にしてみましょう．

…大変ですね．せっかくプログラミングするので楽しましょう．
ループ文と配列を使っていきます．

ループ文は今回`while`を使います．書き方はこう．

```Python
while <条件文>:
    <処理>
```
処理を行う直前に条件文を確認し，条件を満たしたら処理を行います．処理を行ったら必ず条件文の確認に戻ります．英単語としても「～の間～する」という意味なのでそのままですね．これで条件を満たしている間ずっと同じ処理を行えます．

次に配列です．変数をまとめて扱いたい時に便利です．配列の何番目かを指定すれば配列から変数一個分取り出すことが出来ます．ちなみに0番目からカウントするので3番目に追加した値は2番目を指定すれば取り出せます．
何番目かを指定する数字は数字が入った変数を入れることが出来ます．これが配列の良い点です．

```Python
list = []
list.append(12)
list.append(33)
list.append(42)
list.append(21)
print(list)
print(list[2])

# 表示結果
# [12, 33, 42, 21]
# 42
```

これら2つを使えば先ほどの自己紹介を何人分でも書くことが出来ます．それがこちら．

```Python:choukankaku.py
count = 5
index = 0

name_list = []
age_list = []

while index < count:
    print(f"{index+1}人目の名前を入力してください．")
    name = input()
    name_list.append(name)
    print(f"{index+1}人目の年齢を入力してください．")
    age = int( input() )
    age_list.append(age)
    index = index + 1

index = 0
while index < count:
    print(f"{index+1}人目の名前は{ name_list[index] }です．")
    print(f"{ name_list[index] }の年齢は{ age_list[index] }歳です．")
    if age_list[index] < 20:
        print(f"{ name_list[index] }の年齢は{ age_list[index] }歳なのでお酒は飲めません．")
    else:
        print(f"{ name_list[index] }の年齢は{ age_list[index] }歳なのでお酒は飲めます．")
    index = index + 1
```
これで何人分でも自己紹介ができるプログラムの完成です！
このままでは何人分か決めて実行する必要がありますので`count`をinput()で取得してもいいですね．
好きな食べ物を聞いてみてもいいかもしれないですね．

# 終わりに
これでプログラミングの基礎の基礎は学べたと思います．ですが，大事なのは`print`や`input`，`if`，`while`などを暗記することではありません．これらの使い方は調べればすぐに出てきます．大事なのは自分の作りたいものに対してどういう関数が必要なのか，どういう構成で書けば短く済むか意識することが大事なのです．初めは冗長なコードになっても大丈夫です．それを意識していくだけであっという間につよつよプログラマになれるでしょう．