Python:変数とデータ型
1学習の目的
- プログラムで扱うすべてのデータ(数値・文字・真偽)を「名前を付けて保存・再利用」できるようになる。
- 現場では設定値の管理、APIレスポンスの一時保持、計算結果の受け渡しなど、書くコードの100%に登場する最重要基礎。
- 型を意識できると「"1" + 1」のような型エラーを未然に防ぎ、バグ調査時間を大幅に削減できる。
2基礎解説
変数は「データに付ける名前付きの箱(ラベル)」です。= で代入します。
| 型 | 名称 | 例 | 用途 |
|---|---|---|---|
| int | 整数 | 42, -3 | 個数・件数 |
| float | 浮動小数点数 | 3.14, 0.5 | 金額計算・比率 |
| str | 文字列 | "hello" | 名前・メッセージ |
| bool | 真偽値 | True / False | フラグ・条件判定 |
| NoneType | 値なし | None | 「未設定」の表現 |
- 変数宣言に型指定は不要。x = 10 だけで型が自動判定される(動的型付け)。
- type() でいつでも型を確認できる。デバッグの基本動作。
- 文字列と数値は + で直接連結できない。str() / int() / float() で変換する。
- 変数名はスネークケース(例:user_name)。数字始まりと予約語は不可。
- 変数は上書き可能で、型も変わりうる。意図しない上書きはバグの温床。
現場使用例:ECサイトの税込価格計算(int × float)、CSVから読んだ文字列 "1200" の数値化、ユーザー入力の有無を None チェックで判定。
# 変数の定義(型指定は不要) item_name = "ノートPC" # str型 price = 128000 # int型 tax_rate = 0.1 # float型 in_stock = True # bool型 print(type(price)) # <class 'int'> total = price * (1 + tax_rate) # 140800.0 (float) message = item_name + "の税込価格は" + str(int(total)) + "円です" print(message)
3基本ドリル(10問)
name が str / age が int /出力2行
文字列は "..." で囲む。数値は囲まない。
name = "田中" age = 28 print(name) print(age)
文字列にはクォートが必須、数値には不要。この区別が型の第一歩。
A. int B. float C. str D. エラー 選択★☆☆無料
解答 == B
小数点が付いているかに注目。
B
3.0 は小数点を含むため float。3 なら int になる。
n = ____("100")
n == 100 かつ type(n) is int
整数の英語名の短縮形。
n = int("100")
int() は文字列→整数の変換関数。CSVやフォーム入力の処理で頻出。
出力が 10, 4, 21, 2.333... の順
商は / を使う(Python 3では常にfloatになる)。
a = 7 b = 3 print(a + b) print(a - b) print(a * b) print(a / b)
/ は必ず float を返す。整数の商が欲しい場合は // を使う。
A. user_name B. 2nd_place C. for D. totalPrice 選択★☆☆無料
解答 == A, D
数字始まりと予約語はNG。
A, D
Bは数字始まり、Cは予約語で不可。Dは動くがPythonの慣習はスネークケース(A形式)。
出力 == 価格は2980円です
int と str は直接 + できない。
price = 2980
print("価格は" + str(price) + "円です")
str() で型を揃えてから連結。型不一致は実務で最も多い初心者エラーの一つ。
x = "5" y = 5 print(____(x) == y)
出力 == True
文字列 "5" を数値に揃える。
int
"5" == 5 は False(型が違う)。比較前の型変換は実務のデータ照合で必須。
出力 == 15
+= を使う。
x = 10 x += 5 print(x)
x += 5 は x = x + 5 の短縮形。集計処理のカウンタで多用する。
A. 4 B. 3.9 C. 3 D. エラー 選択★★☆無料
解答 == C
int() は四捨五入ではない。
C
int() は小数部を切り捨てる。四捨五入したいなら round()。金額計算での混同事故が多い。
出力が 2, 1 の順
a, b = b, a
a = 1 b = 2 a, b = b, a print(a) print(b)
多重代入はPython特有の簡潔な書き方。一時変数が不要になる。
4実践シナリオ(5問)
出力 == 税込5478円
計算結果は float になるので int() で整数化。
price = 4980
tax_rate = 0.1
total = int(price * (1 + tax_rate))
print("税込" + str(total) + "円")
float→intの切り捨てと文字列連結の複合。実際の商品表示ロジックの最小形。
出力 == 10年後は44歳です
まず int()、計算後に str()。
age_input = "34"
age = int(age_input)
print("10年後は" + str(age + 10) + "歳です")
Web入力は常に文字列で届く。「受信→変換→計算→出力」は業務処理の基本パターン。
1行目 == 日給9000円/2行目に float
float × int の結果の型は?
work_hours = 7.5
hourly_wage = 1200
salary = work_hours * hourly_wage
print("日給" + str(int(salary)) + "円")
print(type(salary))
float が混ざる計算は結果も float。整数化を忘れると「9000.0円」——実務でよくある表示バグ。
出力 == False/type(is_available) is bool
比較式そのものが bool を返す。
stock = 0 is_available = stock >= 1 print(is_available)
「比較結果を変数に保存する」発想はフラグ設計の基本。後続のif文学習の土台。
1行目 == True/以降 int, str, int, NoneType の順
None の判定は == None ではなく is None が慣習。
user_id = 1001 user_name = "佐藤" points = 0 last_login = None print(last_login is None) print(type(user_id)) print(type(user_name)) print(type(points)) print(type(last_login))
None は「値が存在しない」を表す実務頻出の型。DBのNULLに相当し、is None 判定はAPI開発で毎日使う。
5仕上げ課題
1. 次のデータを適切な型で定義:店舗名 "カフェひまわり"/客数(文字列で届く)"48"/客単価 850/営業中フラグ True/前日メモ 未設定(None)
2. 客数を整数に変換し、売上(客数×客単価)を計算
3. 次の形式で出力:
===売上日報===
店舗:カフェひまわり
客数:48人
売上:40800円
営業中:True
前日メモ:なし
※前日メモは None の場合「なし」と表示("なし" if memo is None else memo)
出力6行が完全一致/客数が int 変換済み/売上 == 40800
文字列連結が多い場合は各行を個別に print() すると整理しやすい。
shop_name = "カフェひまわり"
guest_input = "48"
unit_price = 850
is_open = True
memo = None
guests = int(guest_input)
sales = guests * unit_price
print("===売上日報===")
print("店舗:" + shop_name)
print("客数:" + str(guests) + "人")
print("売上:" + str(sales) + "円")
print("営業中:" + str(is_open))
print("前日メモ:" + ("なし" if memo is None else memo))
「文字列入力の数値化→計算→型を揃えて整形出力→None処理」という実務バッチ処理の縮図。