はじめに
Pythonに限らず、プログラムの開発において型の理解は重要です。今回は、文字列を数値に変換する方法について説明していきたいと思います。
この記事では、なぜ、型変換が必要なのか?数値への変換を行わないで実装するとどのようなエラーが出力されるのか?それを回避するためにはどのように変換すればよいのか?という疑問につてサンプルプログラムを動かしながら説明していきたいと思います。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
前提知識
今回紹介するサンプルプログラムを理解するにあたって、必要な関連する記事をまとめました。
サンプルプログラムを読んで理解できない場合は、以下の記事もご覧ください。
コマンドライン引数の受け取り方について
print関数の使い方について
型を調べる方法について
なぜ変換する必要があるのか?
まず、なぜ型を変換する必要があるのかについてお答えします。
下のサンプルプログラムを見てください。
このプログラムはコマンドライン引数を受け取り、受け取った引数に「10」を足すプログラムになっています。
実際に、プログラムを動かしてみると分かるのですが、この場合エラーになります。
下のイメージでは引数に「5」を与えて実行しています。
python sample_int_convert_error.py 5

下のメッセージは型の不一致で出力されるエラーです。内容を見ると「文字列(int以外)と文字列しか結合できません」というメッセージになっています。なぜなら、コマンドライン引数で受け取った「5」は文字列であり、文字列(5)と数字(10)を文字列連結しようとしてこのようなエラーが発生します。
TypeError: can only concatenate str (not "int") to str
このような事態を回避するために、文字列から数値への変換を行います。
文字列をint型に変換
それでは、型変換の処理について説明過去します。「5」のような整数の文字列を数値に変換したい場合は、「int関数」を使います。下のサンプルソースで言うと、7行目の処理で「int関数」を呼び出しています。
「int関数」の使い方は「int(数値の文字列)」で戻り値として数値に変換された値が取得できます。
int(数値の文字列)
それでは、先ほどと同じ引数を渡して実行してみましょう。今回は「type関数」を使って「parameters」が何の型かわかるように出力しています。
7行目の「int関数」の処理を通る前はstr型で、「int関数」の後はint型になっていることが分かります。
そして、「5」も「10」もint型なので足し算が行われて「15」が出力されます。

数値以外を変換しようとすると?
ちなみに、引数に数字以外の文字を指定した場合には、「文字が不正です」といったメッセージが出力されます。
スポンサーリンク
ValueError: invalid literal for int() with base 10: 'a'

本来だったら、プログラム実行中にこのようなエラーが発生しないように変換可能かのチェックを行うのが普通ですが、今回はそのままにしておきます。また、型変換可能かのチェックほうほうについては以下の記事にまとめています。
浮動小数点数(float)型を変換すると?
「1.1」(浮動小数点数)を引数に指定した場合も同様に、先ほどと同じメッセージが出力されます。これは、「int関数」が浮動小数点数(というか、小数点の文字”.”)を許容していないためだと思われます。
ValueError: invalid literal for int() with base 10: '1.1'

浮動小数点数を数値に変換したい場合は次の章で説明する「float関数」を使います。
文字列をfloat型に変換
「float関数」は引数に浮動小数点数を渡すと数値変換した値を返してくれる関数です。
呼び出し方は以下の通りで「float(数値の文字列)」で呼び出せます。
float(数値の文字列)
実行結果が以下になります。変換前がstr型からfloat型に変換されていることが分かります。また、計算も正しく処理されています。

int型を変換しようとすると?
次に、「float関数」に整数を渡すとどうなるでしょうか?この場合は「1」が「1.0」として扱われ正しく計算されます。

ちなみに文字列を引数で渡すと?
「float関数」に文字列を渡した場合は、以下のように「文字列からfloatに変換できません」というエラー出力されます。
ValueError: could not convert string to float: 'a'

まとめ
文字列から数値に変換する場合は「int関数、float関数」をつかう
呼び出し方は「int(数値の文字列)」、「float(数値の文字列)」、これらの関数を呼び出す場合は変換可能かチェックすることが望ましい
「int関数」に浮動小数点数を渡すとエラーとなる