Pythonで整数を判定する5つの方法

Pythonで整数を判定する方法の説明とサンプルコードを提供する記事のサムネイルPython
この記事は約7分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

プログラミング言語Pythonは、その書きやすさと読みやすさから初心者から上級者まで幅広く使われています。

特にデータ分析や機械学習の分野ではPythonが大いに活用されています。

今回はPythonで整数を判定する5つの方法について詳しく説明します。

それぞれの方法にはメリットとデメリットがあり、それぞれの状況によって最適な方法が変わるでしょう。

●Pythonで整数を判定するための基本

Pythonで変数が整数かどうかを判定する方法はいくつかありますが、基本的な考え方は同じです。

それは、「変数が整数の性質を持っているかどうか」をチェックすることです。

具体的には、変数が整数型かどうかを確認したり、整数としての演算が可能かどうかを試したりします。

●整数を判定する5つの方法

それでは、Pythonで整数を判定するための5つの方法を見ていきましょう。

それぞれの方法には、サンプルコードとその説明を含めます。

○方法1:type関数を使う

Pythonのtype関数は、オブジェクトの型を返す関数です。

この関数を使って変数の型が整数(int)かどうかを判定することができます。

□サンプルコード1

def is_integer(n):
    return type(n) is int

print(is_integer(100))  # Trueが出力される
print(is_integer(100.0))  # Falseが出力される

このコードでは、is_integerという関数を定義しています。

この関数では、引数nの型がint(整数)かどうかを判定しています。

最後の2行では、この関数を使って整数と小数を判定しています。

結果として、整数はTrueを、小数はFalseを返します。

○方法2:isinstance関数を使う

isinstance関数は、指定したオブジェクトが特定の型(または型のタプル)に属するかどうかを判定する関数です。

この関数を使って変数が整数型かどうかを確認することができます。

□サンプルコード2

def is_integer(n):
    return isinstance(n, int)

print(is_integer(100))  # Trueが出力される
print(is_integer(100.0))  # Falseが出力される

サンプルコード2では、is_integerという関数の中でisinstance関数を使用しています。

引数nが整数型intであるかどうかを確認しています。

結果として、整数はTrueを、小数はFalseを返します。

○方法3:数値演算を試す

整数の特性を利用して、数値演算が成功するかどうかで判定する方法もあります。

例えば、整数と小数の違いの一つに「小数点以下が0であるかどうか」があります。

これを利用して、小数点以下が0であるかどうかをチェックすることで整数を判定します。

□サンプルコード3

def is_integer(n):
    return n == round(n)

print(is_integer(100))  # Trueが出力される
print(is_integer(100.0))  # Trueが出力される
print(is_integer(100.1))  # Falseが出力される

このコードでは、is_integer関数内でround関数を使って引数nを四捨五入した値と、元の値nが一致するかどうかを比較しています。

これにより、整数もしくは小数点以下が0の小数はTrueを、それ以外の小数はFalseを返します。

○方法4:正規表現を使う

Pythonのreモジュールを用いて、正規表現で整数を判定する方法もあります。

この方法は文字列に対して整数を判定する場合に使えます。

□サンプルコード4

import re

def is_integer(n):
    return bool(re.match(r'^-?\d+$', n))

print(is_integer('100'))  # Trueが出力される
print(is_integer('100.0'))  # Falseが出力される

このコードでは、is_integer関数内でre.match関数を使って引数nが整数の形式に一致するかどうかをチェックしています。

結果として、整数形式の文字列はTrueを、それ以外の文字列はFalseを返します。

○方法5:try-exceptを使う

最後に、Pythonの例外処理機能であるtry-exceptを用いて整数を判定する方法もあります。

これは、変数を整数に変換してみて、エラーが出なければそれは整数であると判定する方法です。

□サンプルコード5

def is_integer(n):
    try:
        int(n)
        return True
    except ValueError:
        return False

print(is_integer('100'))  # Trueが出力される
print(is_integer('100.0'))  # Falseが出力される

このコードでは、is_integer関数内でtry-exceptを使って引数nを整数に変換してみています。

エラーが出なければTrueを、エラーが出ればFalseを返します。

●それぞれの方法のメリットとデメリット

それぞれの整数判定方法には、次のようなメリットとデメリットがあります。

○方法1: type関数を使う

メリットとしては、直感的で明確に変数が整数型かどうかを判定できることが挙げられます。

しかし、この方法は整数型以外の数値型(例えばfloat型)の整数値を整数と判定できないというデメリットがあります。

○方法2:isinstance関数を使う

メリットは、type関数を使う方法と同様、明確に変数が整数型かどうかを判定できる点です。

しかし、type関数と同じく、整数型以外の数値型の整数値を整数と判定できないというデメリットがあります。

○方法3:数値演算を試す

メリットとしては、整数値を持つすべての数値型を整数と判定できる点が挙げられます。

しかし、浮動小数点数の精度問題により、非常に大きな数や小さな数の判定が正しく行えない可能性があるというデメリットがあります。

○方法4:正規表現を使う

メリットとしては、文字列が整数形式かどうかを厳密に判定できることが挙げられます。

しかし、この方法は文字列に対してのみ使用可能であり、数値型に対しては使用できないというデメリットがあります。

○方法5:try-exceptを使う

メリットとしては、変数が整数に変換可能であるかどうかを判定できる点が挙げられます。

これにより、整数形式の文字列を整数と判定することが可能です。

しかし、この方法は処理時間が若干長くなる可能性があるというデメリットがあります。

これらのメリットとデメリットを考慮に入れて、適切な方法を選ぶことが大切です。

●よくある間違いとその対処法

整数を判定する際によくある間違いの一つは、小数点以下が0の小数を整数と判定しないことです。

例えば、’10.0’は数値としては10と等しいですが、文字列として見ると小数点が含まれています。

このような場合、必要に応じて小数点以下が0の小数も整数として扱う(例:方法3)か、厳密に整数形式のみを整数とする(例:方法4)かを選びましょう。

また、文字列を整数に変換する際には、空白や改行など非数字の文字が含まれていないか注意が必要です。

非数字の文字が含まれていると、int関数はエラーを発生させます。

これに対処するには、事前に非数字の文字を削除するか、try-exceptを使ってエラーハンドリングを行うことが推奨されます。

まとめ

以上、Pythonで整数を判定する5つの方法について詳しく見てきました。

それぞれの方法にはメリットとデメリットがあり、どの方法を選ぶかは具体的な要件や状況によります。

本記事が、Pythonで整数を扱う際の理解を深める一助となれば幸いです。