Pythonプログラミング基礎編

luagate/python-intro-basicsPython基礎122プログラミング

上から下へ、全 122 枚そのまま並べています。

発表モードで開く

Python基礎

Pythonプログラミング基礎編

ゼロからはじめるプログラミング

1
1

目次(前半)

全体の流れ

1. イントロダクション

2. Pythonプログラミングの基本

3. 変数と演算

4. 標準入出力

5. 制御構造(条件分岐)

6. 制御構造(ループ)

2
2

目次(後半)

全体の流れ

7. イテラブル

8. 関数とモジュール

9. クラスとオブジェクト

10. 例外処理

11. ライブラリの利用

3
3

Python基礎 - イントロダクション

1

イントロダクション

プログラミングとPythonの世界へようこそ

10
4
Python基礎 - イントロダクション

プログラミングとは

コンピュータに仕事をさせるには「プログラム」が必要です。

プログラミング(Programming)

コンピュータにやってほしいことを、順番に書いた指示書(プログラム)を作ること。

プログラムは料理のレシピに似ている

専用の言語(プログラミング言語)で記述する

記述されたプログラムを「コード」と呼ぶ

コードを書くことを「コーディング」と呼ぶ

11
5
Python基礎 - イントロダクション

ゴールまでの3ステップ

プログラミングを身につけるまでの道のりを確認しましょう。

基本文法を学ぶ:プログラミング言語のルールを覚える
アルゴリズムを考える:やりたいことをプログラムで表現する手順を考える
実践的なアプリを開発:部品やツールを使いこなして実用的なソフトを作る
12
6
Python基礎 - イントロダクション

プログラミング上達のコツ

プログラミング力を高めるための心構えです。

習うより慣れろ
  • たくさん書いて、たくさん実行する
  • 最初は時間がかかってもOK
楽しむ気持ち
  • 思った通りに動くと楽しい
  • 面白いからやってみる精神
なんでも質問する
  • 疑問をうやむやにしない
  • 質問の形にしてみることが大事
他人に教えてみる
  • 教えると理解が深まる
  • わかっていることが明確になる
13
7
Python基礎 - イントロダクション

Pythonとは

数あるプログラミング言語の中で、なぜPythonなのか?

Python(パイソン)

1991年にオランダのグイド・バァンロッサムが開発した、読みやすさを重視したプログラミング言語。

書き方がシンプルで一貫している

インタプリタ方式ですぐに試せる

豊富なライブラリが存在する

AI・Web・データ分析など多様な用途に対応

14
8
Python基礎 - イントロダクション

プログラミング言語の人気ランキング

Pythonは世界で最も人気のあるプログラミング言語です。

30 %24181260
28%
16%
10%
10%
5%
3%
Python
JavaScript
Java
C/C++
TypeScript
Go

出典: TIOBE Index 2025年データをもとに作成(概算)

15
9
Python基礎 - イントロダクション

コンパイラとインタプリタ

プログラムを実行する2つの方式を比較します。

コンパイラ方式

  • ソースコードを事前に機械語に翻訳
  • 翻訳後のプログラムを実行する
  • 実行速度が速い
  • OS依存の実行ファイルが生成される
  • 代表例:C言語、Java

インタプリタ方式

  • ソースコードを逐次解釈しながら実行
  • 翻訳と実行が一体的に行われる
  • 書いたらすぐ試せる手軽さ
  • 同じコードが異なるOSで動く
  • 代表例:Python、PHP
16
10
Python基礎 - イントロダクション

Pythonの実行の仕組み(ハイブリッド方式)

実はPythonは「自動コンパイル+インタプリタ」のハイブリッド方式です。

ソースコード (.py)

プログラマーが書いたPythonのコードファイル

バイトコード (.pyc)

Pythonが自動的に中間形式にコンパイル。__pycache__フォルダに保存される

Python仮想マシン (PVM)

バイトコードを1命令ずつ解釈しながら実行。異なるOSでも同じバイトコードが動く

17
11
Python基礎 - イントロダクション

Pythonの開発環境

Pythonで開発する際によく使われるツールです。

IDLE
  • Python標準付属のIDE
  • 軽量で手軽に試せる
VS Code
  • Microsoft社の無料エディタ
  • 多言語対応で拡張性が高い
PyCharm
  • JetBrains社のPython専用IDE
  • 無料のCommunity版あり
Jupyter Notebook
  • ブラウザで動く対話型環境
  • データサイエンス分野で人気
18
12
Python基礎 - イントロダクション
クイズ

クイズ

イントロダクションの理解を確認しましょう。

Pythonの特徴として正しくないものはどれですか?

A
書き方が比較的シンプル
B
豊富なライブラリがある
C
OSごとに書き直さなければならない
D
さまざまな用途に使われている
19
13
Python基礎 - イントロダクション
答え

クイズ 解答

Pythonの特徴として正しくないものはどれですか?

A
書き方が比較的シンプル
B
豊富なライブラリがある
C
OSごとに書き直さなければならない
D
さまざまな用途に使われている

PythonはインタプリタのおかげでOSごとに書き直す必要はありません。同じコードがWindows・Mac・Linuxで動きます。

20
14

Python基礎 - プログラミングの基本

2

Pythonプログラミングの基本

はじめてのプログラムを書いて動かそう

30
15
Python基礎 - プログラミングの基本

プログラムが動くまでの流れ

Pythonプログラムは3つのステップで動きます。

プログラムを作成する:エディタでコードを入力し、.pyファイルとして保存(UTF-8)
プログラムを実行する:ターミナルで python hello.py と入力
結果を確認する:画面に処理結果が表示される
31
16
Python基礎 - プログラミングの基本

はじめてのPythonプログラム

print()関数で文字列を画面に出力します。引数に表示したい内容を指定します。

python
# hello.py
print('Hello, Python!')
print("ようこそ Pythonの世界へ")
32
17
Python基礎 - プログラミングの基本

Pythonの特徴的なポイント

