「input関数で受け取った数値を計算しようとしたらエラーになった…」「数値と文字列をつなげようとしたら怒られた…」Pythonを学び始めた方なら、一度はこんな経験があるのではないでしょうか。
その原因の多くは「データ型の違い」にあります。そして、その解決策となるのが今回のテーマである型変換(キャスト)です。
この記事では、Pythonの型変換の基本であるint・float・str・boolの使い方を、実際に動くコードと実行結果つきで初心者向けに徹底解説します。この記事を読めば、型に関するエラーに自信を持って対処できるようになりますよ。
コンテンツ
型変換(キャスト)とは?
型変換(キャスト)とは、あるデータ型の値を別のデータ型に変換することです。たとえば、文字列の”100″を数値の100に変換したり、数値の25を文字列の”25″に変換したりする操作を指します。
Pythonでは、変換したい型の名前をそのまま関数のように使うことで型変換ができます。主に使うのは次の4つです。
- int():整数に変換する
- float():小数(浮動小数点数)に変換する
- str():文字列に変換する
- bool():真偽値(True / False)に変換する
それでは、1つずつ具体的に見ていきましょう。
数値への変換:int()とfloat()
int()で整数に変換する
int()を使うと、文字列や小数を整数に変換できます。
print(int("100")) # 100(文字列 → 整数)
print(int(3.9)) # 3(小数点以下は切り捨て)
print(int(-3.9)) # -3(0に近づく方向に切り捨て)注意したいのは、小数をint()に渡したときの挙動です。四捨五入ではなく小数点以下の切り捨てになるため、3.9は4ではなく3になります。
float()で小数に変換する
float()を使うと、文字列や整数を小数に変換できます。
print(float("3.14")) # 3.14(文字列 → 小数)
print(float(5)) # 5.0(整数 → 小数)整数の5をfloat()に渡すと、値としては同じでも「5.0」という小数型のデータになります。
数値に変換できない文字列はエラーになる
int()やfloat()に数値として解釈できない文字列を渡すと、ValueErrorという例外が発生します。
print(int("abc"))
# ValueError: invalid literal for int() with base 10: 'abc'ユーザーの入力など「何が来るか分からない」データを変換するときは、try-exceptでエラーに備えておくと安全です。
text = "abc"
try:
num = int(text)
print(num)
except ValueError:
print("数値に変換できません")
# 実行結果: 数値に変換できませんtry-exceptの詳しい書き方については、例外処理の基本を解説した記事で紹介しているので、あわせて読んでみてください。
文字列への変換:str()
str()を使うと、数値などを文字列に変換できます。よく使うのは、数値と文字列を連結したい場面です。まずは、型変換をしないとどうなるか見てみましょう。
age = 25
print("私は" + age + "歳です")
# TypeError: can only concatenate str (not "int") to strPythonでは文字列と数値をそのまま+で連結できないため、TypeErrorが発生します。str()で数値を文字列に変換すれば、正しく連結できます。
age = 25
print("私は" + str(age) + "歳です")
# 実行結果: 私は25歳ですなお、変数の埋め込みが多い場合は、str()を使うよりもf文字列を使ったほうがスッキリ書けます。f文字列(f-string)の使い方を解説した記事も参考にしてみてください。
bool()による真偽値への変換
bool()を使うと、さまざまな値をTrue / Falseの真偽値に変換できます。
print(bool(1)) # True
print(bool(0)) # False
print(bool("")) # False(空の文字列)
print(bool("abc")) # True
print(bool([])) # False(空のリスト)ポイントは、「空っぽ」や「ゼロ」を表す値はFalse、それ以外はTrueになるというルールです。このルールはif文の条件式でもそのまま使われるので、覚えておくとコードを読む力がグッと上がります。
input関数と型変換の組み合わせ
型変換が最も活躍するのが、input関数と組み合わせる場面です。input関数の戻り値は必ず文字列(str型)になるため、数値として計算したい場合はint()やfloat()での変換が必須です。
num = int(input("数値を入力してください: "))
print(num * 2)
# 入力例: 10
# 実行結果: 20もしint()を付けずにnum * 2とすると、文字列の繰り返しになってしまい「1010」と表示されてしまいます。これはPython初心者が非常によくつまずくポイントです。input関数の基本については、input関数でキーボード入力を取得する方法の記事で詳しく解説しています。
型を確認するtype関数
「今この変数はどの型なんだろう?」と迷ったら、type関数で確認できます。デバッグの強い味方なので、ぜひ覚えておきましょう。
print(type("100")) # <class 'str'>
print(type(int("100"))) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>型に関するエラーが出たときは、まずtype関数で変数の型を確認するのが解決への近道です。
もっと効率的にPythonを学びたい人へ
型変換のような基礎文法は独学でも学べますが、「エラーの原因が自分では分からない」「学習の順番が合っているか不安」と感じる方も多いのではないでしょうか。
そんな方には、マンツーマンで質問しながら学べるプログラミングスクールという選択肢もあります。未経験からのPython習得カリキュラムや転職サポートが用意されており、無料カウンセリングで学習の悩みを相談するだけでも学習計画の参考になりますよ。
※本記事には広告(アフィリエイトリンク)を含みます。
Pythonプログラミング|マンツーマンレッスンで初めてをプロに育てる【Python Winner】![]()
まとめ
今回は、Pythonの型変換(キャスト)について解説しました。要点をまとめます。
- 型変換(キャスト)は、int()・float()・str()・bool()で行う
- int()に小数を渡すと四捨五入ではなく切り捨てになる
- 数値に変換できない文字列を渡すとValueErrorが発生する(try-exceptで対策)
- 数値と文字列を+で連結するときはstr()で文字列に変換する
- input関数の戻り値は必ずstr型なので、計算にはint()やfloat()が必須
- 型に迷ったらtype関数で確認する
型変換はPythonのあらゆる場面で登場する基礎中の基礎です。この記事のコードを実際に手元で動かして、しっかり身につけていきましょう!
ナノトイラボ 