【Python】変数の「基本的な使い方」と「データ型の種類」

Python入門者向けに変数の「基本的な使い方」と「データ型の種類」について、RPGゲームを例にわかりやすく解説します。

「変数」とは?

プログラミング初心者向けに、Pythonの「変数」や「データ型」をRPGゲームの世界で例えながら解説します。

変数(へんすう)」とは、あとで使うために名前をつけてデータを保存しておく箱のようなものです。たとえば、次のコードを実行すると、「こんにちは」とコンソール画面に表示されます。

a = "こんにちは"
print(a)

イコール「=」は、数学の「左右が同じ」という意味ではなく、右側の値を左側の変数に入れるという「代入(だいにゅう)」の記号です。つまり、1行目では、「a」という名前の箱に「こんにちは」という言葉を入れています。そして、2行目ではprint()関数で「a」という名前の箱に入っている「こんにちは」という言葉を表示しています。

RPGゲームの例

RPGゲームで言えば、変数は、キャラの名前、HP、レベル、所持アイテムなどを保存するイメージです。

hero_name = "兎野ぴこり"  # 勇者の名前
hero_level = 5           # 勇者のレベル
hero_hp = 120            # 勇者のHP
has_sword = True         # 剣を持っているか

変数名 意味 格納されている値
hero_name 勇者の名前 兎野ぴこり
hero_level 勇者のLv 5
hero_hp 勇者のHP 120
has_sword 剣を持っているか True:真(持っている)

変数名の付け方

変数名は、以下のように「意味がわかる名前」にすることで、コードが読みやすくなります。

【✅ わかりやすい例】

hero_name = "兎野ぴこり"
hero_level = 5
hero_hp = 120
has_sword = True

【❌ わかりにくい例】

x = "兎野ぴこり"     # 何のデータかわからない
data1 = 120         # 意味不明

「意味がわかる名前」にするため、以下のルールに従って名前を付けるのが一般的です。(「PEP8」というスタイルガイドに基づいています)

  1. 1文字目英文字もしくはアンダーバー(_)
  2. 2文字目以降英数文字もしくはアンダーバー(_)
  3. 「単語」と「単語」の間にはアンダーバー(_)を入れる
変数名は、大文字と小文字は区別されます。また、予約語(and、del、for、is、raise、assert、elif、from、lambda、return、break、else、global、not、try、class、except、if、or、while、continue、exec、import、pass、yield、def、finally、in、print)は使用できません。

データ型の種類

データ型とは、変数に入れる「データの種類」のことです。たとえば、勇者の名前は文字列、HPは数値、アイテム一覧はリスト…といった具合です。Pythonで使える主なデータ型は以下のとおりです。(※これ以外にもデータ型はあります)

データ型 別名 値の形式 ゲームでの例
str 文字列型 テキスト(文字列) "兎野ぴこり"(勇者の名前)
"剣を手に入れた!"(ログメッセージ)
int 整数型 小数なしの数値(整数) 120(HP)
5(レベル)
9999(ダメージ)
float 浮動小数点型 小数点がある数値 3.5(魔法の威力)
0.75(クリティカル率)
bool 真偽値 True/False True(剣を持っている)
False(毒状態ではない)
list リスト 複数の値をまとめたもの ["ポーション", "剣", "盾"](所持アイテム)
[120, 80, 60](仲間のHP)
dict 辞書 キーと値のセット {"HP": 120, "MP": 30}(ステータス)
{"名前": "ぴこり", "Lv": 5}(プロフィール)

str(文字列)は、データを「”」(ダブルクォーテーション)もしくは「’」(シングルクォーテーション)で囲んで書きます。真偽値、リスト、辞書については別途解説します。(今回はこういうものがあるくらいに理解してもらえば十分です)

【データ型の選び方のヒント(RPGゲーム)】
・名前やセリフ → `str`(文字列型)
・数値(HP、レベル、攻撃力) → `int` (整数型)または `float`(浮動小数点型)
・状態(持ってる?倒した?) → `bool`(真偽値)
・複数のデータをまとめたい → `list`(リスト)
・項目ごとに名前をつけたい → `dict`(辞書)

