こんにちは(@t_kun_kamakiri)(‘◇’)ゞ
この記事ではPythonのデータの型の中の「数値型」について解説します。
まずデータの型についてですが、以下の種類があります。
これらすべて完璧に使い方を覚える必要はないと思いますので、この記事では「これくらいは覚えておこう」というものをまとめておきます。
その中でも本記事では「数値型」の種類について解説します。
Pythonでどうやって数値型を扱うのか・・・・
その基本的なことをまとめておきました。
- Pythonの数値型の型(3つの種類)の書き方に慣れる
- 数値型の演算方法
- データの型の変換
☟書籍も紹介しておきます。
こちらの本がPython初心者が挫折することなく勉強できる本です。
(本記事のようのPython使用環境と異なりますが、とてもわかりやすいので全く問題ありません)
データの型がなぜ必要か?
データに型がない言語で変数を宣言するとどうなるでしょうか。
宣言された変数はどんな型のデータが入ってもいいように一番大きくメモリを用意しますよね。
つまり、メモリの無駄な消費を行わないためにデータの型が用意されています。
数値型の3つ種類
では、ここからPythonを使って色々なデータの型を書いていきましょう(^^)/
数値型の中でも型が分かれています。
数値型は以下の3つを覚えておこう!
- 整数型
- 浮動小数点型
- 複素数型
以下がPythonのコードです。
※文字列も書いておきました(文字列については、後で説明します。)
1 2 3 4 5 6 7 8 9 10 11 12 |
#整数型 a = 5 b = 5 #浮動小数点型 c = 5.5 #複素数型 d = 5.0+5j #文字列 e = 'イヌ' |
Pythonは型の宣言が必要ないので、書き方だけで区別されます。
では、「型」が異なる者どうしの演算はどうなるでしょうか。
「型」どうしの演算
演算と言っても「足し算、引き算、掛け算、割り算・・・」などありますが、今回は足し算だけ確認します。
ここでは、以下の4つについて見ていきます。
- 「整数型」どうしの足し算
- 「整数型」と「浮動小数点型」の足し算
- 「整数型」と「複素数型」の足し算
- 「整数」と「文字列型」の足し算:(絶対にエラーになるが・・・)
各データを以下のように用意します。
1 2 3 4 5 6 7 8 9 10 11 12 |
#整数型 a = 5 b = 5 #浮動小数点型 c = 5.5 #複素数型 d = 5.0+5j #文字列 e = 'イヌ' |
そして以下で計算結果を見ていきます。
「整数型」どうしの足し算
1 |
a+b |
【結果】
1 |
10 |
とりあえず、「整数型」どうしの足し算は「整数型」であると思いますが、念のために「型」を確認していきます。
確認方法は「type()」の中に変数を入れればよいです。
1 |
type(a+b) |
【結果】
1 |
int |
👆こんな感じで「int」と返ってきました。
これは、「int型」(integer)であることを意味しているで、やはり「整数型」どうしの足し算は「整数型」であることがわかります。
では、どんどん確認していきます。
「整数型」と「浮動小数点型」の足し算
以降は、「足し算」と「型の確認」を一気にしていきます。
1 2 |
print(a+c) print(type(a+c)) |
【結果】
1 2 |
10.5 <class 'float'> |
「float」は「倍精度浮動小数点型」と呼ばれる「浮動小数点型」です。
浮動小数点の中にも、「単精度浮動小数点型」と「倍精度浮動小数点型」がありますがPythonは「倍精度浮動小数点型」しか対応していませんので注意が必要です。
「単精度」と「倍精度」の違いは、ざっくり言うと数字の取りえる桁数の違いです。
☟もう少し「float型」について勉強したい方はこちらをどうぞ!
float型【変数の型】とは
ここでは、「整数型」と「浮動小数点型」の足し算は「浮動小数点型」になることがわかりました。
「整数型」と「複素数型」の足し算
あまり使う機会がないかもしれませんが、複素数型の演算もやっておきます。
1 2 |
print(a+d) print(type(a+d)) |
【結果】
1 2 |
(10+5j) <class 'complex'> |
こんな感じで、「整数型」と「複素数型」の足し算は「複素数型」になります。
「整数」と「文字列型」の足し算:(絶対にエラーになるが・・・)
1 |
a+e |
【結果】
1 2 3 4 5 |
TypeError Traceback (most recent call last) <ipython-input-29-e1a2f4285865> in <module>() ----> 1 a+e TypeError: unsupported operand type(s) for +: 'int' and 'str' |
なにやらいっぱいエラーが出ています。
最後の文面を見るとタイプで「int」と「str」の「+(足し算)」はサポートしていない
と書いています。
これは「整数型」と「文字列」の足し算はできませんというエラーメッセージですね。
このように数値型と文字型は足すことができません。
足すことができないわけではないですが、基本的にはデータには型がありますっていうのは覚えておいて、異なる型どうしの演算は型を変えて行う必要があります。。
つまり、型を変えることで「数値型」と「文字列」の足し算が可能になります。
データの型を変換してみる
Pythonには型の宣言の必要が無いと言いましたが、異なる型に変えたい、異なる型どうしの演算をしたいという場合もあるので、ここではデータの型を変える記述について見ていきます。
ここでは、以下の4つについて見ていきます。
- 整数を浮動小数点に変換する
- 浮動小数点を整数型に変換する
- 整数を文字列に変換する
- 整数型を複素数型への変換
整数を浮動小数点に変換する
1 2 3 4 5 6 |
#整数を浮動小数点に変換する a =5 b = float(a) print(a,type(a)) print(b,type(b)) |
【結果】
1 2 |
5 <class 'int'> 5.0 <class 'float'> |
浮動小数点型を整数型に変換する
1 2 3 4 5 6 |
#浮動小数点を整数型に変換する a =5.0 b = int(a) print(a,type(a)) print(b,type(b)) |
【結果】
1 2 |
5.0 <class 'float'> 5 <class 'int'> |
整数型を文字列に変換する
1 2 3 4 5 6 7 8 |
#整数を文字列に変換する a =50 b = str(a) c = '文字列' print(a,type(a)) print(b,type(b)) print(b+c,type(b+c)) |
【結果】
1 2 3 |
50 <class 'int'> 50 <class 'str'> 50文字列 <class 'str'> |
だから「b+c」のような文字列どうしの足し算なのでエラーなく計算してくれたというわけです。
整数型を複素数型への変換
1 2 3 4 5 6 7 8 |
#あとはあまり機会がないかもしれませんが、複素数への変換 a = 5 b= complex(a) print(a,type(a)) print(b,type(b)) |
【結果】
1 2 |
5 <class 'int'> (5+0j) <class 'complex'> |
以上で、データの型の変換についてはおしまいです。
割ったときの商と余り
次は、例えば「50で割ったときの商」や「4で割ったときの余り」を計算する方法についてのお話です。
そんな場面に出くわすことあるのか?
って思いますが、あるんですよ。
その例をこちらで示しているので、良ければどうぞ(‘ω’)
では、「商」と「余り」を計算してみましょう。
今回は「50÷4=12余り2」というのを計算してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#商と余りを計算する a =50 #↓ここを変更する b = 4 #商を計算 c = a//b #余りを計算 d = a%b print(c) print(type(c)) print(d) print(type(d)) |
【結果】
1 2 3 4 |
12 <class 'int'> 2 <class 'int'> |
ちゃんと「商」と「余り」の計算ができましたね。
整数同士の割り算の演算の注意
1 2 3 4 5 6 7 8 9 10 11 12 |
#整数通しの演算 a =10 b = 2 c = 4 #割り算 d = a/b e = a/c print(a,b,c,type(a),type(b),type(c)) print('割り切れる場合→',d,type(d)) print('割り切れない場合→',e,type(e)) |
【結果】
1 2 3 |
10 2 4 <class 'int'> <class 'int'> <class 'int'> 割り切れる場合→ 5.0 <class 'float'> 割り切れない場合→ 2.5 <class 'float'> |
割り切れる場合も割り切れない場合もどちらも「float」になっていることが確認できます。
復習
初心者にとってプログラミング言語の型というのを理解するのはとても難しいでしょう。
しかし、安心してください。 とても簡単です。
以下の質問に悩むか悩まないかを考えてください。
3番だけよくわかないですよね。
こんな感じです。
5や5.5は数値ですが、イヌは文字です。
つまり、プログラミング言語では数値と文字は区別しないといけません。
※ほとんどのプログラミング言語では変数を定義するときに、変数の型を定義する必要がありますがPythonではその必要はありません。
[…] 【Python初心者】数値型の3つの種類を覚えておこう […]