Python基本文法まとめ


# はじめに

基本文法の勉強メモ。

* とほほのWWW入門 http://www.tohoho-web.com/python/
    * 演算子のあたりは多少抜粋させていただいております
* Udemy の英語版Python（無料） https://www.udemy.com/python-for-absolute-beginners-u/learn/v4/content


# Python 3

## 演算子

* `+ - * /` ... 四則演算
* `**` ... n乗（`a**b` はaのb乗） 
* `//` ... 切り捨て除算
* `%` ... 除算の余り


## ビット演算子

こんなのがあるらしい

```
~a            # ビット反転
a & b         # AND:論理積(aもbも1のビットが1)
a | b         # OR:論理和(aまたはbが1のビットが1)
a ^ b         # XOR:排他的論理和(aまたはbが1のビットが1)
a << b        # b ビット左シフト
a >> b        # b ビット右シフト
```

## 代入演算子

* `value += 5` ... `value = value + 5` と同じ
* `value -= 5` ... `value = value - 5` と同じ
* `value *= 5` ... `value = value * 5` と同じ
* `value /= 5` ... `value = value / 5` と同じ

* `value **= 2` ... `value = value ** 2` と同じ
* `value //= 2` ... `value = value // 2` と同じ
* `value %= 2` ... `value = value % 2` と同じ

その他

```
a &= b        # a = a & b に同じ
a |= b        # a = a | b に同じ
a ^= b        # a = a ^ b に同じ
a <<= b       # a = a << b に同じ
a >>= b       # a = a >> b に同じ
```

## コメントアウト

* `#` ... 1行コメント
* `"""` ～ `"""`  ... ~~複数行コメント~~ **複数行文字列** 。コメントアウトに使えるが専用ではない

## 文字列

ただの文字列でも配列みたいな扱いができる

```python
# その1
str = "Apples"
str[0]            # 'A'
    
# その2
"test"[2]        # 's'
    
# その3
ex = "Apples"
ex[:3]            # 'App'
ex[1:4]            # 'ppl'
ex[3:]            # 'les'
```

## 比較演算子

```
a == b           # a が b と等しい
a != b           # a が b と異なる
a < b            # a が b よりも小さい
a > b            # a が b よりも大きい
a <= b           # a が b 以下である
a >= b           # a が b 以上である
a <> b           # a が b と異なる
a is b           # a が b と等しい
a is not b       # a が b と異なる
a in b           # a が b に含まれる
a not in b       # a が b に含まれない
```

## 分岐

書き方は以下

```python
if 条件 :
    処理
elif 条件:
    処理
else:
    処理
```

## 関数

書き方は以下

```python
def 関数名(引数, ...):
    処理
```

呼び出しは `関数名(引数)` のようにする

```python
def ex(value):
    print(value)
    
ex("テスト")    # 「テスト」が表示される
```

## モジュール

呼び出しの文法がいろいろある

```python
# randomを読み込み
import random
    
# random.randintを読み込み
import random.randint
    
# random.randintを読み込み
from random import randint
    
# こういう書き方もできるらしい
from random import *
```

## 配列

```python
list = ["a", "b", "c"]
```

追加

```python
list = [1, 2, 3, 4]
list.append(5)        # 最後に要素が追加されて list = [1, 2, 3, 4, 5] になる
    
list = ["a", "c", "d"]
list.insert(1, "b")    # 2番目に値が追加されて list = ["a", "b", "c", "d"] になる
```

切り出し

```python
list = [5, 6, 7, 8, 9]
    
slice = list[:2]        # slice = [5, 6]
slice = list[2:4]      # slice = [7, 8]
slice = list[1:]        # slice = [6, 7, 8, 9]
```

削除

```python
# その1: 要素を指定
list = ["a", "b", "c", "d"]
list.remove("c")        # list = ["a", "b", "d"]
    
# その2: インデックスを指定
list = ["a", "b", "c", "d"]
list.pop(2)               # list = ["a", "b", "d"]
    
# その3: 末尾の要素
list = ["a", "b", "c", "d"]
list.pop()               # list = ["a", "b", "c"]
```


## タプル

```python
tuple1 = (1, "a", true)
```

## 繰り返し

for

```python
list = [1, 2, 3, 4, 5]
for elements in list:
    print(elements)
    
tuple = (1, 2, 3, 4, 5)
for elements in tuple:
    print(elements)
```

while（ `break` も使える）

```python
counter = 0
while counter < 5:
    print("something")
    counter += 1
```


## 辞書

連想配列と同じ。
`key: value` の形式。

```python
states = {42: "Washington", 50: "Hawaii", 1: "Delaware"}
print(states[42])    # Washington
print(states[50])    # Hawaii
print(states[1])     # Delaware
    
# 削除
del states[42]    # 42: "Washington" を削除
```


## try～except

```python
ex = input("Guess what my favorite integer is. :")

try:
    if int(ex) == 7:
        print("That is correct, 7 is my favorite integer.")
    else:
        print("That is not my favorite integer.")
except:
    print("Please run the program again and enter an integer.")
```

# おわりに

全部を試してはいないのでミスがあるかも（すみません）。
個人的には、 `def:` とか `if:` とかのコロンを忘れそう。