Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでisNumber()関数を実装する方法をわかりやすく解説

はじめに

本記事では、Python 3.x(またはそれ以前のバージョン)を使ってisNumber()関数を自前で実装する方法を解説します。

この関数は文字列を引数として受け取り、その文字列が数値として解釈できるかどうかに応じて、ブール値のTrueまたはFalseを返します。実装には、try文とexcept文による例外処理の仕組みを活用します。

isNumber()関数の実装例

それでは、実際のコード例を見ていきましょう。

# isNumber()関数の実装
def isNumber(s):
    if(s[0] == '-'):
        s = s[1:]
    # 例外処理
    try:
        n = int(s)
        return True
    # エラーが発生した場合に例外を捕捉する
    except ValueError:
        return False

inp1 = "786"
inp2 = "-786"
inp3 = "Tutorialspoint"
print(isNumber(inp1))
print(isNumber(inp2))
print(isNumber(inp3))

実行結果

True
True
False

コードの解説

この関数の動作を順番に確認してみましょう。

  • まず、文字列の先頭がマイナス記号「-」かどうかをチェックし、該当する場合はその1文字を取り除きます。これにより、負の整数にも対応できます。
  • 次に、tryブロック内でint()関数を使って文字列を整数へ変換します。変換に成功すれば、その文字列は数値であると判断でき、Trueを返します。
  • 一方、数値に変換できない文字列の場合はValueError例外が発生するため、exceptブロックでそれを捕捉し、Falseを返します。

応用:小数にも対応させる

上記の実装では整数のみを判定できます。小数も判定対象に含めたい場合は、float()を使うと便利です。

def isNumber(s):
    try:
        n = float(s)
        return True
    except ValueError:
        return False

print(isNumber("3.14"))   # True
print(isNumber("-2.5"))   # True
print(isNumber("abc"))    # False

float()は先頭の符号や小数点を自動的に処理してくれるため、コードがよりシンプルになります。

まとめ

本記事では、Python 3.xにおけるisNumber()関数の実装方法を学びました。try/exceptによる例外処理を活用することで、文字列が数値かどうかを簡潔かつ安全に判定できることが分かりました。用途に応じてint()とfloat()を使い分ければ、整数・小数のどちらにも柔軟に対応できます。

  1. Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説

    本記事では、Python標準ライブラリに用意されているissubset()関数の仕組みと使い方について詳しく解説します。 issubset()メソッドは、あるセット(集合)のすべての要素が、引数として渡した別のセットにも含まれている場合にブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 下の図では、BはAの部分集合です。もしAとBが同一のセットであれば、両者は互いに部分集合の関係にあるといえます。つまり、両方のセットがまったく同じ要素を持っているということを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値

  2. Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法

    この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print