学習記録：Python in Aidemy と雑記

# 9月5日　AidemyでPythonの学習へ
というわけで、Progateにて2周ほどPythonに取り組んだことで、大部分の設問には回答が出来るようになったこと、インスタンス・リストや辞書の繋がりがくみ取れるようになった事を受けて、満を持してAidemyに挑戦。

あれですね。音ゲーでEasyの曲を全部クリアしてからNormalの曲に挑戦していく筆者の性格がこんなところにも表れていますね。（適当）

で、Aidemyを触ってみた感覚ですが…

**・基礎的な部分で学べる内容はProgateと大きな差はない印象**
**・Progateでは扱わない関数なども一部扱っている**
**・一部の学習内容はProgateの方が視覚的に理解しやすい**
**・動画解説に出てくるバーチャルYouTuberの女の子が自分好み（重要）**

[【動画】バーチャルYouTuber 静谷　鳩ちゃんによるPython解説](https://www.youtube.com/watch?v=UqwcfdB12Sw)
![alt](https://s3-ap-northeast-1.amazonaws.com/panora-t-download/wp-content/uploads/2018/09/main1-e1536041478843.jpg)

という、脇道に逸れる話は置いといて、Aidemyの「Python入門」を走り終えた印象としては、
「どこまでいけばスタート地点に立てるのか？」という不安が残る感じです。
Progateに出てこない関数や、リストや辞書の紹介されてなかった機能の存在などを知ることで楽しさがある反面、「どこまで学べはスタートラインに要求される知識」かが見えないという状況にも陥りますね。

まぁ、**「わからない事があれば戻って調べる」「ネットで調べる」「書籍で調べる」**を意識して学んでいこう思います。

#個人的な重点メモ

**予備知識**

・変数名に使える文字は「半角アルファベット(大文字、小文字) 」「半角数字」「_(アンダースコア)」Python3では日本語名で変数を作る事も可能だが、あまり推奨はされていない。

**変数関係**

```python
# 変数の削除
del(変数名)

# 変数の型を調べる方法:type()を用いることで()内の変数に格納されている値の型を知ることが出来る。
print(type(変数名))　#出力する際はprintで囲む。
```
**リスト関係**

```python
# スライス：リストから一部の要素を切り取ること
# 例えば、インデックス1～3の要素をスライスしたい場合はリスト[ 1 : 4 ]という記述をします。
# この時、スライスの終端のインデックスは、「インデックス+1」で指定する。
chaos = ["cat", "apple", 2, "orange", 4, "grape", 3, "banana", 1, "elephant", "dog"]
print(chaos[1:9]) #出力：['apple', 2, 'orange', 4, 'grape', 3, 'banana', 1]

# リスト[ 1 :]と記述した場合には、「インデックス1から末尾まで」、
# リスト[: 10 ] の場合は、先頭からインデックス9までが指定できる。
# このように、スライスの始点が先頭の場合と、終点が末尾の場合には省略が可能。

# リストから要素を削除するには「del」を使用し、 del リスト[インデックス] と記述する。
c = ["dog", "blue", "yellow"]
del c[0]
print(c)　# 出力：['blue', 'yellow']

# ※リスト型の注意点※
# リストの値をそのまま他の変数に代入し、代入した変数に別の値を上書きした場合、もともとの変数の値にもその変更が適応される。
# 元のリストに変更が適用されないようにするには、値を代入する際に
# 「alphabet_copy = alphabet [:]」または「alphabet_copy = list(alphabet )」
# という記述をします。

alphabet = ["a", "b", "c"]
alphabet_copy = alphabet[:]
alphabet_copy[0] = "A"
print(alphabet_copy)  # 出力：["A", "b", "c"]
print(alphabet)  # 出力：["a", "b", "c"]
```

**辞書関係**

```python
# 辞書のバリューを別の値で上書き: 辞書名["上書きしたい要素のキー"] = 新しいバリュー　と記述
# 辞書に新しい要素を追加したい場合: 辞書名["追加したいキー"] = 追加したいバリュー と記述
town = {"Aichi": "aichi", "Kanagawa": "Yokohama"}
town ['Hokkaido'] = 'Sapporo'
print(town) # 出力：{'Aichi': 'aichi', 'Kanagawa': 'Yokohama', 'Hokkaido': 'Sapporo'}

town ['Aichi'] = 'Nagoya'
print(town) # 出力：{'Aichi': 'Nagoya', 'Kanagawa': 'Yokohama', 'Hokkaido': 'Sapporo'}

# del 辞書名["削除したいキー"]という記述で、指定したキーの要素を削除可能
del town['Aichi']
```

**関数関係**

```python
# enumerate()　：for文の中で、リストの値だけでなくインデックスも同時に取得する。
animals = ["tiger", "dog", "elephant"]
for index , value in enumerate(animals) :
    print('index:'+ str(index),value) # 出力:index:0 tiger index:1 dog index:2 elephant

# items() 辞書型においてキーとバリューの両方を変数に格納することができる関数。
town = {"Aichi": "Nagoya", "Kanagawa": "Yokohama", "Hokkaido": "Sapporo"}
for Prefectures , capital in town.items() :
    print(Prefectures+' '+capital)　
# 出力: Aichi Nagoya  Kanagawa Yokohama  Hokkaido Sapporo

# len()メソッド オブジェクトの長さや要素の数 を取得することが出来る
# sort()メソッド リスト型に使用するメソッドで、リストの要素を昇順に並び替えることができる
# reverse()メソッド リストの要素の順番を反対 にすることができる
# upper()メソッド　入力した文字列を全て大文字にして出力する
# count()メソッド　文字列の中に含まれる指定した要素の個数を出力する
# format()メソッド 文字列型に使えるメソッドで、文字列に変数を埋め込むことが出来る 
# →主に変数の値を挿入するときに使用します。値を埋め込みたい箇所を{}で指定します。
# →{}に挿入する値は、挿入する順番を指定することも可能。同じ値を繰り返し挿入することもできる。
print("私は{}生まれ、{}育ち".format("東京", "埼玉"))　#出力：「私は東京生まれ、埼玉育ち」
```

**演算子関係**

```python
# format()以外に、演算子の「 % 」を使うことで文字列をフォーマットすることが可能。「%」には下記のような種類がある。
 %d : 整数で表示
 %f : 小数で表示
 %.2f : 小数第2位まで表示
 %s : 文字列として表示
# ダブルクォートやシングルクォートで囲まれた文字列の中に「%」を記述することで、後ろのオブジェクトを指定のフォーマットに変更して埋め込むことができる。
def bmi(height, weight):
    return weight / height**2
print("bmiは%.4fです" % bmi(60,175) )　# 出力：bmiは0.0486です
```