「1 + 1」が「2」にならない? 型を知れば謎が解ける。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回(第1回)は、VPS上にPythonの実行環境を構築し、記念すべき「Hello World」を表示させました。
環境構築という最大の壁を越えた皆さんなら、ここからの学習はもっとスムーズに進むはずです。
さて、第2回のテーマは「変数(Variables)」と「データ型(Data Types)」です。
これらは、Pythonに限らずあらゆるプログラミング言語の基礎となる概念です。
「変数なんて、数学の \( x = y + 1 \) みたいなものでしょ?」
もしそう思っているなら、少し注意が必要です。
プログラミングの世界では、「文字列の “1”」と「数値の 1」は全くの別物です。
この違いを理解していないと、計算結果がおかしくなったり、謎のエラーでプログラムが停止したりします。
先生、前回作った環境に入ってスタンバイOKです!
でも、「データ型」ってそんなに重要なんですか?
Pythonって自動でいい感じにやってくれるって聞いたことがあるんですけど…。
確かにPythonは「動的型付け言語」といって、型を自動で判断してくれる賢い言語よ。
でも、だからこそ「今、変数がどんな型になっているか」を意識しないと、予期せぬバグを生むの。
今回はVPS上で実際にコードを動かして、わざとエラーを出したりしながら、データの正体を探っていきましょう!
本記事では、Python初心者にとって最適な勉強方法である「手を動かす実践」を通して、変数とデータ型の仕組みを完全にマスターします。
🚀 【全8回】Python VPSマスターコース カリキュラム
- 【第1回】環境構築とHello World:AlmaLinux 9でPythonを動かす
- 【第2回】変数とデータ型(今回):コンピュータにおける「データ」の扱い方
- 【第3回】条件分岐(if文):プログラムに「判断」させる
- 【第4回】繰り返し処理(for/while):コンピュータの得意技「ループ」
- 【第5回】関数とモジュール:コードを部品化して再利用する
- 【第6回】外部ライブラリの活用(pip):便利な道具をインターネットから入手する
- 【第7回】ファイル操作とWebアクセス:ログ保存とデータ収集
- 【第8回】自動化システム構築:定期実行(Cron)でボットを作成する
目次
1. プログラミングにおける「変数」の正体
まず、概念の話をしましょう。
多くの入門書では「変数はデータを一時的に入れておく箱のようなもの」と説明されます。
しかし、Pythonにおいては「データにつける名札(ラベル)」とイメージする方が正確です。
- 箱のイメージ: 箱の中にデータを入れる。
- 名札のイメージ: メモリ上のどこかにあるデータに対して、人間が分かりやすい名前(タグ)を紐付ける。
この違いは、後々「リスト」や「オブジェクト」を学ぶ際に重要になってきますが、現時点では「=(イコール)は『等しい』ではなく『代入(名札付け)』である」と覚えておいてください。
変数の定義方法
user_name = "LinuxSensei" user_level = 99
Pythonでは、事前に「これは整数です」と宣言する必要はありません(動的型付け)。
値を入れた瞬間に、Pythonが自動的に型を判断してくれます。
2. 実践:VPSで変数を使ってみよう
それでは、VPS(AlmaLinux 9)に接続して、実際にコードを書いてみましょう。
前回の続きから作業します。
2-1. 仮想環境の有効化
作業用ユーザー(python_user)でログインし、仮想環境を有効化します。
# プロジェクトディレクトリへ移動 cd ~/python_study # 仮想環境を有効化 source .venv/bin/activate # プロンプトの先頭に (.venv) が表示されたことを確認
2-2. 変数テスト用ファイルの作成
vi エディタで variables.py を作成します。
vi variables.py
以下のコードを入力(コピペ)してください。
# 変数の定義
message = "Python学習中"
day = 2
temperature = 25.5
# 変数の内容を表示
print(message)
print(day)
print(temperature)
# 変数を使って計算
next_day = day + 1
print("次は", next_day, "日目です")
保存して終了します(Esc → :wq → Enter)。
2-3. プログラムの実行
python variables.py
実行結果:
Python学習中 2 25.5 次は 3 日目です
変数を使うことで、数字や文字を再利用したり、計算に使ったりできることが確認できました。
3. Pythonの主要な「データ型」一覧
先ほどのコードで、"Python学習中"、2、25.5 という異なる種類のデータが登場しました。
これらが「データ型」です。
Python初心者がまず覚えるべき基本の4つを紹介します。
| 型名 (Python) | 説明 | 例 |
|---|---|---|
| int (Integer) | 整数。小数点は含まない。 | 1, 100, -5 |
| float (Floating point) | 浮動小数点数。小数を含む数値。 | 1.5, 3.14, 0.0 |
| str (String) | 文字列。シングル(')またはダブル(")クォートで囲む。 |
"Hello", 'あいう' |
| bool (Boolean) | 論理型。真(True)か偽(False)の2値のみ。 | True, False |
プロの補足:浮動小数点数の罠
float 型は、コンピュータの仕組み上、厳密な計算が苦手です。
例えば 0.1 + 0.2 を計算すると、0.30000000000000004 のような微妙な誤差が出ることがあります。
金融計算など、1円の誤差も許されないシステムを作る場合は、Decimal という特別な型を使いますが、初心者のうちは「小数は少し誤差が出るもの」と覚えておけばOKです。
4. 型の確認と変換(キャスト)
ここが今回のハイライトです。
「型が違うと計算できない」というプログラミングの鉄則を体験しましょう。
4-1. 型の確認 (type関数)
変数がどの型なのか調べるには type() 関数を使います。
x = 10 y = "10" print(type(x)) #print(type(y)) #
4-2. エラー体験:文字列と数値の足し算
わざとエラーを出してみましょう。type_error.py を作成して実行してみてください。
price = 100 tax = "10" # 文字列として定義 # 数値と文字列を足そうとする total = price + tax print(total)
実行結果(エラー):
TypeError: unsupported operand type(s) for +: 'int' and 'str'
「int(整数)と str(文字列)の足し算はサポートされていません」と怒られました。
人間なら「110だな」と分かりますが、コンピュータは「数字の100」と「文字の10」を足すことができないのです。
4-3. 型変換(キャスト)で解決する
これを解決するには、型を変換(キャスト)して揃える必要があります。
int(): 整数に変換str(): 文字列に変換float(): 小数に変換
先ほどのコードを修正します。
price = 100 tax = "10" # taxを整数(int)に変換して足す total = price + int(tax) print(total) # 結果: 110
逆に、文字列として結合したい場合は、数値を文字列に変換します。
version = 3.9 # 数値を文字列(str)に変換して結合 msg = "Python version " + str(version) print(msg) # 結果: Python version 3.9
5. 【モダンPython】f-stringsによる文字列埋め込み
先ほどの例で、"Python version " + str(version) と書きましたが、いちいち str() で変換して + で繋ぐのは面倒ですよね?
Python 3.6以降では、「f-strings(フォーマット済み文字列リテラル)」という超便利な機能が使えます。
文字列の先頭に f を付け、変数を {} で囲むだけで、自動的に文字列として埋め込んでくれます。
実践コード (f_strings.py)
name = "AlmaLinux"
ver = 9
cpu_usage = 12.3456
# f-stringsを使用
info = f"OS: {name} {ver}, CPU: {cpu_usage:.2f}%"
print(info)
実行結果:
OS: AlmaLinux 9, CPU: 12.35%
{cpu_usage:.2f} のように書くことで、「小数点以下2桁まで表示(四捨五入)」といったフォーマット指定も可能です。
現場ではこの書き方が主流ですので、必ず覚えましょう。
6. プロのノウハウ:変数の命名規則(PEP 8)
プログラムは「動けばいい」ものではありません。「他人が読んで理解できる」ことが重要です。
PythonにはPEP 8(ペップエイト)という公式のコーディング規約があり、変数名の付け方にもルールがあります。
| ルール | 説明 | 良い例 (Good) | 悪い例 (Bad) |
|---|---|---|---|
| スネークケース | すべて小文字で、単語の間をアンダースコア _ で区切る。 |
user_namefile_path |
userName (キャメルケース)UserName |
| 意味のある名前 | 何が入っているか推測できる名前をつける。 | pricecount |
a, b, xdata, info (具体的でない) |
| 予約語を避ける | Pythonがすでに使っている単語は使わない。 | my_listclass_name |
list, str, intclass, if |
特に list = [1, 2, 3] のように、型名を変数名にしてしまうと、その後 list() 関数が使えなくなるバグを引き起こします。
初心者が最もやりがちなミスなので注意してください。
7. 演習問題:BMI計算機を作ろう
今回の総仕上げとして、簡単なアプリケーションを作ってみましょう。
身長と体重を変数に入れて、BMI(Body Mass Index)を計算し、f-stringsで見やすく表示するプログラムです。
BMIの計算式:
\[ \text{BMI} = \frac{\text{体重(kg)}}{\text{身長(m)} \times \text{身長(m)}} \]
課題コード (bmi.py)
以下のコードを書き写して実行してください。
(あえて身長をcm単位にしています。計算時にm単位に直す工夫が必要です)
# ユーザーデータ
height_cm = 170.5 # 身長(cm)
weight_kg = 65.0 # 体重(kg)
# 計算処理
# 1. cm を m に変換する (100で割る)
height_m = height_cm / 100
# 2. BMIを計算 (体重 ÷ 身長の2乗)
# Pythonで「2乗」は ** 2 と書く
bmi = weight_kg / (height_m ** 2)
# 結果表示 (f-stringsで小数点1桁まで)
print(f"身長: {height_cm}cm")
print(f"体重: {weight_kg}kg")
print(f"あなたのBMIは {bmi:.1f} です")
実行結果:
身長: 170.5cm 体重: 65.0kg あなたのBMIは 22.4 です
これができれば、変数、数値型(float)、演算、f-stringsを理解できた証拠です!
まとめ:データ型を制する者はバグを制す
お疲れ様でした! 第2回では、プログラミングの根幹である「変数」と「型」について学びました。
今回の達成項目:
- 変数は「箱」ではなく「名札」であることを理解した。
- 基本データ型(int, float, str, bool)の違いを学んだ。
- 型変換(キャスト)を使って、数値と文字列の結合エラーを解決した。
- f-stringsを使って、スマートに文字列を作成した。
- PEP 8に基づいた「美しい変数名」の付け方を知った。
次回は、プログラムに「知能」を与える「条件分岐(if文)」について学びます。
「もしBMIが25以上なら『肥満気味です』と警告する」といった、状況に応じた処理ができるようになりますよ。
次回、【第3回】条件分岐(if文):プログラムに「判断」させる でお会いしましょう!
🔗 参考リンク(公式サイト)
▼ Pythonを学ぶならVPSで ▼
AlmaLinuxが使える
「おすすめVPS」
Pythonスキルを活かす
「ITエンジニア転職」

コメント