変数とデータ型¶
この章で学ぶこと¶
- 変数の概念と代入の仕方
- Python の基本データ型(int, float, str, bool)
- 型変換(キャスト)の方法
- 算術演算子・比較演算子・論理演算子
input()によるキーボード入力の受け取り- 初心者がよく陥るミスとその対策
変数とは¶
変数(variable)は、値を格納するための「名前付きの箱」です。プログラムの中でデータを保持し、後から参照・変更するために使います。
変数への代入¶
Python では =(代入演算子)を使って変数に値を代入します。
# 変数に値を代入する
x = 10
name = "太郎"
pi = 3.14
# 変数の値を表示する
print(x) # 10
print(name) # 太郎
print(pi) # 3.14
変数名のルール
- 英字(a-z, A-Z)、数字(0-9)、アンダースコア(_)が使える
- 数字で始めることはできない(
1nameは不可、name1は可) - Python の予約語(
if,for,classなど)は使えない - 大文字と小文字は区別される(
Nameとnameは別の変数) - 慣習として、変数名は小文字とアンダースコアで書く(例:
student_name)
よい変数名をつけよう
変数名は「何を表しているか」が一目でわかるようにつけましょう。x や a のような短い名前は、ループカウンタなど用途が明らかな場合を除き避けるべきです。
変数の再代入¶
変数にはいつでも新しい値を代入できます。
x = 10
print(x) # 10
x = 20 # 新しい値を代入(上書き)
print(x) # 20
x = x + 5 # 現在の値に 5 を加えた結果を再代入
print(x) # 25
実行例¶
>>> x = 42
>>> print(x)
42
>>> x = x + 8
>>> print(x)
50
>>> type(x)
<class 'int'>
>>> name = "Python"
>>> type(name)
<class 'str'>
基本データ型¶
Python には様々なデータ型がありますが、まずは以下の 4 つを覚えましょう。
基本データ型の比較表¶
| データ型 | 説明 | 例 | ミュータブル |
|---|---|---|---|
int |
整数 | 42, -5, 0 |
いいえ |
float |
浮動小数点数 | 3.14, -0.5, 1.0 |
いいえ |
str |
文字列 | "hello", 'Python' |
いいえ |
bool |
真偽値 | True, False |
いいえ |
int(整数型)¶
小数点のない数値です。
age = 20
count = -5
big_number = 1_000_000 # アンダースコアで桁区切りができる(読みやすさのため)
print(type(age)) # <class 'int'>
float(浮動小数点数型)¶
小数点を含む数値です。
浮動小数点数の誤差
コンピュータは小数を 2 進数で表現するため、わずかな誤差が生じることがあります。
金額計算など正確さが求められる場面では、decimal モジュールの使用を検討してください。
str(文字列型)¶
テキストデータを表します。シングルクォート ' またはダブルクォート " で囲みます。
複数行の文字列はトリプルクォートで囲みます。
bool(真偽値型)¶
True(真)または False(偽)の 2 つの値だけを持ちます。条件分岐やループの制御に使います。
型の確認
type() 関数を使うと、値や変数のデータ型を確認できます。学習中に「この値は何型だろう?」と思ったら積極的に使いましょう。
型変換(キャスト)¶
異なるデータ型の間で値を変換することを型変換(キャスト)と言います。
# int → str
age = 20
age_str = str(age) # "20"(文字列)
# str → int
num_str = "42"
num = int(num_str) # 42(整数)
# str → float
pi_str = "3.14"
pi = float(pi_str) # 3.14(浮動小数点数)
# float → int(小数部分は切り捨て)
score = 85.7
score_int = int(score) # 85
真偽値への変換¶
Python では、あらゆる値を bool() で真偽値に変換できます。以下の値は False になり、それ以外はすべて True になります。
# False になる値
print(bool(0)) # False(整数の 0)
print(bool(0.0)) # False(浮動小数点数の 0)
print(bool("")) # False(空文字列)
print(bool([])) # False(空リスト)
print(bool(None)) # False(None)
# True になる値
print(bool(1)) # True(0 以外の整数)
print(bool(-1)) # True(負の数も True)
print(bool("a")) # True(空でない文字列)
print(bool([1])) # True(空でないリスト)
変換できない場合はエラーになる
数値に変換できない文字列を int() や float() に渡すとエラーが発生します。
よくある間違い
float 形式の文字列を直接 int に変換しようとする:
演算子¶
算術演算子¶
数値の計算に使う演算子です。
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
+ |
加算 | 7 + 3 |
10 |
- |
減算 | 7 - 3 |
4 |
* |
乗算 | 7 * 3 |
21 |
/ |
除算(結果は float) | 7 / 3 |
2.3333... |
// |
整数除算(切り捨て) | 7 // 3 |
2 |
% |
剰余(余り) | 7 % 3 |
1 |
** |
累乗 | 2 ** 3 |
8 |
a = 10
b = 3
print(a + b) # 13
print(a - b) # 7
print(a * b) # 30
print(a / b) # 3.3333333333333335
print(a // b) # 3
print(a % b) # 1
print(a ** b) # 1000
よくある間違い
/ と // の混同:
/ は常に float を返し、// は切り捨て除算を行います。整数同士の割り算でも / は float になります。
>>> 10 / 2
5.0 # float が返る(int ではない!)
>>> 10 // 2
5 # int が返る
>>> 7 / 2
3.5 # 通常の除算
>>> 7 // 2
3 # 切り捨て除算
特に「割り算の結果を整数として使いたい」ときに / を使ってしまうと、予期しない float 値になることがあります。
複合代入演算子
計算と代入を同時に行うショートカットがあります。
比較演算子¶
2 つの値を比較し、結果を True または False で返します。
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
== |
等しい | 5 == 5 |
True |
!= |
等しくない | 5 != 3 |
True |
< |
より小さい | 3 < 5 |
True |
> |
より大きい | 3 > 5 |
False |
<= |
以下 | 5 <= 5 |
True |
>= |
以上 | 3 >= 5 |
False |
よくある間違い
= と == の混同:
= は代入、== は比較です。条件式では必ず == を使います。
x = 10
# 間違い: = は代入なので、比較にはならない
# if x = 10: # SyntaxError!
# print("10です")
# 正しい: == で比較する
if x == 10:
print("10です")
異なる型の比較に注意:
論理演算子¶
複数の条件を組み合わせるときに使います。
| 演算子 | 意味 | 説明 |
|---|---|---|
and |
かつ | 両方とも True のとき True |
or |
または | どちらか一方が True のとき True |
not |
否定 | True と False を反転 |
age = 20
has_ticket = True
# and: 両方の条件を満たす必要がある
print(age >= 18 and has_ticket) # True
# or: どちらか一方を満たせばよい
print(age >= 65 or has_ticket) # True
# not: 条件を反転する
print(not has_ticket) # False
実行例¶
>>> 5 + 3
8
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3
>>> 10 % 3
1
>>> 2 ** 10
1024
>>> 5 == 5
True
>>> 5 != 3
True
>>> True and False
False
>>> True or False
True
>>> not True
False
キーボード入力(input 関数)¶
input() 関数を使うと、プログラム実行中にユーザーからキーボード入力を受け取ることができます。
よくある間違い
input() の戻り値は常に文字列であることを忘れる:
input() は常に str 型の値を返します。数値として使いたい場合は型変換が必要です。
# 間違い: 型変換を忘れる
age = input("年齢を入力してください: ") # "20" が入る(文字列)
print(age + 1) # TypeError: can only concatenate str (not "int") to str
# 正しい: int() で型変換する
age = int(input("年齢を入力してください: ")) # 20 が入る(整数)
print(age + 1) # 21
文字列の + と数値の + の違い:
入力を使った計算の例¶
# 2 つの数値を入力して合計を計算する
a = int(input("1 つ目の数を入力: "))
b = int(input("2 つ目の数を入力: "))
total = a + b
print("合計: " + str(total))
# f-string を使うとより簡潔に書ける(文字列の章で詳しく扱います)
print(f"合計: {total}")
入力値のバリデーション
ユーザーが数値以外を入力すると int() や float() で ValueError が発生します。実用的なプログラムでは、入力が正しいかどうかを確認するとよいでしょう。
# 入力値が整数かどうかを確認する例
text = input("整数を入力してください: ")
if text.isdigit():
num = int(text)
print(f"入力された数: {num}")
else:
print("整数ではありません")
ただし isdigit() は負の数や小数には対応していない点に注意してください。より堅牢な方法は try-except を使う方法です(例外処理を学んだ後に活用してください)。
よくある間違いのまとめ¶
よくある間違い
1. = と == の混同
# 間違い: 代入演算子を条件式で使っている
# if score = 100: # SyntaxError
# 正しい: 比較演算子を使う
if score == 100:
print("満点!")
2. input() の型変換忘れ
# 間違い: input() は文字列を返す
num = input("数値: ")
result = num * 2 # "55" のような文字列の繰り返しになる
# 正しい: 数値に変換してから計算する
num = int(input("数値: "))
result = num * 2 # 10 のような数値の計算になる
3. / と // の混同
4. 文字列と数値の結合
age = 20
# 間違い: 文字列と数値は直接結合できない
# print("年齢は" + age + "歳です") # TypeError
# 正しい方法 1: str() で変換する
print("年齢は" + str(age) + "歳です")
# 正しい方法 2: f-string を使う(推奨)
print(f"年齢は{age}歳です")
5. 変数名に予約語を使う
まとめ¶
- 変数は値を格納するための名前付きの箱であり、
=で代入する - Python の基本データ型は int(整数)、float(浮動小数点数)、str(文字列)、bool(真偽値)の 4 つ
int(),float(),str()などで型変換ができる- 算術演算子(
+,-,*,/,//,%,**)で数値計算を行う /は常にfloatを返し、//は切り捨て除算でintを返す- 比較演算子(
==,!=,<,>など)はTrue/Falseを返す =(代入)と==(比較)を混同しないこと- 論理演算子(
and,or,not)で複数の条件を組み合わせる input()の戻り値は常に文字列なので、数値として使う場合は型変換が必要