ブログの編集長が作成した企画書・構成案の意図(読者の焦りへの共感、分かりやすい例え、挫折させない励まし)をしっかりと汲み取り、初心者の方が「なるほど!」とスッキリ解決できるような温かいトーンで記事を執筆しました。
そのままブログに投稿して使える形式にしております。
—
# 【Python初心者の壁】「TypeError: can only concatenate…」が出たら読む記事!文字列と数値の結合エラーを3分で解決
プログラミング学習、本当にお疲れ様です!
Pythonを勉強していて、「年齢や計算結果を文字と一緒に表示しよう!」とワクワクしながらコードを実行した瞬間……
`TypeError: can only concatenate str (not “int”) to str`
こんな長い真っ赤なエラーメッセージが出て、プログラムが止まってしまった。「えっ、何が間違ってるの?『str』とか『int』って何……?」と、心が折れそうになっていませんか?
安心してください!
実はこれ、Python初心者の9割が一度は確実につまずく「登竜門」のようなエラーなんです。あなたの書いたコードが根本的に間違っているわけではなく、Python特有のちょっとした「ルール」を一つ知らなかっただけ。
この記事では、このエラーの正体(原因)と、一瞬で解決できる2つの魔法のテクニックを、3つのステップで分かりやすく解説します。
実務でプロのエンジニアも使っている便利な裏技も紹介するので、3分後には「なるほど!」とスッキリ解決しているはずですよ。さっそく見ていきましょう!
—
## 【失敗例】なぜかエラーになる悲しいコード
まずは、あなたが今直面している状況を再現してみましょう。
以下のように、変数に数字を入れて、文字と一緒に `print()` で表示しようとしませんでしたか?
“`python
age = 25
print(“私は” + age + “歳です”) # ← ここでエラーが起きる!
“`
一見すると、「私は25歳です」と綺麗に表示されそうですよね。
でも、これを実行すると例の `TypeError` が出てしまいます。その理由を紐解いていきましょう。
## ステップ1:エラーの正体(原因)を知ろう
まずは、あの呪文のようなエラーメッセージを翻訳してみます。
> **`TypeError: can only concatenate str (not “int”) to str`**
> (意訳:文字列(str)には、整数(int)じゃなくて文字列しかくっつけられないよ!)
ここで重要なのが、データ型の種類です。
* **str(ストリング)**:文字(テキスト)のこと。「私は」「歳です」など。
* **int(インテジャー)**:整数(数字)のこと。「25」など。
Pythonは非常に「真面目な性格」をしています。
そのため、「文字(str)」と「数字(int)」という全く違う種類のものを、`+` 記号でそのままガッチャンコとくっつける(concatenate)ことができないのです。
例えるなら、**「水」と「油」をそのまま混ぜようとしているようなもの。** 種類が違うから、弾かれてしまっている状態なんですね。原因がわかれば、解決策はとてもシンプルです!
## ステップ2:解決策その1「 `str()` 」で数値を文字に変える
水と油が混ざらないなら、数字を文字に変えてしまえばOKです。
そこで登場するのが、`str()` という便利な機能(関数)です。
“`python
age = 25
print(“私は” + str(age) + “歳です”) # ← ageをstr()で囲むと解決!
“`
変数の `age` を `str()` で囲むことで、数字の `25` が、文字の `”25″` に変身します。
イメージとしては、**数字に「文字の着ぐるみ」を着せてあげる**ような感覚ですね。
これで「文字 + 文字 + 文字」と全て同じ種類になるので、Pythonも安心してくっつけることができ、無事に「私は25歳です」と画面に表示されます!
## ステップ3:解決策その2「f文字列」でスマートに書く!(超推奨✨)
「`str()` を使う方法はわかったけど、毎回 `+` で繋ぐのはちょっと面倒くさいな……」と思ったあなた。素晴らしい感覚です!
実は、もっと簡単で、プロのエンジニアも実務で愛用している「モダンな書き方」があります。
それが**「f文字列(f-strings)」**です。
“`python
age = 25
print(f”私は{age}歳です”) # ← 先頭にfをつけて、変数を{}で囲むだけ!
“`
使い方は超カンタン!
1. 文字列のクォーテーション( `” “` )のすぐ前に、アルファベットの **`f`** を置く。
2. 文章の途中で入れたい変数を **`{ }`**(波カッコ)で囲む。
たったこれだけです!
この方法なら、わざわざ `str()` で着ぐるみを着せたり、`+` 記号で細かく繋いだりする必要がありません。
「ここからここまでがひとつの文章で、この部分( `{age}` )だけ中身を入れ替えてね」とPythonに直接お願いできるので、コードが圧倒的に読みやすくなります。ぜひこの方法をマスターしてくださいね!
—
## まとめ:エラーを乗り越えて次のステップへ!
いかがでしたか?今回の要点をおさらいしましょう。
* Pythonでは**「文字(str)」と「数字(int)」を `+` でそのまま繋げない!**
* 解決策は、`str()` で数字を文字に変えるか、**超便利な「f文字列」を使う!**
エラー画面の赤い文字を見ると焦ってしまいますが、エラーは決して「あなたの失敗」ではありません。プログラムが「ここを直せばもっと良くなるよ!」と教えてくれている**上達のためのヒント**です。
今回、あなたはこのエラーを乗り越えたことで「データ型(文字や数字の区別)」という、プログラミングにおいて非常に重要な概念を一つクリアしました。本当に素晴らしい一歩です!
**【次のアクション】**
今回学んだ「f文字列」は、使いこなせると本当に便利で楽しい機能です。
ぜひお手元の学習画面で、自分の年齢や計算結果を入れた「オリジナルの自己紹介文」を作って `print` してみてください。
文字や数字の扱い方に慣れてきたら、次は複数のデータをまとめて管理できる便利なお道具箱、**「リスト(配列)」**について学んでみましょう!
👉 [次回記事:【Python入門】複数のデータを一括管理!「リスト(配列)」の基礎と使い方(※リンク)](#)
引き続き、Python学習を楽しんでいきましょう!応援しています!
コメントを残す