Python | 文字列と数値

Python
スポンサーリンク

「見た目が数字でも、コンピューターにとっては“文字”か“数”かでまったく別物」。ここを押さえると、エラーに悩まされずにグッと楽になります。例題を交えながら、文字列と数値の違い・変換の方法・よくあるつまずきポイントを丁寧に解説します。


文字列と数値の違い

  • 文字列: 「文字の並び」。数字っぽく見えても “文字” として扱われます
    • 例: "123", "こんにちは", "3.14"
  • 数値: 計算できる値。整数と小数があります
    • 例: 123(整数), 3.14(小数)

例題1:足し算ができるのはどっち?

print(2 + 3)        # 5  ← 数値どうしの足し算
print("2" + "3")    # "23" ← 文字列どうしの連結(くっつける)
print("2" + 3)      # エラー ← 文字列と数値は直接まぜられない
Python
  • ポイント: "2" + "3" は「23」になります。計算ではなく「くっつけ」だからです。

文字列を数値に変換(int と float)

  • 整数へ: int("123")123
  • 小数へ: float("3.14")3.14

例題2:文字列から計算へ

a = "100"
b = "200"
# 文字列のままだと連結
print(a + b)  # "100200"

# 数値に変換して足し算
print(int(a) + int(b))  # 300
Python
  • ポイント: 計算したいなら、まず数値に変換。

例題3:小数を含む文字列

price = "199.5"
tax = 0.1
total = float(price) * (1 + tax)
print(total)  # 219.45
Python
  • ポイント: "199.5"int() だとエラー、小数を扱うなら float()

数値を文字列に変換(str)

  • 文字列へ: str(123)"123"

例題4:メッセージに数値を混ぜる

height = 172
print("身長は " + str(height) + " cm です")
# f文字列を使うともっと簡単
print(f"身長は {height} cm です")
Python
  • ポイント: 文章を作るときは数値を文字列にするか、f"..." の中にそのまま埋め込む。

よくあるつまずきと対処法

  • 数字以外が混ざっている:int("123cm") はエラー
    • 対処: 数字部分だけ取り出す、または入力方法を見直す
  • 空文字・空白:int("")int(" ") はエラー
    • 対処: 事前に空チェック、strip() で前後の空白を除去
  • 全角数字:int("123") はエラーになることが多い
    • 対処: 半角に直す(ライブラリや正規表現で対応)
  • 小数を整数に変換:int("3.14") はエラー
    • 対処: 小数なら float("3.14") を使う

例題5:安全に変換してみる

text = "  42  "
clean = text.strip()     # 前後の空白を削除
number = int(clean)      # 42
print(number * 2)        # 84
Python

入力(input)と型変換の定石

  • input() は必ず文字列が返る: そのままでは計算できない
  • 定石: 受け取ったら必要な型に変換

例題6:ユーザー入力で計算

age_text = input("年齢を入力してください: ")  # 例: "20"
# 文字列 → 整数
age = int(age_text)
print(f"来年は {age + 1} 歳ですね")
Python

例題7:エラーを避ける(初心者向けの最低限の守り)

value_text = input("数字を入力してください: ")

if value_text.isdigit():           # 0〜9だけの半角なら True
    value = int(value_text)
    print(f"2倍は {value * 2}")
else:
    print("半角の整数を入力してください")
Python
  • ポイント: isdigit() は「負号」「小数点」を含むと False。マイナスや小数を許すなら別のチェックが必要。

実践ミニ問題(答えつき)

問題1:合計金額を計算

  • 条件: 価格 "1200"、個数 "3"(どちらも文字列)を足し算ではなく掛け算して合計を表示
price_text = "1200"
qty_text = "3"

price = int(price_text)
qty = int(qty_text)
total = price * qty
print(f"合計は {total} 円です")  # 合計は 3600 円です
Python

問題2:消費税を含む合計の小数計算

  • 条件: 本体価格 "980.5" に消費税 10% を足した合計を表示(小数もOK)
base_text = "980.5"
tax_rate = 0.10

base = float(base_text)
total = base * (1 + tax_rate)
print(f"税込合計は {total} 円です")  # 税込合計は 1078.55 円です
Python

問題3:文字列の連結と数値の計算の違いを確認

print("100" + "20")         # "10020" ← 連結
print(int("100") + 20)      # 120     ← 計算
print(f"{100}{20}")         # "10020" ← f文字列でも中身は文字列
Python

まとめ

  • 文字列と数値は別もの: 見た目が数字でも文字列なら計算不可
  • 変換の基本: 計算は int()/float()、メッセージは str()/f"..."
  • 入力の鉄則: input() は文字列。使う前に必ず型変換
  • つまずき対策: 空白・全角・小数・記号の混入に注意して、必要なら前処理やチェックを入れる
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました