内容紹介
知識ゼロから学ぶプログラミングスキルと論理的思考!
脳の働きに注目し、脳を活性化させる学習効果の高い独自のスタイルで人気の高いHead Firstシリーズにプログラミング初心者向けバージョンが登場。Pythonを使ったプログラミングの基本について、イラストや写真を多用して直感的な理解を促します。やさしい切り口ながらも、データ型、データ構造、抽象化、再帰、モジュールなど、プログラミングの基本を段階的に学び、後半では複雑で大規模なアプリケーションの作成にも取り組みます。認知科学と教育心理学に基づいたアプローチで、プログラミングのテクニックだけではなく、論理的思考やプログラミング的な考え方を、楽しみながら身に付けられるように工夫されています。
このような方におすすめ
はじめてプログラミングを学ぶ人(小学生から大人まで)
目次
詳細目次
はじめに
1章 コンピュータ的に考える:始めよう
分解する
コーディングの手順
同じ言語で話している?
プログラミング言語の世界
Pythonを使ったコードの記述と実行
Pythonのざっくりした歴史
Pythonを試す
作業を保存する
おめでとう! 最初のPythonプログラムが書けました!
フレーズ・オ・マチック
コンピュータにコードを読ませる
2章 単純な値、変数、型:値を知る
犬年齢計算機のコーディング
擬似コードからPythonのコードに変換する
手順1:入力してもらう
input 関数の動作
ユーザの入力を変数に代入する
手順2:さらに入力してもらう
そろそろコードを実行してみよう
コードの入力
変数をさらに詳しく学ぶ
式の追加
変数が「変」数と呼ばれる理由
演算子の優先順位をよく理解する
演算子の優先順位を使った計算
寄り道をする!
手順3:犬の年齢を計算する
ヒューストン、問題が発生した!
誤りは(人)コードの常
デバッグをもう少しだけ
Pythonの型とは?
コードの修正
ヒューストン、発射した!
手順4:ユーザフレンドリーな出力
3章 ブール型、判定、ループ:判定コード
ゲームをしない?
まずは骨組みの設計
コンピュータの手
乱数の使い方
ブール型って?
判定する
判定、そしてまた判定
じゃんけんに戻る
ユーザの手を取得する
ユーザの手を調べる
あいこを判定するコードを追加する
誰が勝った?
ゲームロジックの実装
ブール演算子の詳細
説明を入れる
コードにコメントを追加する
ゲームを完成させる!
ユーザの手が無効かどうかをどのように判断する?
ユーザに尋ね続ける方法
何度も行う
while ループの動作
whileを使って有効な手を選ぶまでユーザに尋ねる方法
初めてのゲームのコードが書けました。おめでとう!
4章 リストと反復:構造を用意する
バブルザらス社を助けられる?
Pythonで複数の値を表現する方法
リストの動作
ところで、そのリストの大きさって?
リストの末尾の要素にアクセスする
Pythonではずっと簡単
負のインデックスを使う
一方、バブルザらス社では
リストを反復処理する
出力の問題を修正する
出力の問題を実際に修正する
for ループ、それはリストの反復処理に最適な方法
数値の範囲に対するforループの動作
範囲をもっと使う
すべてをまとめる
ゼロからリストを作成する
リストをさらに使う
最終レポートの試運転
最高スコアの溶液は?
最も費用対効果の高い溶液はどれ?
5章 関数と抽象化:関数にする
このコードのどこがいけないの?
コードブロックを関数に変換する
関数が作成できました。さてどう使う?
実際にはどのように機能しているの?
関数は結果を返すこともできる
戻り値のある関数を呼び出す
少しだけリファクタリングしてみる
コードの実行
アバターコードの抽象化方法
get_attribute 関数の本体を書く
get_attribute を呼び出す
変数についてもう少しお話しします
変数スコープを理解する
変数が関数に渡されるとき
drink_me関数を呼び出す
関数でグローバル変数を使うということ
パラメータを深く理解する:デフォルト値とキーワード
デフォルトパラメータ値の使い方
必ず必須パラメータを最初に指定する!
キーワード引数を使う
キーワード引数とデフォルト値について
おまけの章 ソートと入れ子の反復:データを整理する
バブルソートを理解する
走査1から始める
バブルソートの擬似コード
Pythonでバブルソートを実装する
溶液番号を割り出す
6章 テキスト、文字列、ヒューリスティック:すべてを組み合わせる
データサイエンスにようこそ
読みやすさはどのように計算する?
実行計画
擬似コードを書く
分析するテキストが必要
関数を用意する
優先事項:テキスト内の単語の総数が必要
文の総数を求める
関数count_sentencesを書く
音節の数を求める。つまり、ヒューリスティックを好きになる
ヒューリスティックの作成
ヒューリスティックを書く
母音をカウントする
連続する母音を無視する
連続する母音を無視するコードを書く
末尾のe、y、句読記号を取り除く
スライス(部分文字列)を利用する
ヒューリスティックコードを完成させる
読みやすさ公式の実装
さらに進める
7章 モジュール、メソッド、クラス、オブジェクト:モジュール化する
簡単なモジュールの復習
グローバル変数__name__
オフィスにおける会話の続き
analyze.py をモジュールとして使う
analyze.py にdocstringを追加する
他のPythonモジュールを調べる
待って、誰か「タートル」って言った?!
自分だけのタートルを作成する
タートル研究所
2つ目のタートルを追加する
ところで、タートルって?
オブジェクトって何者?
わかった。じゃあ、クラスって?
オブジェクトとクラスの使い方
メソッドと属性
クラスとオブジェクトはどこにでもある
タートルレースの準備をする
ゲームを設計する
コーディングを始めよう
ゲームの準備をする
セットアップコードを書く
落ち着いて!
レースを開始する
8章 再帰と辞書:反復とインデックスを超えて
異なる計算方法
別の方法を考える
2つの場合のコードを書く
さらに練習しよう
再帰を使って回文を探し出す
再帰回文検出器を書く
アンチソーシャルネットワーク
辞書とは
辞書を作成する
キーと値は文字列でなくても大丈夫
もちろん、キーは削除できる
まず存在するかどうかを調べる
辞書の反復処理はどうなる?
アンチソーシャルネットワークで辞書を活用する
属性を追加するにはどうすればいい?
アンチソーシャルネットワークの目玉機能
最も非社交的なユーザを探す
関数呼び出しの結果を記憶しておける?
辞書を使ってフィボナッチ結果を記憶する
「メモ化」と呼ばれます
koch関数を詳しく調べる
コッホフラクタルを本格的に調べる
9章 ファイルの保存と取得:永続性
クレイジーリブを始める準備はいい?
クレイジーリブの動作
手順1:ファイルから文章のテキストを読み込む
ファイルパスの使い方
絶対パス
終わったら後片付けを忘れずに!
ファイルをコードに読み込む
もう勘弁して
クレイジーリブゲームを完成させる!
最終行をどのように判断するの?
クレイジーリブのテンプレートを読み込む
テンプレートテキストを処理する
新たな文字列メソッドを使ってバグを修正する
実際にバグを修正する
本当に問題があるコードもある
例外処理
明示的に例外を処理する
例外を処理するようにクレイジーリブを更新する
最後の手順:クレイジーリブを保存する
残りのコードを更新する
10章 Web API の利用:もっと外に目を向ける
Web APIを使って範囲を広げる
Web API の仕組み
すべてのWeb APIにはWebアドレスがある
簡単なアップグレードをする
アップグレードする
あとは優れたWeb APIが必要なだけ
API を詳しく調べる
Web API はJSONを使ってデータを返す
リクエストモジュールをもう一度詳しく
全体をまとめる:Open Notifyにリクエストする
JSONの使い方
ISSデータにJSONモジュールを使う
グラフィックスを加える
Screenオブジェクトを使う
タートルを追加してISSを描画
タートルは宇宙ステーションのようにも見える
ISSを忘れる-どこにいるの?
ISSのコードを仕上げる
11章 ウィジェット、イベント、創発的な振る舞い:インタラクティブにする
人工生命の不思議な世界へようこそ
ライフゲームを詳しく調べる
作成するもの
設計は適切ですか?
データモデルの作成
グリッドを表す
ライフゲームの世代を計算する
セルの運命を計算する
モデルのコードを完成させる
ビューの作成
最初のウィジェットを作成する
残りのウィジェットを追加する
レイアウトを修正する
グリッドレイアウトにウィジェットを配置する
グリッドレイアウトをコードに変換する
コントローラの作成
update 関数の追加
新しい計算方式に取り組む
開始/ 一時停止ボタンの動作
別の種類のイベント
一定間隔で何度も呼び出す方法:afterメソッド
セルを直接入力する、そして編集する
grid_viewのハンドラを書く
パターンを追加する
オプションメニューのハンドラを書く
パターンローダを書く
ライフゲームシミュレータをさらに進化させる!
12章 オブジェクト指向プログラミング:オブジェクト村への旅
別の方法で分割する
要するにオブジェクト指向プログラミングって?
クラスを設計する
最初のクラスを書く
コンストラクタの動作
barkメソッドを書く
メソッドの動作
継承する
ServiceDog クラスの実装
サブクラスとは
ServiceDog はDog である(IS-A)
IS-A関係を調べる
振る舞いのオーバーライドと拡張
専門用語の街へようこそ
オブジェクトは別のオブジェクトを含む(HAS-A)
犬用ホテルの設計
犬用ホテルの実装
ホテルでのアクティビティを追加する
可能なことは何でもできる(ポリモーフィズム)
他の犬に歩き方を教える
継承の威力(と役割)
付録 未収録事項:(取り上げなかった)上位10 個のトピック
1. リスト内包表記
2. 日付と時刻
3. 正規表現
4. その他のデータ型:タプル
5. その他のデータ型:集合
6. サーバサイドプログラミング
7. 遅延評価
8. デコレータ
9. 高階関数と第一級関数
10. 多数のライブラリ
索引
続きを見る