初心者向け Pythonプログラミング基礎 #1

#目的

プログラム言語の一つであるPythonの使い方の基礎を学ぶ．

また，特に指定がない場合下記のようにプログラムの実行結果を示す．

```.py
>>>この部分は実行結果を表示
```
#Python3
インタプリタ型のプログラミング言語のひとつ．
※Python3とPython2は互換性がない．
インデントが構文規則として使用されており，書きやすく読みやすいという特徴がある．
使われる分野が広く機械学習でも使用される．

プログラミング言語 : コンピュータ言語の内コンピュータプログラムを記述するための言語．
インタプリタ型 : プログラムを実行する手段の一つ．ソースコードを1行ずつ読みこみ実行命令として，動作する．

#Pythonのオブジェクト
Pythonのオブジェクトとは，Pythonで操作するデータとのことである．
複雑な構造にさせることもでき，行列などを簡単に表現できる．

詳しくは，難しいのでおいおい説明する．

#コメントの記述
各行の#以降はコメントとして認識され，プログラムとしては実行されない．
また，"または'を3つずつで前後を囲うことで複数行をコメントアウトできる．
実行内容のコメントを記載する時に使用する．

```.py
#コメント行

"""
コメント行
"""

```

#プログラム内で日本語を使う場合
Pythonのプログラムで日本語を使う場合，最初に文字コードを指定する必要がある．
1行目は，Pythonのパスを記載する．こうすることで，明示的に実行コマンドを指定しなくてもPython3で実行してくれる．
2行目は，文字コードを記載する．自分の環境の文字コードを指定する．

```.py
#!/usr/bin/python3
#! -*- coding:utf-8 -*-

print("こんにちは")
```

#Pythonのデータ型
Pythonの基本のデータ型を説明する．

###変数
変数は値につける名前である．
プログラムが終了するまで，その変数は保持され，変数を指定することで，その値を代入できる．

```.py
a = 2
a + 1 #3を返す
a / 2 #1を返す
```

###数値
Pythonにおいて，数をそのまま記載すると数値型として扱われる．
()を使うことで，一般的な数式同様に計算の優先度を変更できる．


```.py
a = 2 + 1 # 足し算
a = 3 - 1 # 引き算
a = 2 * 3 # 掛け算
a = 5 / 2 # 割り算
a = 7 % 2 # あまり
a = (2 + 3)*5
```

###文字列
"または'で前後を囲うことで文字列型として扱われる．
文字列は+で結合させることが可能．
数値も"または'で囲うことで，文字列として認識されるため注意が必要．

```.py
a = "こんにちは"
b = "おはよう"
c = "5"

a + b
>>>'こんにちはおはよう'
```

###Boolean
BooleanはTrueまたはFalseの2つの値を指す．
while文やif文を使う際に条件として使用することが多い．
また，条件文として，True，Falseを返却するようにすることができる．

```.py
a = True
b = False
c = 1

c > 0.5 # Trueを返す
c == 1  # Trueを返す
c > 2   # Falseを返す
```

###List
Listは[]を使って定義することができる．

```.py
l = [2, 4, 6, 8, 10]
l[0] #ゼロベースのインデックスを使って特定の数値を呼び出せる
>>>2
l[1:5:2] # [start:stop:step]を指定することでstartからstopまでstep間隔で呼び出せる
>>>[4, 8]
m = [1, 3, 5, 7, 9]
l + m
>>>[2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
n = l + m
n.sort()
n
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
n.append(100)
n
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
n.pop() # 末尾の要素を取り出す
>>>100
n
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1,1,1,2,2,3].count(1) # countで指定した値がいくつあるかを返す
>>>3
```

####リストの内包表記
Pythonでは，リスト内表記が使用できる．
for文やifを使用して新たなリストに変換できる．

```.py
l = [2,4,6,8,10]
[x for x in l if x > 6] # 条件に合う値のみ抽出
>>>[8, 10]
[x*5 for x in l]
>>>[10, 20, 30, 40, 50] # 全部の値に5を掛けてリストを作成
l = ['hello','world']
[x.upper() for x in l] # 文字列をすべて大文字に変換したリストを作成
>>>['HELLO', 'WORLD']
```

###Tuple
Tupleは複数のオブジェクトを一つにまとめたものである．
()を使用して定義する.

```.py
a = ('baba', 35)
b = a # そのまま別の変数に代入できる
>>>('baba', 35)
c, d = a # それぞれの値を分割して変数に代入することもできる
c
>>>'baba'
d
>>>35
```

###Set
Setは，順序付けされていない一意の要素で構成される．
すなわち集合を構成するためのものである．

```.py
l = ['a', 'a', 'b', 'c', 'c', 'a']
set(l) # 重複要素を除去
>>>{'a', 'b', 'c'}
set('Hello') # 文字列を集合化
>>>{'H', 'e', 'l', 'o'}
a = set('Hello')
b = set('World')
a - b #aに含まれてbに含まれない要素
>>>{'H', 'e'}
a | b # aまたはbに含まれる要素
>>>{'H', 'W', 'd', 'e', 'l', 'o', 'r'}
a & b # aかつbに含まれる要素
>>>{'l', 'o'}
a ^ b # aまたbに含まれる要素で，かつaとbのどちらかにのみ含まれる要素
>>>{'H', 'W', 'd', 'e', 'r'}
a = { 1, 2, 4 }
b = { 2, 3, 5 }
c = { 2, 3, 4, 5 }
b <= c # bがcの部分集合であるか
>>>True
a <= c # aがcの部分集合であるか
>>>False
```

###Dictionary
Dictionaryは，キーと値のペアを保持するオブジェクトである．
{}を使って，キーと値のペアを定義する．

```.py
d = {'name':'baba', 'age':35}
d['name']
>>>'baba'
d['car'] = 'Juke' # 後から要素を追加することも可能
d
>>>{'name': 'baba', 'age': 35, 'car': 'Juke'}
d.items() # キーと値を配列として変換できる
>>>dict_items([('name', 'baba'), ('age', 35), ('car', 'Juke')])
'name' in d # キーが存在するか確認
>>>True
'address' in d 
>>>False
```

#Pythonの制御文
制御文はプログラミングの基本となるものである．
いくつかの制御文を説明する．
制御文を使用する際にはインデントを使って記述する．

###if文
if文では条件に合致するかそれ以外かで処理を変更できる．
複数の条件がある場合はelifを使用して，分岐を増やすことができる．

```.py
m = 3
if m > 5:
    print('m greater than 5.')
elif m > 2:
    print('m greater than 2.')
else:
    print('m less than 2')
```

条件の関係演算子は以下のようなものがある．

|演算子|意味|
|---|---|
|< |より小さい|
|<=|同じか小さい|
|> |より大きい|
|>=|同じか大きい|
|==|等しい|
|!=|異なる|

条件の論理演算子は以下のようなものがある．

|演算子|意味|
|---|---|
|and |かつ|
|or |または|
|not |ではない|


###for文
for文を使い同じ処理を何度も行うことが可能．

```.py
a = ['a', 'b', 'c', 'd', 'e']
for l in a:
    print(l, end=', ')
>>>a, b, c, d, e,
```

####breakとcontinue

breakを宣言するとfor文を終了する．

```.py
for l in a:
    if l == 'c':
        break
    print(l, end=(', '))
>>>a, b, 
```

continueを宣言するとfor文のその回の処理が終了し，次のfor文の処理に移る．

```.py
for l in a:
    if l == 'c':
        continue
    print(l, end=(', '))
>>>a, b, d, e,
```

###while文
for文と同じように同じ処理を何度も行うことが可能．
for文と違い，ループする条件をwhile文に対して指定する．
breakとcontinueはfor文と同じように使用する．


```.py
a = 0
while a < 10: # aが10未満の間処理を続ける
    a += 1
    print(a, end=(', '))
>>>1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
```