■サンプルファイルのダウンロードについて
本書掲載のサンプルファイルは、一部を除いてインターネット上のダウンロードサービスからダウンロードすることができます。詳しい
手順については、本書の巻末にある袋とじの内容をご覧ください。
なお、ダウンロードサービスのご利用にはユーザー登録と袋とじ内に記されている番号が必要です。そのため、本書を中古書店から購入されたり、他者から貸与、譲渡された場合にはサービスをご利用いただけないことがあります。あらかじめご承知おきください。

・本書の内容についてのご意見、ご質問は、お名前、ご連絡先を明記のうえ、小社出版部宛文書（郵送または E-mail）でお送りください。
・電話によるお問い合わせはお受けできません。
・本書の解説範囲を越える内容のご質問や、本書の内容と無関係なご質問にはお答えできません。
・匿名のフリーメールアドレスからのお問い合わせには返信しかねます。
本書で取り上げられているシステム名／製品名は、一般に開発各社の登録商標／商品名です。本書では、™ および ® マークは明記していません。本書に掲載されている団体／
商品に対して、その商標権を侵害する意図は一切ありません。本書で紹介している
URL や各サイトの内容は変更される場合があります。

はじめに

Python は単純なプログラムから高度な目的にまで活用できる優れたプロ
グラミング言語です。

Python には、基本的な機能を提供する一連の関数が組み込まれていることに加えて、さまざまな機能を提供するモジュールと呼ばれるプログラミン
グのパーツが提供されているので、それを利用することで高度なことを容易に実現することができます。
本書では目的別に Python を活用するための組み込み関数やモジュールとその使い方の例を示します。たとえば、集計・統計に関する演算を行う方法
や、Microsoft のオフィスドキュメントを Python のプログラムで読み込んで利用する方法から、サウンドの鳴らし方まで、広範囲のテクニックを取り上げます。
本書で扱うのは比較的頻繁に使われる重要なテクニックです。基本的なモジュールとして公式ドキュメントの「Python. 標準ライブラリ」に掲載されているモジュールだけでなく、組み込み関数と、別に提供されていて便利に使えるモジュールもいくつか取り上げますが、当然ながらあらゆるモジュー
ルをカバーしているわけではありません。また、開発ツールやフレームワー
クに関することは扱いません。
本書は、必要に応じてやりたいことが書かれている項目を読んでも構いま
せんし、Python の入門書などで Python の最も基本的なことを学習した後で本書全体を通読して Python の使い方を整理したり、Python でできることを把握するのにも役立ちます。さらには、本書で関数とモジュールの使い方を理解すれば、本書で取り上げていないモジュールの使い方を理解することに大いに役立つでしょう。
本書を参考にして Python を十分に活用してください。

iii

本書の表記. Italic .

そこに具体的な文字や数値が入ることを表します。たとえば「Python.3.x 」は、x に数値が入り、「Python.3.6」や「Python.

3.7」となることを表します。
. […].

書式の説明において、[ と ] で囲んだものは省略可能である. >>>.

Python のインタープリタのプロンプトを表します。掲載しことを示します。

ているコードサンプルで >>> の後にプログラムコードが続く場合は、Python のインタープリタで対話的に実行していることを表します。

. > または $.

OS のコマンドプロンプトを表します。

. Bold.

プロンプトに対してキーボードから入力する部分は太字で
表します。

. ┗.

コードの 1 行が長く、紙面の都合で折り返して記載する場
合に、継続行の先頭にこのマークを付けます。

.

.

補足説明や知っておくと良い事柄です。

ご注意. ●. 本書の内容は本書執筆時の状態で記述しています。執筆時の Python の
最新のバージョンは 3.7 です。将来、Python のバージョンが変わるな
ど、何らかの理由で記述と実際とが異なる結果となる可能性があります。

. ●. 本書では Python.3 を使う前提で説明します。Python.2 と Python.3 では異なる部分が多数あり、本書の内容の多くは Python.2 にはそのまま
では適用できないかまったく適用できません。本書のコードの動作を確認した Python のバージョンは 3.7 です。

