Pythonチュートリアル(3章)の内容を箇条書きでまとめた

前の記事：[Pythonチュートリアル(2章)の内容を箇条書きでまとめた](https://qiita.com/Wakii/items/3a9efa210d2f602fa36e)

#はじめに
[Python3 エンジニア認定基礎試験](https://www.pythonic-exam.com/exam/basic)対策として、Pythonチュートリアル(書籍)の内容を暗記しやすい箇条書きにまとめた自分用メモです。

##参考資料
Pythonチュートリアル： https://docs.python.org/ja/3/tutorial/
3章： https://docs.python.org/ja/3/tutorial/introduction.html
書籍： https://www.oreilly.co.jp/books/9784873117539/

#"3章 気楽な入門編"
- Python3 エンジニア認定基礎試験の配点
    - 6 / 40問(15.0%) ☆☆☆★★(重要度：中)
- テーマ
    - コメント
    - 変数
    - 数値型とシーケンス(文字列, リスト)
    - 比較演算子

#3.1 Pythonを電卓として使う
- コメント
    - **コメント**はハッシュ記号 # からその物理行まで。
        - 行の途中からでもOK。
    - **文字列リテラル** (引用符で囲まれた文字列) 内部の # はコメントとして解釈しない。
- 変数
    - **変数**は代入で定義する。
        - 代入には等号 = を使う。
    - 変数宣言や変数のデータ型指定はない。
    - 未定義の (代入されない) 変数を使うとエラーになる。
    - 対話モードでは、最後に入力した式が**変数 _** (アンダースコア) に代入される。

##3.1.1 数値
- 数値の演算で数値型が混在している場合、整数はfloatに寄せられる。

|演算子|用例|
|:--|:--|
|+<br>[加算]|>>> 2 + 2<br>4|
|-<br>[減算]|>>> 5 - 3<br>2|
|*<br>[乗算]|>>> 4 * 8<br>32|
|/<br>[除算]|>>> 17 / 3<br>5.666666666666667|
|%<br>[剰余]|>>> 17 % 3<br>2|
|//<br>[切り下げ除算]|>>> 17 // 3<br>5|
|**<br>[べき乗]|>>> 5 ** 2<br>25|

|数値型|用例|
|:--|:--|
|整数<br>[int]|4, 5, 20|
|浮動小数点数<br>[float]|3.1415, 1.4142|
|10進数<br>[Decimal]|10, 1000, 10000|
|2進数<br>8進数<br>16進数|0b10 #2<br>0o10 #8<br>0x10 #16|
|有理数<br>[Fraction]|1, 2, 3.45678|
|複素数|3 + 5j|

##3.1.2 文字列
- Pythonの**文字列**は**変更不能体(immutable)**であり、改変できない。
- **引用符**には " も ' も使えて同じ結果になる。
    - 引用符に使っていない方は文字列リテラル内に入れられる。
    - 引用符に使っている方は**バックスラッシュ** \ でエスケープすることで文字列リテラル内で使える。
- **print()**関数で出力可能。
    - 文字列の引用符は出力されない。
    - 出力末尾にはデフォルトで改行 \n がつくが、キーワード引数 end で出力末尾を指定できる。
- **len()**関数は文字列長を返す。
- 引用符の前に r を付けると**raw文字列**になる。
    - raw文字列は特殊文字 (\n, \rなど) を解釈しない。
- 文字列リテラルを複数行書くには**トリプルクォート**(""" or ''')。
    - 改行を無効にしたい場合、行末にバックスラッシュ \ を記述。
- 文字列は + で連結可能。
    - 変数や式との連結も可能。
- 文字列は * で繰り返しも可能。
- 列挙された文字列リテラルは自動連結される。
    - 変数や式と文字列リテラルの自動連結は不可。(+を使おう)
- 文字列は**インデックス指定** (連番による指定) により一部を抽出できる。
    - インデックスは0から始まる。
    - インデックス-1は、最後から1番目のキャラクタを取り出す。
    - -0は0と同じ。
    - 範囲外のインデックスを指定するとエラーになる。
- **スライシング**による範囲指定も可能。終点は除外される。
    - word[0:2] # wordのindex=0~1を取得
    - word[:2] # wordのindex=~1を取得
    - word[2:] # wordのindex=2~を取得
    - 範囲外のインデックスが含まれてもエラーにならず範囲内の文字列を取る。

##3.1.3 リスト
- **リスト**は**変更可能体(mutable)**であり、アイテムの改変が可能。
- []の中にカンマ区切りでアイテム (値) を入れる。
    - 異なるデータ型のアイテムも入れられる。(普通は同じにする)
    - リストの入れ子 (リストのアイテムをリストにすること) も可能。
- 文字列同様に、インデックス指定とスライシングが使える。
    - インデックス指定はアイテムを返す。
    - スライシングはリストをコピーして新しいリストを返す。
        - for文(->4章)でリスト内容を更新する際に使われたりする。
    - インデックスやスライシングで指定したアイテムの置換やクリアが可能。
        - クリアした場合、インデックスは詰められる。
- リスト同士は連結可能。
- リストの**append()**メソッドにより、末尾にアイテムを追加できる。

#3.2 プログラミング、はじめの一歩
- 変数は**多重代入**可能。
- 代入の前に右辺式はすべて (左から右へ) 評価される。
- Pythonでは文のグルーピングに**インデント**を使う。
    - 対話環境で複合文を入力するときは、最後に空白行を入れる。
    - ブロック内の行同士はインデントを揃えること。
- print()関数は複数のアイテムをカンマ , 区切りで指定可能。
    - 表示するアイテムとアイテムの間にはスペースが挿入される。
- **条件分岐**は、True(真)、False(偽)の**bool型**を返す条件文で判定する。
    - 数値データとしては、0がFalse(偽)、0以外がTrue(真)になる。
    - **シーケンス** (リストや文字列) を判定に使う場合、長さ0以外が真、長さ0が偽となる。
    - 条件文に使用する**比較演算子**には、下記のようなものがある。<br>これ以外にもいくつかある。(->[5.7 条件についての補足](https://qiita.com/Wakii/items/34585aa75bf8c6a5b219#57-%E6%9D%A1%E4%BB%B6%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E8%A3%9C%E8%B6%B3))

|比較演算子|説明|
|:--|:--|
|a == b|a と b が等しければTrue(真)|
|a != b|a と b が等しくなければTrue(真)|
|a < b|a が b より小さければTrue(真)|
|a > b|a が b より大きければTrue(真)|
|a <= b|a が b 以上ならばTrue(真)|
|a >= b|a が b 以下ならばTrue(真)|

次の記事：[Pythonチュートリアル(4章)の内容を箇条書きでまとめた](https://qiita.com/Wakii/items/39fb6eee9250c4196a61)