他の言語と比べたPythonの特徴です。

コンパイル不要
  • 保存してすぐ実行できる
セミコロン不要
  • 文末に ; を付けなくてよい
型宣言が不要
  • 代入した値から自動で型を判断
インデントが文法
  • 字下げでブロック構造を表現
33
18
Python基礎 - プログラミングの基本

インデント(字下げ)が重要

Pythonでは半角スペース4個の字下げが文法の一部です。揃っていないとエラーになります。

python
# 正しい例
if True:
    print('OK')
    print('条件は真です')

# 間違った例(エラー!)
if True:
    print('OK')
  print('条件は真です')  # IndentationError
34
19
Python基礎 - プログラミングの基本

2種類のエラー

プログラムで発生するエラーは大きく2つに分かれます。

種類
説明

構文エラー (SyntaxError)

文法上の誤り。実行前に検出

カッコの閉じ忘れ

実行時エラー (RuntimeError)

実行中に発生する問題

0で割り算 (ZeroDivisionError)

35
20
Python基礎 - プログラミングの基本

代表的なエラーの種類

よく遭遇するエラーを覚えておきましょう。

エラー名
発生する状況

SyntaxError

文法が正しくない

カッコ・引用符の閉じ忘れ

NameError

存在しない変数を使用

print(data) ※未定義

TypeError

型が一致しない演算

"A" + 1

ZeroDivisionError

0で割り算をした

10 / 0

ValueError

不正な値を扱った

int("abc")

36
21
Python基礎 - プログラミングの基本

コメントの書き方

# の後に書いた部分は実行されません。コードの意図を説明するメモとして使います。

python
# これはコメントです
print('Hello, Python!')  # ここもコメント

# 複数行コメント
"""
このプログラムは
2つの数値を入力して
その合計を表示します
"""
37
22
Python基礎 - プログラミングの基本

良いコメントの書き方

コメントは「なぜその処理をしているのか」を書くことが大切です。

観点
良いコメント
悪いコメント

内容

意図・目的を説明

コードの動作をそのまま説明

長さ

1-2行で要点をまとめる

長文で詳細を書きすぎる

タイミング

コード変更と同時に更新

変更しても放置

38
23
Python基礎 - プログラミングの基本

PEP 8 — Pythonのコードスタイルガイド

PEP 8は読みやすく一貫性のあるコードを書くための公式ルールです。

  • インデント:半角スペース4個(タブ混在はNG)
  • 1行の長さ:原則79文字以内
  • 命名規則:変数・関数はsnake_case、クラスはPascalCase、定数はALL_CAPS
  • Import:ファイル冒頭にまとめ、1行1モジュール
  • 比較:Noneとの比較はis、空判定はif not items:
39
24
Python基礎 - プログラミングの基本
クイズ

クイズ

Pythonの基本構造を確認しましょう。

Pythonプログラムで画面に文字を表示する際に使う関数はどれですか?

A
echo()
B
display()
C
print()
D
output()
40
25
Python基礎 - プログラミングの基本
答え

クイズ 解答

Pythonプログラムで画面に文字を表示する際に使う関数はどれですか?

A
echo()
B
display()
C
print()
D
output()

print()はPythonの組み込み関数で、引数に渡した値を画面(標準出力)に表示します。

41
26

Python基礎 - 変数と演算

3

変数と演算

データに名前をつけて計算しよう

50
27
Python基礎 - 変数と演算

算術演算子一覧

Pythonで使える計算の記号(演算子)です。

演算子
意味
結果

+

加算

10 + 2

12

-

減算

100 - 99

1

*

乗算

3 * 4

12

/

除算

11 / 3

3.666...

//

切り捨て除算

11 // 3

3

%

剰余(余り)

11 % 3

2

**

べき乗

2 ** 8

256

51
28
Python基礎 - 変数と演算

変数とは

変数は「データに名前をつけた箱」のようなものです。

変数(Variable)

データを入れておく名前つきの領域。何度でも中身を入れ替えられる。

ham = 10 → hamという箱に10を入れる

= は「等しい」ではなく「代入」の意味

代入すると前の値は上書きされる

厳密にはPythonの代入は「名前と値の結びつけ」

52
29
Python基礎 - 変数と演算

変数の使い方

変数を作って、計算して、表示する基本的な流れです。

python
# 変数に代入
ham = 10
egg = 2

# 上書きされる
ham = 3
print(ham)  # 3

# 変数から変数に代入
fish = egg
print(fish)  # 2

# 算術演算の結果を代入
price = 500
count = 3
total = price * count
print('合計:', total)  # 合計: 1500
53
30
Python基礎 - 変数と演算

変数名のルール

変数名には守るべきルールがあります。

変数名のルール
使える文字
英字(a-z, A-Z)
数字(0-9)※先頭不可
アンダースコア(_)
使えない名前
数字で始まる名前
予約語(if, for, print等)
空白を含む名前
定数の慣習
大文字+アンダースコア
例: TAX_RATE = 0.1
変更しない前提の値
54
31
Python基礎 - 変数と演算

累算代入演算子

変数に対する計算と代入を1つにまとめた演算子です。

演算子
意味
同等の式

+=

加算代入

a += 2

a = a + 2

-=

減算代入

a -= 2

a = a - 2

*=

乗算代入

a *= 2

a = a * 2

/=

除算代入

a /= 2

a = a / 2

//=

切り捨て除算代入

a //= 2

a = a // 2

%=

剰余代入

a %= 2

a = a % 2

55
32
Python基礎 - 変数と演算

データ型

Pythonの主なデータ型です。type()関数で型を調べられます。

型名
説明

int(整数)

小数点のない数字。桁数の制限なし

10, -5, 0

float(浮動小数点数)

小数点のある数字。約15桁の精度

3.14, 0.5

str(文字列)

引用符で囲んだ文字の並び

"Hello", 'Python'

bool(真偽値)

TrueかFalseの2択

True, False

56
33
Python基礎 - 変数と演算

