実用的でないPythonプログラミング
―楽しくコードを書いて賢くなろう!―
著者 | Lee Vaughan 著・ 高島 亮祐 訳 |
---|---|
分野 |
情報・コンピュータ
> プログラミング・言語 > Python 情報・コンピュータ > データサイエンス |
発売日 | 2020/08/13 |
ISBN | 9784320124615 |
体裁 | B5・400頁 |
定価 | 4,290円 (本体3,900円 + 税10%) |
この本は2冊目のPythonの本とみなすことができる。完全な初心者向けの本や入門クラスの後に続く本、あるいは補完する本となることを狙っている。「impractical」(実用的でない)というタイトルに反して、本書の内容はかなり実用的で、文字列やコレクションの操作といった基本的なことから、Officeドキュメントの読み書きやGUIアプリケーションの作成といった応用的なことまで、プログラミングを学ぶ上でのトピックが幅広く網羅されている。すべてのコードに注釈や説明がついており、練習プロジェクト・挑戦プロジェクトでコーディングの腕をさらに磨くことができる(練習プロジェクトは解答付き)。
原著:Impractical Python Projects: Playful Programming Activities to Make You Smarter、 2018.
≪プロジェクト1≫ペンネームを生成せよ
プロジェクトを計画・設計する
戦略
擬似コード
コード
Pythonコミュニティのコーディング規約を使う
Pylintでコードをチェックする
docstringでコードを設計する
コードスタイルをチェックする
まとめ
さらに読むなら
練習プロジェクト
挑戦プロジェクト
第2章 回文を見つける
辞書を入手して開く
ファイルを開くときの例外を処理する
辞書ファイルを読み込む
≪プロジェクト2≫単語の回文を探せ
戦略と擬似コード
単語の回文を見つけるコード
≪プロジェクト3≫語句の回文を探せ
戦略と擬似コード
語句の回文を見つけるコード
回文のプロファイリング
回文の最適化
にりわ終
さらに読むなら
練習プロジェクト
挑戦プロジェクト
第3章 アナグラムを解く
≪プロジェクト4≫単語のアナグラムを探せ
戦略と擬似コード
単語のアナグラムを見つけるコード
≪プロジェクト5≫語句のアナグラムを探せ
戦略と擬似コード
語句のアナグラムを見つけるコード
≪プロジェクト6≫ヴォルデモートを探せ:ガリア式策略
≪プロジェクト7≫ヴォルデモートを探せ:イギリス式総当たり
戦略
イギリス式総当たり
まとめ
さらに読むなら
練習プロジェクト
挑戦プロジェクト
第4章 南北戦争の暗号を解読する
≪プロジェクト8≫ルート暗号を解読せよ
戦略
擬似コード
ルート暗号の復号コード
ルート暗号をハックする
ユーザーインタフェースを追加する
≪プロジェクト9≫レールフェンス暗号を解読せよ
戦略
レールフェンス暗号の暗号化コード
レールフェンス暗号の復号コード
まとめ
さらに読むなら
練習プロジェクト
挑戦プロジェクト
第5章 清教徒革命の暗号の解読と生成
≪プロジェクト10≫トレヴァニオン暗号を解読せよ
戦略と擬似コード
トレヴァニオン暗号のコード
≪プロジェクト11≫null暗号を書け
リスト暗号のコード
リスト暗号の出力
まとめ
さらに読むなら
練習プロジェクト
第6章 見えないインクで書く
≪プロジェクト12≫ヴィジュネル暗号を隠せ
プラットフォーム
戦略
見えないインクを作る
python-docxでWord文書を操作する
アセットをダウンロードする
擬似コード
コード
python-docxをインポートし,リストを作り,レターヘッドを追加する
メッセージを整形して差し込む
ヴィジュネル暗号を追加する
隠れたメッセージを特定する
まとめ
さらに読むなら
練習プロジェクト
挑戦プロジェクト
第7章 遺伝的アルゴリズムで巨大なネズミを育てる
すべての解の中から最高のものを見つける
≪プロジェクト13≫スーパーラットを育てろ
戦略
スーパーラットのコード
まとめ
≪プロジェクト14≫ハイテク金庫を破れ
戦略
金庫破りのコード
まとめ
さらに読むなら
挑戦プロジェクト
第8章 俳句のために音節を数える
日本の俳句
≪プロジェクト15≫音節を数えろ
戦略
コーパスを使う
NLTKをインストールする
CMUdictをダウンロードする
音節の代わりに音を数える
複数の発音で単語を扱う
足りない単語を考慮する
訓練コーパス
足りない単語のコード
音節を数えるコード
準備して,読み込んで,数える
main()関数を定義する
プログラムをチェックするプログラム
まとめ
さらに読むなら
練習プロジェクト
第9章 マルコフ連鎖解析で俳句を詠む
≪プロジェクト16≫マルコフ連鎖解析
戦略
単語を選択して破棄する
行から行へ続ける
擬似コード
訓練コーパス
デバッグ
スキャフォールド
loggingモジュールを使う
コード
準備
マルコフモデルを構築する
ランダムに単語を選ぶ
マルコフモデルを適用する
俳句の行を生成する
ユーザーインタフェースを書く
結果
佳作の俳句
期待賞の俳句
まとめ
さらに読むなら
挑戦プロジェクト
第10章 地球人は孤独なのか? フェルミのパラドックスを探る
≪プロジェクト17≫天の川銀河をモデリングせよ
戦略
文明の数を見積もる
電波バブルの大きさを選択する
検知確率を求める式を生成する
検知確率のコード
文明の数に対して検知確率を計算する
予測のための公式を生成して結果をチェックする
グラフィカルモデルを構築する
グラフィカルモデルを拡大・縮小する
銀河系シミュレータのコード
結果
まとめ
さらに読むなら
練習プロジェクト
挑戦プロジェクト
第11章 モンティ・ホール問題
モンテカルロシミュレーション
≪プロジェクト18≫ボス・サバントを検証せよ
戦略
ボス・サバントを検証するコード
≪プロジェクト19≫モンティ・ホールゲーム
オブジェクト指向プログラミングへの第一歩
戦略と擬似コード
ゲームのアセット
モンティ・ホールゲームのコード
まとめ
さらに読むなら
練習プロジェクト
第12章 老後資金を守る
≪プロジェクト20≫引退生活をシミュレーションせよ
戦略
過去の収益が重要だ
最大の不確実性
結果を定性的に提示する方法
擬似コード
過去のデータを見つける
コード
データを読み込む関数と入力を取得する関数を定義する
ユーザー入力を取得する
ほかに間違った入力がないかチェックする
モンテカルロエンジンを定義する
あるケースの各年をシミュレーションする
破産確率を計算する
main()関数を定義して呼び出す
シミュレータを使う
まとめ
さらに読むなら
挑戦プロジェクト
第13章 異星の火山活動を再現する
≪プロジェクト21≫イオの噴煙
pygameを一切れ
戦略
ゲームスケッチを使って計画する
Particleクラスを計画する
コード
モジュールをインポートし,pygameを初期化し,色を定義する
Particleクラスを定義する
粒子を噴出する
粒子を更新して境界条件を制御する
main()関数を定義する
main()関数を完成させる
シミュレーションを実行する
まとめ
さらに読むなら
練習プロジェクト
挑戦プロジェクト
第14章 マーズオービターを操縦する
ゲーマーのための宇宙力学
万有引力の法則
惑星の運動に関するケプラーの法則
軌道力学
≪プロジェクト22≫マーズオービターゲーム
戦略
ゲームのアセット
コード
インポートしてカラーテーブルを作成する
Satelliteクラスの初期化メソッドを定義する
衛星の初期位置,速度,燃料,音声を設定する
スラスターに点火してプレイヤーの入力をチェックする
衛星を配置する
衛星を回転させて軌道を描く
satelliteオブジェクトを更新する
Planetクラスの初期化メソッドを定義する
惑星を自転させる
gravity()メソッドとupdate()メソッドを定義する
離心率を計算する
ラベルを作る関数を定義する
土壌水分の地図を作る
影をつける
main()関数を定義する
オブジェクトをインスタンス化し,様々な変数を用意する
ゲームループを開始して音を鳴らす
重力を適用し,離心率を計算し,失敗を処理する
成功報酬を与え,スプライトを更新して描画する
説明と遠隔測定データを表示して影をつける
まとめ
挑戦プロジェクト
第15章 ぼやけた天体写真を精細化する
≪プロジェクト23≫木星をスタッキングせよ
pillowモジュール
ファイルとフォルダを扱う
ディレクトリパス
シェルユーティリティモジュール
動画から画像を抜き出す
戦略
コード
切り取って拡大するコード
スタッキングのコード
画像を補正するコード
まとめ
さらに読むなら
挑戦プロジェクト
第16章 ベンフォードの法則で不正を見つける
≪プロジェクト24≫先頭の数字についてのベンフォードの法則
ベンフォードの法則を適用する
カイ二乗検定を実行する
データセット
戦略
コード
モジュールをインポートしてデータを読み込む
先頭の数字を数える
個数の期待値を取得する
適合度を計算する
棒グラフを描く関数を定義する
棒グラフを描く関数を完成させる
main()関数を定義して実行する
まとめ
さらに読むなら
練習プロジェクト
挑戦プロジェクト
練習プロジェクトの解答
謝辞
訳者あとがき
索引