Pythonで整数かどうかを判定する方法!初心者向けに解説
こんにちは、とまだです。
Pythonで数値を扱っていて、「この値って本当に整数なの?」と疑問に思ったことはありませんか?
実は、整数かどうかの判定は、プログラミングの基本でありながら、意外と奥が深いテーマなんです。
今回は、Pythonにおける整数判定の方法を、初心者の方でも理解しやすいように解説していきます。
整数判定って何?日常に例えると
整数判定を日常生活に例えると、レジでお金を数えるときの作業に似ています。
100円玉や500円玉は「整数」として扱えますよね。
でも、「100.5円」という硬貨は存在しません。
プログラミングでも同じように、「10」は整数ですが、「10.5」は整数ではありません。
この違いを見分けることが、整数判定の役割です。
なぜ整数判定が必要なの?
整数判定が必要になる理由はいくつかあります。
まず、計算の精度を保つためです。
小数を含む計算では誤差が生じることがありますが、整数同士の計算なら正確な結果が得られます。
次に、不正な入力を防ぐためです。
例えば、年齢を入力してもらうフォームで「25.7歳」と入力されたら困りますよね。
そこで整数判定を使って、適切な値だけを受け付けるようにします。
基本的な整数判定の方法
type()関数を使う方法
最もシンプルな方法から見ていきましょう。
# 変数の型をチェックする
x = 10
if type(x) == int:
print("xは整数です")
else:
print("xは整数ではありません")
このコードでは、type()
関数を使って変数の型を調べています。
返ってきた型がint
(整数型)と一致すれば、その変数は整数だと判断できます。
isinstance()関数を使う方法
もう少し柔軟な判定方法もあります。
# isinstance()での判定
x = 10
if isinstance(x, int):
print("xは整数です")
else:
print("xは整数ではありません")
isinstance()
関数は、より高度な判定が可能です。
継承関係にある型も含めて判定できるため、実務ではこちらがよく使われます。
文字列が整数かどうかを判定する
実際の開発では、ユーザーからの入力を扱うことが多いです。
入力は基本的に文字列として受け取るため、それが整数として有効かどうかを確認する必要があります。
isdigit()メソッドを使う
文字列が数字だけで構成されているかチェックできます。
# 文字列が数字かどうかチェック
user_input = "123"
if user_input.isdigit():
print("数字として解釈できます")
number = int(user_input)
print(f"整数に変換: {number}")
else:
print("数字ではありません")
ただし、isdigit()
にはいくつか注意点があります。
マイナス記号を含む「-123」のような値は、False
を返してしまいます。
try-except文で変換を試みる
より実践的な方法として、実際に変換してみる方法があります。
# 変換を試みて判定する
user_input = "-123"
try:
number = int(user_input)
print(f"整数に変換成功: {number}")
except ValueError:
print("整数として変換できません")
この方法なら、マイナス記号付きの数字も正しく判定できます。
エラーが発生しなければ整数として有効、エラーが出たら無効と判断します。
実践的な整数判定の例
ユーザー入力の検証
年齢を入力してもらうプログラムを例に考えてみましょう。
# 年齢入力の検証
def get_age():
while True:
age_input = input("年齢を入力してください: ")
# 前後の空白を削除
age_input = age_input.strip()
try:
age = int(age_input)
# 年齢として妥当な範囲かチェック
if 0 <= age <= 150:
return age
else:
print("0〜150の範囲で入力してください")
except ValueError:
print("整数を入力してください")
# 使用例
age = get_age()
print(f"入力された年齢: {age}")
このコードでは、整数判定に加えて範囲チェックも行っています。
実務では、このように複数の検証を組み合わせることが一般的です。
リストの中から整数だけを抽出
様々な型が混在するリストから、整数だけを取り出したい場合もあります。
# 混在するデータから整数を抽出
mixed_data = [10, "hello", 3.14, 42, "100", True, 25]
# 整数だけを抽出
integers = []
for item in mixed_data:
if isinstance(item, int) and not isinstance(item, bool):
integers.append(item)
print(f"整数のみ: {integers}") # [10, 42, 25]
Pythonではbool
型(True/False)もint
型の一種として扱われるため、追加の条件を付けています。
よくある間違いと対処法
浮動小数点数との混同
整数判定でよくある間違いが、小数点以下がゼロの場合です。
# 10.0は整数?
x = 10.0
print(type(x)) # <class 'float'>
print(isinstance(x, int)) # False
# 整数として扱いたい場合
if x.is_integer():
print(f"{x}は整数値です")
x_int = int(x)
print(f"整数に変換: {x_int}")
10.0
は数学的には整数ですが、Pythonでは浮動小数点数として扱われます。
文字列の前後の空白
ユーザー入力では、気づかない空白が含まれることがあります。
# 空白を含む入力の処理
user_input = " 42 "
# そのまま判定すると失敗
print(user_input.isdigit()) # False
# 空白を除去してから判定
cleaned_input = user_input.strip()
print(cleaned_input.isdigit()) # True
strip()
メソッドで前後の空白を除去することで、正しく判定できるようになります。
整数判定のベストプラクティス
目的に応じた方法を選ぶ
整数判定の方法は、使用する場面によって使い分けることが大切です。
プログラム内部で型をチェックする場合は、isinstance()
が適しています。
ユーザー入力を検証する場合は、try-except
で実際に変換を試みる方法が確実です。
エラーメッセージを分かりやすく
ユーザーに向けたエラーメッセージは、具体的で分かりやすくしましょう。
# 良いエラーメッセージの例
def validate_quantity():
quantity = input("購入数を入力してください: ")
try:
num = int(quantity)
if num <= 0:
print("1個以上の数を入力してください")
return None
return num
except ValueError:
print(f"「{quantity}」は数字ではありません。半角数字で入力してください")
return None
エラーの原因と対処法を明確に伝えることで、ユーザーの混乱を防げます。
まとめ
Pythonにおける整数判定について、基本から実践まで解説しました。
type()
やisinstance()
を使った型チェック、文字列の場合はisdigit()
やtry-except
を使った方法など、様々なアプローチがあります。
それぞれの方法には特徴があるので、状況に応じて使い分けることが重要です。
整数判定は一見シンプルですが、実務では様々なケースを想定する必要があります。
今回紹介した方法を組み合わせて、堅牢なプログラムを作っていきましょう。
ぜひ実際にコードを書いて、整数判定の動作を確認してみてください。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →