「見た目が数字でも、コンピューターにとっては“文字”か“数”かでまったく別物」。ここを押さえると、エラーに悩まされずにグッと楽になります。例題を交えながら、文字列と数値の違い・変換の方法・よくあるつまずきポイントを丁寧に解説します。
文字列と数値の違い
- 文字列: 「文字の並び」。数字っぽく見えても “文字” として扱われます
- 例:
"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()は文字列。使う前に必ず型変換 - つまずき対策: 空白・全角・小数・記号の混入に注意して、必要なら前処理やチェックを入れる
