数値を文字列に変換する
数値を文字列に変換する とは
数値を str に変換して連結する方法と f-string の使い方を学びます。本レッスンでは、数値を文字列に変換する の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜ数値を文字列にするのか
Python で値を画面に表示したり、API のレスポンスとして返したり、URL の一部に埋め込むときには、たいてい 文字列 にする必要があります。たとえばユーザーの年齢を int の 36 のまま '歳です' と連結しようとすると、int と str が混在しているので TypeError になります。
Python
age = 36
'年齢は ' + age + ' 歳です' # TypeErrorこの問題を解決するのが 組み込み関数 の str です。str(36) のように呼ぶと、整数 36 が文字列 '36' に変換され、+ で連結できるようになります。
Python
age = 36
'年齢は ' + str(age) + ' 歳です' # '年齢は 36 歳です'文字列と数値を混ぜると即エラーになるのは、Python の
明示的な型変換の哲学です。気をつけるべきポイントが明確になる、というメリットがあります。
文法のおさらい
str 関数はほぼあらゆる値を文字列に変換できます。
str(42)→'42'str(3.14)→'3.14'str(True)→'True'str(None)→'None'str([1, 2])→'[1, 2]'str({'a': 1})→"{'a': 1}"
int のような厳しい入力チェックはなく、どんな値でも一旦は文字列にしてくれます。ただし、list や dict の str 化は デバッグ用の見た目 であり、JSON 仕様とは違うので、外部に渡すデータには json.dumps を使うのが基本です。
f-string で組み立てる
Python には str の連結よりも便利な書き方が用意されていて、それが f-string です。文字列リテラルの先頭に f を付け、波カッコ {} の中に式を書くと、式の値が文字列として埋め込まれます。
Python
age = 36
name = 'Ada'
message = f'{name} は {age} 歳です'
return message{name} には Ada、{age} には 36 がそのまま入り、結果は 'Ada は 36 歳です' になります。str で囲む必要がない (str が自動的に呼ばれる) ので、コードが読みやすくなります。
f-stringは Python 3.6 から使える書き方で、現在は 文字列組み立ての第一選択肢 とされています。
動きを追ってみる
次のコードを 1 行ずつ追います。
Python
price = 1000
label = f'価格: ' + str(price) + ' 円'
return labelここでは f-string と str 連結を混ぜていますが、f-string を使えばもっと簡潔に書けます。
Python
price = 1000
label = f'価格は {price} 円'
return label後者のほうが見た目もシンプルで、修正も容易です。
よくある間違い
文字列化でつまずきやすいポイントを 3 つ紹介します。
strを忘れて連結する'年齢は ' + 36はTypeErrorです。str(36)で囲むか、f-stringを使います。strを変数名にするstr = 'hello'のように上書きすると、以降のstr(...)呼び出しが壊れます。fを付け忘れる'{name} さん'と書くと、波カッコがそのまま文字列として残ります。先頭のfを必ず付けます。
f-stringの中では{value:.2f}のように 書式指定 もできます。小数点以下 2 桁に丸める、ゼロ埋めする、千の位区切りを入れる、などが 1 行で書けます。
format メソッドという選択肢
f-string が登場する前は str.format メソッドがよく使われていました。今でも動くので覚えておくと既存コードが読めます。
Python
name = 'Ada'
age = 36
message = '{} は {} 歳です'.format(name, age)
return message{} の中に何も書かなければ引数の順番で埋め込まれ、{0} {1} のようにインデックスを指定することもできます。新しく書くコードでは f-string のほうが読みやすいので、format はレガシーコードで見かけたときに思い出せれば十分です。
やってみよう
商品名 name と価格 price を受け取り、'りんご: 100円' のような形式の文字列を返す関数 format_price を実装してください。f-string を使うとシンプルに書けます。name は文字列、price は整数で渡されます。テストでは異なる商品名や 0 円なども渡されます。半角コロン : を含む形式なので、f'{name}: {price}円' のように書きます。
よくある質問
Q. このトピックは Python 以外の言語でも同じ書き方ですか?
A. 考え方は他言語と共通ですが、構文や標準ライブラリは異なります。Python はインデントでブロックを表し、コロン + 改行で構造を作るのが特徴です。他言語に移行する際は基本概念を維持しつつ、構文の差分を意識して書き換えると混乱が少ないです。
Q. 実行してエラーが出た場合の対処は?
A. エラーメッセージの最後の行(TypeError や NameError などの型)から原因と該当行を確認します。Python はトレースバックが下から上に読むと「呼び出し元 → 内部」の順で辿れます。print や IDE のデバッガで途中の変数を確認すると原因が見えてきます。
Q. 次のステップで何を学ぶべきですか?
A. 本レッスンの内容を理解できたら、本文の「やってみよう」を実装し、章末クイズに進むのがおすすめです。さらに自分のミニアプリ(電卓・todo・スコア集計など)に応用するとスキルが定着します。詰まったら本文の H2 セクションに戻って読み返してください。
次のレッスン
次は 真偽値の変換と truthy / falsy で、数値を str に変換して連結する方法と f-string の使い方を学びます を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- str キャスト の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. str キャスト とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
要件
- f-string か str 関数を使って数値を文字列にする
- name と price を連結して 'name: price円' の形にする
- 結果を return で返す
入出力例
test-cases.txt
format_price("りんご", 100) → "りんご: 100円"
format_price("バナナ", 250) → "バナナ: 250円"
format_price("試食", 0) → "試食: 0円"
format_price("apple", 120) → "apple: 120円"