アクセスランキング

01位
数学のための英語教本―読むことから始めよう― 
02位
入門計量経済学
03位
実用的でないPythonプログラミング―楽しくコードを書いて賢くなろう!― 
04位
サーストン万華鏡―人と数学の未来を見つめて― 
05位
ジオダイナミクス 原著第3版
  • ニュースメール
  • アフターサービス
  • facebook

実用的でないPythonプログラミング―楽しくコードを書いて賢くなろう!― 

書籍情報
ISBN978-4-320-12461-5
判型B5 
ページ数400ページ
発売日2020年08月13日
本体価格3,900円
実用的でないPythonプログラミング 書影
実用的でないPythonプログラミング

新刊

本書ではPythonを使い,火星や木星や銀河の最果てを,詩人の魂を,高度な金融の世界を,選挙の不正を,ゲーム・ショーのトリックを,探っていく。マルコフ連鎖解析のような技術を使って俳句を詠み,モンテカルロ・シミュレーションで金融市場をモデル化し,イメージ・スタッキングで天体写真を改善し,遺伝的アルゴリズムで巨大なネズミを育てる。それとともにpygame,Pylint,pydocstyle,tkinter,python-docx,matplotlib,pillowといったモジュールの経験を楽しく積むことができる。

この本は2冊目のPythonの本とみなすことができる。完全な初心者向けの本や入門クラスの後に続く本,あるいは補完する本となることを狙っている。「impractical」(実用的でない)というタイトルに反して,本書の内容はかなり実用的で,文字列やコレクションの操作といった基本的なことから,Officeドキュメントの読み書きやGUIアプリケーションの作成といった応用的なことまで,プログラミングを学ぶ上でのトピックが幅広く網羅されている。すべてのコードに注釈や説明がついており,練習プロジェクト・挑戦プロジェクトでコーディングの腕をさらに磨くことができる(練習プロジェクトは解答付き)。


原著:Impractical Python Projects: Playful Programming Activities to Make You Smarter, 2018.

目次

第1章 バカな名前ジェネレータ
≪プロジェクト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()関数を定義して実行する
まとめ
さらに読むなら
練習プロジェクト
挑戦プロジェクト


練習プロジェクトの解答
謝辞
訳者あとがき
索引