数値を文字列に変換する

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

数値を文字列に変換する とは

数値を str に変換して連結する方法と f-string の使い方を学びます。本レッスンでは、数値を文字列に変換する の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ数値を文字列にするのか

Python で値を画面に表示したり、API のレスポンスとして返したり、URL の一部に埋め込むときには、たいてい 文字列 にする必要があります。たとえばユーザーの年齢を int36 のまま '歳です' と連結しようとすると、intstr が混在しているので 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 のような厳しい入力チェックはなく、どんな値でも一旦は文字列にしてくれます。ただし、listdictstr 化は デバッグ用の見た目 であり、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-stringstr 連結を混ぜていますが、f-string を使えばもっと簡潔に書けます。

Python

price = 1000 label = f'価格は {price} 円' return label

後者のほうが見た目もシンプルで、修正も容易です。

diagram (will load when visible)

よくある間違い

文字列化でつまずきやすいポイントを 3 つ紹介します。

  1. str を忘れて連結する '年齢は ' + 36TypeError です。str(36) で囲むか、f-string を使います。
  2. str を変数名にする str = 'hello' のように上書きすると、以降の str(...) 呼び出しが壊れます。
  3. 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 つができることを確認しましょう。

  1. str キャスト の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. str キャスト とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

要件

  1. f-string か str 関数を使って数値を文字列にする
  2. name と price を連結して 'name: price円' の形にする
  3. 結果を return で返す

入出力例

test-cases.txt

format_price("りんご", 100)"りんご: 100円" format_price("バナナ", 250)"バナナ: 250円" format_price("試食", 0)"試食: 0円" format_price("apple", 120)"apple: 120円"

ヒント

main.py
main.py
学習モード

メモ

数値を文字列に変換する

⌘S で保存