データ型についての記事で、文字列型(str型)・整数型(int型)・浮動小数点型(float型)について簡単に解説しましたが、異なるデータ型を一緒に使うとエラーが出てしまうことがあります。
【この記事はこんな方に向けて書いています】
・pythonのデータ型について勉強したい
・データ型の型変換について勉強したい
【目次】
・文字列と数値の結合によるエラー
・データ型の確認
・数値を文字列に型変換
・文字列を数値に型変換
・まとめ
例えば、変数English_scoreに85を代入して、print関数で「英語の点数は85点でした」と出力してみます。
するとこのようにエラーが出てしまいました。
TypeError: can only concatenate str (not "int") to str
このエラーは「文字列と数値を結合」する時に発生します(記事執筆時点:pythonのバージョン更新時にエラー表現が改善される場合があります)。
変数English_scoreに85を代入したので、変数のデータ型が整数型(int型)になっていると考えられます。念のためtype()でデータ型を確認してみます。
intと返ってきたので、やはりデータ型が整数型(int型)になっています。
ではどのようにすればいいのでしょうか?
この場合は、数値を文字列に変換すれば解決します。
以下のようにして、変数English_scoreを文字列型(str型)に変換してprint関数で出力します。
このように、整数型(int型)を文字列型(str型)に変換することで無事に出力できました。
今度は文字列型(str型)を整数型(int型)に変換してみます。
まず変数math_scoreに90を代入して、英語と数学の合計得点をprint関数で出力してみます。
するとこのようにエラーが出てしまいました。
TypeError: unsupported operand type(s) for +: 'int' and 'str'
このエラーは「整数(int)と文字列(str)を+できない」というエラーです(記事執筆時点:pythonのバージョン更新時にエラー表現が改善される場合があります)。
変数math_scoreに90を代入する時にシングルクォーテーション(')で囲ってしまったので変数のデータ型が文字列型(str型)になっていると考えられます。念のためtype()でデータ型を確認してみます。
strと返ってきたので、やはりデータ型が文字列型(str型)になっています。
ではどのようにすればいいのでしょうか?
もちろんシングルクォーテーション(')を外して「math_score = 90」と上書きすれば解決しますが、今回は勉強のため文字列を数値に変換して解決します。
以下のようにして、変数math_scoreを整数型(int型)に変換してprint関数で出力します。
このように、文字列型(str型)を整数型(int型)に変換することで無事に出力できました。
データ型についてはこちらの記事で簡単に解説していますので、よければご覧下さい。
まとめ
・異なるデータ型を一緒に使うとエラーが出てしまうことがある
・変数のデータ型を確認する時はtype()で確認できる
・データ型はstr()やint()などで型変換できる
ここまで読んで頂きありがとうございました。
-------------------------------------------------------------------------------------
当ブログの記事一覧(カテゴリー別)