脳の働きに注目し、脳を活性化させる学習効果の高い独自のスタイルで人気の高いHead Firstシリーズにプログラミング初心者向けバージョンが登場。Pythonを使ったプログラミングの基本について、イラストや写真を多用して直感的な理解を促します。やさしい切り口ながらも、データ型、データ構造、抽象化、再帰、モジュールなど、プログラミングの基本を段階的に学び、後半では複雑で大規模なアプリケーションの作成にも取り組みます。認知科学と教育心理学に基づいたアプローチで、プログラミングのテクニックだけではなく、論理的思考やプログラミング的な考え方を、楽しみながら身に付けられるように工夫されています。
無料 お試し版
Head First はじめてのプログラミング
―頭とからだで覚えるPythonプログラミング入門
- TOPICS
- Head First , Programming , Python
- 発行年月日
- 2019年04月
- PRINT LENGTH
- 636
- ISBN
- 978-4-87311-874-1
- 原書
- Head First Learn to Code
- FORMAT
- Print PDF
関連ファイル
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
第1刷正誤表
第1刷正誤表
2019年12月17日更新
p.7、何て言う?の右側3項目目
【誤】
パン、ミルク、卵といった食料品の覧。
【正】
パン、ミルク、卵といった食料品の一覧。
p.55、脳力発揮の答え
【誤】
答え:C。構文エラーや実行時エラーは起こっていない。
【正】
答え:C。シンタックスエラーや実行時エラーは起こっていない。
p.58、下の浮動小数点の中の枠内の数字
【誤】10.3+e4 -4.e10
【正】10.3e+4 -4.e-10
p69、コードブロック下から3行目と2行目
【誤】
passcode = passcode + ' ' passcodeは「The red fox」 passcode = passcode + word6 passwordは「The red fox trots」 print(passcode)
【正】
passcode = passcode + ' ' passcodeは「The red fox 」 passcode = passcode + word6 passcodeは「The red fox trots」 print(passcode)
p.122、上のエクササイズの答えのコード、4行目
【誤】while guess! color
【正】while guess != color
p.142、一番下のコップの文字
【誤】
smoothie
【正】
smoothies
p.213、エクササイズのコード、7行目
【誤】recipe = recipe + ''a banana and '
【正】recipe = recipe + 'a banana and '
p.222、エクササイズの答えのコード、7行目
【誤】recipe = recipe + ''a banana and '
【正】recipe = recipe + 'a banana and '
p.239
【誤】
もちろん、まだ終わりではありません。頭の体操、重要ポイント、クロスワードが残っています。
【正】
もちろん、まだ終わりではありません。重要ポイントと練習問題が残っています。
p.249、擬似コード後半
【誤】
IF score >= 90.0: PRINT 'Reading level of 5th Grade' ELIF scores >= 80.0: PRINT 'Reading level of 6th Grade' ELIF scores >= 70.0: PRINT 'Reading level of 7th Grade' ELIF scores >= 60.0: PRINT 'Reading level of 8-9th Grade' ELIF scores >= 50.0: PRINT 'Reading level of 10-12th Grade' ELIF scores >= 30.0: PRINT 'Reading level of College Student' ELSE: PRINT 'Reading level of College Graduate'
【正】
IF score >= 90.0: PRINT 'Reading level of 5th Grade' ELIF score >= 80.0: PRINT 'Reading level of 6th Grade' ELIF score >= 70.0: PRINT 'Reading level of 7th Grade' ELIF score >= 60.0: PRINT 'Reading level of 8-9th Grade' ELIF score >= 50.0: PRINT 'Reading level of 10-12th Grade' ELIF score >= 30.0: PRINT 'Reading level of College Student' ELSE: PRINT 'Reading level of College Graduate'
p271、コードブロック網掛け部分
【誤】
if len(word) <= 3: return 1 vowels = "aeiouAEIOU" prev_char_was_vowel = False for char in word: if char in vowels: if not prev_char_was_vowel: count = count + 1 prev_char_was_vowel = True else: prev_char_was_vowel = False
【正】
if len(word) <= 3: return 1 vowels = "aeiouAEIOU" prev_char_was_vowel = False for char in word: if char in vowels: if not prev_char_was_vowel: count = count + 1 prev_char_was_vowel = True else: prev_char_was_vowel = False
p.279、擬似コード
【誤】
IF score >= 90.0: PRINT 'Reading level of 5th Grade' ELIF scores >= 80.0: PRINT 'Reading level of 6th Grade' ELIF scores >= 70.0: PRINT 'Reading level of 7th Grade' ELIF scores >= 60.0: PRINT 'Reading level of 8-9th Grade' ELIF scores >= 50.0: PRINT 'Reading level of 10-12th Grade' ELIF scores >= 30.0: PRINT 'Reading level of College Student' ELSE: PRINT 'Reading level of College Graduate'
【正】
IF score >= 90.0: PRINT 'Reading level of 5th Grade' ELIF score >= 80.0: PRINT 'Reading level of 6th Grade' ELIF score >= 70.0: PRINT 'Reading level of 7th Grade' ELIF score >= 60.0: PRINT 'Reading level of 8-9th Grade' ELIF score >= 50.0: PRINT 'Reading level of 10-12th Grade' ELIF score >= 30.0: PRINT 'Reading level of College Student' ELSE: PRINT 'Reading level of College Graduate'
p320、一番上のShellウィンドウ
【誤】
['second', 'first'] >>>
【正】
['2番', '1番'] >>>
p.368、下から2番目のコード片
【誤】
users = {} users['Kim'] = attribute
【正】
users = {} users['Kim'] = attributes
p448、❷、3行目
【誤】
オブジェクトにを生成して返します。
【正】
オブジェクトを生成して返します。
p.450、下部のコード
【誤】
import json json_string = '{"frst": "Emmett", "last": "Brown", "prefx": "Dr."}' name = json.loads(json_string) print(name['prefx'], name['frst'], name['last'])
【正】
import json json_string = '{"frst": "Emmett", "last": "Brown", "prefix": "Dr."}' name = json.loads(json_string) print(name['prefix'], name['frst'], name['last'])
p469、左下の説明(隣接するセルの数=3の説明)
【誤】
ルールに従い、死んだセルに隣接する生ているセルの数が3なので誕生します!
【正】
ルールに従い、死んだセルに隣接する生きているセルの数が3なので誕生します!
p526、脳力発揮、2行目
【誤】
オブジェクトして何を選びますか?
【正】
オブジェクトとして何を選びますか?
p.573中央、def walk()のprint文
【誤】print(self.name, 'says, "I can\'t walk, I'm playing Frisbee!"')
【正】print(self.name, 'says, "I can\'t walk, I\'m playing Frisbee!"')
目次
はじめに 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. 多数のライブラリ 索引