2018.06.07

【正誤情報】『わかるPython[決定版]』

わかるPython[決定版]

■本書の内容に下記のような誤りがありました。お詫びの上、訂正いたします。

※初版第5刷

●p.20 Memoを追加

Memo
Pythonは随時バージョンアップされています。基本的には最新版のPythonを使うことがおすすめですが、本書とは異なるバージョンのPythonを使用すると、バージョンの違いが原因でプログラムが動かないことがあります。この場合には、本書と同じバージョンのPythonをダウンロードしてお使いください。

●p.95 Memoを追加
Memo
andの代わりに、複数の比較演算子を組み合わせることもできます。例えば「tempが15以上かつ25未満」という条件式は、次のようにも書けます。

15 <= temp < 25

●p.109
(誤)
def 関数名(引数, …):
関数の処理1
関数の処理2
関数の処理3

return 戻り値

(正)
def 関数名(引数, …):
関数の処理1
関数の処理2
関数の処理3

return 戻り値

●p.109
(誤)
def 関数名(引数, …):
if 式:
関数の処理1
return 戻り値1
関数の処理2
return 戻り値2

(正)
def 関数名(引数, …):
if 式:
関数の処理1
return 戻り値1
関数の処理2
return 戻り値2

●p.111
(誤)
def 関数名(引数A, 引数B, …);
関数の処理
return 戻り値

(正)
def 関数名(引数A, 引数B, …):
関数の処理
return 戻り値

●p.122
(修正前)
引数として関数名を指定する代わりに、直接lambda式を記述することができます。

(修正後)
このmap関数は、リストの各要素に対して、指定した関数を適用します。map関数の引数には、関数名の代わりにlambda式を記述することもできます。

●p.122
(修正前)
このようにすることで、リストの各要素を引数としたlambda式の結果を得ることができます。

(修正後)
このように書くと、リストの各要素に対して、指定したlambda式を適用することができます。

●p.122
(修正前)
map関数の結果を取得するには、list関数と組み合わせます。

(修正後)
map関数の結果をリストとして取得するには、list関数と組み合わせます。

●p.130
(修正前)
要素数が比較的少なく、要素の個数が決まっているときには、

(修正後)
要素数が比較的少なく、かつ要素数が変化しないときには、

●p.130
(修正前)
後で学ぶように、タプルには要素を変数へ簡単に取り出す機能(アンパック)があるので、リストよりもプログラムを簡潔に書ける可能性があります。

(修正後)
後で学ぶように、タプルを作る簡潔な記法(パック)と、要素を変数へ取り出す簡単な方法(アンパック)を組み合わせると、さらに便利に使えます。

●p.132
(修正前)
この機能のことをアンパックまたはアンパッキングと呼びます。

(修正後)
この機能のことをアンパックまたはアンパッキングと呼びます。なお、この機能はリストや文字列などでも使えます。

●p.134
(修正前)
リストから要素を取り出すには、インデクスやfor文を使います。タプルから要素を取り出すには、インデクスやfor文に加えて、アンパックも使えます。

(修正後)
リストやタプルから要素を取り出すには、インデクスやfor文を使います。タプルに関しては、アンパックを使うのもおすすめです。タプルは要素数が変化しないので、取り出す要素数と代入先の変数の数を一致させやすく、アンパックを適用しやすいのです。

●p.135
(修正前)
2個のデータでまとめています。タプルにはアンパックの機能があるので、タプルを構成する色や品名のデータを簡単に取り出せることも利点です。

(修正後)
2個のデータにまとめています。アンパックを使えば、これらのデータを別々の変数へ取り出すことも簡単です。

●p.136 Memoを追加
Memo
すべての引数を左から順に、間隔(空白)をあけて表示します。

print(引数、 引数、 …)

●p.150 Memoを削除
Memo
次のようにprint関数に複数の引数を渡すと、すべての引数を左から順に、間隔(空白)をあけて表示します。

print(引数、 引数、 …)

●p.152
(誤)
>>> def test(**x):
… print(x)

(正)
>>> def test(**y):
… print(y)

●p.162
(修正前)
パックやアンパックを使って、要素の格納や取り出しができます。

(修正後)
パックによる要素の格納や、アンパックによる要素の取り出しを組み合わせると便利です。

●p.365
(誤)
CGIプログラムを使うと…作れるよ!

</p>

(正)
CGIプログラムを使うと…作れるよ!
</p>

※初版第3刷

●p.262, 練習問題, 解答例, インタプリタ
(誤)>>> re.match(pattern, ‘Konsai123’)
(正)>>> re.fullmatch(pattern, ‘Konsai123’)

