Python : 数値型の基本操作編(演算、累算代入演算子、組み込み関数など)

TwitterFacebookHatena
  • 公開:2021-9-22
  • 更新:2024-11-12
  • 文章量:3004
  • Python

TL;DR

このページでは Python で使われる数値の基本操作方法を網羅的に述べる。

数値のポイント

  • 四則演算などがサポートされている
  • 数値型は不変な型なので、演算結果は常に新しいオブジェクトとして返される
  • 組み込みの数値型は 3 つある

組み込みの数値型は数値を書くだけで値を作成できる。これを数値リテラルという。数値リテラルには、整数を扱う int 型、浮動小数点を扱う float 型、複素数を扱う complex 型の 3 つがある。これについては後述する。

整数の演算

次の表に示すのは整数の基本的な演算方法である。

演算子 意味 結果
+ 加算 1 + 2 3
- 減算 100 - 10 90
* 乗算 3 * 5 15
/ 浮動小数点の除算 7 / 2 3.5
// 整数の除算(切り捨て) 7 // 2 3
% 剰余 7 % 3 1
** べき乗 3 ** 4 81

整数を整数で割るときも、/ を使うと、浮動小数点で返される。プレフィックスで基数を指定しない限り、10 進と見なされる。

9 / 5
# 1.8

整数と小数の差は小数となり、整数どうしの商は小数になる。

print(1 + 2) # 3(整数どうしの和は整数)
print(1 - 2.0) # -1.0(整数と小数の差は小数)
print(1.0 * 2j) # 2j(小数と複素数の積は複素数)
print(1 / 1) # 1.0(整数どうしの商は小数)
7**2
# 49

7/2
# 3.5

7/1
# 7.0

7//1
# 7
# // は、整除

7%2
# 1

# ピタゴラスの定理
x = 3
y = 4
z = 5
n = 2
x**n + y**n == z**n
# True

# フェルマーの定理
from math import sqrt
x = 10
y = 6
n = 4
z = x**n+y**n
sqrt(z) # 106.28264204469139
type(sqrt(z)) == int # False

整数と浮動小数点を計算すると、整数値が浮動小数点数値にキャストされる。

50 + 3.
# 53.0

ブール値の False は 0(0.0)、True は 1(1.0) として扱われる。

True + 2
# 3

False + 2.0
# 2.0

累算代入演算子

= の前に算術演算子を入れると、演算と代入を結合できる。左辺の値と右辺の値を計算した結果が左辺に代入される。代入文と 2 項演算が複合した演算子。

a = 10
b = 3
a += b
a

# 13
a = 10
b = 3
a %= b
a

# 1
a = 10
b = 3
a **= b
a

# 1000

カンマ

カンマをつけるとタプルになる。

1,000,000
# (1, 0, 0)

アンダースコア

数字のセパレータをアンダースコアにすると数値が表示される。アンダースコアは無視される。

1_000_000
# 1000000

1_2_3
# 123

ゼロで割る

除算でも、ゼロで割ると例外が発生する。

3 / 0
# ZeroDivisionError

3 // 0
# ZeroDivisionError

組み込み関数

Python では、組み込みの数値型は 3 つある。

  • int:整数を扱う
  • float:浮動小数点
  • complex:複素数

int()

数値型の値は、組み込み関数の int(),float(),complex() を使っても値を生成できる。

Python の整数以外のデータ型を整数に変換するには int() 関数を使う。int 型どうしの演算結果は、割り算では float 型、それ以外は int 型になる。

5 / 1
# 5.0

a = int(1)
a # 1

int('1')
# 1

浮動小数点を整数に変換すると、小数点以下が切り捨てられる。

int(2.9)
# 2

小数点を含む文字列は処理できない。

int('1.0')
# ValueError: invalid literal for int() with base 10: '1.0'

float()

整数を浮動小数点に変換する。float 型どうしの演算は float 型になる。数値として扱えない NaN も float 型として扱われる。

1.0 + 4.0
# 5.0

type(1.0)
# float

type(float('nan'))
# float

float(2.0)
# 2.0

complex()

complex()型は、複素数を扱う型である。数値リテラルに、j もしくは J を付けると定義できる。complex()どうしの演算は complex 型になる。

complex(1)
# (1+0j)

type(complex(1 + 2j))
# complex

complex(1 + 2j) + 3j
# (1+5j)

type(complex(1 + 2j) + 3j)
# complex

bool()

bool()関数は整数に対応するブール値を返す。ゼロは偽、ゼロ以外は真となる。なお、無限大は真となる。

bool(0)
# False

bool(1)
# Ture

bool(-1)
# True

bool(float('-inf')) # 無限大は真
# True

divmod()

divmod() を使えば、商と剰余を同時に出力することができる。

divmod(14, 5)
# (2, 4)

round()

round()は、第一引数の値を第二引数の桁数で丸める。最も近い整数に丸めて返す。丸めとは、数値の端数を処理して、指定した丸め幅の整数倍の数値に置き換えることである。Python では、四捨五入ではなく偶数丸めになる。

round(21.5)
# 22

n = 7 * 0.9
round(n)
# 6

round(0.5) # 0
round(1.5) # 2
round(2.5) # 2
round(3.5) # 4
round(4.5) # 4

floor()

floor(x) は x 以下の最大の整数を返す。floor 関数は math モジュールが入っているので、import して使う。

import math
math.floor(21.5)
# 21

ceil()

math モジュールには、floor とは反対の動きをする ceil 関数がある。ceil 関数は、指定の数値以上の最小の整数を返す。

import math
math.ceil(21.5)
# 22

sqrt()

sqrt は平方根を返す。from import を指定した後は、モジュール名を書かなくてもモジュールに入っている関数を使えるようになる。

import math
math.sqrt(9)
# 3.0

from math import sqrt
sqrt(9)
# 3.0

Python : 数値型の基本操作編(演算、累算代入演算子、組み込み関数など)