では 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
Python3) 文字列 → 数値(変換)
int("123")→123float("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)
Python4) 数値 → 文字列(結合や表示のため)
str(123)→"123"- f文字列(推奨):
f"値は{num}です"→ 変数をそのまま埋め込めて読みやすい。
age = 30
print("年齢は " + str(age) + " 歳です") # 古い書き方
print(f"年齢は {age} 歳です") # 推奨(読みやすい)
Pythonprint() はカンマで複数引数を渡すと自動でスペース挿入・文字列化してくれる:
print("年齢は", age, "歳です") # -> 年齢は 30 歳です
Python5) よくある落とし穴(と対処法)
"123" + 4はエラー(strとintの連結)。
→ 対処:int("123") + 4か"123" + str(4)。input()は常に文字列を返す。数値として使うなら変換が必要。n = int(input("整数を入力: "))変換失敗に備えてtry/exceptするのが安全。.isdigit()は便利だが完全ではない:"-5"や"3.14"はFalse。マイナスや小数を判定できない。
→ 通常はtry: int(s)/float(s)を試す方法が確実。- 小数の丸めや表示フォーマット:
f"{pi:.2f}"で小数点以下2桁に整形(表示用)。数値そのものは丸めない。
6) 表示フォーマット(数字の見た目を整える)
pi = 3.14159265
print(f"{pi:.2f}") # -> 3.14 (小数点以下2桁で表示)
print(f"{1234567:,}")# -> 1,234,567(桁区切り)
Python7) 実務でよく使うパターン(サンプル)
- ユーザー入力を受け取り数値で計算:
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
Python8) 練習問題
- 文字列
"100"と整数50を足して150にするコードを書け。 - ユーザーに年齢を入力させ、入力が整数なら
来年は (年齢 + 1) 歳ですと表示する。変換できなければエラーメッセージを出す。 - 文字列
"3.14"を使って円周を計算(半径 2 のとき)。結果を小数点以下3桁で表示。 - 文字列
" 42\n"を整数 42 に変換するには? - リスト
["10", "20", "30"]を数値に変換して合計を出すコードを書け。
9) 解答と解説
- 解答例
a = "100"
b = 50
result = int(a) + b
print(result) # 150
Python解説:a を int() で整数に変換してから足す。
- 解答例
s = input("年齢を入力してください: ")
try:
age = int(s)
print(f"来年は {age + 1} 歳です")
except ValueError:
print("整数を入力してください。")
Python解説:input() は文字列なので int() で変換。失敗を except で捕まえる。
- 解答例
s = "3.14"
r = 2
pi = float(s)
circumference = 2 * pi * r
print(f"円周は {circumference:.3f}") # -> 12.560
Python解説:float("3.14") で数値にし、:.3f で小数点以下3桁表示。
- 解答
s = " 42\n"
n = int(s) # int() は先頭・末尾の空白や改行を無視してくれる -> 42
Python解説:int() は周囲の空白や改行を扱えるのでそのままでOK。もし心配なら s.strip() を使う。
- 解答例
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):変数の型を確認するときに便利(デバッグ用)。
最後に(おすすめの学習手順)
- 上のサンプルコードを実際に Python で実行してみる。
input()を使ったコードを動かして、想定外の入力(空文字、文字列)を入れて例外処理を試す。- 小さな課題(電卓、CSVから数値読み込み)を作って実践的に練習する。