(誤)>>> re.match(pattern, ‘konsaisan’)
(正)>>> re.fullmatch(pattern, ‘konsaisan’)

●p.288-289, テキストエディタ(lr_train.py)
(誤)”lr.model”
(正)’lr.model’

●p.294, テキストエディタ(lr_test.py)
(誤)”lr.model”
(正)’lr.model’

●p.296, テキストエディタ(lr_user.py)
(誤)”{0:4d}”
(正)'{0:4d}’

(誤)”lr.model”
(正)’lr.model’

(誤)predict = model.predict(test_data)
(正)predict = model.predict([t/255 for t in test_data])

●p.316-317, テキストエディタ(tf_user.py)
(誤)”{0:4d}”
(正)'{0:4d}’

(誤)y_label = session.run(yl, feed_dict={x: test_data})
(正)y_label = session.run(yl, feed_dict={x: [t/255 for t in test_data]})

●p.336, テキストエディタ(dl_user.py)
(誤)”{0:4d}”
(正)'{0:4d}’

(誤)y_label = session.run(yl, feed_dict={x: test_data, keep_prob: 1.0})
(正)y_label = session.run(yl,
feed_dict={x: [t/255 for t in test_data], keep_prob: 1.0})

●p.349, テキストエディタ(sp_sin.py)
(誤)”input”
(正)’input’

(誤)”time(second)”
(正)’time(second)’

(誤)”amplitude”
(正)’amplitude’

●p.351, テキストエディタ(sp_fft.py)
(誤)”input”
(正)’input’

(誤)”time(second)”
(正)’time(second)’

(誤)”amplitude”
(正)’amplitude’

(誤)”fft”
(正)’fft’

(誤)”frequency(Hz)”
(正)’frequency(Hz)’

(誤)”intensity”
(正)’intensity’

●p.353, テキストエディタ(sp_audio.py)
(誤)”audio.wav”
(正)’audio.wav’

(誤)”input”
(正)’input’

(誤)”time(second)”
(正)’time(second)’

(誤)”amplitude”
(正)’amplitude’

(誤)”fft”
(正)’fft’

(誤)”frequency(Hz)”
(正)’frequency(Hz)’

(誤)”intensity”
(正)’intensity’

(誤)y = datapyplot.figure(‘input’)
(正)y = data
pyplot.figure(‘input’)

●p.365, テキストエディタ(test.py)
(誤)print(‘Content-type: text/html; charset=UTF-8nn’)
(正)print(‘Content-type: text/html; charset=UTF-8’)

●p.366, (3)メッセージヘッダの出力, 2段落目
(削除)最後の「nn」は、改行2個を表します。次の(4)で出力するメッセージボディとの間には、空行を1行入れるという規則があるので、改行2個を出力することによって空行を作っています。

●p.366, (4)メッセージボディの出力
(追加)メッセージヘッダとメッセージボディの間には、空行を1行入れるという規則があります。このプログラムでは、三重クォート文字列内の改行が文字列に含められることを利用して、「print(”’」の直後で改行することにより、空行を作っています。

●p.368, テキストエディタ(chat.py)
(誤)print(‘Content-type: text/html; charset=UTF-8nn’)
(正)print(‘Content-type: text/html; charset=UTF-8’)

※初版第1刷
●『わかるPython』目次での誤りについて

・5.2 変数のスコープ
global文
(誤) 124
(正) 125

・12.2 数字を認識するディープニューラルネットワーク
(誤) ユーザが指定した任意の手書き数字を認識するプログラム
(正) 指定した手書き数字を認識するプログラム

・13.2 SciPyによる科学技術計算
(誤) 周波数を求める
(正) 音の周波数を求める

●p.121 本文(下から3行目)
誤:続けて戻りを指定します。
正:続けて戻り値を指定します。

●p.141 本文(上から1行目)
誤:|=は+=や=などと同様に
正:|=は+=や-=などと同様に

●p.168 本文(上から2行目)
誤:データ属性の地を描き込むことです。
正:データ属性の値を描き込むことです。

●p.178 Memo
誤:既定クラスのメソッドの呼び出しは、
正:基底クラスのメソッドの呼び出しは、

●p.250 練習問題(コマンドライン)
誤:> python file2.py file2.py
正:$ python file2.py file2.py

●p.294 プログラム名
誤:lr_train.py
正:lr_test.py

●p.296 プログラム名
誤:lr_train.py
正:lr_user.py

●p.337 コマンドライン
誤:$ pythondl_user.py2.png
正:$ python dl_user.py2.png