. ●. 本書は Python や Python で使うことができるモジュールについてすべiv

て完全に解説するものではありません。本書では、どのような目的に対してどのようなモジュールの関数／メソッドを使うことができるのかということを紹介していますが、すべての関数／メソッドやそのパラメータを網羅した完全なリファレンスではありません。必要に応じて Python のドキュメントなどを参照してください。

. ●. 本書のサンプルは、プログラミングを理解するために掲載するものです。実用的なアプリとして提供するものではありませんので、ユーザーのエラーへの対処やその他の面で省略してあるところがあります。

. ●. ビープ音やサウンドの鳴るプログラムを実行する前に、必ずシステムの音量を小さく設定してください。

本書に関するお問い合わせについて
本書の内容に関するご質問等は、sales@cutt.co.jp 宛に E メールでお問い
合わせください。
なお、本書の記載内容から外れるご質問等には回答できません。あらかじ
めご承知おきください。
お問い合わせの際には下記事項を明記してください。

. ●. 氏名. ●. 連絡先メールアドレス. ●. 書名. ●. 記載ページ. ●. お問い合わせ内容. ●. 実行環境

v

目

次

目次
はじめに............................................................................................................iii

第1 章 Python の文法 …… 1
1.1
1.2
1.3
1.4
1.5
1.6

第

キーワード............................................................................................2
行・空白・インデント..................................................................... 20
数.......................................................................................................... 24
組み込み定数..................................................................................... 28
組み込み関数..................................................................................... 29
その他の要素..................................................................................... 70

2 章 数と集計、統計 …… 79
2.1

数値演算.............................................................................................. 80● 合計を求める..................................................................................................................80● 平方根を求める.............................................................................................................80● さまざまな数値演算を行う......................................................................................812.2

平均値と中央値................................................................................. 84● 平均を求める..................................................................................................................84● 調和平均を求める........................................................................................................86● 中央値を求める.............................................................................................................87● 最頻値を求める.............................................................................................................882.3

分散と標準偏差................................................................................. 89● 母分散を求める.............................................................................................................89● 標本分散を求める........................................................................................................90● 母標準偏差を求める....................................................................................................90● 標本標準偏差を求める...............................................................................................91

2.4

乱数...................................................................................................... 92● 乱数の生成の準備をする...........................................................................................92● 整数の乱数を生成する...............................................................................................93

vi

目 次

● 実数の乱数を生成する...............................................................................................95

2.5

日付と時間......................................................................................... 96● 現在の日付や時刻を取得する..................................................................................96● システム時刻を取得する...........................................................................................98● 経過時間を計る.............................................................................................................98● カレンダーを作成する...............................................................................................99

第3 章 データの操作 …… 101
3.1

並べ替え............................................................................................ 102● 要素を並べ替える..................................................................................................... 102● オブジェクトを並べ替える................................................................................... 103● 要素を逆に並べ替える............................................................................................ 104

3.2

検索.................................................................................................... 104● 検索する........................................................................................................................ 105● オブジェクトを検索する........................................................................................ 105

3.3

暗号.................................................................................................... 106● 暗号化する................................................................................................................... 106● 復号する........................................................................................................................ 108

第4 章 入出力 …… 111
4.1

標準デバイスへの入出力............................................................... 112● 出力する........................................................................................................................ 112● 入力する........................................................................................................................ 113

4.2

テキストファイル入出力............................................................... 114● ファイルに書き出す................................................................................................. 114● ファイルを読み込む................................................................................................. 115

4.3

バイナリファイル入出力............................................................... 117

4.4

CSV ファイル入出力....................................................................... 118● バイナリファイルを読み書きする..................................................................... 117● ファイルに書き出す................................................................................................. 118● ファイルを読み込む................................................................................................. 119

4.5

オブジェクト入出力....................................................................... 120● オブジェクトを読み書きする............................................................................... 120

vii

第

5 章 文字と文字列 …… 125
5.1

