1. 変数とデータ型の基本

変数の役割

変数とは、データに名前(ニックネーム)を付け、あとからそのデータを再利用・変更できる仕組みです。
例えば、長い説明文を毎回書くのではなく、「シロ」という名前をつけることで、
「クリスマスイブの日に橋の下に捨てられていた白い犬」を簡単に呼び出せるようになるのと同じです。
プログラミングにおいても、変数を使うことでデータに意味を持たせ、可読性や保守性を高めることができます。

Pythonにおける変数の特徴

  • 型宣言不要: Pythonでは変数を使う際、Javaのように型(intdoubleなど)を明示する必要はありません。
    → 例:data1 = 1 と書くだけで、整数型の値が変数data1に代入されます。
  • 動的型付け: 一度変数に値を入れると、その値の型に応じたオブジェクトが変数名に関連付けられます。後から別の型の値を再代入することも可能ですが、コードの可読性やバグ防止のため、できるだけ同じ種類のデータを扱うのが望ましいです。

変数は箱とラベルのようなもの

変数を、引っ越しのダンボール箱に例えてみましょう。

  • 箱そのもの: コンピュータのメモリ上のデータ保管場所
  • ラベル: 変数名(名前をつけることで、その中身が何かを分かりやすくする)

また、変数にはあらかじめ「どの種類のデータを入れるか」という概念はPythonでは厳密に決めなくてもよいですが、値によって自動的に型が決まるという点は、プログラムを書く上でとても重要です。


2. Pythonでの変数宣言と値の代入

変数の宣言と初期化

Pythonでは変数宣言時に型を指定しません。変数に最初の値を代入するだけで宣言・初期化が同時に行われます。

# 例: いくつかの変数を宣言して値を代入する
data1 = 1          # 整数(int)
data2 = 1.0        # 浮動小数点数(float)
flag = False       # 真偽値(bool)
char_value = 'C'   # 文字列(Pythonにはchar型はなく、文字列型(str)で扱います)

print(data1)       # 出力: 1
print(data2)       # 出力: 1.0
print(flag)        # 出力: False
print(char_value)  # 出力: C

ポイント:

  • 文字を扱う場合、Pythonではシングルクォーテーション ' ' もダブルクォーテーション " " もどちらも使えます。
  • Javaと異なり、変数名の前に型を書く必要はありません。

変数の参照と更新

変数に格納されている値を参照して使ったり、他の変数へ代入したりすることができます。

a = 1
b = a      # bにaの値(1)を代入
a = 2      # aの値を変更
print(f"{a}:{b}")  # f文字列を使って出力 → 結果は "2:1"

この例のように、変数は代入された時点の値を保持するため、後から元の変数の値が変更されても、すでに代入された変数には影響しません。

参照する際の注意点

もし、変数名を文字列として書いてしまうと、変数の値ではなく単なる文字列が出力されます。

data3 = 10
print("data3")   # これは変数data3ではなく文字列 "data3" を出力します


3. 演算とデータ型の違い

演算の例

Pythonでも演算子は、扱うデータ型によって結果が変わります。

print(2 + 3)           # 整数同士の足し算 → 結果は 5
print("Hello " + "World")  # 文字列の連結 → 結果は "Hello World"

ただし、数値と文字列など、型の異なるデータ同士を直接演算するとエラーになります。必要に応じて型変換を行いましょう。


4. 定数について

PythonにはJavaのようなfinalや定数を厳密に扱う仕組みはありません。
しかし、定数として扱う変数は慣習的に全て大文字で名前を付けます。
(※実際には変更可能ですが、プログラマー同士で「この値は定数として扱おう」という約束事です。)

ADULT_AGE = 18

print("成人年齢は" + str(ADULT_AGE) + "才です")
print("10年後は" + str(ADULT_AGE + 10) + "才です")


5. Pythonの主な組み込みデータ型

数値系

  • 整数 (int):1, 100, -5
  • 浮動小数点数 (float):1.0, 3.14, -0.5

真偽値

  • bool: True または False

文字列

  • str: 文字の並び。例 "Hello", 'World'
    ※Pythonでは文字列と単一文字の区別はなく、文字列は長さ1のものも扱えます。

その他のデータ型

  • リスト (list): 複数のデータを順序付けて管理する。例:[1, 2, 3]
  • タプル (tuple): リストと似ていますが、変更不可能。例:(1, 2, 3)
  • 辞書 (dict): キーと値のペアで管理する。例:{"apple": 100, "banana": 200}

6. 変数の再代入と動的型付けの注意点

Pythonでは変数に新たな値を代入することで、もともとの値は上書きされます。また、ある変数に整数を代入していた後に文字列を代入することも可能です。

value = 10       # valueは整数型
print(value)     # 出力: 10

value = "ten"    # 同じ変数に文字列を代入(動的型付け)
print(value)     # 出力: ten

ただし、同じ変数に異なる型の値を混ぜて扱うと、プログラムの意図が分かりにくくなり、バグの温床になる可能性もあるので注意してください。


7. 文字(char型)の扱いと数値との関係

Javaではchar型は内部的に数値(文字コード)として扱われ、整数の演算が可能でした。
Pythonでは文字列はstrで、単一文字も文字列として扱います。
数値との変換は、組み込み関数 ord()(文字から数値へ)と chr()(数値から文字へ)を使います。

a = 'A'           # 'A'の文字列
# ord()で文字コード(Unicodeのコードポイント)を取得
code = ord(a)     # 例: 65
# 32を足して小文字に変換する
code += 32
a = chr(code)     # 65+32=97 → 'a'
print(a)          # 出力: a

このように、Pythonでも文字と数値の相互変換を活用することができます。


8. モジュールとパッケージによるコードの整理

Pythonにおけるモジュール・パッケージ

  • モジュール: Pythonのコードを記述したファイル(拡張子は .py)。
  • パッケージ: 複数のモジュールをまとめたディレクトリ。ディレクトリ内に __init__.py を置くことでパッケージとして扱われます。

インポートの方法

他のモジュールやパッケージ内のクラス・関数を使う場合、import文を使います。

例1: モジュール全体をインポートする

import datetime

# datetimeモジュール内のdatetimeクラスのnow()メソッドを使用
print(datetime.datetime.now())

例2: 特定のクラスや関数だけをインポートする

from datetime import datetime

# 直接 datetime.now() と書ける
print(datetime.now())

補足:

  • from module import * のような書き方も可能ですが、どの名前がインポートされるのか明示的ではなく、可読性や名前の衝突の観点から推奨されません。
  • Pythonの標準ライブラリの中には、mathossysrandom など、日常的によく使われるモジュールが多数存在します。

9. まとめ:変数とデータ型の重要性

変数とデータ型は、プログラミングの基本中の基本です。

  • 変数を使うことで、データに意味(名前)を与え、プログラム中で再利用・変更が可能となります。
  • データ型によって、変数に入れる値の性質や、演算時の挙動が決まるため、適切な型を意識することが重要です。
  • Pythonは動的型付け言語であり、型宣言が不要な分、シンプルに書けますが、逆に意図しない型の変化によるバグに注意が必要です。

プログラミングでは、適切な名前付けや変数の使い方が、システムの設計や保守性に大きな影響を与えます。まずは、基本的な使い方をしっかり理解し、次第により高度な構造(関数、クラス、モジュール・パッケージ)へとステップアップしていきましょう。

<まとめ:隣の人に正しく説明できたらチェックを付けましょう>

まとめができたら、アウトプットとして演習問題にチャレンジしましょう。

以上、今回は「変数でデータを再利用できるようになる」方法について見てきました。

次回は、「演算子でプログラムに計算させる」です。

変数でデータを再利用できるようになる 最後までお読みいただきありがとうございます。