初心者がPython3の勉強。

#はじめに
<strong>ちまちまと更新していきます。</strong>
私がPythonを個人的に勉強して、理解したつもりになっている記事です。
なので、<strong>間違っている部分が多分に含まれていると思います。</strong>そのような場合は、優しく教えていただけると幸いです。
#なぜ、Pythonなのか
私の場合は友人におすすめされたのがきっかけです。
色々調べて後からわかったことが、Pythonは少ないコード量で簡単にコーディングできる。また、読みやすさを重視した設計になっているらしいです。（比較的、PGの癖が出にくい構造なのかな？！）
##オブジェクト
オブジェクトがすべてなのだ。（プール値・整数・浮動小数点数・文字列・関数・プログラムなどを指す）
<strong>※オブジェクトとは、データを格納する箱のようなもの。</strong>
##データ型
オブジェクトに格納するデータには様々な種類がある。

|値|型名<br>クラス名|ミュータブル か<br>イミュータブル か|補足|
|:---:|:---:|:---|:---|
|None|NoneType|イミュータブル|無、オブジェクトなし|
|ブール(真偽)|bool|イミュータブル|True か False|
|整数|int|イミュータブル|例:123|
|小数|float|イミュータブル|例:1.23|
|虚数|complex|イミュータブル|例:12+3j|
|文字列|str|イミュータブル|例: 'abc' "123"|
|リスト|list|ミュータブル|例: [1, 'a']|
|タプル|tuple|イミュータブル|例: (1, 'a', [2, 'b'])<br>変更不能なリスト<br>値はミュータブルでもよい|
|辞書|dict|ミュータブル|例: {'a': 123, 'b': 456}<br>キーと値の組み合わせ、キーは重複しない|
|セット|set|ミュータブル|例: {'a', 1}<br>値は重複しない、集合演算できる<br>|

ミュータブルは、オブジェクト内のデータの値を変更できるもの。
イミュータブルは、オブジェクト内のデータの値を変更できないもの。

##変数
変数とは、コンピュータのメモリのなかにある値を指す名前のこと。
つまり、

