fc2ブログ
Pythonスタートブック、その内容2
Pythonスタートブックは、全部で10章の構成になっています。
最初の1から3章で、Pythonの環境を作って、プログラミングに慣れつつ、基本的なところを学びます。最も重要なポイントは、データに型と呼ばれる種類があるという事実です。1と言ったら数字の1ですが、これを引用符で囲むと'1'という文字になります。似ているようで全然違うわけです。数字は足すと計算されますが、文字は足すと連結されます。
>>> 1+1
2
>>> '1' + '1'
'11'
という感じ。このあたりの違いから掴んで、日時を表現するデータ型まで含めて使えるようになります。途中いろいろなたとえ話を織り交ぜて出来るだけ分かりやすいようにしたつもりです。

4章は、数字や文字のような単体のデータをまとめるためのデータ型を学びます。実際のプログラミングでは頻繁に使われます。数字の1と文字の'1'をまとめるには、[]でくくればよいだけです。これでリストという一つのまとまりになります。
>>> [1,'1']
[1, '1']

5章は、ほとんどのプログラミング言語にある、条件分岐と繰り返しの構文です。ifとかforといったものですが、Pythonはこうした構文もかなりシンプルに作られているので、比較的苦労なく理解できると思います。

6章はファイルの読み書きです。この章は独立色が強いので、入れるかどうかすこし迷いましたが、プログラムで実行した結果などを外部のファイルに保存できるようになると、出来ることが広がるので簡単にまとめておきました。

7章は教育用プログラミング言語LOGO(ロゴ)の影響を受けてPythonの付属しているturtleモジュールを使って、画面上の亀を操作しながら画を描きます。何を隠そう、私自身が小学生のころ、当時のMSX2というマシンで遊んでいた言語のひとつです。当時のLOGOは完全に日本語で操作できて、画面上の亀に「まえへ 10」などとやると、前に10ピクセル分動いてくれました。これと同じことをやろうと言うのが狙いです。
python_kame
もちろん、あんまり単純では勉強になりませんので、forやifといった構文を駆使して図形を描いたり亀をランダムに動かしたりしてみます。

8章は関数を作ります。引き続いて9章は新しいデータ型を作ります。これにはクラスという概念を学ぶ必要があります。ひとまずここまでできれば、Pythonの基本的なところはOKです。

10章は、あまり簡単な内容だけではせっかく買っていただくのに悪いと思い、ものすごい難しい章にしてみました。よく編集の方が許してくれたなーと思ったりしますが、半ば趣味で、先ほどの亀を全自動お掃除ロボットに仕立て上げます。といっても、もちろん掃除をするわけではなく、画面上を自動的に動き回るようにするだけです。ちなみにこのルンバという掃除機、おもちゃ感覚で欲しくて買ったんですが、実際使ってみると結構頑張ってくれます。正直、ほんとにゴミがなくなると思いませんでした・・・

最後に、付録もつけました。日本語文字コードの話や、すこし高度なテクニック、さらにちょっとしたコンピュータの歴史まで詰め込んでいたら、付録だけでも結構なボリュームになってしまいました。

Pythonが学びやすく、初心者に向いている言語だとはいっても、その全体像はそう簡単に掴むことは出来ません。ですから、もちろんこの本だけではPythonのすべてを知ることは出来ません。ただ、最初の一歩として知っておくべきことはすべて網羅してありますので、プログラミングしながら読んでいただけると、かなり出来るようになるのではないかと思っています。というか、大規模で本格的なプログラムを作るのではなく、日常のちょっとした計算やファイルの処理などを自動化したいという要望には十分応えられる実力はつくと思います。
スポンサーサイト



テーマ:IT書籍 - ジャンル:コンピュータ

【2010/04/15 22:13】 | Python | トラックバック(0) | コメント(4) | page top↑
<<Pythonと日本語文字 | ホーム | Pythonスタートブック、その内容1>>
コメント
次のステップは?
スタートブックを購入して読ませて頂いています。

turtle module で動きのあるサンプルを作れてとても興味深かったです。

また、オブジェクト指向についても
「あっ、そういうことか!」と
納得する部分が多々ありました。

あっという間に最終章にやってきたのですが、Python に更に踏み込んでいくには
次に読むお勧めの本はございますか?

matplotlib を道具としては利用していますが、
自分のコードが入り組みすぎて、後で読んでも理解に苦しむというのが現状です。

コメント頂ければ幸いです。
【2010/06/21 17:54】 URL | u.kzhk75 #i1QHBiAs[ 編集] | page top↑
Re: 次のステップは?
ありがとうございます!

