Python / LESSON 02 / PY02

Python:変数とデータ型

1学習の目的

2基礎解説

変数は「データに付ける名前付きの箱(ラベル)」です。= で代入します。

名称用途
int整数42, -3個数・件数
float浮動小数点数3.14, 0.5金額計算・比率
str文字列"hello"名前・メッセージ
bool真偽値True / Falseフラグ・条件判定
NoneType値なしNone「未設定」の表現
✅ 覚えるべき重要ポイント
  1. 変数宣言に型指定は不要。x = 10 だけで型が自動判定される(動的型付け)。
  2. type() でいつでも型を確認できる。デバッグの基本動作。
  3. 文字列と数値は + で直接連結できない。str() / int() / float() で変換する。
  4. 変数名はスネークケース(例:user_name)。数字始まりと予約語は不可。
  5. 変数は上書き可能で、型も変わりうる。意図しない上書きはバグの温床。

現場使用例: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問)

PY02-D01 変数 name に自分の名前(文字列)、変数 age に年齢(整数)を代入し、それぞれ print() で出力せよ。 コーディング★☆☆無料
期待される結果

name が str / age が int /出力2行

ヒント

文字列は "..." で囲む。数値は囲まない。

模範解答
name = "田中"
age = 28
print(name)
print(age)
解説

文字列にはクォートが必須、数値には不要。この区別が型の第一歩。

PY02-D02 x = 3.0 としたとき、type(x) の結果はどれか。
A. int B. float C. str D. エラー
選択★☆☆無料
期待される結果

解答 == B

ヒント

小数点が付いているかに注目。

模範解答
B
解説

3.0 は小数点を含むため float。3 なら int になる。

PY02-D03 文字列 "100" を整数に変換して変数 n に代入するコードを完成させよ。 穴埋め★☆☆無料
コード
n = ____("100")
期待される結果

n == 100 かつ type(n) is int

ヒント

整数の英語名の短縮形。

模範解答
n = int("100")
解説

int() は文字列→整数の変換関数。CSVやフォーム入力の処理で頻出。

PY02-D04 変数 a = 7, b = 3 を定義し、和・差・積・商を4行で出力せよ。 コーディング★☆☆無料
期待される結果

出力が 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 を返す。整数の商が欲しい場合は // を使う。

PY02-D05 正しい変数名として使えるものをすべて選べ。
A. user_name B. 2nd_place C. for D. totalPrice
選択★☆☆無料
期待される結果

解答 == A, D

ヒント

数字始まりと予約語はNG。

模範解答
A, D
解説

Bは数字始まり、Cは予約語で不可。Dは動くがPythonの慣習はスネークケース(A形式)。

PY02-D06 price = 2980 を定義し、「価格は2980円です」という文字列を + 連結で作って出力せよ(f-stringは使わない)。 コーディング★★☆無料
期待される結果

出力 == 価格は2980円です

ヒント

int と str は直接 + できない。

模範解答
price = 2980
print("価格は" + str(price) + "円です")
解説

str() で型を揃えてから連結。型不一致は実務で最も多い初心者エラーの一つ。

PY02-D07 次のコードの出力が True になるよう空欄を埋めよ。 穴埋め★★☆無料
コード
x = "5"
y = 5
print(____(x) == y)
期待される結果

出力 == True

ヒント

文字列 "5" を数値に揃える。

模範解答
int
解説

"5" == 5 は False(型が違う)。比較前の型変換は実務のデータ照合で必須。

PY02-D08 変数 x = 10 を定義したあと、x に 5 を加えた結果で x 自身を上書きし、出力せよ(複合代入演算子を使用)。 コーディング★★☆無料
期待される結果

出力 == 15

ヒント

+= を使う。

模範解答
x = 10
x += 5
print(x)
解説

x += 5 は x = x + 5 の短縮形。集計処理のカウンタで多用する。

PY02-D09 print(int(3.9)) の出力はどれか。
A. 4 B. 3.9 C. 3 D. エラー
選択★★☆無料
期待される結果

解答 == C

ヒント

int() は四捨五入ではない。

模範解答
C
解説

int() は小数部を切り捨てる。四捨五入したいなら round()。金額計算での混同事故が多い。

PY02-D10 変数 a = 1, b = 2 の値を入れ替え、a, b の順で出力せよ(Pythonらしい1行の入れ替えを使うこと)。 コーディング★★☆無料
期待される結果

出力が 2, 1 の順

ヒント

a, b = b, a

模範解答
a = 1
b = 2
a, b = b, a
print(a)
print(b)
解説

多重代入はPython特有の簡潔な書き方。一時変数が不要になる。

4実践シナリオ(5問)

PY02-S01 【ECサイトの価格表示】商品価格 price = 4980(税抜)と税率 tax_rate = 0.1 から税込価格(整数、小数切り捨て)を計算し、「税込5478円」と出力せよ。 コーディング★★☆無料
期待される結果

出力 == 税込5478円

ヒント

計算結果は float になるので int() で整数化。

模範解答
price = 4980
tax_rate = 0.1
total = int(price * (1 + tax_rate))
print("税込" + str(total) + "円")
解説

float→intの切り捨てと文字列連結の複合。実際の商品表示ロジックの最小形。

PY02-S02 【アンケートフォーム処理】フォームから届いた年齢は文字列 age_input = "34" である。整数に変換し、10年後の年齢を「10年後は44歳です」と出力せよ。 コーディング★★☆無料
期待される結果

出力 == 10年後は44歳です

ヒント

まず int()、計算後に str()。

模範解答
age_input = "34"
age = int(age_input)
print("10年後は" + str(age + 10) + "歳です")
解説

Web入力は常に文字列で届く。「受信→変換→計算→出力」は業務処理の基本パターン。

PY02-S03 【勤怠管理】労働時間 work_hours = 7.5(float)と時給 hourly_wage = 1200(int)から日給を計算し、「日給9000円」と出力せよ。さらに計算結果の型を type() で出力せよ。 コーディング★★★無料
期待される結果

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円」——実務でよくある表示バグ。

PY02-S04 【在庫フラグ管理】在庫数 stock = 0 を定義し、在庫が1以上かどうかを表す bool 値を変数 is_available に代入して出力せよ(if文は使わず比較演算子のみ)。 コーディング★★★無料
期待される結果

出力 == False/type(is_available) is bool

ヒント

比較式そのものが bool を返す。

模範解答
stock = 0
is_available = stock >= 1
print(is_available)
解説

「比較結果を変数に保存する」発想はフラグ設計の基本。後続のif文学習の土台。

PY02-S05 【会員データの初期化】user_id = 1001(int)、user_name = "佐藤"(str)、points = 0(int)、last_login = None を定義せよ。last_login が未設定(None)かを is 演算子で判定した結果を出力し、最後に4変数の型を1行ずつ出力せよ。 コーディング★★★無料
期待される結果

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仕上げ課題

PY02-FINAL 【飲食店の売上日報スクリプト】以下の仕様を満たすスクリプトを書け。

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処理」という実務バッチ処理の縮図。