Pythonでは、変数に値を代入するだけで自動的にデータ型が決まります(これを「動的型付け」といいます)。

hero_name = "兎野ぴこり"  # 勇者の名前(str型に決まる)
hero_level = 5           # 勇者のレベル(int型に決まる)
hero_hp = 120            # 勇者のHP(int型に決まる)
has_sword = True         # 剣を持っているか(真偽値型に決まる)

型の違いに注意

Pythonでは、データの型が違う変数同士で処理を行おうとすると、エラーになることがよくあります。

エラーになる例

hero_level = "5"     # 文字列("5"は数字っぽいけど、実は文字)
print(hero_level + 1) # ❌ エラー!文字列と数値は足せない

プラス記号「+」は、数値なら左右にある変数を足し算文字列ならくっつける(結合)というように、データ型によって動きが変わります。

エラーにならない例①(数値同士)

hero_level = 5        # 整数
print(hero_level + 1) # 左右にある変数を足し算し、結果は 6

エラーにならない例②(文字列同士)

hero_level = "5"        # 文字列
print(hero_level + "1") # ✅ 左右にある文字列をくっつけ、結果は "51"
データ型 + の意味 結果
int + int 足し算 5 + 1 6
str + str 結合 "5" + "1" "51"
str + int ❌ エラー "5" + 1 TypeError

Pythonでは、type()関数を使うことでこ「今この変数は何型か?」を確認できます。

hero_name = "兎野ぴこり"
print(type(hero_name))  # <class 'str'>

「定数」の書き方

定数とは「一度決めたら変えない値を入れる箱」です。ゲームで言えば、最大HPの上限や初期レベルなど、ルールとして固定されている値に使います。
Pythonには、定数だけを格納するための箱はありませんが、その代わりに変数名を「全部大文字+アンダースコア」で書くのが慣習です。(「PEP8」というスタイルガイドに基づいています)

MAX_HP = 999     # 最大HPの上限
START_LEVEL = 1  # 初期レベル

練習問題(基礎固め & 資格勉強用)

本ページで学んだ内容の基礎を固めるため、また「Python 3 エンジニア認定基礎試験」や「基本情報技術者試験」など、Python関連のIT資格の取得を目指す方に向けて、練習問題を作成しました。

【問題1】変数の代入

次のコードの意味として正しいものを選びなさい。

hero_name = "兎野ぴこり"

A. hero_name と “兎野ぴこり” は等しい
B. hero_name に “兎野ぴこり” を代入している
C. hero_name を “兎野ぴこり” に変換している
D. hero_name を表示している


正解:B
解説:Pythonの = は「代入」を意味します。
右側の値(”兎野ぴこり”)を左側の変数(hero_name)に入れる処理です。

【問題2】データ型の判定

次のコードの type() の出力として正しいものを選びなさい。

hero_hp = 120
print(type(hero_hp))

A. <class 'str'>
B. <class 'float'>
C. <class 'int'>
D. <class 'bool'>


正解:C
解説:変数 hero_hp に代入されている 120 は整数型(int)です。

【問題3】文字列の結合

次のコードの実行結果として正しいものを選びなさい。

first = "兎野"
last = "ぴこり"
print(first + last)

A. 兎野ぴこり
B. “兎野ぴこり”
C. エラーになる
D. 兎野 + ぴこり


正解:A
解説:文字列同士の + は「結合」を意味します。
変数 firstlast の中身がつながって「兎野ぴこり」と表示されます。

【問題4】型の違いによるエラー

次のコードを実行するとどうなるか選びなさい。

level = "5"
print(level + 1)

A. 6
B. “51”
C. エラーになる
D. “5 + 1”


正解:C
解説:文字列(”5″)と整数(1)を + で足すと型が違うためエラーになります。

【問題5】定数の書き方

Pythonで定数を表す慣習として正しいものを選びなさい。

A. max_hp = 999
B. MaxHp = 999
C. MAX_HP = 999
D. maxHP = 999


正解:C
解説:Pythonでは定数を表すとき、すべて大文字+アンダースコアで書くのが慣習です(PEP8)。

【問題6】変数名の命名ルール

