順番に読み進めながら学べます

変数とデータ型

Python の変数とデータ型の基本を学びます。宣言と代入から命名ルール、int / str の型変換まで初心者向けに一通り図解で押さえます。

変数とは何か

変数(variable)を用いればその変数の箱にデータを入れることができます。たとえば x = 10 と書くと、x に整数 10 を入れられます。

また同じ変数名で値を取り出したり、書き換えたりできます。

変数と値の関係
変数名(x)(10)メモリ参照格納

変数名が値を参照したら、値がメモリ上に格納されます

では実際にターミナルで試してみましょう。ターミナルに「x = 10」と「print(x)」を入力して実行してみてください。

Python エディタ

コードを実行してください

右画面に10と表示されましたか?これは print(x) の実行結果です。

print(変数) とすると、その変数の中身を画面上に表示できます。

一方、まだ代入していない変数を使おうとすると NameError が発生します。これは「その名前の変数が存在しない」とPythonが判断するためです。

変数は必ず代入してから使う必要があります。

ターミナルで実際にエラーを確認してみましょう。

Python エディタ

コードを実行してください

型とは何か

変数に入れるデータには(type)があります。型とは「このデータが何者か」を示すラベルのようなものです。

たとえば 10整数(int)"hello"文字列(str)という型を持っています。

整数型(int)

int整数を扱う型です。小数点のない数値はすべて int として扱われます。

足し算・引き算・掛け算・割り算などの算術演算が直接使えるのが特徴です。

type() 関数に渡すと <class 'int'> と表示され、int型だと確認できます。

int型 の基本
10(数値そのもの)int型10 + 5= 1510 * 3= 30<class 'int'>型が決まる加算乗算タイプ表示
a = 10
b = 3

