1. "1200" が 1200 になる
  2. "98" が 98 になる
  3. "0" が 0 になる
  4. 前後に空白が付いていても数値になる
  5. マイナスの金額も変換できる
コース一覧
Python入門:基礎文法編
数値への変換

Python入門:基礎文法編

変数、条件分岐、ループ、関数、リスト・辞書、ファイル操作など Python の基礎文法を、ブラウザ上で毎レッスン実際にコードを書き、自分だけの「おこづかい帳アプリ」を育てながら学べる無料コースです。プログラミング完全未経験から始められ、環境構築や事前知識は一切不要です。約 18 時間 (1 日 30 分 × 37 日) で 74 レッスンを修了でき、修了後は入力・集計・ファイル保存まで備えたスクリプトを1から書けるようになります。

1
はじめての Python
01. printで表示15分
02. 文字列の連結15分
03. 四則演算15分
04. 実行順序15分
05. コメント15分
06. エラーを読んでみる15分
07. つくる:レシート表示15分
08. 第1章クイズ10分
2
変数とデータ型
01. 変数15分
02. typeで型を調べる15分
03. 数値への変換15分
04. 文字列への変換15分
05. boolとNone15分
06. f-string15分
07. 入力を受け取る15分
08. つくる:入力できるおこづかい帳15分
09. 第2章クイズ10分
3
演算子と式
01. 比較演算子15分
02. 論理演算子15分
03. in演算子15分
04. 剰余と切り捨て除算15分
05. 連鎖比較と優先順位15分
06. 三項演算子15分
07. つくる:予算チェック15分
08. 第3章クイズ10分
4
条件分岐
01. if文の基本15分
02. if / elif / else15分
03. 条件の組み合わせ15分
04. match文15分
05. 定番:FizzBuzz判定15分
06. デフォルト値とor15分
07. つくる:カテゴリ自動判定15分
08. 第4章クイズ10分
5
ループ
01. forで合計15分
02. whileで繰り返す15分
03. rangeとstep15分
04. breakとcontinue15分
05. enumerateで番号付け15分
06. zipで組み合わせ15分
07. 入れ子ループ15分
08. つくる:何件でも記録15分
09. 第5章クイズ10分
6
関数
01. 関数を定義する15分
02. 引数と戻り値15分
03. デフォルト引数15分
04. キーワード引数15分
05. 複数の戻り値15分
06. divmod15分
07. 変数のスコープ15分
08. lambda関数15分
09. つくる:関数に分割15分
10. 第6章クイズ10分
7
リストと辞書
01. リストの追加と削除15分
02. スライス15分
03. 辞書の基本15分
04. 辞書を走査15分
05. keyでソート15分
06. setで重複除去15分
07. リスト内包表記15分
08. タプルアンパック15分
09. つくる:カテゴリ別集計15分
10. 第7章クイズ10分
8
ファイルとエラー処理
01. ファイルを読み込む15分
02. ファイルに書き込む15分
03. withで安全に扱う15分
04. CSV形式で保存15分
05. try-exceptで備える15分
06. 例外の種類15分
07. つくる:保存機能15分
08. 第8章クイズ10分
9
総合制作
01. 全機能を統合しよう15分
02. 月間レポート機能15分
03. 自由拡張15分
04. 完成と次のステップ10分

数値への変換

型と TypeError

合計を出したいのに 12080 になる

金額を文字列で持っていると、足し算ができません。"120" + "80" は 200 ではなく 12080 です。計算するには、文字列を数値に直す必要があります。

そのための命令が int です。数字だけでできた文字列を渡すと、整数として読み取った値が返ります。

Python

print(int("1200")) print(int(" 120 ")) print(int("-50"))

1200 120 -50 になります。前後に空白があっても無視してくれるので、人がキーボードから打ち込んだ値でもそのまま通ります。マイナスも読めます。

元の文字列は変わらない

int は元の値を書き換えるのではなく、新しい値を作って返す 命令です。

Python

text = "1200" number = int(text)

このあとも text は "1200" という文字列のままで、number に数値の 1200 が入っています。2 つの変数が別々に存在しています。呼びっぱなしにすると何も起きないので、必ず変数で受け取るか、そのまま返してください。

数として読めないと止まる

数字以外が混じった文字列を渡すと ValueError になります。

Python

int("1200円") int("1.5") int("")

3 つとも ValueError で、メッセージは invalid literal for int と出ます。「整数として読めない字が入っている」という意味です。単位ごと渡してしまう int("1200円") が、いちばん多い失敗です。

小数点があると整数としては読めないので int("1.5") も止まります。小数を扱いたいときは float("1.5") を使います。ちなみに int(1.5) のように 数値 を渡した場合は変換でき、四捨五入ではなく切り捨てで 1 になります。おこづかい帳は円単位の整数しか扱わないので、当面は int だけで足ります。

解説

ValueError は「型は合っているが中身が想定外」というエラーです。int に str を渡すこと自体は正しく、中身が数字でなかったから怒られています。

やってみよう

関数 to_price を実装してください。引数は金額の文字列 price_text の 1 つで、それを整数に変換して返します。

to_price("1200") は 1200、to_price("0") は 0、to_price("-50") は -50 です。前後に空白の付いた " 120 " も、そのまま渡して構いません。

戻り値はクオートの付かない数値です。書けたら、返ってきた値に + 800 をしてみてください。文字列のままだったころとの違いがはっきりします。

要件

  1. 関数名は to_price で、引数は price_text の1つ
  2. int を使って文字列を整数に変換する
  3. 戻り値はクオートの付かない整数にする
  4. print ではなく return で返す

入出力例

to_price("1200") → 1200 to_price("98") → 98 to_price("0") → 0 to_price(" 120 ") → 120 to_price("-50") → -50

ヒント

int("1200") は数値の 1200 を返します

return int(price_text) の1行で完成します

戻り値が "1200" のように文字列のままだと失敗します

前後の空白は int が自動で無視するので、自分で取り除く必要はありません

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

関連レッスン

  • 文字列への変換

    str で数値を文字列に変え、int の金額をレシートの1行に連結する

  • boolとNone

    True / False で2択を、None で未入力を表し、支払状態を型ごと確かめる

  • f-string

    f-string で値を文字列に埋め込み、レシートの1行を短く書く

  • 入力を受け取る

    input が必ず文字列を返すことを学び、受け取った1本の文字列を品名と金額に分解する

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 変数データに名前をつけて参照する仕組み
  • 関数処理に名前を付けて再利用できる単位
  • 引数位置引数=順番で渡す。
  • 戻り値呼び出し元への返答を表す点線矢印
main.py
学習モード
エディタを読み込んでいます

メモ

数値への変換

⌘S で保存