Python | 文字列と数値

Python
スポンサーリンク

では Python の「文字列と数値」 を、プログラミング初心者向けにやさしく・順を追って説明し、途中に動く例(コード)と練習問題+解答をつけます。手を動かしながら読んでください — 実行すると理解がぐっと早まります。

1) 基本の「型」理解(文字列 str と数値 int / float)

  • 文字列(str:文字や記号の並び。例:"123", "こんにちは", "abc123"
  • 整数(int:小数点のない数。例:123, -5
  • 浮動小数点数(float:小数を含む数。例:3.14, -0.5

重要"123"(文字列)と 123(数値)は別物。型が違うと演算や結合でエラーになったり、意図しない結果になります。


2) 型の違いで起きる典型例(動くコードで確認)

a = "123"      # 文字列
b = 456        # 整数

# そのまま足すと……
# print(a + b)   # ← エラー TypeError: can only concatenate str (not "int") to str

# 文字列同士ならつながる(連結)
print("a + '789' ->", a + "789")   # -> "123789"

# 数として足したければ変換する
print("int(a) + b ->", int(a) + b) # -> 579
Python

3) 文字列 → 数値(変換)

  • int("123")123
  • float("123.45")123.45

注意点

  • " 123 "(前後に空白)があれば int(" 123 ") は OK(Python は空白を許容)。
  • "123,456" のようにカンマが入ると変換できない(エラー)。
  • マイナスや小数点がある場合:"-5"int("-5") OK、"3.14"int() ではダメ(float() を使う)。
  • "-3.14"float() で変換してから int() で切り捨てることはできる(int(float("-3.14"))-3)。

安全に変換する方法(例)

s = "123.45"
try:
    x = float(s)
    print("変換成功:", x)
except ValueError:
    print("変換できません:", s)
Python

4) 数値 → 文字列(結合や表示のため)

  • str(123)"123"
  • f文字列(推奨):f"値は{num}です" → 変数をそのまま埋め込めて読みやすい。
age = 30
print("年齢は " + str(age) + " 歳です")   # 古い書き方
print(f"年齢は {age} 歳です")            # 推奨(読みやすい)
Python

print() はカンマで複数引数を渡すと自動でスペース挿入・文字列化してくれる:

print("年齢は", age, "歳です")  # -> 年齢は 30 歳です
Python

5) よくある落とし穴(と対処法)

  1. "123" + 4 はエラー(strint の連結)。
    → 対処:int("123") + 4"123" + str(4)
  2. input() は常に文字列を返す。数値として使うなら変換が必要。 n = int(input("整数を入力: ")) 変換失敗に備えて try/except するのが安全。
  3. .isdigit() は便利だが完全ではない:"-5""3.14"False。マイナスや小数を判定できない。
    → 通常は try: int(s) / float(s) を試す方法が確実。
  4. 小数の丸めや表示フォーマット:f"{pi:.2f}" で小数点以下2桁に整形(表示用)。数値そのものは丸めない。

6) 表示フォーマット(数字の見た目を整える)

pi = 3.14159265
print(f"{pi:.2f}")   # -> 3.14   (小数点以下2桁で表示)
print(f"{1234567:,}")# -> 1,234,567(桁区切り)
Python

7) 実務でよく使うパターン(サンプル)

  • ユーザー入力を受け取り数値で計算:
s = input("半径を入力してください: ")
try:
    r = float(s)
    area = 3.14159 * r * r
    print(f"半径 {r} の円の面積は {area:.3f} です")
except ValueError:
    print("数値を入力してください。")
Python
  • CSV の数字(カンマあり)を処理する:
s = "1,234"
num = int(s.replace(",", ""))  # -> 1234
Python

8) 練習問題

  1. 文字列 "100" と整数 50 を足して 150 にするコードを書け。
  2. ユーザーに年齢を入力させ、入力が整数なら 来年は (年齢 + 1) 歳です と表示する。変換できなければエラーメッセージを出す。
  3. 文字列 "3.14" を使って円周を計算(半径 2 のとき)。結果を小数点以下3桁で表示。
  4. 文字列 " 42\n" を整数 42 に変換するには?
  5. リスト ["10", "20", "30"] を数値に変換して合計を出すコードを書け。

9) 解答と解説

  1. 解答例
a = "100"
b = 50
result = int(a) + b
print(result)  # 150
Python

解説:aint() で整数に変換してから足す。

  1. 解答例
s = input("年齢を入力してください: ")
try:
    age = int(s)
    print(f"来年は {age + 1} 歳です")
except ValueError:
    print("整数を入力してください。")
Python

解説:input() は文字列なので int() で変換。失敗を except で捕まえる。

  1. 解答例
s = "3.14"
r = 2
pi = float(s)
circumference = 2 * pi * r
print(f"円周は {circumference:.3f}")  # -> 12.560
Python

解説:float("3.14") で数値にし、:.3f で小数点以下3桁表示。

  1. 解答
s = "  42\n"
n = int(s)  # int() は先頭・末尾の空白や改行を無視してくれる -> 42
Python

解説:int() は周囲の空白や改行を扱えるのでそのままでOK。もし心配なら s.strip() を使う。

  1. 解答例
lst = ["10", "20", "30"]
nums = [int(x) for x in lst]
total = sum(nums)
print(total)  # 60
Python

解説:リスト内包表記で int() を適用し、sum() で合計。


10) もう少し役立つ小技(覚えると便利)

  • s.strip():先頭・末尾の空白を削る。
  • s.replace(",", ""):数値文字列に含まれるカンマを除去。
  • int(float(s))"3.14" を整数にしたい場合(注意:小数点以下は切り捨て)。
  • type(x):変数の型を確認するときに便利(デバッグ用)。

最後に(おすすめの学習手順)

  1. 上のサンプルコードを実際に Python で実行してみる。
  2. input() を使ったコードを動かして、想定外の入力(空文字、文字列)を入れて例外処理を試す。
  3. 小さな課題(電卓、CSVから数値読み込み)を作って実践的に練習する。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました