或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きです。

Python 文字列を数値に変換

Pythonは、不定値になることを嫌うようで、すぐにエラーを投げる。

文字列をintにキャストしてみた

>>> int('s')
Traceback (most recent call last):
  File "<ipython-input-53-c5b30bd3d6cd>", line 1, in <module>
    int('s')
ValueError: invalid literal for int() with base 10: 's'

なので、数値に変換出来るかどうかをチェックしてからキャストする必要がある。

数値に変換出来るかどうかをチェックする関数

strクラスの持つisdigitメソッドで判定出来る

>>> 's'.isdigit()
False
>>> '1'.isdigit()
True

語順がPythonらしくきもいwでも慣れるとこっちのほうが格好良く見える。

文字列を数値に変換する関数をこさえてみた

>>> def conv_to_int(digit):
    if digit.isdigit():
        return int(digit)
    else:
        raise Exception(ValueError)

こんな感じで使う。

>>> conv_to_int('1')
1
>>> conv_to_int('s')
Traceback (most recent call last):
  File "<ipython-input-7-4f9976be56e3>", line 1, in <module>
    conv_to_int('s')
  File "<ipython-input-5-00e95bb5df69>", line 5, in conv_to_int
    raise Exception(ValueError)
Exception: <type 'exceptions.ValueError'>

今更気付いたんだが、

conv_to_intは、intでキャストするのとなんら変わりが無いことに気付いたw
intにキャスト出来る場合はキャストして、出来ない場合はそのままの値を返却しても、結局後の演算結果が狂うだろうしな・・・。

初めてのPython 第3版

初めてのPython 第3版