02材料の種類とデータ型

### 性質の違うモノは違う型になる
一軒家を建てるには、色々な材料が日知用です。家の基本的構造を作るためには太い材木が使われます。窓にはガラスをはめこみます。材木とガラスは不可欠な材料ですが、木とガラスは性質が違います。木はノコギリで切れますが、ガラスは切れません。ガラスをきれいに切断するには、他に適した道具が必要です。材料を種類ごとに分け、材料ごとに適した道具を使った方がモノ作りは効率的に進みます。
材料に色々と種類があるという点は、プログラミングでも同じです。材木やガラスといった材料の種類は、整数や文字列に相当します。
Pythonでは、1や100といった整数のデータと、'abc'といった文字列のデータの違いを特にデータの型が違うと言います。データの種類を表すために、整数型や文字列型という言葉を使います。
### 基本材料と応用材料
一軒家を建てる際の必要な材料について、もう少し詳しく考えてみましょう。先程、木材とガラスを例に挙げました。この他にも、屋根や床になる材料や、それらを接続するための釘やネジが必要です。すぐに思いつくこれらの材料は、家を建てる際の基本的な材料と考えることがでます。その他にも、最近の家は太陽光発電装置を備えていたり、玄関にかカメラ付きのインターフォンが内蔵されているかもしれません。これらは、あると便利な設備ですが、どちらかというとオプションといったイメージが強いでしょう。
Pythonでも、基本的な材料と応用的な材料（オプション）は区別されています。整数や文字列などのデータ型は、家の例でいうと材木やガラスに相当する、基本的な材料です。これらは非常によく使うデータ型なので、組み込みデータ型という名前が付いています。組み込みデータ型は、比較的単純でそれほど種類は多くありません。
一方で、Pythonには組み込みデータ型以外にもたくさんのデータ型が用意されています。これらは、太陽光発電装置やカメラ付きインターフォンに相当するもので、種類も膨大でそれぞれのデータ型の機能も豊富です。
組み込みデータ型の場合、実際にデータを用意するときの書き方で、Pythonに型の違いを区別してもらいます。同じように見える2という数字も、2と書くと整数型のデータになり、2.0では小数型のデータになります。また、引用符で囲んで、'2'とすると文字列型のデータになります。
一方、組み込みデータ型以外は、直接そのデータ型の名前を指定して、Pythonに区別してもらいます。
|型|説明|書き方|
|:-:|:-:|:-:|
|整数|数字をそのまま書く|-1, 0, 256|
|小数|小数点を付けて数字を書く|-3.14, 0.005, 1.0|
|文字列|引用符(’または")で囲む|'TOKYO', "東京", '109'|
|真偽|正しいか間違っているかの2つ|True,False|
|リスト|カンマ(,)区切りに並べたデータを角括弧[]で囲む|[1,2,3,4], ['Tokyo','Osaka']|
### 材料に名前を付ける
組み込みデータ型について詳しく学ぶ前に、材料に名前を付ける方法を知る必要がある。
自分で作る家具セットやプラモデルを購入すると、組み立て手順書が入っているのを見たことがあるかもしれません。
説明書には、組み立ての各段階でどの部品を使うのかが分かるように、1つ1つの部品に番号や名前が付けられています。プログラムでも、部品となる数値や文字列といったデータに名前を付けると便利です。この仕組みが変数と呼ばれるものです。
変数を用意するときに使われるのが、引用符を付けない文字列です。これと等号(=)を続けて使うと、データに名前を付けることができます。
```
x = 3
```
これを実行すると、3という整数型のデータにxという名前を付けることができます。このxを変数と呼びます。

では、変数を使って簡単な計算をしてみましょう。
```python
>>> x = 3
>>> x + 3
 6
```
xは、3という整数に付いた名前なので、x+3は3+3と同じ意味になります。変数を作ることは、材料に名前を書いた名札を貼るようなものだと考えると分かりやすいでしょう。
### 変数名の付け方
変数の名前は自由に付けることができますが、変数に使うことができる文字の種類は、アルファベット・数字・アンダースコア(_)だけです。変数名には英単語を使う方が見た目が良いですが、ローマ字で日本語表記しても大丈夫です。
変数名を１つの単語で表現できない場合は、複数の単語をアンダースコアで繋げます。例えば、「高級リンゴ」を表すなら、「premium_apple」にするのが良いでしょう。
また、変数名はアルファベットの大文字と小文字で区別されます。そのため、xyzとXYZは違う変数になります。さらに、数字を変数名の先頭に持ってくることはできません。。つまり、x5という変数名は大丈夫ですが、5xという変数は作れません。
他にも、Pythonのプログラムを書くときに使われる特別な単語は、変数にすることができません。例えば、is,not,if,forなどです。しかし、禁止されている単語を変数名の一部として使うことは可能です。例えば、A_is_not_aです。
### 整数型
小数点を含まない数字は全て整数型になります。正の数だけでなく、0や負の数も含まれます。
Pythonではint(イント)型と呼ばれています。
整数型では扱える数の大きさに制限はありません。

試しに使ってみましょう。
1個100円のリンゴと1個60円のオレンジがあるとします。
リンゴ3個、オレンジ2個買ったときの合計金額を変数を用いて求めてみましょう。
```python
>>> apple = 100
>>> orannge = 60
>>> apple * 3 + orange * 2
420
```
### 小数型
小数型は小数点を含む数字を表すデータ型です。
Pythonではfloat(フロート)型と呼ばれています。
```python
>>> 0.5
0.5
>>> -0.5
-0.5
>>> 1.0
1.0
```
### 文字列型
文字列型は、その名の通り文字を表現するためのデータ型です。
Pythonではstr型と呼ばれています。
```python
>>> 'Tokyo'
'Tokyo'
>>> '0.5'
'0.5'
```
### 真偽型
Pythonでは、条件が成立するときはTrue、成立しないときはFalseと教えてくれます。
Pythonではbool(ブール)型と呼ばれています。
```python
>>> 1 > 0.5
True
>>> 1 < 0.5
False
```
### リスト型
リストは、数値や文字列などを並べて格納できるデータ型です。
それぞれの要素をカンマ(,)で区切って、全体を角括弧[]で囲みます。
文字列のリストは引用符やカンマが多くなり入力するのが面倒なので、変数を使って名前を付けておきましょう。
```python
>>> abc = [ 'a', 'b', 'c' ]
>>> abc
[ 'a', 'b', 'c' ]
```
リストはロッカーをイメージすると分かりやすくなります。
ロッカーの1つ1つのボックスには通し番号が付いており、何番に物を入れたのか分かるようになっています。リストにも同じように番号が付いており、番号を指定すれば格納した物を取り出せるようになっています。注意する点としては、番号が0から始まることです。

リストからデータを取り出す際は、変数の名前の後に角括弧を使って番号を指定します。
```python
>>> abc[0]
'a'
>>> abc[1]
'b'
>>> abc[2]
'c'
```