Pythonを勉強するために本を買ったけど,積読してる.
最初の方の数値や算術演算,文字列の扱いで止まっている.
3.14 + 1 = 4.14にならない!?
そんな方が,数値の扱いをマスターして,変数や関数の学習に進むための記事です.
本記事の内容
数値の扱い方と,算術演算について解説します.数値は具体的で扱いやすいプログラムなので,ひとまず,「電卓のように」Pythonを使っていきましょう! —多くの書籍や教材で,最初の方に算術演算が扱われていますが,おそらく初心者に対して「まずは,プログラムコードを書く」ことを体験させる意図があるためでしょう—
プログラミング習得の近道は,楽器やスポーツと同じように,実際に手を動かしながら学んでいくことです.ぜひ記事を読みながらコードを書いて,コード通りに結果が出力されるのを体感してください.余力のある方は,部分的にコードを変更して実験してみましょう.
環境構築できていない方は,こちらの記事を参照ください.
Pythonの文法基礎から実務的な分析・機械学習まで学べるオンライン学習サービス(1週間無料です)
数値|整数,浮動小数点数,複素数
表1に数値のデータ型をまとめています.リテラル,すなわち定数を入力し,実行結果がどのように表示されるかをみてみましょう.同時に,入力ルールの理解を深めましょう.ただし,暗記する必要はありません.直感的にできるようになるので,コードに慣れることに重きを置いてください.あえてまとめを最後に書いています.
表1.数値のデータ型
型(クラス※)の名前 | 型(クラス※) | 特徴 | 例(オブジェクト※) |
---|---|---|---|
整数 | int | 小数点以下のない数値 | -100, 0, 10 |
浮動小数点数 | float | 小数点以下のある数値や,指数表現 | 2.71828, 6.626e-34, 1e+5 |
複素数 | complex | jをつけると虚数となる | 3.14j, 8+6j |
※「クラス」,「オブジェクト」と表記しました.正確には若干異なる解釈となりますが,例に記載した値をオブジェクト,それらの型のことを「クラス」と呼びます.クラスには,そのオブジェクトにさまざまな処理を行う機能(メソッド)が付属しています.int, float, complexは,pythonであらかじめ準備された組み込みデータ型(組み込みクラス)です.本記事ではわかりやすくするために,以降「データ型」と呼ぶことにします.
整数(int; integer)
小数点以下のない数値です.Pythonでは,整数をint型と呼びます.
整数を実行すると,その整数が出力される.
10
0は有効な整数である.
0
先頭の0は出力されない.
0120
0b, 0o,0xを置いて,各々2,8,16進数から10進数に変換できる.
0b10
+符号をつけても,+のない数値が出力される.
+3
-符号をつけると,-符号の数値が出力される.
-3
符号の前の半角のスペースは無視されるが,全角スペースはエラーとなる.
- 3
- 3
カンマ(,)を入れるとタプルとして解釈される.
10,000
全角の数値はエラーとなる.
10
数値の間にスペースを入れるとエラーとなる.
3 3
整数(int)のルール
- 整数を実行すると,その整数が出力される.
- 0は有効な整数である.
- 先頭の0は出力されない.
- 0b, 0o,0xを置いて,各々2,8,16進数から10進数に変換できる.
- +符号をつけても,+のない数値が出力される.
- -符号をつけると,-符号の数値が出力される.
- 符号の前の半角のスペースは無視されるが,全角スペースはエラーとなる.
- カンマ(,)を入れるとタプルとして解釈される.
- 全角の数値はエラーとなる.
- 数値の間にスペースを入れるとエラーとなる.
浮動小数点数(float; floating point number)
小数点以下のある数値や,指数表現です.
浮動小数点数を実行すると,その浮動小数点数が出力される.
2.71828
先頭の0は出力されない.
00.8
小数点未満の数値を省略すると,小数点以下が0と出力される.
3.
10の冪乗は,eの後に桁数を置く.
5e3
5e15
5e16
どうやら私のPCでは15桁が限界だそうです...
eの後に符号を置くことができますが,置かない場合は正の数として出力されます.
5e-4
5e-5
浮動小数点数(float)のルール
- 浮動小数点数を実行すると,その浮動小数点数が出力される.
- 先頭の0は出力されない.
- 小数点未満の数値を省略すると,小数点以下が0と出力される.
- 10の冪乗は,eの後に桁数を置く.
複素数(complex)
いわゆる虚数(iを−1の平方根と定義する)を表現します.Pythonでは,虚数単位iは,jと表記します.
虚数を実行すると,その虚数が出力される.
8j
3.14j
実部と虚部の項を分けると,()付きで出力される.
8+6j
複素数(complex)のルール
- 虚数を実行すると,その虚数が出力される.
- 実部と虚部の項を分けると,()付きで出力される.
数値のデータ型確認方法
type()関数を使うと,()内に入力したオブジェクトの型が出力されます.関数のことを詳しく説明していないので,ここではこのようなコードで確認するんだなくらいの理解で結構です.
type(3)
type(3.14)
type(3.14j)
数値同士のデータ型の変換
整数から浮動小数点数,あるいはその逆というように,データ型を変換することができます.
数値同士のデータ型の変換する関数
- int()関数:浮動小数点数→整数
- float()関数:整数→浮動小数点数
- complex()関数:整数または浮動小数→複素数
int()関数:浮動小数点数→整数
int(3.14)
int(2.71828)
四捨五入されるわけではない.
int(6.02e+21)
int(6.02e+23)
float()関数:整数→浮動小数点数
float(3)
complex()関数:整数または浮動小数点数→複素数
complex(3.14)
ただし,複素数(complex)を整数(int)や浮動小数点数(float)に変換することはできません.
算術演算—でかい電卓として使ってみましょう!
数値の振る舞いを理解していただいたところで,次に数値を使った算術演算をやってみましょう!Pythonのようなインタプリタ型言語では,式を入力すると,電卓のように計算結果が出力されます.Pythonでの算術演算の演算子は表2の通り,小中学校で習ったものとほとんど同じ形式です.
まずは,整数どおしの計算を行い,Python上でのプログラムを体感してみましょう.また,算術演算子の優先順位や,浮動小数点が混在した際の計算についてルールの理解を深めましょう.
表2.算術演算子
演算 | 算術演算子 |
---|---|
加算(足し算) | + |
減算(引き算) | –(マイナス記号ではなくハイフン) |
乗算(掛け算) | * |
除算(割り算) | / |
整数除算(商) | // |
剰余(余り) | % |
べき乗 | **(a**bで、aのb乗と示す) |
加算(足し算)
7 + 29
type(7 + 29)
減算(引き算)
8 - 6
6 - 9
乗算(掛け算)
2 * 4
除算(割り算)
10 / 5
type(10 / 5)
/は常に小数点をふくむ値,すなわち浮動小数点数(float,詳細は後述)として出力されます.
商
剰余があろうとなかろうと,小数部を切り捨てた整数値(商)のみが出力されます.
10 // 5
type(10 // 5)
100 // 3
type(100 // 3)
剰余
余りが出力され,余りがない場合は0が出力されます.
100 % 5
100 % 3
累乗
10**3
算術演算の優先順位
学校で習った計算の優先順位とほぼ同じです.下記のような優先順位を,親切に書いている書籍もあります.ただ,実行したい計算の順番に合わせて()を括れば正しく計算されるので,あまり意識しなくても問題ありません.
- ()の中
- ** が強く結合します.** は右に結合します.
- * と / と // と % が強く結合します.これらは左に結合します.
- 最後に,2 項の + と – は最も弱く結合します.これらも左に結合します.
4-2*10
(4-2)*10
-2**2
(-2)**2
1+2*56/(2**2)
浮動小数点数の算術演算
浮動小数点の算術演算も,整数と同じように計算できます.また,整数と浮動小数点数が混在した計算はこちらのような結果になります.
- int型どうしの加算・減算・乗算 → int型
- int型どうしの除算 → float型
- float型を含む演算 → float型
コンピュータは2進数で計算してる!?
コンピュータは2進数で計算しています.そのため,2進数の浮動小数点型では正しく表現できない場合,10進数で正確な出力がされません.
1.1 + 2.2
3 * 5.9
3.14 + 1
10進数の計算を正確に表現するにはdecimalモジュールを使用します.
https://docs.python.org/ja/3/library/decimal.html
数値の扱い方と,算術演算について,基本を学べましたでしょうか?
次は「文字列」について学びましょう!
最後まで読んでくださり,ありがとうございました☺️