文字の変換....................................................................................... 126● 大文字を小文字に変換する................................................................................... 126● 小文字を大文字に変換する................................................................................... 126● バイト列を UTF-8 文字列に変換する................................................................ 127● UTF-8 文字列をバイト列に変換する................................................................. 127

5.2

文字コードの変換........................................................................... 127● シフト JIS を UTF-8 に変換する.......................................................................... 128● UTF-8 を Shift-JIS に変換する.............................................................................. 128

第6 章 システム …… 131
6.1

コマンドライン引数....................................................................... 132

6.2

システム情報................................................................................... 133● コマンドライン引数を取得する.......................................................................... 132● システムフラグを表示する................................................................................... 133● 整数の最大値を調べる............................................................................................ 134● プラットフォームを調べる................................................................................... 135● Python のバージョンを調べる............................................................................. 135

6.3

スリープ............................................................................................ 136● プログラムを一時停止する................................................................................... 136● PyGame で一時停止する........................................................................................ 137

6.4

プログラムの停止........................................................................... 138● プログラムを終了する............................................................................................ 138● インタープリタを終了する................................................................................... 139

6.5

第実行環境............................................................................................ 139● 実行環境によってプログラムを変える............................................................ 140

7 章 GUI プログラミング …… 141
7.1

GUI プログラミングの考え方....................................................... 142● GUI アプリの構造...................................................................................................... 142● ウィンドウを作成する............................................................................................ 143

viii

目 次

第

7.2

ダイアログベースのアプリ........................................................... 147

7.3

ゲームウィンドウの作成............................................................... 155

7.4

マウス................................................................................................ 162● ダイアログベースのアプリを作る..................................................................... 148● ゲームウィンドウを作成する............................................................................... 155● マウスクリックを検出する................................................................................... 162

8 章 グラフィックス …… 165
8.1

図形の描画....................................................................................... 166● ウィンドウを作成する............................................................................................ 166● 円を表示する............................................................................................................... 167● 楕円を描く................................................................................................................... 170● 円弧を描く................................................................................................................... 172● 線を描く........................................................................................................................ 173● 多角形を描く............................................................................................................... 175● 文字列を表示する..................................................................................................... 176

8.2

イメージの表示............................................................................... 180● 単純なイメージを表示する................................................................................... 180● 複数のイメージを表示する................................................................................... 182

第9 章 グラフ …… 185
9.1

グラフの描画................................................................................... 186● 折れ線グラフを描く................................................................................................. 186● 棒グラフを描く.......................................................................................................... 192● 円グラフを描く.......................................................................................................... 195● 散布図を描く............................................................................................................... 200● ヒストグラムを描く................................................................................................. 202

第10 章 マルチメディア …… 205
10.1 ビープ音............................................................................................ 206● ビープ音を鳴らす..................................................................................................... 206● システムのサウンドを鳴らす............................................................................... 207ix

● 環境によって切り替える........................................................................................ 208

10.2 サウンド............................................................................................ 209● サウンドの情報を取得する................................................................................... 209● WAVE サウンドを鳴らす....................................................................................... 210● サウンドを鳴らす..................................................................................................... 212● ストリーミング再生する........................................................................................ 216● サウンドを録音する................................................................................................. 220

10.3 ビデオ................................................................................................ 221● ビデオを再生する..................................................................................................... 221

第11 章 オフィスドキュメントの操作 …… 225
11.1 word のドキュメント..................................................................... 226● word のドキュメントを読み込む........................................................................ 226● Word ドキュメントを変更する........................................................................... 231

11.2 Excel ファイル................................................................................. 232● openpyxl で Excel ファイルにアクセスする.................................................. 233● openpyxl で xslx ファイルに書き込む.............................................................. 234● xlrd で Excel ファイルにアクセスする............................................................. 236● xlwt で xls ファイルに書き込む........................................................................... 237

