Python 3で入力された文字列が整数かどうか判定する方法
isdigit()メソッドを使った整数判定
Pythonの文字列(str)クラスにはisdigit()という便利なメソッドが用意されています。このメソッドは、文字列に含まれるすべての文字が数字であり、かつ文字列が空でない場合にTrueを返し、それ以外の場合はFalseを返します。小数点を含む数値(float)を入力した場合も、ピリオドは数字ではないためFalseになります。
Python 3ではinput()関数でユーザーからの入力を受け取るので、次のように記述します。
>>> x = input() 12345 >>> x.isdigit() True
このように、入力が純粋な数字のみで構成されているかどうかを簡単にチェックできます。
正規表現(regex)を使った判定方法
同じ結果を得るもう一つの方法として、正規表現を利用するやり方があります。「数字のみで構成された文字列」にマッチさせるには、re.match(regex, string)に正規表現パターン"^[0-9]+$"を渡します。
>>> import re
>>> x = input()
123abc
>>> bool(re.match('^[0-9]+$', x))
False上の例では、入力に英字が含まれているためFalseが返されています。
bool()で変換が必要な理由
re.match()はマッチ結果を表すオブジェクト(Matchオブジェクト)を返します。マッチしなかった場合はNoneを返すため、結果の有無を明確に確認したいときは、bool()を使って真偽値に変換すると分かりやすくなります。
補足:int()への変換と例外処理による判定
実務では、try/exceptを使って実際にint()へ変換できるかどうかで判定する方法もよく使われます。負の数や先頭の符号にも対応できるのが利点です。
>>> x = input()
-42
>>> try:
... int(x)
... print("整数です")
... except ValueError:
... print("整数ではありません")
-42
整数です用途に応じて、シンプルなisdigit()、柔軟な正規表現、厳密な変換チェックと使い分けると良いでしょう。
-
Pythonで文字列が英数字のみで構成されているか判定する方法【isalnum()と正規表現】
Pythonでは、文字列がアルファベットや数字だけで構成されているかどうかを簡単にチェックできます。主な方法は2つあります。1つは文字列クラスに組み込まれている isalnum() メソッドを使う方法、もう1つは正規表現(regex)を使う方法です。 1. isalnum() メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、その文字列が英数字(アルファベットと数字)のみで構成されている場合に True を、それ以外の場合に False を返します。 使用例:英数字のみの文字列 print(12
-
Pythonで部分文字列が文字列に含まれているか確認する方法(in演算子とfindメソッド)
Pythonでは、ある文字列が別の文字列の部分文字列(サブストリング)として含まれているかどうかを簡単に確認できます。最も基本的な方法は、in 演算子を使うことです。in 演算子を使った判定方法in 演算子は、左辺の文字列が右辺の文字列に含まれている場合に True を、含まれていない場合に False を返します。以下はその使用例です。print(ello in hello world)実行結果:Trueこのように、ello は hello world の中に含まれているため、True が出力されます。find() メソッドで位置(インデックス)を取得する部分文字列が含まれているかどうかに加