【Python初心者】数値(整数,浮動小数点数,複素数)【リスキリング】

【Python初心者】データ型(整数,浮動小数点数,複素数)【リスキリング】のキャプション Programming
スポンサーリンク

 

Pythonを勉強するために本を買ったけど,積読してる.
最初の方の数値や算術演算,文字列の扱いで止まっている.
3.14 + 1 = 4.14にならない!?

 そんな方が,数値の扱いをマスターして,変数や関数の学習に進むための記事です.
 

本記事の内容

 数値の扱い方と,算術演算について解説します.数値は具体的で扱いやすいプログラムなので,ひとまず,「電卓のように」Pythonを使っていきましょう! —多くの書籍や教材で,最初の方に算術演算が扱われていますが,おそらく初心者に対して「まずは,プログラムコードを書く」ことを体験させる意図があるためでしょう—
 プログラミング習得の近道は,楽器やスポーツと同じように,実際に手を動かしながら学んでいくことです.ぜひ記事を読みながらコードを書いて,コード通りに結果が出力されるのを体感してください.余力のある方は,部分的にコードを変更して実験してみましょう.
 

 環境構築できていない方は,こちらの記事を参照ください.

【Python環境構築・初心者向け】Google Colaboratoryの使い方
Google Colaboratoryを使って、ものの数分でできるPython環境構築と、基本的な使い方を紹介しています。Pythonの環境構築が煩雑そうで、なかなか一歩踏み出せないという方必見です。本記事に沿って、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
10

 

0は有効な整数である.

0
0

 

先頭の0は出力されない.

0120
120

 

0b, 0o,0xを置いて,各々2,8,16進数から10進数に変換できる.

0b10
2

 

+符号をつけても,+のない数値が出力される.

+3
3

 

-符号をつけると,-符号の数値が出力される.

-3
-3

 

符号の前の半角のスペースは無視されるが,全角スペースはエラーとなる.

- 3
-3

 

- 3
SyntaxError: invalid non-printable character U+3000

 

カンマ(,)を入れるとタプルとして解釈される.

10,000
(10, 0)

 

全角の数値はエラーとなる.

10
SyntaxError: invalid character ‘1’ (U+FF11)

 

数値の間にスペースを入れるとエラーとなる.

3 3
SyntaxError: invalid syntax

 

整数(int)のルール

  • 整数を実行すると,その整数が出力される.
  • 0は有効な整数である.
  • 先頭の0は出力されない.
  • 0b, 0o,0xを置いて,各々2,8,16進数から10進数に変換できる.
  • +符号をつけても,+のない数値が出力される.
  • -符号をつけると,-符号の数値が出力される.
  • 符号の前の半角のスペースは無視されるが,全角スペースはエラーとなる.
  • カンマ(,)を入れるとタプルとして解釈される.
  • 全角の数値はエラーとなる.
  • 数値の間にスペースを入れるとエラーとなる.

 
 

浮動小数点数(float; floating point number)

 小数点以下のある数値や,指数表現です.
 

浮動小数点数を実行すると,その浮動小数点数が出力される.

2.71828
2.71828

 

先頭の0は出力されない.

00.8
0.8

 

小数点未満の数値を省略すると,小数点以下が0と出力される.

3.
3.0

 

10の冪乗は,eの後に桁数を置く.

5e3
500.0
5e15
5000000000000000.0
5e16
5e+16

どうやら私のPCでは15桁が限界だそうです...
eの後に符号を置くことができますが,置かない場合は正の数として出力されます.
 

5e-4
0.0005
5e-5
5e-05

 

浮動小数点数(float)のルール

  • 浮動小数点数を実行すると,その浮動小数点数が出力される.
  • 先頭の0は出力されない.
  • 小数点未満の数値を省略すると,小数点以下が0と出力される.
  • 10の冪乗は,eの後に桁数を置く.

 
 

複素数(complex)

 いわゆる虚数(iを−1の平方根と定義する)を表現します.Pythonでは,虚数単位iは,jと表記します.
 

虚数を実行すると,その虚数が出力される.

8j
8j

 

3.14j
3.14j

 

実部と虚部の項を分けると,()付きで出力される.

8+6j
(8+6j)

 

複素数(complex)のルール

  • 虚数を実行すると,その虚数が出力される.
  • 実部と虚部の項を分けると,()付きで出力される.

 
 

数値のデータ型確認方法

 type()関数を使うと,()内に入力したオブジェクトの型が出力されます.関数のことを詳しく説明していないので,ここではこのようなコードで確認するんだなくらいの理解で結構です.
 