```python:python_console
>>> a = 7
>>> print(a)
7
```
この場合だと、データをいれるオブジェクト（メモリの確保領域？！）にaという名前をつけて、データに参照するときにa（オブジェクト名）を使う。
####変数名の命名規則
使える文字
- 小文字の英字（aからzまで）
- 大文字の英字(AからZまで）
- 数字（0から9まで）
- アンダースコア（_）
<strong>※数字は変数名の先頭として使えない。</strong>
<strong>Pythonでは名前の先頭がアンダースコアになっている名前を特別扱いする。(後ほど説明)</strong>
Pythonでの予約語（変数名では使えない）

|**False**|**class**|**finally**|**is**|**return**|
|:---:|:---:|:---:|:---:|:---:|
|**None**|**continue**|**for**|**lambda**|**try**|
|**True**|**def**|**from**|**nonlocal**|**while**|
|**and**|**del**|**global**|**not**|**with**|
|**as**|**elif**|**if**|**or**|**yield**|
|**assert**|**else**|**import**|**pass**|**break**|
|**except**|**in**|**raise**|    |    |


##数値
Pythonには、整数と浮動小数点数（小数）がある。

|演算子|意味|例|結果|
|:---|:---|:---|:---|
|+|加算|5 + 8|13|
|-|減算|90 - 10|80|
|*|乗算|4 * 7|28|
|/|浮動小数点の除算|7 / 2|3.5|
|//|切り捨て除算|7 // 2<br>7.0 // 2|3<br>3.0|
|%|剰余|7 % 3|1|
|**|冪乗|3 ** 4|81|

##基数
特に基数の指定をしない限りは10進（基数10）とみなされる。
Pythonでは次の基数が利用可能だ。

|基数|書き方|例|10進数|
|:---|:---|:---|:---|
|10進|10|10|10|
|2進|***0b***または***0B***|0b10|2|
|8進|***0o***または***0O***|0o10|8|
|16進|***0x***または***0X***|0x10|16|

##文字列
他の言語と異なり、***Pythonの文字列はイミュータブルである。***つまり、文字列はその場で書き換える事ができない。

Python文字列は、次に示すように、シングルクォートかダブルクォートで文字を囲んで作る

```python:python_console
>>> 'Hoge'
'Hoge'
>>> "Huga"
'Huga'
```
3個のシングルクォート（```）や3個のダブルクォート(""")を使うこともできる。

```python:python_console
>>> '''Hoge,'''
'Hoge'
>>> """Huga"""
'Huga'
```
トリプルクォートは複数行文字列を作成する際に使われる。

```python:python_console
>>> 'hoge
  File "<stdin>", line 1
    'hoge
        ^
SyntaxError: EOL while scanning string literal
>>> '''hoge,
... hoge
... hoge
... hoge
... hoge'''
'hoge,\nhoge\nhoge\nhoge\nhoge'
```
###\によるエスケープ
Pythonは、文字列に含まれる一部の文字の意味をエスケープして、他の方法では表現しにくい効果を実現する。
その代表的な例が***\n(改行)***だ。

```python:python_console
>>> hoge = 'a hoge,\n a huga,\n a hoge'
>>> print (hoge)
a hoge,
 a huga,
 a hoge
>>> hoge
'a hoge,\n a huga,\n a hoge'
```

###+による連結
次のように+演算子を使えば、リテラル文字列、文字列変数を連結することができる。

```python:python_console
>>> 'hogehoge' + 'hugahuga'
'hogehogehugahuga'
>>> a = 'hoge'
>>> b = 'huga'
>>> a + b
'hogehuga'
```

###*による繰り返し
*演算子を使うと、文字列を繰り返すことができる。

```python:python_console
>>> start = 'hoge ' * 4
>>> start
'hoge hoge hoge hoge '
```

###[]による文字の抽出
文字列の中のひとつの文字を取り出したい時には、[](角カッコ）でオフセット（添え字、インデックス）を指定する。

```python:python_console
>>> strings = 'abcdefghrjklmnopqrstuvwxyz'
>>> strings[0]
'a'
>>> strings[-1]
'z'
>>> strings[25]
'z'
```

###[ start:<string>end</string>:step ]によるスライス
スライスというものを使えば、文字列から部分文字列を取り出すことができる。

|書き方|意味|
|:---|:---|
|[ : ]|先頭から末尾までの文字列全体を抽出する。|
|[ start: ]|startオフセットから末尾までの文字列を抽出する。|
|[ :end]|先頭からend-1オフセットまでの文字列を取得する。|
|[ start:end ]|startオフセットからend-1オフセットまでの文字列を抽出する。|
|[ start:<string>end</string>:step ]|step文字ごとにstartオフセットからend-1オフセットまでの文字列を抽出する。|

```python:python_console
>>> strings = 'abcdefghrjklmnopqrstuvwxyz'
>>> strings[:] #全文字列を抽出
'abcdefghrjklmnopqrstuvwxyz'
>>> strings[20:] #先頭オフセット20から末尾までの文字列を抽出
'uvwxyz'
>>> strings[:10] #先頭オフセット0からオフセット9(10-1)までの文字列を抽出。
'abcdefghrj'
>>> strings[12:15] #先頭オフセット12からオフセット14(15-1)までの文字列を抽出。
'mno'
>>> strings[-3:] #先頭オフセット-3から末尾までの文字列を抽出。
'xyz'
>>> strings[-6:-3] #先頭オフセット-6からオフセット-3までの文字列を抽出。
'uvw'
>>> strings[::2] #全文字列から2ステップでの文字列を抽出。
'acegrkmoqsuwy'
>>> strings[::1] #全文字列から1ステップでの文字列を抽出。
'abcdefghrjklmnopqrstuvwxyz'
>>> strings[::3] #全文字列から3ステップでの文字列を抽出。
'adgjmpsvy'
```