Pythonで計算をする時、計算の対象となる数値が文字列だったら、ちゃんと計算できるでしょうか?
IDLEを起動して、下記サンプルコードの結果を見てみましょう。
a = '10'
a + 10
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
a + 10
TypeError: can only concatenate str (not "int") to str
見ておわかりのとおり、変数「a」に文字列「10」を入れて、この変数に10を足す計算です。
もちろん、文字列に対し数値を足してますので、エラーとなってしまうことは想像できるでしょう。
こういう時は、文字列を数値に変換する関数、「int」関数、「float」関数を使えば、正しい結果を得ることができます。
今回はこの2つの関数、int関数、float関数について、解説していきます。
int関数
int関数はカッコ内に引数として文字列、あるいは数値を指定します。
引数として指定した文字列、あるいは数値を整数で返します。
下記サンプルコードをご覧ください。
実際にIDLEを起動して、サンプルコードを入力してみてください。
int(10)
10
int('10')
10
int(10.75)
10
ポイントは、引数に浮動小数点数を指定したときに、戻り値として「整数」を返すことです。
もちろん、文字列を指定しても、整数を返します。
小数点以下を省略して、整数を返したい時は、int関数を使います。
また、int関数に第2引数を指定すれば、文字列を第2引数で指定した基数で返すこともできます。
int("1010", 2)
10
例えば、文字列「1010」を2進数に変換して値を返すには上記のようになります。
本格的な技術職の方ならともかく、Excelと連動して業務を効率化していこうというような方には、あまり使う機会はないかもしれません。
float関数
float関数も、int関数と同じく、カッコ内に引数として文字列、あるいは数値を指定します。
引数として指定した文字列、あるいは数値を浮動小数点数で返します。
下記サンプルコードをご覧ください。
実際にIDLEを起動して、サンプルコードを入力してみてください。
float(10)
10.0
float('10')
10.0
float('10.5')
10.5
float(10.55555)
10.55555
float関数では、引数に整数を指定しても、浮動小数点数を指定しても、また文字列を指定しても、浮動小数点数を返します。
数値がマイナスかどうかチェックしたい
以前、文字列が数値かどうかチェックするメソッドについて、解説したことがあります。

文字列(数字)がマイナスだった場合、本来、数値として判断してほしいのに、正しく判断してくれません。
そこで、その問題を解決するために、私はint関数、float関数を利用してみました。
以下はそのサンプルコードです。
def int_check(num):
try:
int(num.replace(',', '').replace(',', ''))
except:
#戻り値
return False
else:
#戻り値
return True
a = 'ああ'
int_check(a)
False
b = '100'
int_check(b)
True
c = '-1000'
int_check(c)
True
「int_check」という関数を定義しています。
また、引数として指定する文字列にカンマがあると支障が出ますので、カンマを取り除く処理をしています。
この定義した関数なんですが、例外処理を使っています。
正常に処理が完了できれば「True」を返し、そうでなければ「False」を返す。
ただ、それだけの処理です。
例外処理を使うことで、エラーになったとしても、止めずに処理を継続させることができるわけです。
int関数はマイナス数値をチェックすることができますので、これを利用しました。
これでマイナス数値の文字列をちゃんとチェックできるようになりました。
Excelで参照したセルの数値が、数値(マイナスも含む)かどうか、またCSVで読み込んだ数値が数値(マイナスも含む)かどうか、チェックしたい時に役立ちます。
今回も、少しでも参考にしていただければ、幸いです。
最後まで読んでいただき、ありがとうございました。