次のうち、Pythonで有効な変数名として正しいものを選びなさい。

A. 2level
B. hero-level
C. hero_level
D. class


正解:C
解説:Pythonの変数名は英字またはアンダースコアで始め、予約語(classなど)は使えません。

【問題7】型の確認方法

次のコードの出力として正しいものを選びなさい。

hero_name = "兎野ぴこり"
hero_name = 110
print(type(hero_name))

A. <class 'str'>
B. <class 'int'>
C. <class 'bool'>
D. <class 'list'>


正解:B
解説:1行目でhero_name に代入されている “兎野ぴこり” は文字列(str型)ですが、2行目で110という整数(小数点のない数値)が代入されています。

課題(実践力強化用)

Pythonプログラミングの実践力を強化したい人向けの課題を用意しました。特にエラーメッセージを読んでコードを修正するという作業は、プログラミングにおいて重要ですので、初心者の方は是非チャレンジしてみてください。
(本ページで解説していない内容も一部ありますので、インターネットで調べながら解いてみてください)

課題① コード作成

以下の仕様を満たすPythonコードを1から書いてください。

  • 勇者の名前「兎野ぴこり」を変数に代入する
  • その変数を使って「こんにちは、兎野ぴこりさん!」と表示する
  • 文字列の結合には + を使うこと

【出力例】

こんにちは、兎野ぴこりさん!

仕様を満たすコードは次のようになります。

hero_name = "兎野ぴこり"
print("こんにちは、" + hero_name + "さん!")

課題② コード修正

以下のコードを実行するとエラーが表示されます。
コードを修正して、「レベルは5です」と正しく表示されるようにしてください。

level = "5"
print("レベルは" + level + 1)

■実行結果(エラーメッセージ: 型が違うため結合できない)

TypeError: can only concatenate str (not "int") to str

このエラーは、「文字列」と「整数」を `+` で結合しようとしたために発生しています。
Pythonでは、文字列と数値を直接 `+` でつなぐことはできません。

■修正後のコード(数値を文字列に変換する)

level = "5"
print("レベルは" + level + "です")

または、数値として扱いたい場合は:

level = 5
print("レベルは" + str(level) + "です")

課題③ コード修正

以下のコードを実行するとエラーが表示されます。
コードを修正して、「HPは120です」と表示されるようにしてください。

hero_hp = 120
print("HPは" + hero_hp + "です")

■実行結果(エラーメッセージ: 型が違うため結合できない)

TypeError: can only concatenate str (not "int") to str

このエラーは、文字列 `”HPは”` と整数 `hero_hp` を直接 `+` で結合しようとしたために発生しています。

■修正後のコード(数値を文字列に変換する)

hero_hp = 120
print("HPは" + str(hero_hp) + "です")

課題④ コード修正

以下のコードを実行するとエラーが表示されます。
コードを修正して、所持アイテムのリストを表示できるようにしてください。

items = ["剣", "盾", "ポーション"]
print("持ち物:" + items)

■実行結果(エラーメッセージ: リスト型は文字列と結合できない)

TypeError: can only concatenate str (not "list") to str

Pythonでは、文字列とリストを直接 `+` でつなぐことはできません。

■修正後のコード(リストを文字列に変換する)

items = ["剣", "盾", "ポーション"]
print("持ち物:" + str(items))

または、より見やすく表示するには

print("持ち物:" + ", ".join(items))

課題⑤ コード修正

以下のコードを実行するとエラーが表示されます。
コードを修正して、辞書からMPの値を取り出して表示してください。

status = {"HP": 120, "MP": 30}
print("MPは:" + status[MP])

■実行結果(エラーメッセージ: NameError)

NameError: name 'MP' is not defined

このエラーは、辞書のキー `”MP”` を文字列として指定していないために発生しています。

■修正後のコード(キーを文字列で指定)

status = {"HP": 120, "MP": 30}
print("MPは:" + str(status["MP"]))

関連ページ(もっと学びたい人へ)

Pythonの基礎から応用例まで、以下ページから学ぶことができます。

【Python超入門】基礎から応用例まで幅広く解説
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。
この記事を書いた人
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
Python基礎

コメント