Head First はじめてのプログラミング

―頭とからだで覚えるPythonプログラミング入門

[cover photo]
TOPICS
Head First , Programming , Python
発行年月日
PRINT LENGTH
636
ISBN
978-4-87311-874-1
原書
Head First Learn to Code
FORMAT
Print PDF
Ebook
3,300円
Ebookを購入する
Print
3,300円

脳の働きに注目し、脳を活性化させる学習効果の高い独自のスタイルで人気の高いHead Firstシリーズにプログラミング初心者向けバージョンが登場。Pythonを使ったプログラミングの基本について、イラストや写真を多用して直感的な理解を促します。やさしい切り口ながらも、データ型、データ構造、抽象化、再帰、モジュールなど、プログラミングの基本を段階的に学び、後半では複雑で大規模なアプリケーションの作成にも取り組みます。認知科学と教育心理学に基づいたアプローチで、プログラミングのテクニックだけではなく、論理的思考やプログラミング的な考え方を、楽しみながら身に付けられるように工夫されています。

無料 お試し版

関連ファイル

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第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. 多数のライブラリ

索引