Pythonで数値が整数か小数かを判定
Pythonで数値が整数か小数かを判定する方法についてサンプルコードとともに説明する。
小数の整数部と小数部の値を取得したい場合は以下の記事を参照。
整数か小数かの判定ではなく文字列が数字(漢数字なども含む)かどうかの判定については以下の記事を参照。
数値が整数型intか浮動小数点型floatか判定: isinstance()
オブジェクトの型は、組み込み関数type()
で取得できる。
i = 100
f = 1.23
print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>
source: check_int_float.py
組み込み関数isinstance(オブジェクト, 型)
を使うことでオブジェクトが特定の型かどうかを判定できる。これを利用して、数値が整数型int
か浮動小数点型float
かを判定できる。
print(isinstance(i, int))
# True
print(isinstance(i, float))
# False
print(isinstance(f, int))
# False
print(isinstance(f, float))
# True
source: check_int_float.py
この場合、型を判定しているだけなので、float
型の値が整数(小数点以下が0)かどうかは判定できない。
f_i = 100.0
print(type(f_i))
# <class 'float'>
print(isinstance(f_i, int))
# False
print(isinstance(f_i, float))
# True
source: check_int_float.py
float型の数値が整数(小数点以下が0)か判定: float.is_integer()
float
型にはis_integer()
メソッドが用意されており、値が整数であればTrue
、そうでなければFalse
を返す。
f = 1.23
print(f.is_integer())
# False
f_i = 100.0
print(f_i.is_integer())
# True
source: check_int_float.py
例えば、整数の数値(int
型および整数のfloat
型)に対してTrue
を返す関数は以下のように定義できる。文字列str
型はFalse
となる。
def is_integer_num(n):
if isinstance(n, int):
return True
if isinstance(n, float):
return n.is_integer()
return False
print(is_integer_num(100))
# True
print(is_integer_num(1.23))
# False
print(is_integer_num(100.0))
# True
print(is_integer_num('100'))
# False
source: check_int_float.py
数字の文字列が整数か判定
整数の数字の文字列も整数として判定したい場合は、以下のような関数が考えられる。
float()
でfloat
型に変換できる値に対して、float
に変換後is_integer()
メソッドを適用し、結果を返している。
def is_integer(n):
try:
float(n)
except ValueError:
return False
else:
return float(n).is_integer()
print(is_integer(100))
# True
print(is_integer(100.0))
# True
print(is_integer(1.23))
# False
print(is_integer('100'))
# True
print(is_integer('100.0'))
# True
print(is_integer('1.23'))
# False
print(is_integer('string'))
# False
source: check_int_float.py
文字列の数値への変換やtry ... except
による例外処理の詳細は以下の記事を参照。
文字列が数字(漢数字なども含む)かどうかの判定についての詳細は以下の記事を参照。