ちょっとひと休み

明日からおでかけなのでちょっとお休みするかもしれません。なんかずっとフィボナッチづいてましたが、関数の使い方をちゃんと整理したいです。「http://www.python.jp/Zope/intro/instant_python_jp」の最後の方にかなり大事なことが書いてある気がします。

Rubyのyield

それに対して(あ、昨日の続きです)、rubyのyieldっていうのは、たぶんこんな感じだと思います。rubycoさんの1つめのをムリヤリPythonで書くと、 def ruby_yield(block, x): return block(x) def fib_gen(block): a, b = 1, 1 while ruby_yield(block, a): a,…

Mochikit

何故か起きております。JavaScriptの勉強してるid:jascoさんもいるので、次はMochikitの勉強誰かしないかなぁ。あれは絶対面白いと思うよ。わたしはそこまで手がまわらないので、mochikikkoさんいらっしゃい。で、「もちきっこの日記」とかになるわけです。…

yieldって何だ

ふーん。PythonのyieldとRubyのyieldって全然意味が違う(はず)なのに、結果的によく似たソースになっているのが面白い。 >>> def f(): for i in range(10): yield i >>> g = f() >>> g <generator object at 0x00CB8CD8> >>> dir(g) ['__class__', '__delattr__', '__doc__', '__getattribute</generator>…

リストを変更するメソッドは値を返さない

昨日のmyreverse1で return myreverse1(xs[1:]) + [xs[0]]これを return myreverse1(xs[1:]).append(xs[0])と書けるんじゃないかと思ったんですがエラーになりました、appendはリストの内容を変更して(破壊的?)値は返さないんですね。

ジェネレータ版

イテレータ版も書こうと思ったんですがまだよく理解していないのでまた今度にします。そのかわり、Pythonにはわたしでも簡単に書けるジェネレータがあるんです。これはPythonの面白いところのひとつだと思います。call/ccはよくわからないけど、似たようなも…

お前も反復にしてやろうか

こうかな? def myreverse2(xs): def myr_iter(src, dest): if len(src) == 0: return dest else: return myr_iter(src[1:], [src[0]] + dest) return myr_iter(xs, [])

リストに要素を足さない

最初、myreverse1(xs[1:]) + xs[0] と書いていてエラーになりました。 return myreverse1(xs[1:]) + xs[0] TypeError: can only concatenate list (not "int") to listなるほど。xs[0]はただの数値なので、リストに足しちゃだめなんですね。 return myrevers…

リストの反転

haskoさんちのリストの反転をやってみる。まあ全く同じようには書けませんが。 def myreverse1(xs): if len(xs) == 0: return [] else: return myreverse1(xs[1:]) + xs[0:1]

フィボナッチ数列いろいろ

higeponさんのScheme版 rubycoさんのruby版 takatohさんのHaskell版 sumimさんのcall/cc版(Smalltalkとruby) 4/18追記 rubycoさんのcall/cc版(ruby) 4/19追記 rubycoさんなにがなにやら、、、 rubycoさんのを見て対抗しようと思ったけど、Pythonのlambdaの中…

Python 社内勉強会 資料 - ObjectClub

(株)永和システムマネジメントさんの社内勉強会の資料だそうです。 http://www.objectclub.jp/technicaldoc/else/

反復版

id:higepon:20060416を見て反復版を作ってみました。これでいいのかな。 def fib3_iter(a, b, i, n): if i == n: return a else: return fib3_iter(b, a + b, i + 1, n) def fib3(n): return fib3_iter(1, 1, 0, n)

フィボナッチ数列

最近のトレンドとしては、やっぱりHello, Woldの次はフィボナッチ数列ですよね(!?)id:rubyco:20060228風再帰版 def fib1(n): if n <= 1: return 1 else: return fib1(n - 1) + fib1(n - 2)Pythonチュートリアルの中にあるループ版 def fib2(n): a, b = 1, 1 …

新山さんの「ぱいがめ入門」

Python によるゲームプログラミング実況中継 すごい。面白い。音声解説付きです。結構前に作られたみたいですが、いわゆる今流行のスクリーンキャストですね。pyvnc2swfを使って作られているみたいです。WindowsへのPythonのインストールとかIDLEの使い方と…

リテラル好き好き

id:m-hiyama:20060317ってひと月近く前の話ですが。私もリテラル好き好きで、特にLightWeightLanguageではリテラルの表現力って大事だと思います。そういう意味ではちょっとPerlやRubyが羨しいかなぁ。あ、Rubyはほとんど知らないんですが。Perlのq()とかqw(…

[文字列] リテラルいろいろ

せっかくなのでもうちょっと文字列を。 http://www.python.jp/doc/release/tut/node5.html#SECTION005120000000000000000 http://www.python.jp/doc/release/ref/strings.html シングルクォートとダブルクォートって、意味的には違いは無いってことかな。 >>…

文字列のフォーマット(3)

きのうはむずかしいことを考えすぎたので、単純にいっぱい練習してみたいと思います。 # 普通に >>> "%d" % 10 '10' # これもCと一緒 >>> "%04d" % 10 '0010' # 二つ以上はタプルで指定 >>> "%d %d" % (10, 20) '10 20' # 桁数もタプルで指定してみる >>> "%…

文字列のフォーマット(2)

昨日の続き。ところでPython Shellから何かわからないことを調べる手段として、help()という関数があります。 >>> help(1) Help on int object: class int(object) | int(x[, base]) -> integer | | Convert a string or number to an integer, if possible.…

Effective Python Programming - OSCON 2005

ウロウロしていたら、Effective Python Programming - OSCON 2005というPDFファイルを見つけてしまいました。英語ですが入門レベルから簡潔に書かれているようです。160ページくらいあります。まだ20ページくらいしか見てません。

そして、、、

お鍋こがした、、、

文字列のフォーマット

どこで見たのか忘れたんだけど、print文ではC言語のprintf()みたいな書式指定ができるみたい。 >>> print "%d-%02d-%d %s Diary" % (2006, 4, 11, "pylet") 2006-04-11 pylet Diary でもprint文のドキュメントにはそんなこと書いてなかったような気がした。…

あわわわわ

全然気づかなかったけどid:rubycoさんに捕捉されてるじゃないですか!!っていうかトラックバックの使いかたわかってませんっっ!!しかしrubycoさんはすごいなぁ。一月から続けてるのかぁ。わたしもあんまりがんばりすぎない程度に細々続けよう。今日は帰り…

ソースコードの行

ところで、私は行末にセミコロンが付かない言語というのをあまり使ったことが無いので、Pythonの行というのがどうなっているのか不安です。ちょっと調べてみました。 http://www.python.jp/doc/release/ref/implicit-joining.html http://www.python.jp/doc/…

イベントがあったそうで

そういえば週末はPython Workshop the Edge 2006というPythonの大きなイベントがあったみたいですね。「やり直しのための Python プログラミング」の資料がとても勉強になります。

print文

さて、昨日の"Hello, Python"について調べてみます。print文について調べてみましょう。文法はコレ。 http://www.python.jp/doc/release/ref/print.html#tok-print_stmt うーんこれを見た感じだと、 print print "a" print "a", print "a", "b", "c" とかい…

hello.py

次はプログラムをファイルに保存してみます。Ctrl-nで新しいウィンドウを開いてプログラムを入力します。 print "Hello, Pyton" print "Hello, IDLE" 名前を付けて保存してから、Ctrl-F5で実行。 >>> ================================ RESTART ============…

Hello, IDLE

さて、「IDLE (Python GUI)」とやらを起動してみると、、、なんだかコンソールみたいなのが出てきました。GUIってかけっこう地味。でもメニューを見てみるとDebugとかもあるから、見た目のわりにはけっこう出来る子なのかな。なにはともあれ、プログラマのは…

Windowsへインストール

Linuxでもいいんですけど、せっかくなので(何が?)Windowsにインストールしてみます。http://www.python.jp/Zope/download には「日本語環境用インストーラ(Win32)」というのもあるのですが、最新版を使いたいので、 http://www.python.org/download/release…

はじめの半歩

http://www.python.jp/doc/release/tut/tut.html IBM Developer 日本語版 : 大変申し訳ありません。このページは無効です。 インタプリタから使える色々な便利機能が載ってます。こういうのは重要ですね。

情報源

今日の時点で、最新の安定版は2.4.3です。 Welcome to Python.org http://www.python.jp/Zope/ http://www.python.jp/doc/release/index.html http://www.python.jp/doc/release/ref/ ここはまだ2.3みたいです http://www.python.jp/doc/release/whatsnew/wh…