第12 章 HTML/XML の操作 …… 241
12.1 HTML のドキュメント.................................................................... 242● モジュールをインストールする.......................................................................... 242● HTML ドキュメントを読み込む.......................................................................... 243● 要素を取り出す.......................................................................................................... 244

12.2 XML ドキュメント.......................................................................... 246● XML ドキュメントを読み込む............................................................................. 246● XML ドキュメントを変更する............................................................................. 248● XML ドキュメントを保存する............................................................................. 248● XML ドキュメントを生成する............................................................................. 249

x

目 次

第

13 章

バーコード …… 253

13.1 バーコードのデコード................................................................... 254● バーコードをデコードする................................................................................... 254

13.2 バーコードの作成........................................................................... 255● バーコードを作成する............................................................................................ 255● QR コードを作成する.............................................................................................. 257

付  録 …… 259
付録 A Python の使い方........................................................................... 260
付録 B トラブルシューティング............................................................. 266
付録 C 参考リソース.................................................................................. 274

索  引.............................................................................................................. 277

xi

1
Python の文法
こ こ で は、Python の 文 法 と、Python に組み込まれている関数など、基本的事項
を簡潔にまとめて示します。

第1章

Python の文法

1

Python の文法

1.1 キーワード
キーワードは Python が使うために予約されていて、変数や関数などの名前として使うことができないワードです。たとえば、「and = 12」のように、キーワードを変数名として使おうとするとエラー「SyntaxError:.invalid.

syntax」になります。

and

左辺と右辺の値の論理積を求めます。つまり、and の両辺が True の場合に限って True になります。次の例は、x > 2 かつ y < 10 の場合に Trueと出力します。

>>> x = 3; y = 4>>> if x > 2 and y < 10:...
...

print('True')

True

as

モジュールをインポート（import）するときと、ファイルを with で読み込むときに名前を割り当てます。

たとえば、tkinter をたびたび使う場合に、as を使って別の名前 Tk を付けてインポートすると、Tk という省略した名前で指定することができます。つまり、
import tkinterapplication = tkinter.Tk()

と

2

1.1

キーワード

import tkinter as Tk

application = Tk.Tk()

は同じ効果を持ちます。

次に示すのは、with と as を使って、ファイルを開いて読み込み、読み込んだ内容を出力する例です。

with open("sample.txt", "r") as txtin:
print(txtin.read())

assert式の診断を行います。次の形式で使います。
assertexpression, message

assert が 実 行 さ れ た と き、expression が False（ 偽 ） で あ れ ば、AssertionError を発生させて、エラーメッセージ message を出力してプロ
グラムの実行を停止します。

次の例では、
x が負の値であるときに「x は 0 以上の値でなければならない」というメッセージを出力してプログラムを停止します。
assert x >= 0, "xは0以上の値でなければならない"

assert は、論理的に特定の値にならなければならないような場所で条件を満たしているかどうか調べるときに使います。一般的には、デバッグの目的で、ある変数の値が特定の値や範囲になるかどうかをチェックするときなどに使われます。

3

1

Python の文法

breakwhile 文や for 文のループを途中で終了して、ループの次の文に制御を移します。

次の例では、while 文の無限ループで i が 5 以上になったときにループを抜けます。
i = 0

while (True):i += 1

if i>5:break

print(i)class
クラスを宣言するときに使うキーワードです。クラスには、次のようなものを定義することができます。

. ●. クラス全体で共通となるクラス変数. ●. インスタンスごとに異なる値を保存できるインスタンス変数. ●. クラスのインスタンス（オブジェクト）を作成するときに呼び出されるコンストラクタ（__init__(self)）.

●.

クラスのコードを記述するメソッド

次のプログラムは、円を表すクラス Circle を定義して利用する例です。
リスト1.1●classsample.py# classsample.py# -*- coding:utf-8 -*class Circle:
PI = 3.14

4# クラス変数

1.1

def __init__(self):# コンストラクタ

def getArea(self):# getArea()メソッド

def getR(self):# getR()メソッド

def setR(self, r):# setR()メソッド

self.r = 10.0

キーワード

# インスタンス変数