type(3)

int
type(3.14)
float
type(3.14j)
complex

 
 

数値同士のデータ型の変換

 整数から浮動小数点数,あるいはその逆というように,データ型を変換することができます.
 

数値同士のデータ型の変換する関数

  • int()関数:浮動小数点数→整数
  • float()関数:整数→浮動小数点数
  • complex()関数:整数または浮動小数→複素数

 

int()関数:浮動小数点数→整数

int(3.14)
3

 

int(2.71828)
2

四捨五入されるわけではない.
 

int(6.02e+21)
6020000000000000000000

 

int(6.02e+23)
601999999999999995805696

 

float()関数:整数→浮動小数点数

float(3)
3.0

 

complex()関数:整数または浮動小数点数→複素数

complex(3.14)
(3.14+0j)

 

ただし,複素数(complex)を整数(int)や浮動小数点数(float)に変換することはできません.
 
 

スポンサーリンク

算術演算—でかい電卓として使ってみましょう!


 数値の振る舞いを理解していただいたところで,次に数値を使った算術演算をやってみましょう!Pythonのようなインタプリタ型言語では,式を入力すると,電卓のように計算結果が出力されます.Pythonでの算術演算の演算子は表2の通り,小中学校で習ったものとほとんど同じ形式です.
 まずは,整数どおしの計算を行い,Python上でのプログラムを体感してみましょう.また,算術演算子の優先順位や,浮動小数点が混在した際の計算についてルールの理解を深めましょう.

表2.算術演算子

演算 算術演算子
加算(足し算) +
減算(引き算) (マイナス記号ではなくハイフン)
乗算(掛け算) *
除算(割り算) /
整数除算(商) //
剰余(余り) %
べき乗 **a**bで、ab乗と示す)

 

加算(足し算)

7 + 29
36

 

type(7 + 29)
int

 

減算(引き算)

8 - 6
2

 

6 - 9
-3

 

乗算(掛け算)

2 * 4
8

 

除算(割り算)

10 / 5
2.0

 

type(10 / 5)
float

 
/は常に小数点をふくむ値,すなわち浮動小数点数(float,詳細は後述)として出力されます.
 

剰余があろうとなかろうと,小数部を切り捨てた整数値(商)のみが出力されます.

10 // 5
2

 

type(10 // 5)
int

 

100 // 3
33
type(100 // 3)
int

 

剰余

余りが出力され,余りがない場合は0が出力されます.

100 % 5
0

 

100 % 3
1

 

累乗

10**3
1000

 
 

算術演算の優先順位

 学校で習った計算の優先順位とほぼ同じです.下記のような優先順位を,親切に書いている書籍もあります.ただ,実行したい計算の順番に合わせて()を括れば正しく計算されるので,あまり意識しなくても問題ありません.

  1. ()の中
  2. ** が強く結合します.** は右に結合します.
  3. * と / と // と % が強く結合します.これらは左に結合します.
  4. 最後に,2 項の + と – は最も弱く結合します.これらも左に結合します.

 

4-2*10
-16

 

(4-2)*10
20

 

-2**2
−4

 

(-2)**2
4

 

1+2*56/(2**2)
29.0

 
 

浮動小数点数の算術演算

 浮動小数点の算術演算も,整数と同じように計算できます.また,整数と浮動小数点数が混在した計算はこちらのような結果になります.

  • int型どうしの加算・減算・乗算 → int型
  • int型どうしの除算 → float型
  • float型を含む演算 → float型

 
 

コンピュータは2進数で計算してる!?

 コンピュータは2進数で計算しています.そのため,2進数の浮動小数点型では正しく表現できない場合,10進数で正確な出力がされません.

1.1 + 2.2
3.3000000000000003

 

3 * 5.9
17.700000000000003

 

3.14 + 1
4.140000000000001

 

10進数の計算を正確に表現するにはdecimalモジュールを使用します.
https://docs.python.org/ja/3/library/decimal.html
 
 

数値の扱い方と,算術演算について,基本を学べましたでしょうか?
次は「文字列」について学びましょう!

【Python初心者】文字列とエスケープシーケンス【リスキリング】
Pythonの文字列の扱いについて解説します。ぜひ記事を読みながら、コードを書き、打ちこんだコード通りに、結果が出力されるのを体感してください。Pythonを学びたい方、学び直したい方は、ぜひご一読ください。

最後まで読んでくださり,ありがとうございました☺️
 
 

タイトルとURLをコピーしました