print(a + b)   # 13(加算)
print(a - b)   # 7 (減算)
print(a * b)   # 30(乗算)
print(a // b)  # 3 (整数除算:小数切り捨て)
print(a % b)   # 1 (剰余:割り算の余り)

print(type(a)) # <class 'int'>

total_minutes = 130(合計分数)が用意されています。

整数除算 // を使って「何時間ぶんか」、剰余 % を使って「残り分」を計算し、それぞれ print() で表示してください。

type() を使って total_minutes の型を表示してください。

Python エディタ

コードを実行してください

文字列型(str)

str文字列を扱う型です。シングルクォート '...' またはダブルクォート "..." で囲んだ値が str になります。

+ で文字列を連結したり、len()文字数を取得したりできます。

数字を "10" のようにクォートで囲むと str になり、そのままでは計算に使えません。

str型 の基本
"hello"文字列リテラルstr型"hello" + "!"= "hello!"len("hello")= 5型が決まる連結文字数

文字列リテラルから str型が生成され、連結や文字数取得に使われる

greeting = "hello"
name = "Alice"

print(greeting + ", " + name + "!") # hello, Alice!
print(len(greeting))                 # 5(文字数)

# 注意:"10" は str なので計算できない
num_str = "10"
# print(num_str + 5)  # TypeError!
print(int(num_str) + 5)              # 15(int()で変換すればOK)

print(type(greeting))                # <class 'str'>

変数 name = "Alice"score = "95" が用意されています。

+ を使って "Aliceのスコアは95点です。" と表示してください。

len() を使って name の文字数を表示してください。

Python エディタ

コードを実行してください

異なる型の操作

型が違うと、できる操作も変わります。整数同士は足し算できますが、整数と文字列を足そうとすると TypeError が発生します。

以下のコードで、int型とstr型を混ぜた演算がどうなるか確認してみましょう。

age = 25          # int型
name = "Alice"    # str型

# int同士はOK
print(age + 10)          # 35

# str同士はOK(連結)
print(name + "!")        # Alice!

# int + str はエラー
# print(age + name)      # TypeError: unsupported types for __add__: 'int', 'str'

# str() で変換すれば連結できる
print(str(age) + "歳")   # 25歳

実行してTypeErrorとなることを確認してください

Python エディタ

コードを実行してください

変数の宣言と代入

Pythonは動的型付け(dynamic typing)と呼ばれる言語で、JavaやC言語のように int x; と型を先に書く必要がありません。

= を使って右辺の値を左辺の変数名に代入するだけで変数を定義できます。

また、一度代入した変数に別の値を再代入することも可能です。

動的型付け vs 静的型付け
動的型付け(Python)x = 10→ int型x = 'hello'→ str型静的型付け(Java / C)int x = 10型宣言が必須x = 'hello'コンパイルエラー代入再代入OK型宣言型が違う

Pythonは実行時に型が決まる(動的)、JavaやCはコンパイル時に型が固定される(静的)

以下は、変数に値を代入・再代入している例です。Pythonでは、変数に値を代入する際に型を指定せずに代入することができ、再代入も自由にできます。

# 変数への代入
name = "Alice"
age = 25

# 再代入(値の上書き)
age = 26

# 複数変数に異なる値を同時に代入(まとめて1行で書ける)
x, y, z = 1, 2, 3

以下の3つを順番に行い、それぞれ print() で表示してください。

① 変数 city"Tokyo" を代入して表示する。

city"Osaka" に再代入して表示する(同じ変数に上書きできることを確認)。

a, b, c10, 20, 30 を同時に代入し、3つをまとめて表示する。

Python エディタ

コードを実行してください

変数の命名ルール

変数名は自由に付けられますが、いくつかの書き方のルールがあります。

- 使える文字は英字(a-z, A-Z)、数字(0-9)、アンダースコア(_)の3種類

- 先頭は英字かアンダースコアのみ(数字で始めることはできない)

- 大文字と小文字は区別される(ageAge は別の変数)

変数名OK / NG理由
user_nameOK英字とアンダースコアの組み合わせ
age2OK英字で始まり、途中に数字を含むのは問題ない
_totalOKアンダースコアで始まるのは許容
2nd_userNG先頭に数字は使えない
user-nameNGハイフンは使えない
user nameNGスペースを含めない

加えて、Python があらかじめ意味を決めている予約語(キーワード)は変数名にできません。for / if / class / return / True / None / import など 35 個あり、これらを変数名にしようとすると SyntaxError が発生します。

ルールに反した変数名を実行するとどうなるか確認してみましょう。

Python エディタ

コードを実行してください

定数 — 変更しない値の書き方

プログラム中で一度決めたら変更しない値定数と呼ばれ、Python では慣例的にすべて大文字とアンダースコアで書きます。

たとえばコードの中に突然 20 とだけ書いてあると、読み手には「なぜ 20 なのか」が伝わりません(この意味不明な数字マジックナンバーと呼びます)。先頭で LEGAL_AGE = 20 のように定数として名前を付けておけば、意味が一目で伝わり、値を変えたくなったときもその 1 行だけ直せば済むようになります。

# 定数は全部大文字 + アンダースコア
LEGAL_AGE = 20
MAX_RETRY = 3
PI = 3.14159

print(f"成人年齢は{LEGAL_AGE}歳")
print(f"最大リトライ回数: {MAX_RETRY}")
print(f"円周率は約{PI}")

Pythonに「本物の定数」はない

C や Java と違い、Python には書き換えを禁止する仕組みがありませんLEGAL_AGE = 20 と書いたあとに LEGAL_AGE = 25 と再代入してもエラーにはならず、値が変わってしまいます。全大文字は「変更しないでください」というプログラマー間の約束と覚えておきましょう。

定数を使って税込み価格を計算してみましょう。

① 消費税率を表す定数 TAX_RATE0.1 を代入する。

② 商品価格 price980 を代入する。

③ 税込み価格(price × (1 + TAX_RATE))を計算して print() で表示する。

Python エディタ

コードを実行してください

型の確認と変換

type() 関数を使うと変数のデータ型(どの種類のデータか)を確認できます。また、int() / str() などの組み込み関数(Pythonに初めから備わっている関数)を使うことで、値を別の型に変換(型変換またはキャストともいう)できます。

たとえばユーザーが入力した文字列の数字を計算に使いたいときは、int() で整数型に変換する必要があります。

以下の例では、型の確認と型変換を行なっています。

# 型の確認
x = 42
print(type(x))        # <class 'int'>
print(type("hello"))  # <class 'str'>

# 型変換
num_str = "100"
num_int = int(num_str)   # str → int
back_to_str = str(num_int)  # int → str

print(num_int + 50)  # 150
型変換の流れ
"100"str型int()変換100int型str()変換"100"str型渡すstr→int渡すint→str

商品の価格が文字列 price_str = "1980" として与えられています。

int() で整数に変換し、消費税10%を加えた税込み価格を計算して表示してください。

type() を使って、変換前(price_str)と変換後(price_int)の型を表示してください。

Python エディタ

コードを実行してください

型変換できない場合は ValueError

数値として解釈できない文字列を int()float() に渡すと ValueError が発生します。例えば int("abc")float("hello") はエラーになります。ユーザー入力などを変換する際は try / except で例外処理を行いましょう。

実行すると ValueError が発生するので確認をしてみてください。ValueError に対処するには、例外処理が必要となります。

Python エディタ

コードを実行してください

この記事では、変数の使い方と int型・str型 の基本、そして動的型付けの仕組みを学びました。

type() による型の確認や int() / str() を使った型変換、変換失敗時の ValueError まで、Pythonのデータ型の基礎をひととおり押さえました。

QUIZ

理解度チェック

まずは1問ずつ答えてみましょう。

Q1次のうち、変数名として使えないものはどれですか?

Q2次のコードの実行結果はどれですか?
x = str(3.14)
print(type(x))

Q3次のコードの実行結果はどれですか?
x = "10"
print(int(x) + 5)