「Pythonスタートブック」は誰にでもわかるというところが売りなので、実践的にPythonをつかいたいと思うと、物足りないところがあるのは仕方がないところではあるかと思います。
Web系にご興味があるなら、
「みんなのPython Webアプリ編」 柴田 淳 (著)
はPythonでWeb系開発をするための知識がまとまっているので良いかもしれません。私は時々Djangoを使いますが、そのあたりのフレームワークごとの本では、
「Django×Python (LLフレームワークBOOKS) 」露木 誠 (著)
「TurboGears×Python (LLフレームワークBOOKS) 」柴田 淳 (著)
などがあります。ただ、これらはすこし方向性が決まってからの本という感じかもしれません。

Web系以外でもPythonはよく使われていますので、matplotlibをお使いというところから勝手に想像させていただいて、科学技術系の分野におけるPythonの利用と言う意味で、最近注目しているのは、
「Python Scripting for Computational Science (Texts in Computational Science and Engineering)」Hans Petter Langtangen (著)
という本です。と、言っておきながら、この本はまだ持っていません。しかも洋書です。こんな本が日本語であったら良いなーと密かに思っています。日本語の近い書籍としては
「集合知プログラミング」 Toby Segaran (著), 當山 仁健 (翻訳), 鴨澤 眞夫 (翻訳)
があります。これは、おもにデータ分析のためのアルゴリズムを解説した本ですが、サンプルコードがすべてPythonなので、Pythonのスキルアップにも使えると思います。ただ、アルゴリズムが専門的なので、このあたりにもご興味がないとつらいかもしれません。

ここまで書いておきながら、実は、Pythonは入門書の次につながる日本語の良い本がなかなか無いような気がしてもいます。Python関連の本をすべて読んでいるわけではありませんので、今後良さそうなモノがないか引き続き探していきます。
プログラミングは、やはり実際にいろいろ書いて上達していくものなのかなと思いますが、何を書けばよいのか?というところで迷った場合は、次のようなサイトが参考になります。
>どう書く?
http://ja.doukaku.org/
>Project Euler
http://projecteuler.net/
どちらも、与えられたお題を解決するコードを書くものです。すこし数学的なアルゴリズム寄りの内容ですが、すごい人々が世の中にはたくさんいるので、その人たちの解答例を見るのも参考になります。ただ、Pythonに言語が限定されているわけではありませんので、その点は注意が必要かもしれません。

長々と書いておきながら、これといった解決策を提示できずすみません。
よさそうなモノが見つかりましたら、また報告させていただきます。
【2010/06/22 00:45】 URL | 辻真吾(つじしんご) #-[ 編集] | page top↑
継承の図についての疑問
 Pythonスタートブックはとてもわかりやすく
パソコン関係の本で初めて、最初から最後まで読めました。
この本のおかげで、ネット上にある簡単なコードなら読めるようになりました。
ありがとうございます。

それで本を読んでいて疑問に思った事があります。
継承のところ
 P249 図4で
  親クラス←子クラス
と表示されていますが、図3で「受け継ぐ」と書いてある矢印は下向きです。
上の文章では、

> このとき、継承元になっているturtle.Turtleを親クラス、継承先として定義されたKameを子クラスと呼びます(図4)。

と書かれている。
また、図4の下の文章でも

> Kame型は、turtle.Turtleを継承しただけで他には何もしていません。

とあります。
図4は「親クラス→子クラス」じゃないかと思うのですが・・・

図6と図7も同様になっているので混乱してます。
これらの図は、継承ではなくて、Kameのインスタンスをturtle.Turtleに渡しているだけと解釈していますがどうでしょうか?
【2011/02/15 00:32】 URL | borg-cube #-[ 編集] | page top↑
Re: 継承の図についての疑問
貴重なご意見ありがとうございます。(また自分のブログなのに返信遅くて申し訳ありません)

ご指摘いただいたように、見比べるとたしかに、すごく混乱を招く図でした。
p248の図3は、「受け継ぐ」という日本語のイメージをそのまま図にしたもので、私も普通の感覚で下向きの矢印を描きました。
ところで、ソフトウェアの設計図を表現する方法に、UMLというものがあります。UMLはUnified Modeling Languageの略で、統一モデリング言語と訳されているようですが、例えば以下のページなどが参考になると思います。
http://www.atmarkit.co.jp/im/carc/serial/object05/object05.html
他にもWebや書籍に沢山の情報がありますが、UMLではクラスの継承を、子クラスから親クラスへの矢印で表現します。p249の図4はこのことが頭にあったので、無意識にこの方向になってしまったものです。

どちらも無意識にやっているところが、ちょっと罪深いですが、修正するなら図はこのままに、どこかで注釈を入れるのがよいかなと思います。
しかし、すごいハッとさせるご指摘で、勉強になりました。ありがとうございましたー。
【2011/02/26 13:51】 URL | 辻真吾(つじしんご) #-[ 編集] | page top↑
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://tanopy.blog79.fc2.com/tb.php/52-3698a551
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |