Pythonプログラミングへようこそ

このインタラクティブガイドは、Pythonの基礎から主要なライブラリまでを体系的に学習するために設計されました。左のナビゲーションメニューから興味のあるトピックを選択して、学習を開始してください。各セクションでは、解説と共に、実際に動作するコードデモや視覚的な表現を用いて、理解を深めることができます。

インタラクティブな学習

静的なテキストを読むだけでなく、コードを「実行」したり、パラメータを変更したりすることで、Pythonの概念がどのように機能するかを体験的に学びます。

視覚的な理解

データ構造やアルゴリズムの流れ、ライブラリの出力などをグラフやダイアグラムで視覚化することで、抽象的な概念を直感的に捉えることができます。

第1部: Python言語の基礎

Pythonのプログラミングは、読みやすく、直感的な構文から始まります。ここでは、コードの基本構造であるインデント、コメントの付け方、そしてデータを保持するための変数について学びます。これらの基本ルールを理解することが、クリーンで効率的なコードを書くための第一歩です。

インデントの重要性

Pythonでは、インデント(字下げ)がコードのブロックを定義します。これは単なるスタイルではなく、言語の構文として強制されます。通常は4つのスペースを使用します。

# 正しいインデントの例
if score > 80:
    print("You passed!") # 4スペースでインデント
    print("Congratulations!")

変数と命名規則

変数はデータに名前を付けるための「ラベル」です。Pythonは動的型付け言語なので、型を宣言する必要はありません。慣習として、変数名は小文字のスネークケース(`user_name`)で記述します。

user_name = "Alice"
user_age = 30
# f-stringを使った便利な出力
print(f"User: {user_name}, Age: {user_age}")

第2部: データ型

Pythonは、数、文字列、そして複数の要素をまとめるコレクションなど、豊富な組み込みデータ型を備えています。それぞれのデータ型が持つ特性、特に「変更可能(ミュータブル)」か「変更不可能(イミュータブル)」かを理解することが、バグの少ない効率的なコードを書く鍵となります。

上のデータ型をクリックして詳細を表示します。

第3部: 演算子

演算子は、値や変数に対して計算や比較などの操作を行うための記号です。Pythonには多様な演算子がありますが、どの演算が先に行われるかという「優先順位」を理解しておくことは、意図しない計算間違いを避けるために非常に重要です。

演算子の優先順位

以下の表は、主要な演算子の優先順位を高いものから低いものへと並べたものです。括弧 `()` を使うことで、この順序を意図的に変更できます。

優先順位 演算子 説明

第4部: 制御フロー

プログラムは必ずしも上から下へ一直線に実行されるわけではありません。制御フローは、条件に応じて処理を分岐させたり、特定の処理を繰り返したりすることで、プログラムの流れをコントロールします。ここでは `if` 文による条件分岐と、 `for` および `while` ループによる繰り返し処理の仕組みを学びます。

`for` ループと `else`

`for`ループが `break` で中断されずに最後まで実行された場合にのみ、`else`ブロックが実行されます。これは、リスト内を検索し、要素が見つからなかった場合の処理を記述するのに便利です。

# 3を探すループ
my_list = [1, 2, 4, 5]
for item in my_list:
    if item == 3:
        print("Found 3!")
        break
else:
    print("Did not find 3.")
# 出力: Did not find 3.

`while` ループ

`while`ループは、指定された条件が `True` の間、処理を繰り返します。ループ回数が事前に決まっていない場合に有効ですが、条件が常に `True` となる「無限ループ」に注意が必要です。

count = 0
while count < 3:
    print(f"Count is {count}")
    count += 1 # この行がないと無限ループ
print("Loop finished.")

第5部: 関数

関数は、特定のタスクを実行する再利用可能なコードの塊です。コードを関数にまとめることで、プログラムの構造が整理され、見通しが良くなります。引数の渡し方には、位置、キーワード、そして可変長引数など、柔軟な方法が用意されています。

引数の種類

位置引数、キーワード引数、デフォルト引数、そして `*args`, `**kwargs` を組み合わせることで、非常に柔軟な関数を定義できます。

def make_pizza(size, *toppings, **details):
    print(f"Size: {size}")
    for t in toppings: print(f"- {t}")
    for k, v in details.items(): print(f"- {k}: {v}")

make_pizza(12, 'pepperoni', 'cheese', delivery=True, tip=5)

ラムダ式(無名関数)

`lambda` を使うと、名前のない小さな一行関数をその場で作成できます。特に `sorted` や `filter` のような、関数を引数に取る関数の内部で使うと便利です。

numbers = [1, 2, 3, 4, 5]
# 偶数だけをフィルタリング
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # [2, 4]