リテラルの種類

コード中で値を直接表現したものをリテラルと呼びます。

整数リテラル
  • 10進数: 42, -100
  • 2進数: 0b1010
  • 16進数: 0xff
浮動小数点数
  • 標準表記: 3.14
  • 指数表記: 1.5e-3
文字列リテラル
  • 'Hello' または "Hello"
  • 三重クォート: """複数行"""
特殊リテラル
  • True / False(真偽値)
  • None(何もない値)
57
34
Python基礎 - 変数と演算

エスケープシーケンス

文字列内で特別な意味を持つ記号の表記法です。

表記
意味
使用例

\n

改行

print('Hello\nWorld')

\t

タブ

print('名前\t年齢')

\\

バックスラッシュ自体

print('C:\\Users')

\"

ダブルクォーテーション

print(\"He said \\\"Hi\\\"\")

\\

\(円記号/バックスラッシュ)

パスの区切り文字

58
35
Python基礎 - 変数と演算

型変換

str(), int(), float()で型を変換できます。

python
# 数値 → 文字列
str(1200)      # '1200'

# 文字列 → 整数
int('2017')    # 2017

# 文字列 → 浮動小数点数
float('1.4444')  # 1.4444

# 浮動小数点数 → 整数(小数部切り捨て)
int(3.14)      # 3
59
36
Python基礎 - 変数と演算
クイズ

クイズ

変数と演算の理解を確認しましょう。

a = 10 のあとに a = a + 3 を実行しました。変数aの値はいくつですか?

A
3
B
10
C
13
D
エラーになる
60
37
Python基礎 - 変数と演算
答え

クイズ 解答

a = 10 のあとに a = a + 3 を実行しました。変数aの値はいくつですか?

A
3
B
10
C
13
D
エラーになる

a = a + 3 は右辺のa(10)に3を足した13を左辺のaに代入します。

61
38

Python基礎 - 標準入出力

4

標準入出力

print関数とinput関数を使いこなそう

70
39
Python基礎 - 標準入出力

入力→演算→出力の基本構造

コンピュータの仕事はすべて「入力→演算→出力」で表されます。

入力

キーボード(標準入力)

ファイル読み込み

演算

計算・比較・判断

データの加工

出力

画面表示(標準出力)

ファイル書き込み

71
40
Python基礎 - 標準入出力

print関数の使い方

print()は画面に文字や数値を出力する組み込み関数です。

python
# 基本の出力
print('Hello, Python!')
print(100)
print(10 + 5)

# 複数の値を出力(sepで区切り文字を指定)
print('名前:', '太郎', sep='→')  # 名前:→太郎

# 改行なしで出力(endを指定)
print('Hello', end='')
print('world')  # Helloworld
72
41
Python基礎 - 標準入出力

f文字列(フォーマット文字列)

f文字列を使うと、変数の値を文字列に埋め込めます。Python3.6以降で推奨。

python
name = 'Taro'
age = 20
print(f'{name}さんは{age}歳です')

# 計算式も直接書ける
print(f'合計は{10 + 3}です')

# 小数点の桁数指定
pi = 3.14159
print(f'円周率は{pi:.2f}です')  # 3.14

# ゼロ埋め・桁区切り
print(f'{42:05d}')     # 00042
print(f'{1234567:,}')  # 1,234,567
73
42
Python基礎 - 標準入出力

input関数の使い方

input()はキーボードからデータを入力する関数です。入力値は常に文字列になります。

python
# 文字列として入力を受け取る
line = input('=>')

# 数値として使う場合は型変換が必要
print('足し算するよ')
op1 = input('=>')
op2 = input('=>')
answer = int(op1) + int(op2)
print('答え', answer)
74
43
Python基礎 - 標準入出力

ファイル入出力(open関数)

open()でファイルの読み書きができます。withブロックでファイルを安全に扱います。

python
# ファイルに書き込む
with open('hello.txt', 'w', encoding='utf-8') as f:
    f.write('こんにちは\n')
    f.write('Python\n')

# ファイルを読み込む
with open('hello.txt', 'r', encoding='utf-8') as f:
    text = f.read()
    print(text)

# モード: 'r'=読込, 'w'=上書き, 'a'=追記
75
44
Python基礎 - 標準入出力
クイズ

クイズ

標準入出力の理解を確認しましょう。

input()で受け取った値のデータ型はどれですか?

A
int(整数)
B
float(小数)
C
str(文字列)
D
bool(真偽値)
76
45
Python基礎 - 標準入出力
答え

クイズ 解答

input()で受け取った値のデータ型はどれですか?

A
int(整数)
B
float(小数)
C
str(文字列)
D
bool(真偽値)

input()で入力されたデータは常に文字列(str)として扱われます。数値として計算するにはint()やfloat()で変換が必要です。

77
46

Python基礎 - 条件分岐

5

制御構造(条件分岐)

条件に応じて処理を変えよう

80
47
Python基礎 - 条件分岐

比較演算子

条件式を作るための演算子です。結果はTrue/Falseになります。

記号
意味

==

等しい

age == 20

!=

等しくない

age != 20

<

より小さい

age < 20

>

より大きい

age > 20

<=

以下

age <= 20

>=

以上

age >= 20

81
48
Python基礎 - 条件分岐

真偽値の判定ルール

bool型以外でも真偽が判定されます。

真(True)
偽(False)

int / float

0以外

0

str

空文字列以外

''(空文字列)

list / dict

要素あり

[]や{}(空)

None

常に偽

82
49
Python基礎 - 条件分岐

if文の基本

if文で条件に応じた処理を書きます。else節で偽のときの処理も指定できます。

python
age = int(input('年齢=>'))

if age >= 20:
    print('お酒を販売する')
else:
    print('お酒を販売しない')
83
50
Python基礎 - 条件分岐

elif節で複数条件を分岐

elif節を使うと、条件を順番に評価して該当する処理だけを実行できます。

python
score = int(input('点数を入力: '))

if score >= 80:
    print('優')
elif score >= 60:
    print('良')
elif score >= 40:
    print('可')
else:
    print('不可')
84
51
Python基礎 - 条件分岐

if文のネスト(入れ子)

if文の中にさらにif文を書くことができます。インデントを深くして表現します。

python
print('ホットにしますか?(y/n)')
is_hot = input('=>')
print('ミルクをいれますか?(y/n)')
is_milk = input('=>')

if is_hot == 'y':
    if is_milk == 'y':
        print('ホットカフェオレ')
    else:
        print('ホットコーヒー')
else:
    if is_milk == 'y':
        print('アイスカフェオレ')
    else:
        print('アイスコーヒー')
85
52
Python基礎 - 条件分岐

論理演算子

複数の条件を組み合わせるための演算子です。

and(論理積)
  • 両方が真のときだけ真
  • a > 0 and b > 0
or(論理和)
  • どちらか一方が真なら真
  • a > 0 or b > 0
not(論理否定)
  • 真偽を反転させる
  • not a > 20
86
53
Python基礎 - 条件分岐

短絡評価(ショートサーキット)

論理演算では、結果が決まった時点で残りの条件式を評価しない仕組みがあります。

  • andの場合:左が偽なら右は評価しない(結果は偽で確定)
  • orの場合:左が真なら右は評価しない(結果は真で確定)
  • a = 0 のとき a != 0 and b / a > 1 → 右辺は評価されずエラー回避
  • andはorより結合の優先順位が高い
  • カッコで明示すると安全:if a and (b or c):
87
54
Python基礎 - 条件分岐
クイズ

クイズ

条件分岐の理解を確認しましょう。

次の条件式のうち、真(True)になるものはどれですか?

A
5 > 10
B
3 == 4
C
10 >= 10
D
0
88
55
Python基礎 - 条件分岐
答え

クイズ 解答

次の条件式のうち、真(True)になるものはどれですか?

A
5 > 10
B
3 == 4
C
10 >= 10
D
0

10 >= 10 は「10は10以上か?」なので真(True)です。0はPythonでは偽として扱われます。

89
56

Python基礎 - ループ

6

制御構造(ループ)

繰り返し処理をマスターしよう

100
57
Python基礎 - ループ

while文とfor文の使い分け

Pythonには2種類のループ構文があります。

while文

  • 条件が真の間、繰り返す
  • 回数が決まっていないときに使う
  • カウンタ変数を自分で管理
  • 無限ループも作れる

for文

  • イテラブルから要素を順に取り出す
  • 回数が決まっているときに使う
  • range()で回数を指定
  • リストや辞書の走査にも使う
101
58
Python基礎 - ループ

while文の基本

条件が真の間、処理を繰り返します。カウンタ変数で回数を管理します。

python
counter = 0
while counter < 5:
    print('counter:', counter)
    counter += 1
# counter: 0, 1, 2, 3, 4 と表示される
102
59
Python基礎 - ループ

for文とrange関数

for文はrange()と組み合わせて、指定回数の繰り返しを簡単に書けます。

python
# 5回繰り返す(0, 1, 2, 3, 4)
for i in range(5):
    print(i)

# 1から5まで
for i in range(1, 6):
    print(i)

# 2ずつ増加
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8
103
60
Python基礎 - ループ

for文のネスト(九九の表)

for文の中にfor文を書くことで二重ループが作れます。九九の表を例に見てみましょう。

python
for x in range(1, 10):
    for y in range(1, 10):
        print(f'{x*y:3}', end='')
    print()  # 行末で改行

# 出力:
# 1  2  3 ... 9
# 2  4  6 ... 18
# ...
104
61
Python基礎 - ループ

continueとbreak

ループの制御に使う2つの文を比較します。

continue(スキップ)

  • その周の残り処理をスキップ
  • ループの先頭に戻る
  • ループ自体は継続する
  • 特定条件だけ飛ばしたいときに使う

break(終了)

  • ループそのものを途中で終了
  • ループの後ろの処理へ進む
  • ループ全体を抜ける
  • 特定条件で止めたいときに使う
105
62
Python基礎 - ループ

無限ループと対話型アプリ

while Trueで無限ループを作り、breakで終了条件を設定します。

python
print('得点を入力(endで終了)')
total = 0
count = 0

while True:
    value = input('score > ')
    if value == 'end':
        break
    score = int(value)
    total += score
    count += 1

if count > 0:
    print(f'平均: {total / count:.1f}')
else:
    print('入力なし')
106
63
Python基礎 - ループ
クイズ

クイズ

ループの理解を確認しましょう。

for i in range(5): で変数iに入る値はどれですか?

A
1, 2, 3, 4, 5
B
0, 1, 2, 3, 4
C
0, 1, 2, 3, 4, 5
D
1, 2, 3, 4
107
64
Python基礎 - ループ
答え

クイズ 解答

for i in range(5): で変数iに入る値はどれですか?

A
1, 2, 3, 4, 5
B
0, 1, 2, 3, 4
C
0, 1, 2, 3, 4, 5
D
1, 2, 3, 4

range(5)は0から始まり、5は含まれません。したがって 0, 1, 2, 3, 4 の5つの値が順に入ります。

108
65

Python基礎 - イテラブル

7

イテラブル

リスト・タプル・辞書・集合を使いこなそう

120
66
Python基礎 - イテラブル

イテラブルの種類

for文で順に要素を取り出せるデータ構造をイテラブルと呼びます。

種類
変更
重複
順序

リスト (list)

可能

可能

あり

タプル (tuple)

不可

可能

あり

辞書 (dict)

可能

キー不可

挿入順

集合 (set)

可能

不可

なし

文字列 (str)

不可

あり

あり

121
67
Python基礎 - イテラブル

リストの基本操作

リストは最も基本的な配列構造です。[]で作成し、インデックスでアクセスします。

python
# リストの作成
fruits = ['apple', 'banana', 'cherry']

# インデックスでアクセス(0始まり)
print(fruits[0])   # apple
print(fruits[-1])  # cherry

# 要素の追加・削除
fruits.append('grape')
fruits.remove('banana')

# 要素数・検索
print(len(fruits))          # 3
print('apple' in fruits)    # True
122
68
Python基礎 - イテラブル

スライス(リストの一部を取り出す)

リスト[開始:終了]で部分リストを取り出せます。終了のインデックスは含まれません。

python
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(nums[2:5])   # [3, 4, 5]
print(nums[:3])    # [1, 2, 3](先頭から)
print(nums[7:])    # [8, 9, 10](末尾まで)
print(nums[::2])   # [1, 3, 5, 7, 9](2個おき)
123
69
Python基礎 - イテラブル

タプルの基本

タプルはリストに似ていますが、作成後に変更できない(イミュータブル)のが特徴です。

python
# タプルの作成(丸かっこ)
product = ('apple', 150, True)
print(product[0])  # apple

# 1要素のタプルはカンマ必須
t1 = ('apple',)

# パッキング(カッコなしでもOK)
info = 'Taro', 20, 'Tokyo'

# アンパッキング(複数変数に展開)
name, age, city = info
print(name)  # Taro

# 不要な値は _ で捨てる
first, *middle, last = (1, 2, 3, 4, 5)
print(middle)  # [2, 3, 4]
124
70
Python基礎 - イテラブル

辞書の基本操作

辞書はキーと値のペアでデータを管理します。{}で作成し、キーでアクセスします。

python
product = {
    'name': 'Notebook PC',
    'price': 120000,
    'stock': 5
}

print(product['name'])  # Notebook PC

# 安全な参照(get)
print(product.get('cpu', 'なし'))  # なし

# 追加・更新・削除
product['cpu'] = 'Core i5'
product['stock'] = 3
del product['price']
125
71
Python基礎 - イテラブル

集合(セット)

集合は重複のない要素の集まりです。数学の集合演算が簡単にできます。

python
# 集合の作成
fruits = {'apple', 'banana', 'orange'}

# リストから重複を除去
nums = [1, 2, 2, 3, 3, 3]
unique = set(nums)  # {1, 2, 3}

# 集合演算
a = {'apple', 'banana', 'orange'}
b = {'banana', 'grape'}
print(a & b)  # {'banana'}(共通部分)
print(a - b)  # {'orange', 'apple'}(差分)
print(a | b)  # 全要素(和集合)
126
72
Python基礎 - イテラブル

for文でイテラブルを操作

for文を使うと、リストや辞書の要素をひとつずつ取り出して処理できます。

python
# リストの走査
numbers = [3, 6, 9, 15]
total = 0
for num in numbers:
    total += num
print('合計:', total)

# 辞書の走査(items)
stocks = {'PC': 5, 'Mouse': 0}
for name, stock in stocks.items():
    if stock == 0:
        print(f'{name}は在庫切れ')
127
73
Python基礎 - イテラブル

enumerate と zip

enumerateでインデックスと値を同時に、zipで複数リストを同時に処理できます。

python
# enumerate(番号つき)
fruits = ['apple', 'banana', 'orange']
for i, fruit in enumerate(fruits):
    print(i, fruit)  # 0 apple, 1 banana...

# zip(複数リストを同時に)
names = ['Taro', 'Hanako']
scores = [85, 92]
for name, score in zip(names, scores):
    print(name, score)

# 組み合わせ
for i, (n, s) in enumerate(zip(names, scores), start=1):
    print(i, n, s)
128
74
Python基礎 - イテラブル

リスト内包表記

リストを簡潔に生成するPython独自の書き方です。

python
# 通常のfor文
result = []
for n in [1, 2, 3]:
    result.append(n * 2)

# リスト内包表記(1行で書ける)
result = [n * 2 for n in [1, 2, 3]]
print(result)  # [2, 4, 6]

# 条件付き(偶数だけ抽出)
even = [n for n in range(10) if n % 2 == 0]
print(even)  # [0, 2, 4, 6, 8]
129
75
Python基礎 - イテラブル

文字列の操作

文字列もイテラブルです。インデックスアクセスやreplaceが使えますが、変更はできません。

python
msg = 'Hello, world!'
print(msg[0])    # H
print(msg[-1])   # !
print(len(msg))  # 13

# 文字列はイミュータブル(変更不可)
# msg[0] = 'h'  → TypeError

# 新しい文字列を作る
msg2 = msg.replace('Hello', 'Good-bye')
print(msg2)  # Good-bye, world!

# 連結・繰り返し
print('Hi' + '!' * 3)  # Hi!!!
130
76
Python基礎 - イテラブル

コマンドライン引数

sys.argvでプログラム実行時に外部から値を受け取れます。

python
import sys
print(sys.argv)

# 実行例: python args.py 1 2 3
# 出力: ['args.py', '1', '2', '3']

# 引数はすべて文字列として受け取られる
# 数値として使うにはint()で変換が必要
131
77
Python基礎 - イテラブル
クイズ

クイズ

イテラブルの理解を確認しましょう。

data = [10, 20, 30, 40] のとき print(data[1:3]) の結果はどれですか?

A
[10, 20]
B
[20, 30]
C
[20, 30, 40]
D
[30, 40]
132
78
Python基礎 - イテラブル
答え

クイズ 解答

data = [10, 20, 30, 40] のとき print(data[1:3]) の結果はどれですか?

A
[10, 20]
B
[20, 30]
C
[20, 30, 40]
D
[30, 40]

data[1:3]はインデックス1から3の手前まで、つまりdata[1]とdata[2]を取り出します。結果は[20, 30]です。

133
79

Python基礎 - 関数とモジュール

8

関数とモジュール

処理をまとめて再利用しよう

140
80
Python基礎 - 関数とモジュール

関数とは

関数はひとまとまりの処理に名前をつけ、何度でも呼び出せるようにしたものです。

関数(Function)

引数を受け取り、処理を実行し、戻り値を返す再利用可能な処理のかたまり。

defキーワードで定義する

引数:関数に渡すデータ

戻り値:関数の処理結果(return文で返す)

戻り値を返さない関数も作れる

141
81
Python基礎 - 関数とモジュール

関数の定義と呼び出し

def文で関数を定義し、関数名()で呼び出します。

python
# 関数定義
def add_numbers(num1, num2):
    return num1 + num2

# 関数呼び出し
result = add_numbers(10, 20)
print('計算結果:', result)  # 30

# デフォルト値つき引数
def greet(name, msg='こんにちは'):
    print(f'{msg}{name}さん')

greet('太郎')           # こんにちは、太郎さん
greet('花子', 'おはよう')  # おはよう、花子さん
142
82
Python基礎 - 関数とモジュール

位置引数とキーワード引数

引数の渡し方には「順番で渡す」方法と「名前を指定して渡す」方法があります。

python
def export(title, author, fmt):
    print(f'{title} by {author} ({fmt})')

# 位置引数(順番で渡す)
export('レポート', '山田', 'PDF')

# キーワード引数(名前で渡す)
export(fmt='Excel', title='月報', author='佐藤')

# 混在も可能(位置引数が先)
export('年報', author='鈴木', fmt='CSV')
143
83
Python基礎 - 関数とモジュール

可変長引数(*args, **kwargs)

引数の数が決まっていない場合、*でタプル、**で辞書として受け取れます。

python
# *args: 任意数の位置引数をタプルで受け取る
def total(*nums):
    return sum(nums)

print(total(1, 2, 3))      # 6
print(total(10, 20, 30, 40))  # 100

# **kwargs: 任意数のキーワード引数を辞書で受け取る
def profile(**info):
    for key, val in info.items():
        print(f'{key}: {val}')

profile(name='Taro', age=20, city='Tokyo')
144
84
Python基礎 - 関数とモジュール

変数のスコープ

変数が使える範囲(スコープ)は「どこで作られたか」で決まります。

ローカル変数

  • 関数の中で作成した変数
  • その関数の中でのみ使える
  • 関数ごとに独立して管理
  • 関数を抜けると消える

グローバル変数

  • 関数の外で作成した変数
  • プログラム全体で利用可能
  • global文で関数内から変更可能
  • nonlocalは外側関数の変数を変更
145
85
Python基礎 - 関数とモジュール

モジュールの活用

よく使う機能をファイルにまとめたものがモジュールです。import文で読み込みます。

import文
  • import sys
  • sys.argv で引数を取得
from節
  • from sys import argv
  • モジュール名の修飾を省略
モジュール化のメリット
  • 再利用しやすくなる
  • チーム開発で分担しやすい
  • 部分的な機能向上が容易
146
86
Python基礎 - 関数とモジュール
クイズ

クイズ

関数の理解を確認しましょう。

次の関数定義の引数の数はいくつですか? def add(a, b): return a + b

A
0
B
1
C
2
D
3
147
87
Python基礎 - 関数とモジュール
答え

クイズ 解答

次の関数定義の引数の数はいくつですか? def add(a, b): return a + b

A
0
B
1
C
2
D
3

def add(a, b) の引数はaとbの2つです。

148
88

Python基礎 - クラスとオブジェクト

9

クラスとオブジェクト

オブジェクト指向プログラミングの基礎

160
89
Python基礎 - クラスとオブジェクト

なぜオブジェクト指向が必要か

ソフトウェアの大規模化に伴い、プログラムを整理する方法が求められました。

オブジェクト指向なし

  • プログラム全体が1つの巨大なかたまり
  • 変更すると影響範囲が広い
  • チーム開発で分担しにくい
  • 再利用が難しい

オブジェクト指向あり

  • プログラムをオブジェクト単位に分割
  • 変更の影響をオブジェクト内に閉じ込め
  • チーム開発で分担しやすい
  • 疎結合で再利用しやすい
161
90
Python基礎 - クラスとオブジェクト

クラスからインスタンスへ

クラスは「設計図」、インスタンスは「設計図から作られた実体」です。

クラスを定義する

class Personのように、属性(name, age)とメソッド(show_info)をまとめて定義する

インスタンスを生成する

person1 = Person('太郎', 20) のように、クラスから具体的なオブジェクトを作成する

メソッドを呼び出す

person1.show_info() のように、インスタンスの処理を実行する

162
91
Python基礎 - クラスとオブジェクト

クラスの定義と使い方

__init__メソッドでインスタンスの属性を初期化します。selfは「このインスタンス自身」を指します。

python
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show_info(self):
        print(f'名前: {self.name} 年齢: {self.age}歳')

person1 = Person('大阪太郎', 20)
person2 = Person('東京花子', 25)
person1.show_info()  # 名前: 大阪太郎 年齢: 20歳
person2.show_info()  # 名前: 東京花子 年齢: 25歳
163
92
Python基礎 - クラスとオブジェクト

カプセル化・継承・多態性

オブジェクト指向の3つの重要な概念です。

カプセル化
  • データを外部から隠す
  • _変数名で非公開を示す
  • propertyで安全にアクセス
継承
  • 既存クラスの機能を引き継ぐ
  • class Sub(Super): で定義
  • super()で親の処理を呼び出す
多態性
  • 同じメソッド名で異なる動作
  • クラスの種類を意識せず呼べる
  • ダックタイピングで柔軟
164
93
Python基礎 - クラスとオブジェクト

継承とオーバーライド

サブクラスでスーパークラスのメソッドを上書き(オーバーライド)できます。

python
class Product:
    def __init__(self, name, price):
        self._name = name
        self._price = price
    def get_info(self):
        return f'{self._name} 価格:{self._price}円'

class DiscountProduct(Product):
    def __init__(self, name, price, discount):
        super().__init__(name, price)
        self._discount = discount
    def get_info(self):
        d = self._price - self._discount
        return f'{self._name} 割引後:{d}円'

p = DiscountProduct('USB', 1500, 200)
print(p.get_info())  # USB 割引後:1300円
165
94
Python基礎 - クラスとオブジェクト

プロパティ(@property)

propertyを使うと、メソッドを属性のように自然に呼び出せます。値の検証も可能です。

python
class Product:
    def __init__(self, name, price):
        self._name = name
        self._price = price

    @property
    def price(self):
        return self._price

    @price.setter
    def price(self, value):
        if value < 0:
            raise ValueError('価格は0以上')
        self._price = value

p = Product('USB', 1500)
print(p.price)   # 1500(メソッドなのに属性風)
p.price = 2000   # setter経由で安全に変更
166
95
Python基礎 - クラスとオブジェクト

特殊メソッド(ダンダーメソッド)

__で囲まれた特殊メソッドを定義すると、組み込み関数や演算子と連携できます。

python
class Cart:
    def __init__(self, items):
        self._items = items

    def __str__(self):     # print()で呼ばれる
        return f'Cart({self._items})'

    def __len__(self):     # len()で呼ばれる
        return len(self._items)

    def __repr__(self):    # 対話モードで呼ばれる
        return f'Cart(items={self._items})'

cart = Cart(['A', 'B', 'C'])
print(cart)       # Cart(['A', 'B', 'C'])
print(len(cart))  # 3
167
96
Python基礎 - クラスとオブジェクト

抽象クラスとダックタイピング

ABCで「このメソッドを必ず実装してください」という約束を定義できます。

python
from abc import ABC, abstractmethod

class Printer(ABC):
    @abstractmethod
    def print_text(self, text):
        pass

class ConsolePrinter(Printer):
    def print_text(self, text):
        print(f'出力: {text}')

# ダックタイピング(継承なしでも同じメソッドがあればOK)
class Logger:
    def print_text(self, text):
        print(f'LOG: {text}')

def show(obj):
    obj.print_text('Hello')

show(ConsolePrinter())  # 出力: Hello
show(Logger())          # LOG: Hello
168
97
Python基礎 - クラスとオブジェクト

クラスメソッドとスタティックメソッド

通常のインスタンスメソッド以外に2種類のメソッドがあります。

@classmethod

  • 第1引数がcls(クラス自体)
  • クラスから直接呼び出せる
  • クラス変数の操作に使う
  • インスタンス生成の補助にも

@staticmethod

  • self/clsを受け取らない
  • 通常の関数と同じ動作
  • クラスに関連する補助処理
  • バリデーションやフォーマットに
169
98
Python基礎 - クラスとオブジェクト
クイズ

クイズ

クラスとオブジェクトの理解を確認しましょう。

カプセル化の目的として最も適切なものはどれですか?

A
プログラムの実行速度を向上させるため
B
外部からすべての属性を自由に変更できるようにするため
C
データの扱い方をクラス内部に隠し、安全性を高めるため
D
クラスを1つしか作れないようにするため
170
99
Python基礎 - クラスとオブジェクト
答え

クイズ 解答

カプセル化の目的として最も適切なものはどれですか?

A
プログラムの実行速度を向上させるため
B
外部からすべての属性を自由に変更できるようにするため
C
データの扱い方をクラス内部に隠し、安全性を高めるため
D
クラスを1つしか作れないようにするため

カプセル化はデータを外部から隠し、メソッドを通してアクセスさせることで安全性と保守性を高める仕組みです。

171
100

Python基礎 - 例外処理

10

例外処理

エラーに強いプログラムを書こう

180
101
Python基礎 - 例外処理

例外とは

例外は、実行中に発生する予期しない問題を安全に処理するための仕組みです。

例外(Exception)

文法的には正しいが、実行中に処理できない事態が発生したときに投げられるオブジェクト。

エラーとは異なり、例外処理で復旧できる

try/exceptで安全にキャッチする

例外が発生すると通常の処理は中断される

適切に処理すればプログラムを続行できる

181
102
Python基礎 - 例外処理

try/exceptの基本

try/exceptで例外をキャッチし、プログラムの異常終了を防ぎます。

python
try:
    value = int(input('数字を入力: '))
    result = 10 / value
    print(result)
except ValueError:
    print('数字として認識できません')
except ZeroDivisionError:
    print('ゼロで割ることはできません')
print('END(ここは必ず実行)')
182
103
Python基礎 - 例外処理

else / finally / raise

elseは例外なし時のみ、finallyは必ず実行。raiseで意図的に例外を発生させます。

python
# else と finally
try:
    f = open('data.txt')
except FileNotFoundError:
    print('ファイルが見つかりません')
else:
    print('読み込み成功')
finally:
    print('終了処理を実行')

# raise で意図的に例外を発生
def set_price(price):
    if price < 0:
        raise ValueError('価格は0以上')
    print(f'設定: {price}円')
183
104
Python基礎 - 例外処理

例外オブジェクトと独自例外

as eで例外の詳細を取得できます。Exceptionを継承して独自例外も作れます。

python
# 例外オブジェクトを受け取る
try:
    10 / 0
except ZeroDivisionError as e:
    print(f'例外: {e}')  # division by zero

# 独自例外クラス
class InvalidAmountError(Exception):
    pass

def pay(amount):
    if amount < 0:
        raise InvalidAmountError('金額は0以上')
    print(f'{amount}円の支払い完了')

try:
    pay(-500)
except InvalidAmountError as e:
    print('エラー:', e)
184
105
Python基礎 - 例外処理

例外クラスの階層構造

Exception の下に中間クラスがあり、その下に実際に出るエラーが並びます。

Exception
ArithmeticError
ZeroDivisionError
OverflowError
LookupError
KeyError
IndexError
OSError
FileNotFoundError
PermissionError
中間クラスなし(Exception 直下)
ValueError
TypeError
185
106
Python基礎 - 例外処理
クイズ

クイズ

例外処理の理解を確認しましょう。

try/except文で、例外が発生しなかった場合にだけ実行されるブロックはどれですか?

A
except
B
else
C
finally
D
raise
186
107
Python基礎 - 例外処理
答え

クイズ 解答

try/except文で、例外が発生しなかった場合にだけ実行されるブロックはどれですか?

A
except
B
else
C
finally
D
raise

elseブロックは、tryの中で例外が発生しなかった場合にだけ実行されます。finallyは例外の有無に関係なく必ず実行されます。

187
108

Python基礎 - ライブラリ

11

ライブラリの利用

標準ライブラリと外部ライブラリを活用しよう

200
109
Python基礎 - ライブラリ

標準ライブラリと外部ライブラリ

Pythonのライブラリは2種類に分けられます。

標準ライブラリ

  • Pythonに最初から含まれている
  • 追加インストール不要
  • datetime, os, json, csv, re など
  • 基本的な処理をカバー

外部ライブラリ

  • pipコマンドでインストール
  • PyPIから取得する
  • pandas, requests, Django など
  • 専門的な処理に対応
201
110
Python基礎 - ライブラリ

datetime — 日付と時間

日付・時間の取得、計算、フォーマット変換ができます。

python
from datetime import datetime, timedelta

now = datetime.now()
print(now.year, now.month, now.day)

# 1日後を計算
tomorrow = now + timedelta(days=1)

# 書式変換
print(now.strftime('%Y-%m-%d %H:%M:%S'))
print(now.strftime('%Y%m%d_%H%M%S'))  # ファイル名用
202
111
Python基礎 - ライブラリ

os / pathlib — ファイルとパス操作

os.pathはパスを文字列で、pathlibはオブジェクトとして扱います。

python
import os
from pathlib import Path

# os.path(文字列ベース)
path = os.path.join('data', 'input', 'sample.txt')
print(os.path.exists(path))

# pathlib(オブジェクトベース・推奨)
p = Path('data') / 'input' / 'sample.txt'
print(p.exists())
print(p.name)    # sample.txt
print(p.parent)  # data/input
print(p.suffix)  # .txt
203
112
Python基礎 - ライブラリ

よく使う標準ライブラリ

実務で頻繁に使われる標準ライブラリの一覧です。

モジュール
用途

json

JSON形式の読み書き

json.dump() / json.load()

csv

CSVファイルの読み書き

csv.writer() / csv.reader()

re

正規表現パターンマッチ

re.search(pattern, text)

random

乱数・ランダム選択

random.randint(1, 6)

zipfile

ZIP圧縮・展開

ZipFile('backup.zip', 'w')

204
113
Python基礎 - ライブラリ

よく使う外部ライブラリ

pip installでインストールする外部ライブラリの代表例です。

ライブラリ
分野
用途

pandas

データ分析

表形式データの集計・加工

requests

HTTP通信

WebサイトやAPIへのアクセス

Django

Web開発

本格的なWebアプリ開発

SQLAlchemy

データベース

ORMでDB操作(CRUD)

Pillow

画像処理

画像の読み込み・加工

scikit-learn

機械学習

分類・回帰などのML

205
114
Python基礎 - ライブラリ

SQLAlchemy — データベース操作

SQLAlchemyのORMを使うと、PythonのクラスでDBテーブルを操作できます。

python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker

engine = create_engine('sqlite:///sample.db')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

Base.metadata.create_all(engine)
session = sessionmaker(bind=engine)()

# Create
session.add(User(name='Taro', age=20))
session.commit()
206
115
Python基礎 - ライブラリ

pip と仮想環境(venv)

pipでライブラリを管理し、venvでプロジェクトごとに環境を分離します。

bash
# pipの基本操作
pip install pandas
pip install --upgrade pandas
pip uninstall pandas
pip list

# 仮想環境の作成と利用
python -m venv env

# アクティベート(Windows)
env\Scripts\activate
# アクティベート(Mac/Linux)
source env/bin/activate

# 仮想環境内でインストール
pip install pandas

# 解除
deactivate
207
116
Python基礎 - ライブラリ
クイズ

クイズ

ライブラリの理解を確認しましょう。

次のうち、外部ライブラリ(PyPIからインストール)はどれですか?

A
datetime
B
os
C
random
D
pandas
208
117
Python基礎 - ライブラリ
答え

クイズ 解答

次のうち、外部ライブラリ(PyPIからインストール)はどれですか?

A
datetime
B
os
C
random
D
pandas

datetime, os, randomは標準ライブラリです。pandasは外部ライブラリで、pip install pandasでインストールします。

209
118

Python基礎

12

まとめ

Python基礎編で学んだことを振り返ろう

220
119
Python基礎

Python基礎編の全体像

11章で学んだ内容を3つのステージに整理します。

基礎文法

変数・演算・型

print / input / ファイルI/O

コメント・PEP8

制御とデータ

if / elif / else

while / for / range

リスト・タプル・辞書・集合

設計と応用

関数・モジュール

クラス・継承・多態性

例外処理・ライブラリ

221
120
Python基礎

学んだキーワード一覧

Python基礎編で登場した重要キーワードです。

  • プログラミング / コード / インタプリタ / バイトコード
  • 変数 / 代入 / データ型 / リテラル / エスケープシーケンス
  • print / input / f文字列 / open / with
  • if / elif / else / 比較演算子 / 論理演算子 / 短絡評価
  • while / for / range / break / continue / 無限ループ
  • リスト / タプル / 辞書 / 集合 / スライス / 内包表記
  • enumerate / zip / sys.argv
  • def / return / *args / **kwargs / スコープ / import
  • class / __init__ / self / 継承 / property / 特殊メソッド
  • try / except / else / finally / raise / 独自例外
  • 標準ライブラリ / pip / venv / SQLAlchemy / PyPI
222
121
"

文法を覚え、アルゴリズムを考え、コードを書く。この繰り返しがプログラミングの力になる。Pythonなら、その一歩がとても簡単に踏み出せる。

Pythonプログラミング基礎編 — 全体のまとめ

223
122