return self.r * self.r * self.PI
return self.r
self.r = r

c = Circle()# クラスのインスタンスを作成

print(c.getArea())# 面積を出力

c.setR(5)# 半径を指定上のコードはスクリプト（Python のソースコード）の例です。Pythonのインタープリタでこれらのコードを実行するときには、クラスのメンバーの間に空行を入れてはなりません。次のように実行します。
>>> class Circle:
...
...
...

PI = 3.14

def __init__(self):
self.r = 10.0

# クラス変数# コンストラクタ# インスタンス変数...

def getArea(self):...

def getR(self):# getR()メソッド...

def setR(self, r):# setR()メソッド

...
...
...
...

# getArea()メソッド

return self.r * self.r * self.PI
return self.r
self.r = r>>> c = Circle()# クラスのインスタンスを作成>>> print(c.getArea())# 面積を出力>>> c.setR(5)78.5# 半径を指定5

1

Python の文法

なお、PI はクラス変数なので、クラスの外で参照するときには「pi =Circle.PI」のようにクラス名で修飾して使います。

クラスの継承クラスは他のクラスを継承することができます（クラスが他のクラスを派生することができるともいえます）。
派生元のクラスを親クラス（スーパークラスともいう）といい、派生したクラスを子クラス（サブクラス）といいます。

次に示すのは、親クラス Animal を継承する Dog クラスの例です。

class Animal(object):leg = 4class Dog(Animal):def __init__(self, name):
self.name = namepochi = Dog('Pochi')print(pochi.leg)# コンストラクタ# インスタンス変数# 4が返される

特殊メソッドオブジェクトの比較演算子に対応する機能を特殊メソッドとして定義することができます。次のような比較演算子と対応する特殊メソッドがあり.
ます。
表1.1●オブジェクトの比較演算子の特殊メソッド
演算子

特殊メソッド<=object.__le__(self, object)

<

==
!=
>

>=

6

object.__lt__(self, object)
object.__eq__(self, object)
object.__ne__(self, object)
object.__gt__(self, object)
object.__ge__(self, object)

1.1

キーワード

これらのメソッドを定義するときには、True か False を返すようにし.

ます。

次に示すのは、同じであるかどうかを判断する特殊なメソッド __eq__と、異なるかどうかを判断する __ne__ を定義した例です。__eq__ は演算子 == で、__ne__ は演算子 != で機能します。
class Dog():

def __init__(self, name):
self.name = namedef __eq__(self, arg1):# 特殊メソッド

def __ne__(self, arg1):# 特殊メソッド

return self.name == arg1.name
return self.name != arg1.name

x = Dog('pochi')y = Dog('Pochi')z = Dog('pochi')print(x == y)# Falseになる

print(x != y)# Trueになる

print(x == z)print(x != z)# Trueになる# Falseになる

continue

while 文や for 文のループで、ループの途中からループの先頭にジャンプします。continue 文以降ループの最後までの文はすべて実行しません。

次の例では、for 文のループで、i が奇数の時にはループの先頭にジャンプして continue の次の print() を実行しないことによって、偶数だけを出力します。

for i in range(10):if i % 2 == 1:
continue

print(i)71

Python の文法

def
関数やメソッド（クラスの内部に定義した関数）を定義するときに使うキー
ワードです。
def name([arg1, arg2...]):[return x]name は関数の名前、arg1、arg2、……は関数が呼び出される時に渡される引数です。

関数の定義の中で return を使って値を返すことができます（他の一部のプログラミング言語とは違って、値を返さなくても構いません）。

次に示すのは、2 つの引数 a と b を加算した値を返す関数 add() を宣言して定義し、それを使う例です。
def add(a, b):
return a+bx=1; y=3

print(add(x, y))del
すでに定義してある名前を削除します。

次に示すのは、変数 x を定義して使った後で del で変数 x を削除して再び使うと NameError が生成されることを Python のインタープリタで実行して示した例です。
>>> x=1>>> print(x)1>>> del x>>> print(x)8