トップページ⇒tech
1001コメント367KB

Pythonのお勉強 Part4

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
日本Pythonユーザ会
http://www.python.jp/Zope/
python オフィシャルサイト
http://www.python.org/

前スレ
http://pc2.2ch.net/test/read.cgi/tech/1053955472/

ログや関連リンクは >>2-3
0002デフォルトの名無しさんNGNG
Pythonお勉強スレッド
1 http://pc.2ch.net/tech/kako/965/965815778.html
2 http://pc3.2ch.net/test/read.cgi/tech/1020718991/
3 http://pc3.2ch.net/test/read.cgi/tech/1020718991/

pythonユーザー掲示板
http://mentai.2ch.net/prog/kako/965/965058106.html

人生の敗北者でも使えるPythonのお勉強
2 http://pc3.2ch.net/test/read.cgi/tech/1020682294/
3 http://pc2.2ch.net/test/read.cgi/tech/1053955472/

【インデント】ぱいそんぱいそん!3【ムネオたん】
http://pc3.2ch.net/test/read.cgi/tech/1036811974/
0003デフォルトの名無しさんNGNG
2!
0004デフォルトの名無しさんNGNG
おとなしすぎるスレタイに隠された真の名は!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

【愛と】人生の脱北者でも使えるPythonのお勉強 Part4【信頼】

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
0005デフォルトの名無しさんNGNG
Pythonはお勉強するって雰囲気の言語ではない気がする。
自然に必要な事を理解できる所がまだある言語だと思う。
0006デフォルトの名無しさんNGNG
今度こそ2をゲットする。そんな思いで幾十夜。
手が震えるそんな毎日。リロードなんか当たり前。しない時ない。
おかげで腱鞘炎です。腱鞘炎。2ちゃんのリロードで腱鞘炎。
トイレいってるときに限ってスレが立つ。そんなとき・・・!
腹立ちます。ほんっと、腹立つ。考えてない。
俺のトイレの時間を考えてない。。
そんな無責任で身勝手な1ばかりの中でこのスレの1は違った。
俺がリロードした瞬間に立ててくれた。これは1にとっても、俺に
とっても幸運だったといえる。ネタとしてはいまいちよく分からないでも
ないが、それでもこのタイミング。まさに阿吽。まさに以心伝心。

俺はいま2を取れる感激で胸がいっぱいだ。腱鞘炎を見てもらってる先生に
なんて言おうか?この喜びが伝わるだろうか?
いつか自伝の映画作成をさせて下さいと言われたらこのことはクライマックスに
持って来よう。 なにしろいつも2ゲットできませんでしたから。(笑

さて、、、記念すべきこの瞬間。悔しがる3や4の連中の姿が目に浮かぶ。
もう、おまえらとはレベルが違うぜ! 俺はこの瞬間から2ゲッターだ。

ちょっとどきどき、いまから「書きこむ」頂きます。

かろやかに、しなやかに、そしてスタイリッシュに! 2ゲットでございます!
0007デフォルトの名無しさんNGNG
このスレは敗北者でなくてもいいのでせうか?
0008デフォルトの名無しさんNGNG
どんとこい!
0009デフォルトの名無しさんNGNG
はいれます!
0010デフォルトの名無しさんNGNG
ア○コの終身医療保険
0011デフォルトの名無しさんNGNG
これからだ!
0012デフォルトの名無しさんNGNG
OOPが全然わからないのでお勉強してます。
インスタンス属性とクラス属性が頭の中でぐぢゃぐぢゃです。
例えば、オブジェクトを格納する配列をクラス内で使う場合、
class Spam:
 def __init__(self):
  self.hairetu = []
 def addInstance(self, eggsobject):
  self.hairetu.append(eggsobject)
とすればいいか、
class Spam:
 hairetu = []
 def addInstance(self, eggsobject):
  Spam.hairetu.append(eggsobject)
のどちらがいいのでしょうか。
0013デフォルトの名無しさんNGNG
>>12
すべてのインスタンスで共通に使いたいんなら、後者。
インスタンス毎に別々にしたいんなら、前者。
0014デフォルトの名無しさんNGNG
最初のうちはクラス属性なんて気にするな。
インスタンス変数とモジュール変数で十分だ。
0015デフォルトの名無しさんNGNG
>>13-14
わかりますた。
はじめはメソッドを通さないと取り出せないのがインスタンス変数で、
そうでないのがクラス属性だと思っていました。
0016デフォルトの名無しさんNGNG
Windows上でWindowsに付属しているスクリーンキーボードの様に
常駐していてキーが押されたときのイベント?を横取りするような
アプリケーションが作りたいのですが、Pythonで
このようなアプリケーションを作るにはどうしたらよいでしょうか?
0017デフォルトの名無しさんNGNG
wxPython と pyHook を使えば実現できます.pyHook は
http://sourceforge.net/projects/uncassist から入手できますが,
ソースコードは別のプロジェクトのCVS,
http://cvs.sourceforge.net/viewcvs.py/uncpythontools/pyHook/
にあります.詳細はソースコードに付属する example.py を参照してください.

from wxPython.wx import *
from pyHookManager import *
class myFrame(wxFrame):
def __init__(self):
wxFrame.__init__(self, None, -1, '',
style=wxTRANSPARENT_WINDOW| wxFRAME_NO_TASKBAR)
self.hm = HookManager()
self.hm.KeyDown = self.OnKeyboardEvent
self.hm.HookKeyboard()
def OnKeyboardEvent(self, event):
key_face = event.Key
if key_face == 'Q':
self.Show(False)
self.Destroy()
raise SystemExit()
else:
print 'Key:', key_face
if __name__ == '__main__':
app = wxPySimpleApp(0)
frame = myFrame(); app.SetTopWindow(frame); frame.Show(True)
app.MainLoop()
0018デフォルトの名無しさんNGNG
2ch用のインデントし忘れた...
from wxPython.wx import *
from pyHookManager import *
class myFrame(wxFrame):
 def __init__(self):
  wxFrame.__init__(self, None, -1, '',
    style=wxTRANSPARENT_WINDOW| wxFRAME_NO_TASKBAR)
  self.hm = HookManager()
  self.hm.KeyDown = self.OnKeyboardEvent
  self.hm.HookKeyboard()
 def OnKeyboardEvent(self, event):
  key_face = event.Key
  if key_face == 'Q':
   self.Show(False)
   self.Destroy()
   raise SystemExit()
  else:
   print 'Key:', key_face
if __name__ == '__main__':
 app = wxPySimpleApp(0)
 frame = myFrame(); app.SetTopWindow(frame); frame.Show(True)
 app.MainLoop()
0019デフォルトの名無しさんNGNG
wxPython をアップグレードするときは、古いバージョンをいったんアンインストールする必要があるのですか?
Windows のものをつかってます。
0020デフォルトの名無しさんNGNG
最近のバージョンのインストーラは,古いバージョンを削除するよう指示すると
思います.
http://www.wxpython.org/CHANGES.txt
0021デフォルトの名無しさんNGNG
>>1
乙カレー。

そういえば「乙」ってヘビみたいな形しとんなあ。
0022デフォルトの名無しさんNGNG
>>20
2.3.4.1 の Windows installer prompts to uninstall old version first.
ですか?
002316NGNG
>>17-18
丁寧に教えていただき、ありがとうございました。
0024デフォルトの名無しさんNGNG
トヨタテクノサービスという会社で面接したときに、君パイソンできる?
今パイソンできる人探してるんだけど?と言われた。見事に落とされ
ましたけど。
0025デフォルトの名無しさんNGNG
Yesって答えたの?

たぶん保守要員が欲しいんだと思うけど。
0026デフォルトの名無しさんNGNG
l = []
for i in range(10):
  l.append(1)
とやるのと
l = [1] * 10
とやるのではなにか違いはありますか?
0027デフォルトの名無しさんNGNG
前者は、リストの各要素が別なオブジェクトを指す。
つまり「1」が10個つくられる。

後者は、リストの各要素が同じオブジェクトを指す。
つまり「1」は1個つくられ、10箇所から参照される。

数値はimmutableだからこの場合問題ないけど、listみたくmutableな
オブジェクトでこれをやるとはまることがあるので注意。例:

l = []
for i in range(10):
  l.append([1])
print l
l[0].append('spam')
print l

l = [[1]] * 10
print l
l[0].append('spam')
print l
0028デフォルトの名無しさんNGNG
>>25
いや、パイソン知らないんで名前しか知りませんって答えた。
おいらはPHP,PERL派なので・・・っていうかスクリプトはそれしか
知らない。で、テクノサービスで日本ではあまり人気の無いと
言われてる言語を使うということで少し感動したが、保守だったのかなー
あれは。
0029デフォルトの名無しさんNGNG
どなたかWindows環境でPythonモード付きのエディタでしりませんか?
KaaEditっていうのがあるらしいけど、どこにも置いてない・・

普段は秀丸、Terapadとか使ってるんですけど
Pythonキーワードの強調ファイルとかどこにもない
仕方がないんで簡単なのは作ったんですけど・・なんか違う

あと、キーワード強調だけじゃなくって
例えば
if ....:
hoge
pass
って書くとpassに反応してオートインデントが解除とか
そういうのはないかなと
0030デフォルトの名無しさんNGNG
そこでVimとかMeadowとか言つてはまずいだらうか?(わらひ
0031デフォルトの名無しさんNGNG
えまっくす使え
003229NGNG
Meadowなんか起動が面倒なんですよね
だから、関連付けにはさくっと秀丸,Terapadとかにしてて
そのまま使い続けるみたいな

一応Meadowならpyモードあるかなと思って起動してみたことあるんですけど
何も起こらなかったのでそこで終了してました。

なんでpython mode が標準でついてないんだ・・・_| ̄|○

ttp://www.python.org/emacs/python-mode/
ここからスクリプトはとってこれたんですがモード設定の仕方がよく分かりません
Meadow\1.15\lisp\progmodesの中に入れるだけじゃダメ?
0033デフォルトの名無しさんNGNG
site-lispにpython-mode.elをいれて.emacsに以下を書くだけ。
windowsならxyzzyでもいいんじゃない。

(autoload 'python-mode "python-mode" "Python editing mode." t)
(nconc auto-mode-alist '(("\\.pp$" . python-mode)
("\\.pyw$" . python-mode)
("\\.py$" . python-mode)))
0034デフォルトの名無しさんNGNG
ちょっと便乗気味で質問させて。
自分でエディタを作るとした場合なんだけど、
構文強調っていうの?
キーワードなんかに色つけるやつ、
あれってどういう仕組みで実現すればいいんですか?
003529NGNG
>>33さんありがとう
perl-modeとかjava-modeの設定まんま写そうとして.も場所分からずで止まってました

>>34
プログラム内部で構文木作ってるなら、キーワードとマッチングとか
行ベースでデータ持ってるなら、行の文字列を正規表現とかで
マッチングとって強調表示させてるんじゃないの?
0036デフォルトの名無しさんNGNG
>>29
Peggyは?
http://www.interq.or.jp/japan/s-imai/python/peggycrec.html
Free版のPeggyでも動作するはず。
その場で実行とかはできないかも。

>>34
仕組みはいろいろ。
yaccとかでやる人から、正規表現という人もいる。
単純のならPython スクリプトをHTMLにするスクリプトとか参考になるかも。
http://www.egenix.com/files/python/py2html.py.html
http://aima.cs.berkeley.edu/python/py2html.html




0037デフォルトの名無しさんNGNG
>>29
最近お気に入りのサクラエディタにキーワードファイルが付いてるね。
でもパイソンモードの設定がないから、自前で設定しないといけないみたいだね。

0038デフォルトの名無しさんNGNG
xyzzyで書いてる人ってほんとにいる?
自分はMeadowとxyzzy両方使っているんですが。
003916NGNG
すみません、
Windows上でイベントをフックすることは出来るようになったのですが、
キーをプログラムから入力(スクリーンキーボードの様に)
するにはどうしたらよいでしょうか?
0040デフォルトの名無しさんNGNG
by Kevin Altis.

http://msdn.microsoft.com/scripting/default.htm?/scripting/windowshost/doc/wsMthSendKeys.htm
# the above URL also documents the codes to use with SendKeys

import win32api
import win32com.client

shell = win32com.client.Dispatch("WScript.Shell")
shell.Run("calc")
win32api.Sleep(100)
shell.AppActivate("Calculator")
win32api.Sleep(100)
shell.SendKeys("1{+}")
win32api.Sleep(500)
shell.SendKeys("2")
win32api.Sleep(500)
shell.SendKeys("~") # ~ is the same as {ENTER}
win32api.Sleep(500)
shell.SendKeys("*3")
win32api.Sleep(500)
shell.SendKeys("~")
win32api.Sleep(2500)
0041デフォルトの名無しさんNGNG
pygameをLinux上でインストールしようとしたら、SMPEGとFontが"not found"と
いわれたのですが、この2つを解決するには具体的には何をインストールしたら
いいのですか?
0042デフォルトの名無しさんNGNG
>>41
http://www.pygame.org/
ページ右側にDependenciesってかいてるっしょ。
0043デフォルトの名無しさんNGNG
cygwinや inuxのコマンドラインで、WindowsのIDLEのように、
オートインデントさせることはできますか?
0044デフォルトの名無しさんNGNG
python で、eucで書かれたファイルに対しマッチングしたいのですが、
unicodeに変換してやらないと正しくマッチングできないんですよね?
なんとか高速化したいのですが、術はあるのでしょうか?
0045デフォルトの名無しさんNGNG
Embedded UNIX5号とLinux World 2004/1号にPython記事が。
当LWの記事におけるRubyの扱いと、諸Ruby記事における
Pythonの扱いの差に思わず笑いがこみ上げますた。
0046デフォルトの名無しさんNGNG
2.3.2の日本語版win用インストーラー…
0047デフォルトの名無しさんNGNG
>>44
検索したい文字列が英数字なら EUC-JP のままで特に問題ない。
ただしプログラムは文字のバイト長を考慮したものにしなければならない。
検索したい文字列が日本語なら Unicode を介するのが無難。

EUC-JP だとこんな↓おかしなことになっちゃうけど
>>> "こんにちは".find("海")
1

Unicode だと正しく処理できる。
>>> unicode("こんにちは", "euc-jp").find(unicode("海", "euc-jp"))
-1

検索文字列が英数字なら↓こんな風に EUC-JP のままでも正しくマッチングできるけど
>>> "日本語EUC".find("EUC")
6

日本語が2バイトで1文字であることを考慮したプログラムにしないといけない。
その点、Unicodeなら↓こんな風に文字単位になる。
>>> unicode("日本語EUC", "euc-jp").find(u"EUC")
3
0048デフォルトの名無しさんNGNG
余談だけど、Python 1.5.2 の頃に EUC-JP の文字列を内部で文字単位に切り分けて
Boyer-Moore アルゴリズムで文字列検索するクラスをごりごり書いたことがある。

>>> wstring.WString("こんにちは").find("海")
-1
>>> wstring.WString("日本語EUC").find("EUC")
3
>>> print wstring.WString("日本語EUC")[:3]
日本語

けど、今だったら素直に Python 2.x の Unicode を使って書いちゃう気がする。
こんなトリッキーな手段を使っても早くなるかどうか分からんしね。
0049デフォルトの名無しさんNGNG
いちいち unicode("なんたら", "かんたら") って書くの面倒なんだが‥‥
生産性も悪いし。PEP 263 に従っておけば、任意のエンコーディングで
u"なんたら" って書けばそれと等価になるようにして欲しい。
0050デフォルトの名無しさんNGNG
>>42
サンクスコ
0051デフォルトの名無しさんNGNG
unicodeにしてからのマッチング激しくコスト高い。手間だし。
0052デフォルトの名無しさんNGNG
レガシー文字コードを使う以上、変換にコストがかかるのは当たり前だよね。
Python の問題じゃなく Unicode とレガシー文字コードの併用の本質的な問題。
実行時の変換コストが問題なら予め UTF-8 とかに変換しとくとか。
変換テーブルの参照が起こらない分、レガシー文字コードよりは早そう。
0053デフォルトの名無しさんNGNG
>>45
よんでみたけど、Embedded UNIX のほうはすごく参考になった。
自分が普段使っている Python と方向性が異なっていたので
最近の Python もきっちりおさえてあったし。

Linux World のほうは、、、
執筆者の力量が思いっきり反映されている内容だった。
0054デフォルトの名無しさんNGNG
http://www.roy.hi-ho.ne.jp/pastel/home/Python/extension_win32.html

PythonからWindowsを弄ることについてもっと深く勉強したいのですが、
何処を見るのが良いでしょうか?
0055デフォルトの名無しさんNGNG
http://mail.python.org/pipermail/python-win32/
0056デフォルトの名無しさんNGNG
便乗で質問です。Python Standard Library は買いですか?
http://www.amazon.co.jp/exec/obidos/ASIN/0596000960/

ちなみに Cookbook は Web より本のほうが好きで愛蔵してますです。
そんなぼくは PSL 買って幸せになれるでしょうか。
0057デフォルトの名無しさんNGNG
>>56
それはネットで公開されているし、対応している Python のバージョンも古いよ。
どうせ買うなら、nutshell とかは?
005856NGNG
>>57
Python in a Nutshell は附属ドキュメントとかぶる部分が多いので躊躇しているんですよね…
でもふんぎりがついたです。思いきって両方注文しちゃおうかと思います。どもでした。
0059デフォルトの名無しさんNGNG
(´-`).。oO( 56タソは何に便乗したつもりだったのだろう・・・ )
006056NGNG
>>59 part2の>>812氏に便乗してみましたです
0061デフォルトの名無しさんNGNG
pykf の Windows 用インストーラーはどこかにありますか?
0062デフォルトの名無しさんNGNG
class A(file):
というように file 型を継承したときに、デフォルトで w モードでインスタンスを作るようにするのと、
IOException をキャッチするようにするにはどうすればいいのですか?

いまは
a = A(filename, 'w')
とやっているのですが、少しダサいので。
0063デフォルトの名無しさんNGNG
class A(file):
 def __init__(self, name):
  file.__init__(self, name, 'w')

f = A('name')
f.write('spam')
f.close()
0064デフォルトの名無しさんNGNG
try:
 なんか処理
except IOException, ex:
 キャッチした時の処理
else:
 キャッチしなかった時の処理
0065デフォルトの名無しさんNGNG
wxPython の
wxFrame(None, -1, "Hello World")
のこの場合では-1のIDについてよくわからないのですが、
どのようなことをやっているのでしょうか?Noneじゃだめですか?
0066デフォルトの名無しさんNGNG
ID に -1 を指定すると,wxWindows 側で wxNewId() を使って適当な ID を
割り当てます. ID は整数型でなければならないので None は使えません.
割り当てた ID は GetId() メソッドで取得できます.
0067デフォルトの名無しさんNGNG
listを継承して固定長のリストを作りたいのですが、
listの持つメソッドで禁止したいもの(append, extend, remove, sort など)
はどう実装すればいいのでしょうか?
0068デフォルトの名無しさんNGNG
>>67
list を継承して当該メソッドをオーバーライドすればよいと思われ。
006967NGNG
>>68
それはわかっているのですが、どう禁止するかってことがわからないんです。
何か例外投げるのがよいと思うのですが、定石があるのかと思ってお聞きしました。
#ま、どーせ自分しか使わないんで、その辺適当でもいいんですが、
#勉強を兼ねて。
0070デフォルトの名無しさんNGNG
>>69
そういう場合は継承しない。という手もある。
委譲を利用する方が手としては妥当と思う。

Javaなどでは、継承はめったにしない方向が基本で、継承する場合は継承元が
継承をする事を規定したクラスでないといけない。(Abstractなど)
0071デフォルトの名無しさんNGNG
委譲が望ましいが、どーしても継承したくて仕方がない困ったさんには、
NotImplementedError例外がある。が勉強以上の用途にはお勧めしない。
0072デフォルトの名無しさんNGNG
>>63
> file.__init__(self, name, 'w')
__init__ の最初の引数に self を指定しないとだめなんですね。
これではまった。
0073デフォルトの名無しさんNGNG
a = A(filename, 'w') がダサいってのは、多分君の心得違いだとおもう。ところで

class A(file):
 def __init__(self, name):
  file.__init__(self, name, 'w')
 def __getattribute__(self, name):
  if name == "write":
   raise AttributeError
  else:
   return super(A, self).__getattribute__(name)

という手もある。
007467NGNG
>>70-71
なるほど。
「委譲」というのはOOPの用語でしょうか?
class MyList:
    def __init__(self,len):
        self.data = [None for i in range(i)]
の様にして、__getitem__とか必要なものだけ実装してやるという
ことでいいのかな?
0075デフォルトの名無しさんNGNG
>>72
もれも時々混乱する時がある。
 - インスタンス.メソッド() を呼ぶ時は、暗黙にselfがcalleeの引数に加えられる。
 - クラス.メソッド() を呼ぶ時は、それはならない。
と最近理解したのだが、よいのかな?
0076デフォルトの名無しさんNGNG
Numericのarrayはどう?
使ったこと無いけど。
0077デフォルトの名無しさんNGNG
>>74
そうOOPの用語。
もとのクラスの機能に自分の動作をゆずりわたすように作成する。
継承はあまり好ましくない、というのがOOPの現在の流れ。
0078デフォルトの名無しさんNGNG
>>75
桶。ちなみに、インスタンス (self) に結びつけられたメソッドのことを
bounded method (束縛されたメソッド) と呼ぶ。

>>> A.f
<unbound method A.f> ← クラスオブジェクトのメソッドはインスタンスに束縛されていない
>>> a = A()
>>> a
<__main__.A instance at 0x40246e6c> ← インスタンス
>>> a.f
<bound method A.f of <__main__.A instance at 0x40246e6c>> ← インスタンスに束縛されている
>>>

束縛されていてどのインスタンスに対するメソッド呼び出しなのかは明らかなので
self を書かなくてもいい、というわけ。クラスについては正反対のことが言える。
007978NGNG
ぐへ。ヒドい書き間違い・・・。
× bounded method
○ bound method

(bound は動詞 bind の過去分詞だっつーの>漏れ)
0080デフォルトの名無しさんNGNG
>>77
委譲を使った簡単な例をおながいします。
0081名無しさんNGNG
継承は好ましくなくて委譲の方がはやりなの?
なんで?
isaなものは継承すべきじゃないの?
0082デフォルトの名無しさんNGNG
流行とかよりも、is-a なものを継承しないほうがいい場合もある、
ってことが、最近になって明らかなってきたってことじゃないの?
0083デフォルトの名無しさんNGNG
職業クラスを継承すると転職できなくなっちゃうよ
0084デフォルトの名無しさんNGNG
委譲と継承は互いに補完し合う関係なんじゃないのかな。
それぞれに一長一短があるし。すべて委譲でやろうとすると無理が出る気がする。

デザインパターンの Templete Method とか Visitor は継承を前提にしてるよね。
この二つのパタンを委譲で実現するのは何か違うなーって感じ。
それにひきかえ Mediator パタンは委譲そのもの。継承で書くのはムリポ。

流行りとか比較的いい(悪い)とかじゃなくて「適材適所」なんじゃないかなぁ。
008584NGNG
>>80
codecs モジュールの StreamReaderWriter が委譲の例になってると思われ。
委譲先の Reader と Writer (StreamWriter クラスと StreamReader クラス) は
Codec クラスを継承してる。委譲と継承が使い分けられている。
0086名無しさんNGNG
>>83
なんで?
0087デフォルトの名無しさんNGNG
>>80
http://www.faqts.com/knowledge_base/view.phtml/aid/4332

>>81
何をもって is-aとするのか、が判断つかない場合の方が多いって事が証明された。

>>82
最近でなくちゃんとした最初の論文は1999年あたりに出ていると思う。それ
より前にもあったかも。
2000年のJava読書会 http://www.t3-jpn.com/bof/kakugen1.html ですでに委
譲が普通になりつつあるとの記述がある。





0088デフォルトの名無しさんNGNG
>>83
実装方法によります。

>>84
それは確かです。
ただ単純化すると、
元のクラスよりメソッド数減少とか、機能低下する場合は委譲
元のクラスを拡張する場合は継承をまず考えてみる
というのが一つの方法。

議論元になったやつはメソッド数や機能減らすので委譲の方が比較的安価に作
成できるはず。
0089デフォルトの名無しさんNGNG
>>81
補足
is-a とか has-a とかで継承、委譲判断するのは古い考え方です。
Javaでは継承はFrameWorkを利用する時以外ではほとんど利用されなくなってき
ている。
FrameWorkの継承を is-a というのはかなり変だと思う。
0090デフォルトの名無しさんNGNG
くだらない質問なんですが、
ひらがなをカタカナに変換するのに、
正規表現で簡単に書くことってできるでしょうか?
自分は結局それぞれの組を定義してやったんですが、
もっと簡単にできるはずだと思いまして。
0091デフォルトの名無しさんNGNG
>>90
無理だと思う。正規表現は集合間の写像は表現できない。

ひらがなとカタカナの文字コードの連続性を利用するといいかも知れない。
>>> print re.sub(u"[\u3041-\u3093]", lambda m: unichr(ord(m.group()) + 0x60), unicode("ぴちょん", "euc-jp")).encode("euc-jp")
ピチョン
>>>
0092デフォルトの名無しさんNGNG
コードはshift-JISなんですが
0093デフォルトの名無しさんNGNG
いまいちピンと来ないんだけど、度々引き合いに出されている
Java での方法論って Python でどれぐらい当てはまる?

個人的にそのうちちゃんと比較検討してみたいなぁと思ってるんだけど、
オブジェクト指向の議論、特に Gamma のデザパタの実現例なんかは
型付けの厳しい言語を前提にしているところが多いなぁという印象がある。
Python だったらこうは書かないかも、みたいな(うまい例が出ない。スマソ)

Python に特化したデザパタの本が欲すぃ。誰か書いてくんないかな。
0094デフォルトの名無しさんNGNG
>>90 92
pykfとか利用してshift-JISをEUCに変換しちゃえば?
もしくはpykfを改造すればできるかも。
0095デフォルトの名無しさんNGNG
>>93
> Python に特化したデザパタの本が欲すぃ。誰か書いてくんないかな。
洋書ならある。

OOPの方法論はOOPとして利用するかぎりだいたいあてはまる。
そもそもデザパタとかは再利用をかなり強く意識してるから、pythonで巨大ア
プリ書く場合は結構役に立つ。
書きすての場合はいらない。

あと、デザパタは関数型言語利用するとその存在意義はほとんどない。
0096デフォルトの名無しさんNGNG
その洋書の詳細キボン
0097デフォルトの名無しさんNGNG
>>93
型付けがが弱いのとオーバーロードがないことから、「いわゆる」デザインパターンの
いくつか(多く?)は Python, Ruby などにはあまり関係がないと思う。
0098デフォルトの名無しさんNGNG
ちと旧いかもだが、参考になりそうなのを貼ってみる

Design Patterns in Dynamic Programming
ttp://norvig.com/design-patterns/
0099デフォルトの名無しさんNGNG
>>87
委譲 = メソッドの一部を書き換える?書き換えたもの以外はもとのものを利用?
0100デフォルトの名無しさんNGNG
委譲 = よく言えばアウトソーシング。悪く言えば丸投げ。
010190NGNG
>>91
なるほど、こうするとかなり短くかけるんですね。
ありがとうございました。
0102デフォルトの名無しさんNGNG
スーパクラスを書き換える:
class ShopClerk:
    def occupation(self):
        return 'shop clerk'

class Lumberjack:
    def occupation(self):
        return 'lumberjack'

class Person(ShopClerk):
    pass
#######

>>> man = Person()
>>> man.occupation()
'shop clerk'
>>> man.__class__.__bases__ = (Lumberjack,)
>>> man.occupation()
'lumberjack'
0103デフォルトの名無しさんNGNG
>>93Pythonでデザパタの本って、Thinking In Pythonじゃだめ?http://64.78.49.204/TIPython.zip
0104103NGNG
ありゃ、改行が効かない
0105デフォルトの名無しさんNGNG
Patterns in Python:
ttp://www.python.org/cgi-bin/moinmoin/PatternProgramming
ttp://www.thinkware.se/cgi-bin/thinki.cgi/PythonPatterns
ttp://dales.rmplc.co.uk/Duncan/accu/pythonpatterns.html
ttp://europython.org/Talks/Slides/ep03_pydp.ppt (from ttp://europython.org/sessions/talks/slidespapers)
0106デフォルトの名無しさんNGNG
>>105
お。感謝。読み応えありそう。
0107デフォルトの名無しさんNGNG
正規表現howto 以外に Python の正規表現についてまとまって書いてあるサイトってありますか?

http://www.python.jp/Zope/articles/tips/regex_howto
0108デフォルトの名無しさんNGNG
ライブラリリファレンスの re モジュールは読まれましたか?
和訳は http://www.python.jp/pub/doc_jp/lib/module-re.html
にあります.

「ニシキヘビを飼おう」にも正規表現の話題があります.
http://www.f7.ems.okayama-u.ac.jp/~yan/python/python09.html
また,Google で「Python 正規表現で」検索したら,
「Python reモジュールで使える正規表現演算子」
http://www.kt.rim.or.jp/~kbk/regex/pythonre.html
をはじめ3210件もヒットしました.ご自分でも探してみてください.

0109デフォルトの名無しさんNGNG
英語だけど
http://www.amk.ca/python/howto/regex/
0110109NGNG
スマソ。正規表現howto以外にって書いてあるのに回線切t
0111デフォルトの名無しさんNGNG
>>107
ふるかわさんの日本語訳はよみやすくていいね。
0112デフォルトの名無しさんNGNG
みんなpythonでなに作ってるの?
0113デフォルトの名無しさんNGNG
112を作っております
0114デフォルトの名無しさんNGNG
>>112
ls -lt ~/python してみるとこんな感じ。

dml2html.py 日記データ(独自XML形式)をHTML形式に変換
dailynews2html.py NHK World Daily News のニュース記事を一括ダウンロード
dailynews2text.py 同上。こちらはテキスト形式で出力。cronで定期実行して自分にメール
namiki.py IRCロガー。某チャンネルで24時間ログを取っている。よく落ちる
daisy.py PILを使った画像ビューワ。サムネイル表示でグロ画像のダメージを最小化
gtkhtmlconv2.py UnicodeのテキストをHTMLの実体参照に変換するための簡易GUIエディタ
jst.py www2.crl.go.jp/cgi-bin/JST.cgiから時刻データをゲット
asahi_upload.py FTPでプロバイダにファイルをうpするためのコマンドラインツール
shuffle.py 入力されたテキストの行をランダムに入れ替えるフィルタ(sortコマンドの反対)
wvHtml2txt.py wvHtmlコマンドを利用してWord文書をプレインテキストに変換
konbu.py Pythonのコデックを使った文字コード変換フィルタ(iconvコマンドみたいなもの)
swf2html.py SWFファイル表示用のHTMLファイルを自動生成
codecs_kr/ 韓国・朝鮮語コデック
post2ch.py 2ちゃんにカキコするためのライブラリ

こうして見るとおもちゃ箱をひっくり返したようだ。
0115デフォルトの名無しさんNGNG
>>112-114 ぼくも〜
C:\>dir /b "%HOMEDRIVE%%HOMEPATH%\My Documents\Python\*.py"

accesspoint.py - telnetlibモジュールでルータを操作
arkanoid0.py - ブロック崩し風
check_dns.py - 特定のDNS名がリゾルブできるかをテストする
discard.py - UDP Discardクライアント
grep.py - たぶんgrep
hexdump.py - BSDのhd風ダンプツール
LED.py - 7セグメントLED
ledit.py - Tkinterのテキストエディタ
linux.com.py - japan.inux.comのRDFファイルを編集して表示
makeram.py - Realmediaの"ram"ファイルを作る
ping0.py - ICMP Echo送信
ripv2send.py - RIPv2アップデート送信
sstp.py - SSTPプロトコルクライアント
t21dnd.py - Tkinterドラッグアンドドロップ(試作)
tkgrep0.py - Tkinter版grep風
tkicon1.py - Tkinterでウインドウアイコン設定(試作)
udpecho.py - UDP Echo クライアント
udpechosv.py - UDP Echo サーバ
unzip.py - 複数のzipファイルを一挙に展開(特殊用途)
videobot.py - Webサイトを巡回してvideoファイルをダウンロード
win32saeko1.py - ms officeの冴子先生を操る
0116デフォルトの名無しさんNGNG
すっげぇ〜、ソース見せて欲しい
0117デフォルトの名無しさんNGNG
うpしてください。おながいします。いや、マジで。
0118デフォルトの名無しさんNGNG
>>114
> dailynews2html.py NHK World Daily News のニュース記事を一括ダウンロード
> dailynews2text.py 同上。こちらはテキスト形式で出力。cronで定期実行して自分にメール

この2つを特におながいします。
0119デフォルトの名無しさんNGNG
>>117,118

そんなだから
スキルが上がらないのだ
0120デフォルトの名無しさんNGNG
(´-`)。oO(別にpythonでなくても実現できるのだが…
0121デフォルトの名無しさんNGNG
>>118
むう。意外なものがリクエストされてるな。
NHK World Daily News のニュース記事は8ヶ国語あって、
漏れのはポルトガル語用なんだけどいいかな?

うpするのは構わないけど、こーゆーのはウェブページの構成が変わると
すぐ動かなくなるから自作&自力で修正できないとツラいかも。
全然難しくないプログラムだからよかったらチャレンジしてみて。
作り方は以下の通り。
1. 目的のウェブページのソースを見て、欲しい部分の前後の特徴(タグ、コメント等)を探る
2. urllib でウェブページをダウンロード
3. テキストを走査して欲しい部分を切り出す(1行ずつチェック、もしくはre.search()で検索)
4. 切り出した部分を整形(段落詰めしたりエンコードをかえたり)して出力
コツが分かればいろんなウェブページから必要な部分だけ抽出できるようになるよ。

ちなみに、同じ URL で内容が定期的に更新されるウェブページの場合、
プロキシのキャッシュが邪魔なことがある。その場合は以下のようにするといい。

urlopener = urllib.FancyURLopener()
urlopener.addheader("Pragma", "no-cache")
file = urlopener.open(URL)

漏れは同じ要領で CNN.com と The Japan Times の記事も毎日自分にメールしてる。
ぴちょんは語学の友。

(それでもやっぱり欲しかったら言ってちょ。うpします)
0122デフォルトの名無しさんNGNG
python way な小物ツールのコツとかは知りたいかも。
perl の while (<>); #だっけ?とか、
ruby の while line = gets に対して
python だと
while 1:
lines = sys.stdin.readlines(8*1024)
if not lines: break
for line in lines:
pass
みたいになったりするので、そーいう用途に使い辛いそという
個人的厨房的感想を持っていたりするのだけれど。
0123デフォルトの名無しさんNGNG
>>122
fileinput使え
0124デフォルトの名無しさんNGNG
>>122
Python 2.3 だとこういう風に書けるよ。

for line in sys.stdin:
  ...

もっとも漏れは古参の蛇使いなんで昔ながらの書き方がクセになってる。
打鍵数の多寡とかは気にしないことにしてる。むしろクドい方が好きかも(w

while 1:
  line = sys.stdin.readline()
  if not line:
    break
  ...
0125デフォルトの名無しさんNGNG
>>124
明示的なほうが分かりやすいことが多い
ただし明らかに処理内容が分かる場合は
省略したほうが分かりやすくなる
0126デフォルトの名無しさんNGNG
import fileinput
for line in fileinput.input():
  process(line)
0127デフォルトの名無しさんNGNG
python-doc-jp のメーリングリストはちょっと殺伐としていたから、初心者向けの
ほのぼのとした話題がくるとほっとするね。
0128121NGNG
Asahi.com から円相場の情報を取ってくるサンプルプログラムを書いてみた。
記法は今風にしてみた。要 Python 2.3。

# -*- coding: EUC-JP -*-

import codecs, re, sys, urllib

# Expected page structure:
# <a href="/business/"><font size="-1" color="#000000"><b>円相場</b> 108円42銭 (18:39)</font></a>
PATTERN = u'<a href="/business/"><font size="-1" color="#000000"><b>円相場</b> '
re_yen = re.compile(ur"(\d+)円(\d+)銭 \((\d\d):(\d\d)\)")

Reader = codecs.getreader("EUC-JP")
urlopener = urllib.FancyURLopener()
urlopener.addheader("Pragma", "no-cache")
file = Reader(urlopener.open("http://www.asahi.com/";))
for line in file:
    pos = line.find(PATTERN)
    if pos < 0:
        continue
    match = re_yen.match(line, pos + len(PATTERN))
    if not match:
        raise RuntimeError, "unexpected page structure"
    output = u"%s時%s分現在の円相場は%s円%s銭です。\n" % (
        match.group(3), match.group(4),
        match.group(1), match.group(2))
    sys.stdout.write(output.encode("EUC-JP")) # environment dependent
    break
else:
    raise RuntimeError, "unexpected end of file"
file.close()
0129デフォルトの名無しさんNGNG
ひらがなの入力からその漢字混じりがほしいのですが、
Python で仮名漢字変換を制御するのに
うまい方法はありますでしょうか?
0130デフォルトの名無しさんNGNG
>>129
migemo つくれ。
0131デフォルトの名無しさんNGNG
>>121
どもありがとうございます。Pythonは触ったことすらなく、今から
勉強してみようかと思ってた所存でございます。Perlなら少しわかります。
参考にさせていただきますね。
0132デフォルトの名無しさんNGNG
mailmanの話はここじゃだめ?
0133デフォルトの名無しさんNGNG
UNIXの板でしょう
0134デフォルトの名無しさんNGNG
>>129
windowsならwin32comあたりを経由してIME制御のAPIを叩くくらいで、
特にイイ方法というのは思いつかない。

UNIX系だとどうしたもんかな。
cannaとか仮定してサーバーとお話しか。かなりめんどくさそう。X-(

0135デフォルトの名無しさんNGNG
>>132
mailman 専用の(日本語)メーリングリストがあったと思うけど。
0136デフォルトの名無しさんNGNG
日本語のパースとか遅くないですか?
0137デフォルトの名無しさんNGNG
書き直し。

SJIS とか EUC.JP とかのテキストを、unicode に直してからパースするのは
遅くないですか? regular expression とか。
0138デフォルトの名無しさんNGNG
>>137
遅いよ。でも必要なら仕方ない。

>>128のスクリプトは安全側に倒して書いた。Asahi.com のページの文字コードは
EUC-JP で、漏れは EUC-JP がデフォの OS を使ってるから、サンプルとして書く
のでなければ文字コード変換を一切使わなかったかも知れない。

これがもっと複雑な文字列操作になると Unicode を使わざるを得ない。
文字のバイト長を意識しながら書くのは結構大変だからね。
Unicode に変換することによって楽になる部分があるのは確か。

それに、遅いと言ってもたかが知れている。
高速化のためのトリッキーなコードにはバグが発生しやすい。
遅いのが問題なら速いマシンを使う。それが賢いプログラマってもんだよ(ナンチャッテ
0139デフォルトの名無しさんNGNG
富豪的プログラミングってやつだな。
ttp://pitecan.com/fugo.html
0140デフォルトの名無しさんNGNG
>>139
そうそう(w
なんでソニーCSLのアドレスじゃないんだー?と思ったんだけど
そーいえば増井さん、産総研に移ったんだっけ。
この人の考えること、面白いよねー。ストトン音楽とか。大好きだ。
0141デフォルトの名無しさんNGNG
PythonのUnicode文字列正規表現って、Unicodeプロパティや
Uniocdeスクリプト(書記体系)とかを使ったマッチングって
サポートしてますか? ……恐らく当分使わないけど(ぉ
0142デフォルトの名無しさんNGNG
>>141
対応してないんじゃないかな。最新のドキュメントにそれらしい表記がない。
http://www.python.org/doc/current/lib/re-syntax.html
0143デフォルトの名無しさんNGNG
>>129
どうして自前で仮名漢字変換エンジンを制御したいの?
その必要があるケースはあまり多くないような気がするんだけど。
0144129NGNG
>>143
アナグラムを自動生成できるかなと思いまして。
それで入力文字列をひらがなにして、
それを並び替えた後で仮名漢字変換したらどうかな、と思ったわけです。

でも考えてみると、仮名漢字変換できたとしても、
それが文として成り立ってるかどうかを判定するのは難しそうですね。
0145デフォルトの名無しさんNGNG
>>144
ttp://www.unixuser.org/~euske/doc/niwatori/
みたいな奴?
0146デフォルトの名無しさんNGNG
Pythonの本を読み始めたのですが、
「コレクション」の「リスト」という項目で微妙に躓きました。

>>>aList=[ ]
>>>another=[1,2,3]
>>>print another
[1,2,3]

とあったのですが、一行目なしにしてみても問題なく表示できました。
一行目の >>>aList=[ ] はどういう意味があってつけているんですか?

あと、「コレクション」の意味がわかりません。
「Pythonでサポートされているコレクションについて説明する」といきなりあり、
その後リストについての説明です・・・。
0147デフォルトの名無しさんNGNG
aList = [] は,要素のない,空のリストをこうやったら作れますよ,という
デモじゃないでしょうか.
コレクションには,「集合」とか「集団」という意味があります.ここでは
データの集合を表すデータのことをコレクションと読んでいます.
例えば another は 1 と 2 と 3 という三つの数値データの集まりを表す
コレクションです.Python のドキュメントでは,他のデータを中に入れて
いるという意味でコンテナと呼んだり,複数の要素の組み合わせを表すので
コンパウンド(複合体)と呼ぶこともあります.
http://www.kab-studio.biz/Programing/Dictionary/Words.html#Collection
http://www.kab-studio.biz/Programing/Dictionary/Words.html#Compound
http://www.kab-studio.biz/Programing/Dictionary/Words.html#Container
なども参考にしてみてください.
0148デフォルトの名無しさんNGNG
htmllib と HTMLParser の2つで、実際に使う上での大きな違いはありますか?
0149デフォルトの名無しさんNGNG
htmllib.HTMLParser()
 閉じられていないタグを管理するスタックがある
 コメントやスクリプトタグの処理は自分で書かなければならない
 エンティティ文字の処理を自分で書かなければならない
HTMLParser.HTMLParser()
 タグの対応や入れ子は自分で管理しなければならない
 エンティティ文字を処理するためのメソッドがある
 スクリプトやコメントタグを処理するためのメソッドがある
0150デフォルトの名無しさんNGNG
>>144
仮名漢字変換は候補や文節区切りを人手で決めないといけないから
自動処理には向かないんじゃないかな。読みに対応する単語のリストが
欲しければ仮名漢字変換エンジンの辞書を流用する方が手っ取り早い。

それよりは>>145のリンク先でeuskeさんがやってるみたいに、
品詞情報と文を構成するための規則(文法)を与えておいて、
読みに現れる平仮名が順不同でたまたま同じになる文の組合せを
探す方が簡単な気がする(時間はすごくかかりそうだけど)。
0151デフォルトの名無しさんNGNG
>>146
む、なんか見覚えあるような。確かその後に aList 使って
メソッドの説明してたような...
0152デフォルトの名無しさんNGNG
nyのdownフォルダからジャンル別フォルダに振り分けするソフト作ってみますた。
コマンドラインベースのシンプルなものだけど、
ちょっと生活が便利になるものを自分で作るのって楽しいね。
0153デフォルトの名無しさんNGNG

\共有共有!ぱいそんぱいそん!/

 nyヽ( ´∀`)人(´∀` )ノpy
0154デフォルトの名無しさんNGNG

 (・∀・) オッ?

 (・∀・) L、M、N、O、P、Q、R・・・

Σ(゚∀゚) オオッ!!

 (゚∀゚) ny → oy → py

 (゚∀゚) キター!!
0155デフォルトの名無しさんNGNG
>>152
至言です.
0156129NGNG
>>150
うーん、そうですか。
となると1文か文節単位でデータを切り分けてから
chasenとかで形態素解析してそれぞれの読みを求める、って感じかなあ。
やればできそうだけど、これだとあんまり面白みがないですね。

他に面白そうなネタを探してみます。
ありがとうございました。
0157デフォルトの名無しさんNGNG
どなたかサンプル上げてもらえませんか。>>114-115もどうなってるか見たくて仕方ない
0158超初心者NGNG
IDLEから新しいWindowを開き、
円の面積を求めるプログラムを書きました。
で、Run script(実行はこれですよね?本にはRun moduleとあったのですが)を
クリックしたのですが、なんかダイアログが出ます。
一度保存してから実行したらいけたのですが。
実行前に保存しないと駄目なんですか?
0159デフォルトの名無しさんNGNG
>>158
そのとおりです。IDLEでスクリプトを実行するには、
一旦ファイルに保存する必要があります。Ctrl+S, F5 です。
編集バッファが未保存の状態であるとき、ウインドウタイトルが
*muwahaha.py* のように“*”で囲まれた形になります。
IDLEはPython2.3で大改修されたので、あなたの“本”と
若干違うことがあるかもしれません。

円の面積って、こんなんでしたっけ?
import math
def circle_area(r):
    """circle_area(radius) -> area"""
    if r<0: raise ValueError, 'radius should not be negative'
    return r**2*math.pi
0160デフォルトの名無しさんNGNG
ムワハハ
0161デフォルトの名無しさんNGNG
W2K+Py2.3.2環境にJapaneseCodecs1.4.10を入れようとしました。
VCは持ってないのでBCCで。
ドキュメント通りにやってbuildまでは成功したんですけど、
installができませんでした。

setup.py installすると「VCを出せ」とか言って止まるし、
かといってinstallと--compilerは併用できんとかぬかすし。

どうすればいいんだか。手動コピーで問題ないんですか?
0162デフォルトの名無しさんNGNG
へえー、JapaneseCodecs って BCC でコンパイルできるんだ。知らんかった。
setup.py install がやってることは実質的にはファイルのコピーだから
手動で site-packages ディレクトリにインスコすれば良いと思うよ。
うまくいったら動作報告きぼーん。
0163デフォルトの名無しさんNGNG
ドキュメント(ttp://python.org/doc/2.3.2/inst/inst.html)によると、
python setup.py bulid --compiler=bcpp
とかでコンパイラ選べるです、JapaneseCodecsに限らず。

>うまくいったら動作報告きぼーん。
単純にコピって動かしてみました。
import japanese とか、 # -*- coding=sjis -*- とかはうまくいってる模様。

# ……ってやってる間にPyJUGにWin32用インストーラが上がってた罠。
0164デフォルトの名無しさんNGNG
>>> import re
>>> r = re.compile(r"([a-z]+)(?:[ \t]+(?:([0-7]{3})|(text|binary)|([a-z]+)))*")
>>> r.match("file").groups() # 1
('file', None, None, None)
>>> r.match("file 604").groups() # 2
('file', '604', None, None)
>>> r.match("file 604 text").groups() # 3
('file', '604', 'text', None)
>>> r.match("file 604 text alias").groups() # 4
('file', '604', '', 'alias')
>>>

4 番目で \3 に 'text' ではなく空文字列が入るのですが、
何故なのでしょうか?
0165164NGNG
正規表現が間違ってるのかと思って、
Perl で同様のことをしてみたのですが、

$r = '([a-z]+)(?:[ \t]+(?:([0-7]{3})|(text|binary)|([a-z]+)))*';
@a = ("file", "file 604", "file 604 text", "file 604 text alias");
foreach $i (@a) {
$i =~ m/$r/;
print "$i: `$1', `$2', `$3', `$4'\n";
}

出力を見てみると、

file: `file', `', `', `'
file 604: `file', `604', `', `'
file 604 text: `file', `604', `text', `'
file 604 text alias: `file', `604', `text', `alias'

と、$3 に 'text' が入ってますし……
0166デフォルトの名無しさんNGNG
>>164
どの段階で fix されたかわからないけど、 2.4 ブランチでは fix されています。

Python 2.4a0 (#1, Dec 15 2003, 08:37:53)
[GCC 3.3.1 (cygming special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> r = re.compile(r"([a-z]+)(?:[ \t]+(?:([0-7]{3})|(text|binary)|([a-z]+)))*")
>>> r.match("file 604 text alias").groups()
('file', '604', 'text', 'alias')

2.3.3c1 ではテストした限り直ってないから、さっきリリースされた 2.3.3 でも駄目だと思う。
0167デフォルトの名無しさんNGNG
>>164
Python 2.3 をお使いでしょうか?

いまちょっと 2.2.3 & 2.1.3 でテストしてみると、両方のバージョンで

#3
('file', '', 'text', None)

#4
('file', '', '', 'alias')

になりました。
0168164NGNG
すいません、環境書き忘れてました。

>>167
Python 2.3.2 (#1, Oct 9 2003, 12:03:29)
[GCC 3.3.1 (cygming special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
です。

>>166
ありがとうございます。
まさか Python 側が原因とは……
2.4 が来るまでは正規表現以外で処理するしかないですね。
0169デフォルトの名無しさんNGNG
>>166
> さっきリリースされた 2.3.3 でも駄目だと思う。
http://www.python.org/

つながらねー
ヲレだけか?
0170デフォルトの名無しさんNGNG
>>169
表示するページなし http://www.python.org/ こんなんでました。
0171デフォルトの名無しさんNGNG
2.3.3が出たのに全く盛り上がってない。
仕事で忙しいのか?
0172デフォルトの名無しさんNGNG
うpでーとはしたけどさ、特に使用感が変わったわけでもなし、
新しい何かが増えたわけでもなし、語るべきこと自体はそうない感じ。
0173デフォルトの名無しさんNGNG
j=1 #変数の初期化
while j<=12: #条件指定
print "%d×12=%d" %(j,j*12)
j=j+1 #最後にjをインクリメントする

と本にあったのですが、最初と最後の分の意味がわかりません。
j=1 #変数の初期化  これはなんなんでしょう?
              なしでコードを書いたら実行できませんでしたし。
              最初にこれを書く意味がわからない。
j=j+1 #最後にjをインクリメントする 
              この文は矛盾してませんか?
              j=j+1って。
              それにインクリメントの意味がわからない。
              プログラミング辞書にも載ってません。検索してもよく判らない。
0174デフォルトの名無しさんNGNG
ネタはよそでやってください。
0175デフォルトの名無しさんNGNG
>>173
【インデント】ぱいそんぱいそん!3【ムネオたん】
http://pc3.2ch.net/test/read.cgi/tech/1036811974/
0176デフォルトの名無しさんNGNG
>>173
whileとprintの行は分かるんですね。すごいすごい!
0177デフォルトの名無しさんNGNG
>>173
j = 1 のような文を代入文と呼びます。
この代入文は、j という名前の変数に 1 という値を代入する、という意味です。
同様に、j = j + 1 は変数 j の現在の値に 1 足した値を j に代入するという意味になります。
つまり、代入文に使われる = は数学の等号の意味とは違います。

また、インクリメント (increment) は「増やす」という意味の英語です。
プログラミングの文脈では「値を1増やす」という狭い意味でも使われます。
逆に、「(値を1) 減らす」ことをデクリメント (decrement) と言います。
0178177の続きNGNG
余談ですが、数学の等号は「等しい」ということを主張する記号ですよね。
Python では、二つの値が等しいかどうかを調べるには == という比較演算子を使います。例:
>>> j = 1
>>> j == 1
True
>>> j == 0
False
>>>
ここで、j == 1 のような式を条件式と呼びます。値は真偽値です。
また、数学の等号の意味で「等しい」という主張は次のように表現できます。
>>> assert j == 1
>>> assert j == 0
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AssertionError
>>>
assert は「主張する」という意味の英語で、assert 文は (代入文と同様に) 一種の Python の文です。
最初の assert 文は条件式の値が真なので何も起こりません。
次の assert 文は条件式の値が偽なのでエラーが起こっています。
このような assert 文は、プログラムの実行途中で変数に予期しない値が入っていないか
チェックするために利用することができ、プログラムのデバッグの際に役に立ちます。

>>174
お前の方こそネタスレに逝け。そのまま帰ってくるな。
0179デフォルトの名無しさんNGNG
>>178
>>> ←これの説明は?
0180173NGNG
>>177-178
178の後半はわかったようなわからんようなって感じですが、
私が疑問に思ったことは判りました。ありがとうございました。
0181デフォルトの名無しさんNGNG
ネタじゃなかったんだ Σ(・∀・`;)

>お前の方こそネタスレに逝け。そのまま帰ってくるな。
マターリ逝こうよ。ヽ(´ー` )ノ
0182デフォルトの名無しさんNGNG
>>> ←これは、Pythonが入力を待ってるってこと。
勝手に表示されて、この後に命令を書けばいい。
人が入力する必要はない。
... ←これも同様。

Unixとか知ってる人は、シェルの$とか%とか#とかと同じモンだと思えば、それでだいたいあってる。
0183177NGNG
>>181
173がネタ(釣り)だと思う方がどうかしてる。相当2ちゃんに毒されてるな(w

つーか、釣りだと思っててもクソ真面目にマジレスしてやれ。
このスレがいつか HTML 化されて Google で引っかかるようになったときに
インクリメントだの assert だので検索した香具師の役に立つかも知れないだろ?
0184デフォルトの名無しさんNGNG
あんなくだらないことは本読めばわかる。わからないやつは諦めろ。
いちいち糞真面目に答えるやつも邪魔だ。アホが集まってくる。
0185177NGNG
      | Hit!!
      |
      |
   ぱくっ|
     /V\
    /◎;;;,;,,,,ヽそんな煽りで
 _ ム::::(,,゚Д゚)::| 俺様が釣られると思ってんのか!!
ヽツ.(ノ:::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'
0186デフォルトの名無しさんNGNG
pythonで簡単なGUIアプリを作りたいのですが
pygtkとかpyqtとかいろいろありますよね
何かお勧めはありますか

使用環境としては、
・家:Linux ,職場:windowsでシームレスに使いたい
・職場ではあちこちのパソコンに入れるのでセットアップの手間が
小さいのがありがたい
・やっぱり簡単にプログラムが組みたい
なんですが...
0187デフォルトの名無しさんNGNG
Tkinterだしょやっぱ
標準で付いてくる威力は大きい
0188デフォルトの名無しさんNGNG
しかし、Winで使おうとするとインストールの手間は
どうしようも無いですね
0189デフォルトの名無しさんNGNG
>>186
見た目にこだわらず、凝ったことをやらないのなら、 tk
0190デフォルトの名無しさんNGNG
>>188
Windowsインストーラ版引っ張ってきてフルインストールすりゃ入ってるけど。<Tkinter
0191デフォルトの名無しさんNGNG
>>190
「Python をインストールしないと、、、」という意味だと思う。
0192デフォルトの名無しさんNGNG
>>191
Pythonに限らずだが、そういう手間すら惜しむなら、そもそもLinuxとWindowsで
クロスプラットホームなGUIなんてあり得ないと思うんだけど……。
だからひとつインストールするだけってのが目的を果たす最少構成って話。
0193デフォルトの名無しさんNGNG
>>188
Pythonなしで使いたいならpy2exeで全部ぶちこんでしまうとか。
ぐぐっても日本での使用例が少ないが、
http://kumiki.c.u-tokyo.ac.jp/~ichiyama/projects/wxpythonmascot/
これで使えるとおもったらTkinter+py2exeにすれば?
0194デフォルトの名無しさんNGNG
アルファベット前提で書かれたプログラムを日本語も通るようにするうえで参考になるような
ものはありますか?
Iwataさんのブロッグなどもそうだと思うのですが、他に手ごろな例がないかなって。
0195デフォルトの名無しさんNGNG
windows2000 以降,インストーラが一般ユーザー権限で走らないのが痛い.
0196デフォルトの名無しさんNGNG
>>195
そういうためのRunAsサービス
0197デフォルトの名無しさんNGNG
>>194
いまどきの Python アプリって内部文字コードが Unicode になってて、
UI も Unicode 対応のライブラリで作ってあったりして、日本語化の努力って
必要なかったりしない?

もし内部文字コードが ASCII や Latin-1 限定なら、
ソースを追いかけて入出力や文字列操作の箇所を見つけ出して
文字のバイト長を考慮するように書き換えるのが基本。
これは Python だろうが他の言語だろうが同じだと思われ。

ソース読んだことないけど Mailman の日本語化パッチは所望のものに近いかも。
0198デフォルトの名無しさんNGNG
>>196 お出掛け先のマシンじゃ無理だよヽ(`Д´)ノ
0199デフォルトの名無しさんNGNG
input()関数で詰まりました。

multiplier=input("乗数を入力してください:")
for j in range (1,13):
print "%d×%d=%d" %(j,multiplier,j*multiplier)

と書かれています。「乗数を入力してください:」の部分に
数字を代入すると(たとえば3)、

1×3
2×3
3×3
4×3
・
・
12×3

と表示されるのではないのでしょうか?

実際には「乗数を入力してください:」の部分に代入した数字が
表示されるだけなのですが。
どうなってるのかよく判りません。
0200デフォルトの名無しさんNGNG
>>199
漏れのところでは期待通り動いた。プログラム的にはまったくおかしくないよ。

どういう風にプログラムを実行してる?
問題の3行だけから成るファイル (例えば mul.py) を作って
python mul.py
のように実行すればいけると思うんだけど。
0201199NGNG
>>200
IDLEからopenで開いて、Run script
なんかいじくってたら、今度は1行目がおかしいという文が。
わから〜ん!
0202199NGNG
jpgにしてアップしました。どこが間違っているのでしょう?
ttp://cgi.io-websight.com/index2/uploarder/img/hare7105.jpg

IDLEからではもしかして駄目なのでしょうか?
0203デフォルトの名無しさんNGNG
人間並みの頭脳を持っていれば>>200のやり方を試してscriptが間違っていな
いかどうかを確かめることを考えるだろう。1つのやり方だけに固執せずに。
0204199NGNG
>>203
IDLE以外やり方わからんのですよ。
0205デフォルトの名無しさんNGNG
一から書き直したら原因わかりました。
()の中に""をつけてませんでした。
お騒がせしました。

ついでに聞きたいのですが、>>200,>>203の言っているほかの方法とは
どのようにやるのでしょう?

MS DOS プロンプトでしょうか?
これ開くとC:\DOCUME^1\名前>とでます。
Cの下のディレクトリにおいているので、C:\Python Program>pyhon d.pyと
するのでしょうか?でも、C:\DOCUME^1\名前>が変更できません。
書いていても、物凄く初歩的なことだとは判るのですが、全然やりかた判らないです。
0206200NGNG
>>205
DOS 窓から Python を使うには、cd コマンドとか dir コマンドとか
環境変数 PATH の設定とか、そういう MS-DOS 由来の知識が要ります。
興味があったら自分で調べて下さい。しかし郷に入ったら郷に従えで
Windows では IDLE を使うのがいい気がします。

漏れは Linux 使いなので>>200のように使うのが楽なのです。
0207205NGNG
>>206
ご親切にありがとうございます。
IDLE使っときます。
0208デフォルトの名無しさんNGNG
XcodeでPython使ってる人いますか?
0209デフォルトの名無しさんNGNG
Python を使い始めたものなのですが、
クラスで、何をクラスにしたらよいのかわかりません。

ネットでも調べてみましたが、よくわからなかったので
よければ教えてください。
0210デフォルトの名無しさんNGNG
number.pyというプログラムを作って
>>> python number.py
と入れて実行しようとしたのですが
SyntaxError: invalid syntax
と出て起動できません。原因はなんでしょうか?
非常に初歩的な質問ですみません・・。
0211デフォルトの名無しさんNGNG
>>209
使い方がわからないうちは使う必要ないです。

一部でなんでもクラスにしないと気がすまない悪い子さんとかいますし、、、
0212デフォルトの名無しさんNGNG
>>210
プログラムはコマンドラインから実行する。
$ python number.py

Python のシェルから実行しても駄目だよ。
0213210NGNG
>>212
し、知らなかったです・・。すみません、勉強不足で。
しかしコマンドラインから実行しても
File "<stdin>", line 1
$ python number.py
'
と出て起動できません・・・。一体どうすれば良いのでしょうか?
0214デフォルトの名無しさんNGNG
GUIプログラムを組むなら
glade+Cの方が簡単か?
0215デフォルトの名無しさんNGNG
210さん、
>>213 の表示は、 >>212さんが言っている「コマンドライン」
ではないように見えます。推測ですが、python インタプリタの
「>>>」というプロンプトの直後に、「$ python number.py」のように
タイプしたものでしょう。そのような操作は誤りです。
「>>>」というプロンプトに対しては、Python言語のプログラム
(の断片)を入力します。

>>212さんがいっている「コマンドライン」は、
もしWindowsの場合であれば、「コマンド プロンプト」または
「MS-DOSプロンプト」のことだし、
Linuxまたはその他のUnixの場合であれば、シェル(bashなど)
のことです。

実は、それぞれのOSにおける「コマンドライン」の使い方について
質問するには、このスレッド(またはプログラム板全体)は
最適ではないです。PC初心者板などきくのがよいのでは
ありませんか。
0216デフォルトの名無しさんNGNG
>>213
どこからコマンドを実行してる?

OS は?
0217デフォルトの名無しさんNGNG
コードの中身が見れないと……
0218210NGNG
>>215
了解。もう少し自分で頑張ってみます。
アドバイスありがとうございました。
0219デフォルトの名無しさんNGNG
>>210
Windows なら number.py をダブルクリックするだけでは?
0220デフォルトの名無しさんNGNG
>>209
標準ライブラリのソースを読んで、クラスがどのように使われているかを
調べてみたらどうだろう。一部のクラスは継承することを前提に書かれている。
単にインスタンス化するためだけのものもある。そういう用例をたくさん
知っていれば自分でクラスを設計するときに役立つよ。

Python では必ずしもクラスを使う必要はないから、最初はいつ使えばいいのか
分からないかも知れない。ひとつの指針として、こういうのはどうだろう。

  関数が増えて大域変数をいくつも使う必要が出てきたら、
  それらをクラスとしてまとめることを考えてみる。

つまり、大域変数をメンバ、関数をメソッドにして、プログラムをクラスとして
再構成してみる、ということ。オブジェクト指向の方法論からすれば邪道だけど
実践的なアプローチとしては「あり」じゃないかなと思う。
0221デフォルトの名無しさんNGNG
>>220
sakito 並に支離滅裂だな。
0222220NGNG
>>221
どこらへんが支離滅裂か指摘してもらえると助かる。
0223220NGNG
丸一日レスを待っていたわけだが
「sakito並」と言ってみたかっただけのお花畑だったのね。ヽ(´ー`)ノヤレヤレ
ご愁傷様。>sakitoタソ
0224デフォルトの名無しさんNGNG
教えてください!
[1,2,3,6,7,10,11]みたいなリストがあったとして、
[[1,2,3],[6,7],[10,11]]みたく、連続した部分を切り出すような処理をしたいんです。
再帰使ったりとかの定石的な書き方ってありますか?
0225224NGNG
自力で辿り着いたのは、
1 def pf(args):
2 if not args:
3 return []
4 r = []
5 r = pf(args[1:])
6 if not r:
7 r.append([args[0]])
8 else:
9 if abs(r[-1][-1] - args[0]) == 1:
10 r[-1].append(args[0])
11 else:
12 r.append([args[0]])
13 return r
こんな感じなんですけど。なんか再帰感薄いっつーか、逆から回してるだけじゃんかと。
そんなもんなんですか?
0226デフォルトの名無しさんNGNG
何がなにやら…
0227デフォルトの名無しさんNGNG
>>225
全角スペースかタグを使ったスペースよろしく!
0228デフォルトの名無しさんNGNG
>>225
キーワードに注目すれば
ブロックが見える
こんなかんじ?

def pf(args):
  if not args:
    return []
  r = []
  r = pf(args[1:])
  if not r:
    r.append([args[0]])
  else:
    if abs(r[-1][-1] - args[0]) == 1:
      r[-1].append(args[0])
    else:
      r.append([args[0]])
  return r

>>>pf([1,2,3,5,6,8,9])
[[9, 8], [6, 5], [3, 2, 1]]

で,ひっくり返ってるが,これは桶なの? >> 225
無理に再起使う必要ないんじゃ?
0229224NGNG
pythonの人は早起きっすね
ひっくり返ってんのは、入力データを降順にするからいいですw

def pf2(args):
  prev = None
  r = []
  for i in args:
    if i - 1 == prev:
      r[-1].append(i)
    else:
      r.append([i])
    prev = i
  return r
非再帰だとこれ...おもしろくもなんともなかったw
あんまりリスト操作ってやったことないので、すいません
0230デフォルトの名無しさんNGNG
汎用性あるかなと思ったけど、単純なときにしか使えないかな。

>>> def split_list(seq, test=lambda seq, i: True):
...   chunk = []
...   for i,x in enumerate(seq):
...     if (i==0) or (not test(seq, i)):
...       chunk.append(x)
...     else:
...       yield chunk
...       chunk = [x]
...   else:
...     yield chunk
...
>>> def not_consecutive(seq, i):
...   return seq[i] != seq[i-1]+1
...
>>> print [c for c in split_list([1,2,3,6,7,10,11], not_consecutive)]
[[1, 2, 3], [6, 7], [10, 11]]

0231224NGNG
おお...python寄りの頭だといきなり>>230まで辿り着けますか
なんか全然C(つかVBか不本意ながら)だもん>>229
ジェネレータでやってみようとも思ったんだけど...
yieldの動きがよくわかんなくて、もろよくわかんなかったとこなんですけど、
..     if (i==0) or (not test(seq, i)):
...       chunk.append(x)
...     else:
...       yield chunk
で、ループ中でyieldするじゃないですか。でその後
...       chunk = [x]
でループの続きが動く、というのは、呼び出し元でまだ続きがあるとわかってるってこと??
...   else:
...     yield chunk
こっちのyieldは終わりであると。なんかよくわからんのですよ。
後、内包表記って評価された時点で全部メモリに乗っちゃうんですか?
例えば
result = [c for c in split_list([1,2,3,6,7,10,11], not_consecutive)]
ってやって、
for i in result:
print i
とかだと、resultにバインドした時点で全てメモリにあるのか、for文で取り出した時に
メモリに乗るのか...長くてすいませんできたら教えてください
0232デフォルトの名無しさんNGNG
おれは230ぢゃないが、
・pthonの関数はreturnはオプションで、やるべきことを済ませば勝手にreturnする。
・pythonのfor文はシーケンスの終わりにstop iterarion例外を捕らえてループを抜ける。
・リストコンプリヘンションはlistを生成するための表記法の一つなので、代入した場合の格納されるオブジェクトは当然list。

すなわち230の例ではstop iteration例外によってfor文を抜けて暗黙のreturnで関数を終了してる。
resultは(リストコンプリヘンションで生成した)listオブジェクトその物を指している。

、、、なんか答えになってねーっぽい。
0233デフォルトの名無しさんNGNG
returnは他言語のreturnと同じ。関数を頭から実行して、値を返して終わり。

yieldを含んだ関数は、関数の値を計算しないで、ジェネレータを返す。
ジェネレータは、nextメソッドを呼ぶと、関数を頭から実行して、yieldのところで値を返して一時停止する。
もう一回nextを呼ぶと、一時停止した直後から実行再開。
関数の終わりに到達すると、もう実行再開できなくなる(StopIteration例外がでる)。
最後のyield文じゃなくて、あくまで関数の終わりね。
普通の関数なら、暗黙の無返値のreturnがある位置。

あと、内包表記はresultにバインドした時点で全部メモリに乗る。
ジェネレータは呼び出すたびにいちいち計算するもんなので、計算結果全部をメモリに乗せない。
for i in split_list(...):
  print i
と、内包表記を経由しなければOK。
for文がnextとかStopIterationとかの面倒を勝手にやってくれるから。
0234デフォルトの名無しさんNGNG
個人的には>>229の方法がシンプルで好きだな。
>>230の方法は callable でテストを可変にした点がいいとオモタ。
つーことで足して2で割ってみた。

def split(L, test):
    buffer = [[L[0]]]
    for i in range(1, len(L)):
        if test(L[i-1], L[i]):
            buffer[-1].append(L[i])
        else:
            buffer.append([L[i]])
    return buffer

print split([1, 2, 3, 6, 7, 10, 11], lambda x, y: x + 1 == y)
print map("".join, split("abcmnrst", lambda x, y: ord(x) + 1 == ord(y)))
0235デフォルトの名無しさんNGNG
あのさぁ python にも CPAN みたいなサイトってあるの?
0236デフォルトの名無しさんNGNG
>>235
http://www.vex.net/parnassus/ と http://www.python.org/pypi かな。
0237デフォルトの名無しさんNGNG
>>236
微妙。
0238デフォルトの名無しさんNGNG
>>237
なにがどのように
0239224NGNG
>>232,233
どうもわかりやすかったです。
yieldが含まれる関数はジェネレータオブジェクトを返すってことなのか。
それでdefのかわりにgeneraterって予約語作ったほうがいいって話もあったりするんすね。
pythonはじめてから一番違和感ある...そんなことないのかな。いやあるなあ。
むしろ内包表記なんかも全部ジェネレータ的に動いてくれりゃいいのにとか勝手なこと思いますけど。
バインドした時点ではジェネレータオブジェクトを抱えたジェネレータオブジェクトで、
みたいな感じだとむしろ理解しやすいっつーか巨大ファイル扱う時も内包表記でいけるじゃんと。
>>234だと隣あってる要素の比較っていうのが固定されるんすね。
普通どのへんで手を打つべきなんだろう。

ちなみにこれはgeniconvtblのcondition以下の生成をしようっつーので必要なんです。
どうもありがとうございました。
0240デフォルトの名無しさんNGNG
2.4からジェネレータをリストの内包表記みたいに書ける構文が入るとか。
http://python.org/peps/pep-0289.html
0241デフォルトの名無しさんNGNG
リストはリストで、メモリを食う代わりにランダムアクセスできるメリットが
あるので、全部ジェネレータというのもちょっと……。
PEP 289が入れば>>239の望みもかなうかな。
0242デフォルトの名無しさんNGNG
>>239
Python のファイルオブジェクトは実質的にジェネレーターの一種だと思う。
辞書の iterxxx 系統とか。
0243224NGNG
>>240,241
ああそう、こんな具合で。いいっすねー。
>>242
そもそも指摘の意図がわかんないですすいません。
巨大ファイルってとこになんかあるですか
後、そもそもジェネレータとイテレータの違いってyieldの特性によるもの?
0244デフォルトの名無しさんNGNG
ジェネレータはイテレータの一種。
(一定の規則に則って)繰り返し値を返してくれるオブジェクトをイテレータといって、
イテレータの中でも、予めメモリ上に全部乗ってるデータを順番に返すのではなくて、
値が必要になったらその都度計算して返すオブジェクトをジェネレータという。

最近のファイルオブジェクトは、値を全部メモリに読み込んで返す他に、
必要な分だけその都度読み込んでは返すことができるので、そういう意味で
ジェネレータに近いんじゃないかと。メモリも圧迫しないし。
0245デフォルトの名無しさんNGNG
そもそもジェネレータってどの言語が元祖なの?
C# にもつくらしいけど。
0246デフォルトの名無しさんNGNG
>>245
漏れの知る限りでは、Smalltalk-80には既に存在していた。
0247デフォルトの名無しさんNGNG
80ねんごろにはすでにあったのか、、、
0248246NGNG
>>247
yieldを使って構成するようなものではなくて、例えばpython風に書くと
|class RandomGenerator:
|def __init__(self, seed = None):
|#何かseedを使って初期化する
|def next(self):
|...
|return XXX
みたいなクラスを定義して、
| random = RandomGenerator()
| while 1:
| r = random.next()
| print r
みたいな形で、next()を呼ぶ毎に次の値を計算する。
こういうのが、一種のパターンして確立していた。

別の似たようなものとしては、関数型言語の無限リストがある。
これも漏れの知る限りでは1980年に発表されたMirandaで実装されていた。
0249デフォルトの名無しさんNGNG
っつうかclosureが発明されたころまで遡れるんじゃ
0250デフォルトの名無しさんNGNG
起源はわからないけど、PythonはジェネレータをIconから拝借したそうな(PEP 255)。
0251デフォルトの名無しさんNGNG
>C# にもつくらしいけど。
ソースきぼn
0252デフォルトの名無しさんNGNG
>>251
yield はゲネレータ かと名前から思っていたのだけど、今調べたら、単なるイテレータのようですね。
スマソ。
0253デフォルトの名無しさんNGNG
>>249 じゃあ lisp だ (グレアムだってそう言ってるw
0254デフォルトの名無しさんNGNG
>>253 lisp 界隈ではジェネレータはわりとメジャーだったとは思います。
むかーし読んだ 1980 年代の lisp 入門書にもちゃんと載ってたし。
そんな漏れも Norvig タンの Python for Lisp Programmers で Python 使い
始めたクチです。ぱいそんイイ!
0255デフォルトの名無しさんNGNG
>>254
lisp 系の人は Python より Ruby のほうがいろいろ遊べるんじゃないの?
そんなことないですか?
0256デフォルトの名無しさんNGNG
>>255 lambda がダメポとかって話?そもそもリストの実装からして根本的に
違うんだから lisp らしさなんて期待しないので。クロージャとかじゃくて
クラス作って〜と頭が切り替わってるから全然平気っす。

個人的には言語仕様はバランスイイと思うし、ドキュメントや環境もひっくるめて考えると
Python 良いと思うよ。たまに Windows 相手の時も頼りになるし。計算主体の場合は Lisp
コンパイラにお出まし願えばいいわけだし。(でもなんだかんだで C++ ばっかで鬱なわけだが)
0257デフォルトの名無しさんNGNG
windows 相手のときに頼りにならない lisp に愛の手を.
仕様と処理系が一緒な python, ruby, perl,,, には強みが多いですね.
0258デフォルトの名無しさんNGNG
まぁ、Windows 相手に頼りに〜ってのは主に COM サポートの話だったので
別に Lisp が頼りにならないわけではないんだが…Allegro 買わずとも
Python で済んじゃえばそれでいいやってくらい。ところで Ruby って
Windows での COM サポート充実してたっけ?今 RAA で探したら RubyCOM
というライブラリがあったけどリンク切れだった。
0259デフォルトの名無しさんNGNG
COMサーバ→(Pythonで)SOAPサーバ→LISP(or whatever)でSOAPクライアント
のよう構成を妄想。
0260デフォルトの名無しさんNGNG
http://www.amazon.co.jp/exec/obidos/ASIN/1584502584/

この本を買ってみようかと思っているのですが、どうでしょうか?
持っている方がいらっしゃったら、感想とか教えてください。
0261デフォルトの名無しさんNGNG
>>260
まだでたばかりだよ。

中身を見ていないのでなんともいえないけど、Pythonのスキルをどのくらいもっているかで価値が変わるかもね。
0262デフォルトの名無しさんNGNG
作者は NCSoft で働いているそうですが,NCSoft といえば MMORPG の
Lineage/II を開発してますね.Origin の Ultima Online 2 の計画では
サーバの拡張に Python を使う案がありましたが,NCSoft は Origin からも
何人か Python プログラマを引き抜いているようです.
http://dmc.ic2.org/publications/gamedev_wkshp_02.pdf
0263デフォルトの名無しさんNGNG
>>260
「まずはPythonからはじめよう」の購読者ですね?
0264デフォルトの名無しさんNGNG
>>260
注文したけど、まだ届かねー
0265264NGNG
発送が1〜2週間遅れるとさ(`〜´)タリィ
0266デフォルトの名無しさんNGNG
C++クラスをPythonに公開して、
そのクラスを使ったPythonスクリプトを
C++から呼び出すサンプルを書いてくれ。
できればコールバックを使ったやつ頼む。
0267デフォルトの名無しさんNGNG
某所 (foo) で cgi に python を使おうとしました.ところが,

Traceback (most recent call last):
File "hoge.py", line 9, in ?
import cgi
File "/usr/foo/lib/python2.2/cgi.py", line 39, in ?
import urllib
File "/usr/foo/lib/python2.2/urllib.py", line 26, in ?
import socket
File "/usr/foo/lib/python2.2/socket.py", line 41, in ?
from _socket import *
ImportError: No module named _socket

_socket.so は /usr/foo/lib/python2.2/lib-dynload にあるわけですが,
これはちゃんと sys.path に含まれているんです.
うちではちゃんと動きます.
どうなっているんでしょう...?
0268267NGNG
人が少ないのかなぁ...
始めたばっかりで考えられる原因を挙げることさえできないんです.

スレはageます.
0269デフォルトの名無しさんNGNG
>>266
C++(クラス) -> Python -> C++
って事ですね?

http://www.strawhat.net:8080/python/pythondoc-jp/ext/callingPython.html
とかは?

>>267
http://mm.tkikuchi.net/pipermail/mmjp-users/2002-June/000229.html



0270デフォルトの名無しさんNGNG
>>267
Solaris だと機種によっては socket でちょっとはまっていたきがする。 HP-UX だったかな?
サーバーのマシンは Linux じゃないですよね?
0271267NGNG
>>270
はい.Solaris なんです.向こうは.
いやー.つい r... という言語を試してしまいました.
CGI のライブラリがあればすぐに出来るものでしたので,
python でできず本当に残念です...(⊃д`)
0272デフォルトの名無しさんNGNG
rexx 使いか。
0273デフォルトの名無しさんNGNG
Rebol では?
0274デフォルトの名無しさんNGNG
>>267
たぶんサイトのCGIポリシーでしょ。
cgiから直接コネクション貼りにいかせたくないんじゃない?
0275デフォルトの名無しさんNGNG
「某所(foo)で」とか言われても、誰も何もしてやれんし。
そのマシン管理者なり、サービス提供事業者のサポセンに訊けよ。
そしてその装置にpython2.2をインストールするのを失敗してるやつに直させろよ。
社会の掟でしょ。

ところで cgi モジュールは socket に依存しているんですね。知りませんでした。
よく見ると socket は urllib が使っていて、cgi は urllib の URL unquote 関数を
使っているだけだから(わたしはPython 2.4を見ていますが)、ワークアラウンド
として socket に依存しないバージョンのcgi.py を自分で用意するのは容易(pun intended)。

(1)まず cgi.py の「import urllib」の行を消します。
(2)次に、cgi.pyの「urllib.unquote」を「unquote」のように非修飾名に書き換えます。
(3)urllib.py から 「def unquote」という関数定義部分をcgi.pyにコピーします。
(4)できあがったcgi.py を自分のCGIスクリプトと同じディレクトリに置きます。
 cgi.py の許可モードは 0444 とでもします。
(5)python -v で起動して、(-vの意味はマニュアルを見よ)
>>> import cgi
します。ここで _socket が表示されなければokです。
0276デフォルトの名無しさんNGNG
boost/python勉強すっか。
ドキュメント和訳されないかなぁ・・・
英語の文献だと著しく学習効率がさがるんだーわし。
0277デフォルトの名無しさんNGNG
>>276
http://life.2ch.net/yume/
0278デフォルトの名無しさんNGNG
日本人の英語力はアジア最低レベル。バカばっか。
0279デフォルトの名無しさんNGNG
>>278
どちらの国の方ですか?
日本語がお上手ですね。
0280デフォルトの名無しさんNGNG
>>266
オーバーヘッドがすごそうだね。
プロジェクトの中にPython信者が一人でもいると、
そういうことまでしないといけなくなるのかな…
0281デフォルトの名無しさんNGNG
>>280
信者云々は関係ないと思われ。Python を C++ のアプリの拡張言語として使おうとすると>>266のような要求が出てくる。
この主従関係は Python と Tcl/Tk にも当てはまる (Python アプリから Tk を呼出し、コールバックを Python で書く)。
0282デフォルトの名無しさんNGNG
>>276
部分的な和訳なら以下にある。
http://owa.as.wakwak.ne.jp/zope/Python/Boost/Boost/libs/python/doc/index.html
0283デフォルトの名無しさんNGNG
ダメなやつは
何をやらせてもダメ

デキるやつは
何をやってもデキる

ただそれだけのことだ
0284267NGNG
>>275
次の段階に行かれました.ありがとうございます.

ImportError: No module named time

また lib-dynload の中です.
もしかすると >>274 かも知れませんが,相談してみます.

某所というのは,某大学なんです.
python が満足に動かない環境のままでは大学全体の知的活動に関わる問題に
なってしまいますから,相談しなければと思います.
0285デフォルトの名無しさんNGNG
>>284
ActivePython の Solaris (SPARC) 版っていうコンパイル済みのパッケージがあってSolaris 2.6以降で使えるそうです。
superuser権限がある場合: Solaris package
superuser権限がない場合: Generic AS package
superuser権限があるかどうかさえもわからない場合: このレスのことは忘れてください。
なおこれらのインストール方法について訊かれても、ActiveStateがwebに掲載している以上の情報は知りません。
0286デフォルトの名無しさんNGNG
つまらないことかもしれないけど、たまに Python でプログラミングをはじめましたという人がいるけど、
あの人たちは無事 Python(やその他のプログラミング言語)を使えるようになっているのかな?
0287デフォルトの名無しさんNGNG
>>286
それはPythonがプログラムの入門としては適してないっていいたい?
0288デフォルトの名無しさんNGNG
日本での情報が足りないとか?
0289デフォルトの名無しさんNGNG
中級レベルの日本語での情報が少ないよね。
……まあそこらへんは Ruby でもそうだけど。
0290デフォルトの名無しさんNGNG
正直適してないと思う
電卓として使うならいいかもしんないけど
型を明示的に扱う系の方が後々伸びるかと
個人的にはJava推奨、デバグが楽だと言う点で

ところで、Zopeのプロダクト作るときってデフォルト引数にTrue
って使えないの?
def function(x, y, z=True):
hogehoge....
みたいなコードで
起こられるんだけど・・
Exception type: NameError
Exception value: name 'True' is not defined

0291デフォルトの名無しさんNGNG
python修得中。いづれは C コードの外装に使用する予定。
0292デフォルトの名無しさんNGNG
>>290
偉そうなこと言うわりには基本ができていないやつの典型
0293デフォルトの名無しさんNGNG
Python 勉強中。
0294デフォルトの名無しさんNGNG
別にどの言語でも、「今勉強してます」とか言ってる人がモノになったって話は聞かないなぁ。
必要に迫られて憶えた、なんか弄ってる内になんとなく分かってきた、って人が多い気がする。

>>290
そのZopeが使ってるPythonのバージョンはいくつ?
旧いPythonには定義されてないので、
True, False = (0==0), (0==1)
とか自分で定義してお茶を濁すべし。
0295デフォルトの名無しさんNGNG
ありがとうございます>>294
Pythonのバージョンは2.1.3です。
Zope2.6.1のをそのままで

引数を整数にして逃げときました
0296デフォルトの名無しさんNGNG
>>294
(´・ω・`)
0297デフォルトの名無しさんNGNG
>>294
True, False = 1, 0 じゃなぜダメなんですか?
0298デフォルトの名無しさんNGNG
True, False の定義されている Python で True=1 とすると,
組み込みの True (boolean 型) を整数 1 (plain integer 型)
でオーバライドするからじゃないかな. (0==0) は真偽テストだから,
True/False のある Python では True, そうでない Python では 1 を
返すので,バージョン間の定義の違いをうまく吸収できるというわけ.
0299デフォルトの名無しさんNGNG
>>297
ダメじゃないよ。無問題。
0300デフォルトの名無しさんNGNG
>>288,>>289
中級以上のレベルの話をするには
ある程度プログラムの分野を絞らないと
いけないと思うんだけど、日本のPython本は
数が少ない上に、総論・概論本ばっかりですからねぇ。

結局、Perl,Java,Cのコードをヒントに勉強していくしかない。
0301デフォルトの名無しさんNGNG
なら英語でも読めば。
0302デフォルトの名無しさんNGNG
python でも本は必要?
0303デフォルトの名無しさんNGNG
>>302
言語自体に慣れないうちは
手元にリファレンス本などあったほうが便利

慣れてきたら
他人のソース読むとか
ライブラリーリファレンス読むだけなので
本は不要
0304デフォルトの名無しさんNGNG
そりゃまぁどんな言語でも同じだわさ
0305デフォルトの名無しさんNGNG
>>302
本はあった方がいいと思うよ。
リファレンス本は、付属ドキュメント見ればいいだけだからいらないと思うけど。
0306デフォルトの名無しさんNGNG
Zopeから外部プログラムを起動する方法ってありますか?
Zopeから Cのプログラム を起動させたいんですけど
PythonならばいけるんですけどZopeから何とかならないでしょうか?

import sys
target = sys.argv[1]
command = "ping.exe %s" % target

result = os.popen2(command)[1]
print result.read()

Zopeでファイルシステムベースのプロダクトを作って(非ZClass
このようなコードを埋め込んでも結果はNoneになってしまうのですが・・・

環境は
WindowsXP Plone 1.0.5 Python2.1.3です
0307デフォルトの名無しさんNGNG
sys.argv て何がはいってるの?
print するとどこに表示されるはずなの?
None て何?
0308デフォルトの名無しさんNGNG
>>> 306
ExternalMethod を使います.ExternalMethod を知らなければ,勉強するか,
Zope 関連のスレッドや ML へどうぞ.
import os
def bar(target):
  return os.popen2('ping.exe %s' %(target))[1].read()
を foo.py に保存して,例えば baz という ExternalMethod として登録し,
print container.baz("www.spambacon.egg") のように使います.

Zope の Script (python) や ExternalMethod は CGI ではないので,
sys.argv にスクリプトの起動引数が入ったりはしません.Python プログラム
である Zope の一部として実行されるので,sys.argv には z2.py の起動時の
引数が入ります.
0309デフォルトの名無しさんNGNG
そのコードはmainでテストした奴なので実際のものとは違います

def invoke():
address = 'www.google.co.jp'
command = "ping.exe %s" % address

result = os.popen2(command)[1]
print result.read()

実際はこのようなメソッドをPortal.pyに加えて
dtml側で
<dtml-var expr="invoke()">のように呼び出したんですけど
コマンドが実行されていないようなのです
そして、ページにNoneが返ってきているという意味です
0310デフォルトの名無しさんNGNG
>>309

printしないでreturnすれば?
0311デフォルトの名無しさんNGNG
return printed とか。

zope は zope スレがあったと思う。どの板か忘れたけど。
0312デフォルトの名無しさんNGNG
あ、すいません、書き間違えました、そこはreturnで・・・
 ・・・と思ったらreturnにしたらコマンドが実行されて出力結果が表示されてました・・
お騒がせして、すいません
みなさん、ありがとうございます

ExternalMethodも勉強したんですけど、
どうせプロダクトを作るならコードに組み込んだ方がいいかなと思いまして

やりたいことはPlone上で編集中の文章を外部プログラムで形態素解析するとかなんですけど
編集中の文章を取ってくる方法がわからなかったりつまづいています
ドキュメントのURLのようなものからドキュメントが取れればいいのですが・・・ わかる人いますかね?
たまに<dtml-var text>で取れたりするのですが・・ (編集中のDocumentクラス内のtextがそのまま残っているから?)

CMFの海に溺れている様な状態です・・・未熟な私にはグローバルまみれでよくわからないように見える
0313デフォルトの名無しさんNGNG
Zope関連はスレ違いですかね?
プログラム、プログラマ板にはそれらしいのはなかったです
WebProg板にZopeスレがあったんですけど
”Zopeってどうよ?”なスレだったんでプログラム的な質問は違うかなと思いまして

2ch以外のZope関連サイトのBBSも結構 探したのですが
更新が止まっているものが多く、このスレが一番活発に見えたので質問した次第です
0314デフォルトの名無しさんNGNG
Zope使ったことないのですが、面白いの?
どんなことができるの?"高性能なサイトを作れる"の?


それとも、ぞーぷってうまいのか?
0315デフォルトの名無しさんNGNG
>>314
うまいっていうか、香ばしいみたいよ

Zopeってどうよ? 〜 もういいよ。モジタソ 〜
ttp://pc2.2ch.net/test/read.cgi/php/1045704268/
0316デフォルトの名無しさんNGNG
python の手軽に動く wiki は無いんですか?
Zope では貧弱な権限で動かせません...
0317デフォルトの名無しさんNGNG
>>314
仕事で必要といった理由がないなら、近づかない方がいいと思う。
0318デフォルトの名無しさんNGNG
>>316

WyPy: A Minimal Python Wiki
ttp://infomesh.net/2003/wypy/
0319デフォルトの名無しさんNGNG
>>318
warata

http://infomesh.net/2003/wypy/wypy.txt

Perl かと思ったよ。
0320デフォルトの名無しさんNGNG
>>319
コーディングスタイルガイドを守った上で
この行数ですがなにか?(w

ttp://c2.com/cgi/wiki?ShortestWikiContest

を見ると
パクリ癖のあるR言語の実装が
一位になっていて萎えるな(´・ω・`)
0321デフォルトの名無しさんNGNG
>>318-319
何だ、ソースコードかと思ったら「ウォーリーを探せ」か。懐かしいな。



('w') ← ウォーリー
0322デフォルトの名無しさんNGNG
>>316
moinmoinがいいかと。
ttp://twistedmatrix.com/wiki/moin/

python.org でも使われてるし。
ttp://www.python.org/cgi-bin/moinmoin/
0323デフォルトの名無しさんNGNG
おもしろい名前だな
0324デフォルトの名無しさんNGNG
ぐぐったら北ドイツの挨拶の言葉らすぃ。<Moin
0325デフォルトの名無しさんNGNG
>>324
( ・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェー
0326デフォルトの名無しさんNGNG
Emacsのpython-modeで引数を渡す方法ってありますか?
C-c c でスクリプトを実行できて重宝していますが引数を渡したい場合、いちいちshellモードで実行してますので。
0327デフォルトの名無しさんNGNG
M-x describe-function py-shell
0328デフォルトの名無しさんNGNG
>>327
うう、まだよくわかりません。
例えば以下のようなスクリプトがあって

import sys
print sys.argv[1]

このバッファでC-u 'foo' C-c C-cとかやるとfooを表示するような機能を使いたいんですが。
py-shellによるとC-u C-!でインタープリタに引数を渡せるようですが、これはいわゆるPythonのオプションのように見えます。
0329デフォルトの名無しさんNGNG
>>328
M-x describe-bindings したら?
py-execute-* あたりかな。
0330デフォルトの名無しさんNGNG
プログラム自体初めてで、諸事情からpythonやることになりました。
といっても既存のプログラムを書き換えるんですけど。
で、書き換えた結果、
AttributeError: 'int' object has no attribute 'self'
って出ました。属性がない?みたいに取れますけど原因がよくわかりません。
質問として足りないと思うのですが、何書けばいいのかよくわからないので。

わかりにくいと思いますがお願いします。
0331デフォルトの名無しさんNGNG
>>330
プログラムを見せないのはなにか狙っているのですか?
0332330NGNG
プログラム載せてもただ長くなるだけだと思いまして。
やたら長いプログラムの一ヶ所に追加しただけなので。
主に原因として考えられる例などを挙げてもらえればいいと思ったのですが。

とりあえず周辺数行を載せます。

if (self.plotDataType == "lowd"):
query = "SELECT time_utc FROM ceilo "
query = query + "WHERE paramset = '%d' AND " % (paramsetID)
query = query + "time_utc >= '%s' AND time_utc <= '%s' AND " % \
(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(self.options.startTime)),
time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(self.options.endTime)))
query = query + "cb_height_1 IS NOT NULL AND"
query = query + "cb_height_l >= '%d' AND cb_height_l <= '%d' " % (self.lowLimit. self.highLimit) ←エラー出る行
query = query + "ORDER BY time_utc;"
self.db.executeWithoutCommit(query)
self._initGPFile()
0333デフォルトの名無しさんNGNG
>>332
(self.lowLimit. self.highLimit)
->
(self.lowLimit, self.highLimit)

コンマがドットになってる。

4.self.hightLimit
という風に解釈されているということですね。
0334デフォルトの名無しさんNGNG
>>332

self.lowLimit. self.highLimit

じゃなくて

self.lowLimit * self.highLimitとか

self.lowLimit.highLimitとかじゃないか
0335デフォルトの名無しさんNGNG
>>332
〜 % (self.lowLimit, self.highLimit)
では? ピリオドとコンマが。
0336デフォルトの名無しさんNGNG
うが三重婚。
0337334NGNG
すまん

下の行はおかしいや、取り消し
0338330NGNG
おお!ありがとうございます!
別のとこでエラー出ましたがとりあえずこれは解決されました。

即レス感謝です!
0339デフォルトの名無しさんNGNG
>>329
キーバインディングは一番最初に調べたのですが、どうもぴんとくるものがなかったんです。
中でもpy-execute-stringあたりは怪しかったけど、これバッファ二つ開いておいてインタプリタに文字を送るようなもので、これはこれでなんかすごい便利でうれしかったんですが。。。
いや、そう考えてみると質問を変えみたりして、

Pythonインタプリタに対話的に引数を渡すのってどうするのでしょうか?
0340デフォルトの名無しさんNGNG
対話的に渡すものを引数っていうのかな?
0341デフォルトの名無しさんNGNG
1. a.py というファイルを開いてコードを書く。

import sys
print sys.argv[1]

2. M-x py-shell として次の2行を打ち込む。

>>> import sys
>>> sys.argv = ["a.py", "foo"]

3. a.py のバッファに戻って C-c C-c でプログラムを実行する。結果は以下の通り。

>>> ## working on region in file /usr/tmp/python9exnr0 ...
foo
>>>
0342デフォルトの名無しさんNGNG
>>341
ありがとうございますた。
これだとpy-execute-stringあたりの便利さが実感できそうです。
0343デフォルトの名無しさんNGNG
文字コードの置換について教えてください。
例えば全角スペースを半角スペースに置き換える場合、

import string
mystr="わたしは ほげ"
print string.replace(mystr," "," ")# 出力 "わたしは ほげ"

で実現できるのですが、マルチバイト文字のコードレベルの置換ってどうすればいいでしょうか?
つまり以下のようなことです。

mystr="I am a hoge"
print string.replace(mystr,chr(32),chr(33))# 出力 "I!am!a!hoge"

これはだめな例。

mystr=u"わたしは ほげ"
print string.replace(mystr,chr(0x3000),chr(20))#出力イメージ "わたしは ほげ"
0344デフォルトの名無しさんNGNG
>>343
何がどうダメなのか分からないけど、少なくとも以下の例は漏れの環境では動く。

$ cat test.py
# -*- coding: EUC-JP -*-
s = u"ぴ ち ょ ん"
print repr(s)
print repr(s.replace(u" ", u" "))

$ python2.3 test.py
u'\u3074\u3000\u3061\u3000\u3087\u3000\u3093'
u'\u3074 \u3061 \u3087 \u3093'

注意点:
・Python 2.3 以降を使う。
・スクリプトの先頭に # -*- coding: エンコード名 -*- と書く。

この2点を満たさないと u"漢字" のような Unicode リテラルの書き方はできない。
代わりに unicode("漢字", "euc-jp") のように組込み関数 unicode() を使う必要がある。

あと、chr(0x3000) ではなく unichr(0x3000) だよね。
0345デフォルトの名無しさんNGNG
>>344
だめといったのはchr(0x3000)はエラーになるということでして。unichr()ですね。ありがとうございます。

string.replace(mystr," "," ")ではそのスクリプトの文字コードに依存するかなとおもったのですが、どの道スクリプトの文字コードは関与するか、あるいは明示的にエンコーディングを指定しなければならないということですね。

勉強になりました。
0346デフォルトの名無しさんNGNG

Implicitness is evil. Make everything explicit.
0347デフォルトの名無しさんNGNG
あるオブジェクトと、そのオブジェクトの
属性名のリストがあるときに、
「オブジェクト.属性名 = 0」という式を属性名に
ついてループしたい場合はどうしますか?

for attr in ["giko", "hanyaan", "itteyoshi"]:
  exec("obj.%s = 0" % attr)

これをexec文なしに書ける人よろしく。
0348デフォルトの名無しさんNGNG
>>347
setattr()
0349デフォルトの名無しさんNGNG
質問です。
 Zopeではなくて、PythonアプリとしてStructured Textを扱おう
と考えています。そして、このアプリは、主にWindowsを対象とし
て配布したいと思っています。
 その場合、Python23jpにStructuredTextのライブラリを入れる
方法と、ZopeをインストールしてZope内のPythonを使う方法のど
ちらがよいと思いますか?
 そもそも、WindowsにインストールするZopeディレクトリ内の
Pythonって、日本語化が十分なのでしょうか?十分なんだったら、
Python23jpよりもZopeを入れちゃったほうが、初心者には簡単・
すっきりだと思うんですが。。

0350デフォルトの名無しさんNGNG
>>> attrs = 'giko hanyaan itteyoshi'.split()
>>> class C: pass

>>> obj = C()
>>> obj.__dict__.update({}.fromkeys(attrs, 0))
>>> obj.giko, obj.hanyaan, obj.itteyoshi
(0, 0, 0)
0351デフォルトの名無しさんNGNG
>>350
いちいちstringをsplitしてリストをつくる理由がわからん
シングルクオーテーションをたくさん打つのが面倒だからか?
0352351NGNG
やべぇ,ageちまった...
0353デフォルトの名無しさんNGNG
>>349
Zopeインストールさせるのはやめておいた方がいい。
あれはサーバなので、影響が大きい場合がある。
あと純粋にPython利用してもらった方が後に続けやすい。
0354デフォルトの名無しさんNGNG
pythonで行列計算をさせてみようと思うのですが
最初に行列サイズを指定するいい方法はないでしょうか

いまは
matrix=[]
for i in range(n):
line=[]
for j in range(m):
line.append(0)

matrix.append(line)

とかして0行列を作ってるんだけど
もっと楽な^h^hスマートな方法はないかな、と
0355デフォルトの名無しさんNGNG
はじめまして
素朴な疑問ですが
Python ←なんて読むの ルソン?パイソン?
0356デフォルトの名無しさんNGNG
人に聞かないと分からないの?

クズの親に育てられたクズですね。
0357デフォルトの名無しさんNGNG
>>356
  _、_    
( ,_ノ` ) まあ飲め
              
    |^^|
      ̄
0358デフォルトの名無しさんNGNG
>>355
http://dictionary.goo.ne.jp/search.php?MT=Python&kind=jn&mode=0&ej.x=43&ej.y=8
0359デフォルトの名無しさんNGNG
>355
Pythonのプロフィール
ttp://www.daikin.co.jp/ad/pi_pro.html
0360デフォルトの名無しさんNGNG
なんか ruby スレッドでもこのスレの >>70 のあたりと同じく継承&委譲の話題になってるね。
0361デフォルトの名無しさんNGNG
>>>354

a = [[0]*m]*n

または Numerical Python: http://numpy.sf.net をインストールして

from Numeric import *
a = zeros(m, n)
0362デフォルトの名無しさんNGNG
配列をファイルに出力したいんですけど、イマイチどう調べればいいのかわかりません。
writelines()ってのやってみたんですが、定義されてないとか言われて、
定義とかよくわからんのでどうにも。
printみたいに簡単に出力できるコマンドはないのでしょうか?
0363デフォルトの名無しさんNGNG
どう試したのかとか、エラーメッセージを書かないのはなにか理由でもあるのですか?
0364362NGNG
writelines(a[変数名])ってやってみて、
NameError: global name 'writelines' is not defined
って出てそこまで。

なんか聞き返し方がネタっぽいんですがひょっとしてここはプログラム初心者お断りですか?
0365デフォルトの名無しさんNGNG
>>362
fileオブジェクト作成して書けばよい
というかtut読むとファイルIOわかるかと
0366デフォルトの名無しさんNGNG
>>364
Python初心者でもよいのですが、質問の初心者に対しては冷たいです。
以下を読めば解決するかと。
http://www.python.jp/pub/doc_jp/tut_2.3.3/node9.html
基本的にtut読んで解決する事にはあまり回答が得られないかも。
0367362NGNG
>>365,366
なるほど、そういうことですか。すいません、以後気をつけます。
で、そこ読んだのですが、既存ファイルを呼び出してそれに追加するのではなく、
プログラム内で目的のデータを書き込んだファイルを新規に作成することはできないのでしょうか?
変数(中身はデータ列)のファイル出力が目的なのですが。
0368デフォルトの名無しさんNGNG
「Pythonで学ぶプログラム作法」という本は、Python入門者が使うには
少しむずかしめなのでしょうか?
(貴方が)一番良いと思うPython学習法はどんなものでしょう?
0369デフォルトの名無しさんNGNG
他人が書いたソースを改変する練習
0370デフォルトの名無しさんNGNG
PythonでOSを組む練習
0371デフォルトの名無しさんNGNG
>>368
プログラム初心者なのかPython初心者なのかによるとおもう。
0372デフォルトの名無しさんNGNG
>>> 362
file() または open() に使うファイル名は,
指定したファイル名のファイルがすでに存在すれば上書き
指定したファイル名のファイルがまだ存在しなければ新たなファイルを作成
します.

二次元のデータ列 a をカンマ句切りで出力したいのなら,
file('data.txt', 'w').write('\n'.join(map(lambda row: ', '.join(map(str, row)), a))

と書けばカンマ句切りで出力できます.

愚直に書くと,
datafile = file('data.txt', 'w')
for row in a:
 for col in row:
  datafile.write('%d, ' %(col))
 datafile.write('\n')
datafile.close()

です.

map() については,http://www.python.jp/pub/doc_jp/lib/built-in-funcs.html#l2h-49
lambda 形式は,http://www.python.jp/pub/doc_jp/tut/node6.html#SECTION006750000000000000000
を参照してください
0373デフォルトの名無しさんNGNG
>>372
> file('data.txt', 'w').write('\n'.join(map(lambda row: ', '.join(map(str, row)), a))

これは反則でしょう?
0374デフォルトの名無しさんNGNG
ワンライナー厨キタ━━━━(゚∀゚)━━━!
0375デフォルトの名無しさんNGNG
pythonの lambdaをこんなふうに使うと読み辛いものだな。
0376デフォルトの名無しさんNGNG
つーか、wfileのcloseをGCに任せるのってどうも抵抗感あるなあ。
0377デフォルトの名無しさんNGNG
>>361
> a = [[0]*m]*n

試せば分かるけどこれはNG。
>>> a=[[0]*3]*4
>>> a[0][0]=1
>>> a
[[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]]
>>>

正解:
>>> a=[[0 for i in range(cols)] for j in range(rows)]
>>> a[0][0]=1
>>> a
[[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>>
0378デフォルトの名無しさんNGNG
>>373
372ではないが、何がどう反則なのか分からん。
漏れも>>372のようなワンライナーはよく使う (特に対話モードで)。
0379デフォルトの名無しさんNGNG
>>375
この lambda の用法はむしろ簡潔な方だと思われ。
list comprehension を使うと余計に難読度が上がる(藁

file('data.txt', 'w').write("".join([",".join([str(n) for n in row]) + "\n" for row in array]))
0380デフォルトの名無しさんNGNG
まるでオナニーショーだな
もっと可読性の高いコード書けや

Guidoパパも
海の向こうで泣いているぞ。・゚・(ノД`)・゚・。
0381名無しさん@EmacsNGNG
よく
 ", ".join(map(lambda (x,y): "%s=%d" % (x,y), dic.iteritems()))
とかやるけど、1行 80字を越えたら考え直すようにしている。

ところでみんな引用符にはシングルクォートを使うのが普通なの?
オレはときどきカンマとシングルクォートがわけわかんなくなるので、
ダブルクォートを使うようにしてます。
たとえば以下のような場合:
 print 'result:',a,',',b,',',c
0382デフォルトの名無しさんNGNG
シングル派。理由は文字列定数内で「'」より「"」を多く使うから。
「"〜\"spam\"〜"」より「'〜"spam"〜'」のが楽。それだけ。
0383368NGNG
>>371
プログラム初心者。初めて挑んだのが、今やってるPython。
0384デフォルトの名無しさんNGNG
改行込みの文字列リテラルを埋め込む時とか
"""〜"""
ってダブルクォーテーション3つ使うけど
シングルクォーテーション3つでも桶なのね
さっき試してみて始めて知った


ここは良スレかも(´ー`)
0385デフォルトの名無しさんNGNG
>>381
漏れはダブルクォート派。
文字列に " を含むときは ' で、' を含むときは " で囲う。
一文字の文字列定数のときはシングルクォートを使うこともある。
あと、トリプルクォートはダブルクォート三つで書く。
0386デフォルトの名無しさんNGNG
ダブルクオートが入るリテラル (HTML コードなど) は三重シングルクオート,
シングルクオートが入るリテラル (SQL 文など) は三重ダブルクオート,
で使い分けてるなぁ.
0387デフォルトの名無しさんNGNG
>>267 の Solaris さんはあのあとどうなったのだろ?
進捗状況を聞きたいな。
0388デフォルトの名無しさんNGNG
当然シングルコート。
シフトキーなんて押してラン内。
0389デフォルトの名無しさんNGNG
俺はダッフルコート
0390デフォルトの名無しさんNGNG
運動不足はテニスコートで(ry
0391デフォルトの名無しさんNGNG
スコート凝視
0392デフォルトの名無しさんNGNG
静的メンバ変数はどうやって作りますか?
0393デフォルトの名無しさんNGNG
>>392
「静的メンバ変数」などという変態的なものはない。
クラス変数もしくはクラス属性ならば、チュートリアル読め。
0394デフォルトの名無しさんNGNG
MySQLdbモジュールを使ってクエリー結果を出力するPythonスクリプトを書いてますが、MySQLの対話モードで表示される検索に要した時間を取得するにはどうすればいいですか?

mysql> SELECT * FROM foo;
...
100 rows in set (0.01 sec)
^^^^
0395デフォルトの名無しさんNGNG
>>392
javaのstaticを言っているのだろうが、そんなのはないです。
クラス属性とインスタンス属性をつかいこなしてください。
class spam:
    data = 'giko'    <<クラス属性

    def __init__(self, value):
        self.data = value    <<インスタンス属性

    print self.data, spam.data
0396デフォルトの名無しさんNGNG
>>393
しかしstaticmethodはあるわけだが、これは変態的ではないのかと小一時間(ry
0397デフォルトの名無しさんNGNG
mysql の C レベル API には,検索にかかった時間を取得する関数が
ありません.おそらく MySQLdb にもないと思います.
mysql フロントエンドが表示している検索所要時間は,フロントエンド
自体が計測しているんじゃないかなぁ.
0398267NGNG
>>387
すみません.おかげで解決しました.

連絡したら,1, 2 日後にはパーミッションが変わっていました.
ポリシーではないみたいです.ところが,pydoc のパーミッションが
--x で,依然使いづらい環境です.交渉はちょっと面倒なんでそのままです.
メールでは受け付けてなく,直接交渉に言っても分かる人が常駐していなくて,
紙に書いておかなければならないんです.
r... 言語は別の学生による要望でインストールされていますが
(しかも /usr/bousho/ruby という特等席),パーミッション周りも
ちゃんと出来ていて鬱です.
0399デフォルトの名無しさんNGNG
>>397

ありがとうございますた。あきらめます。
0400デフォルトの名無しさんNGNG
>>399
よく分からないが google から借用すれば? >検索にかかった時間を取得する関数
0401デフォルトの名無しさんNGNG
import time, MySQLdb
...
db = MySQLdb.connect(...)
cursor = db.cursor()
...
clock_before = time.clock()
cursor.execute("SELECT somequery")
elapsed_for_query = time.clock() - clock_before
print "検索にかかった時間: %4.2f 秒" %(elapsed_for_query)

とやればいいのでは?
0402デフォルトの名無しさんNGNG
print u"\u305d\u3093\u306a\u5358\u7d14\u306a\u56de\u7b54\u3067\u826f\u304b\u3063\u305f\u3068\u3057\u305f\u3089\u79bf\u3057\u304f\u8131\u529b\u3059\u3093\u305e\u30e2\u30eb\u30a1"
0403デフォルトの名無しさんNGNG
>>394
MySQLの対話モードのプログラムってソースコードないの?
あるなら読めば検索に要した時間を取得する方法が分かると思われ。
0404デフォルトの名無しさんNGNG
>>401

なるほど。そういう手がありますね。
後で試してみます。
0405デフォルトの名無しさんNGNG
>>402
print "".join(map(lambda x:unichr(x+12395), [1,32,18]))
0406デフォルトの名無しさんNGNG
>>> def f(x):
... print x
...
をlambdaをつかって表すにはどうすればいいのですか?
なにも考えずにやると、

>>> lambda x:print x
File "<stdin>", line 1
lambda x:print x
^
SyntaxError: invalid syntax

といわれてしまうのですけど。
lambda の使い道をなにか勘違いしている?
0407デフォルトの名無しさんNGNG
>>406
その用途では def を lambda で代用することはできないにゅ。

def の本文には文 (statement) を書くことができるのに対して
lambda の本文には式 (expression) しか書くことができない、
というのが理由にゅ。print は式ではなく文にゅ。

ちなみに print 文は sys.stdout.write() という式で代用できるにゅ。
>>> import sys
>>> f = lambda x: sys.stdout.write(str(x) + "\n")
>>> f("foo")
foo
>>>
でもこんなのは sys.stdout のアブユースもいいところにゅ。
良い子は素直に def するにゅ。
0408デフォルトの名無しさんNGNG
"にゅ"を脳内で削らないと、おそろしく inputされないもんだなと思った。
0409デフォルトの名無しさんNGNG
>>405
print "".join(map(lambda x,f=lambda y,s=[3],m=[1,6,2,3,4,1,8,2,0,4]:m[(s.append((s.pop()+7)%10),s[0])[1]]:unichr(reduce(lambda x,y:x*10+y,map(f,range(5)))),range(2)))
0410デフォルトの名無しさんNGNG
>>407
わかりやすい説明、どうもにゅ。
0411デフォルトの名無しさんNGNG
というか Python で lambda を使うのは何か違うと Lisper な漏れ
は思うのであった。高階関数+lambda とかじゃなくてジェネレータとか
使おうよ!という気になる。itertools とか見てると。
0412デフォルトの名無しさんNGNG
このスレではガイシュツですが
Guidoパパは高階関数が嫌いみたいです
0413デフォルトの名無しさんNGNG
漏れは、高階関数を知ったときには感動すら覚えたものだが。
まぁexecutable pseudo codeから遠ざかるってのには同意。
0414デフォルトの名無しさんNGNG
Win2k上でpython使ってたらwin32conないぞーって言われたんだけど、
これってActivePythonのほうにしかついてないんですかね。
0415デフォルトの名無しさんNGNG
>>414
win32conモジュールは Mark Hammond さんのwin32allに含まれています。
http://starship.python.net/crew/mhammond/win32/Downloads.html
0416デフォルトの名無しさんNGNG
>>90みたいなのも飽きたな。新しい煽りはないものか。
混じれ酢しといてやるから、もうちょっと勉強して出直しておいで。

> オブジェクト指向や可読性ではRubyに負けてるし
Pythonにもオブジェクト指向機能ありますが。RubyみたいにOOPマンセーじゃないだけ。
pure OO だと何か良い事あるんですか、プププ、ってのがPython流。
可読性で負けてるとも思わないね。Pythonの方が断然読みやすい。

> 拡張つってもたとえばTcl/TkやCPANのような
> 他言語のコミュニティに依存してんじゃないの?
してません。
これはちょっと新しいな。どっからこんな妄想拾ってきた?

> 速度ではlispやperlに負けてるし。何なの?
lispは型指定できるからね。勝負にならん。perl/rubyの方がPythonより速い、と主張
する(matzみたいな)人がいるけど、それは嘘。計ってから言えよ。伝統的フィルタ
処理(テキスト読み込み→正規表現→出力とか)だとPythonの方が遅いケースもあるけど、
大体の場合はPythonの方が速いかほぼ互角ぐらいだ。パフォーマンスの話はいろいろ
あるから、一概には言えないけどね。
0417デフォルトの名無しさんNGNG

(・∀・)ニヤニヤ
0418デフォルトの名無しさんNGNG
偉そうなこと書いてるくせに誤爆。失せろ。
0419デフォルトの名無しさんNGNG
ユルセ。どうせ両方見てんだろ?
0420デフォルトの名無しさんNGNG
間違いを指摘されても
反省しない奴は
使用言語にかかわりなく
逝った方がいい
0421デフォルトの名無しさんNGNG
反省してるって。ほら。だから許せ。判ったな?>>420
0422デフォルトの名無しさんNGNG
呼ばれてるよ
野良犬(w
0423デフォルトの名無しさんNGNG
Python-ml 2713 みて思ったんだけど、みんなやさしくていいね。(●´―`●)
0424デフォルトの名無しさんNGNG
(●´―`●)

はPythonらしくない書き方だと思います
Pythonっぽく書くと例えば以下のようになります

(@´ー`@)
0425デフォルトの名無しさんNGNG
>>423
質問のしかたがいいんだと思います。
やりたい事を明示して、今手元にあるコードをそのまま出している。

How To Ask Questions The Smart Way
http://www.catb.org/~esr/faqs/smart-questions.html
0426デフォルトの名無しさんNGNG
pythonなら

(:´ー`:)

だろ、と言ってみる。
0427デフォルトの名無しさんNGNG
PythonのSyntax的にvalidな顔文字

[ ' _ ' ]



今市かな?
0428デフォルトの名無しさんNGNG
__(´ー`)__
0429デフォルトの名無しさんNGNG
>>322
moin って、[[日本語]]だめですよね。
0430デフォルトの名無しさんNGNG
>>429
ドキュメント嫁。
0431デフォルトの名無しさんNGNG
だめですよ。
0432デフォルトの名無しさんNGNG
[[日本語]]って何?WikiNameに日本語使えるかという話ちゃうのん?
0433デフォルトの名無しさんNGNG
http://oomadness.tuxfamily.org/en/index.html
0434デフォルトの名無しさんNGNG
全角のアルファベットを半角のアルファベットに変換する方法を教えてください。

たとえば、「UNIX」から「UNIX」という文字列に変換したいです。
0435デフォルトの名無しさんNGNG
>>434
こんなプログラムを書いてみた。

標準入力に中身をぶち込むと、標準出力からはき出す。それだけ。

適当に追加したり改造したりして使ってくれ。

--- ここから ---
#! /usr/bin/env python
# coding: shift_jis
#      ↑環境に合わせて書き換えること

import sys

#           ↓環境に合わせて書き換えること
srcenc, termenc = 'shift_jis', 'shift_jis'

# ↓好きな変換マップを定義すること
conv_map = {
  u'A': 'A',
  u'B': 'B',
  u'C': 'C',
  u'@': '@',
}

for line in sys.stdin:
  for char in unicode(line, srcenc):
    if char in conv_map:
      sys.stdout.write(conv_map[char].encode(termenc))
    else:
      sys.stdout.write(char.encode(termenc))
0436デフォルトの名無しさんNGNG
>>434
漏れも書いてみた。

# -*- coding: euc-jp -*-

import re

re_alphanum = re.compile(u"[0-9A-Za-z]")

def replace(match):
    return chr(ord(match.group()) - ord(u"0") + ord("0"))

print re_alphanum.sub(replace, u"Python2003")
0437デフォルトの名無しさんNGNG
kconv.Zen2Han() を使うのはダメですか?
0438デフォルトの名無しさんNGNG
>>437
それでは「変換の仕方」の説明にならないよ。

…まあそれの「ソースを見ろ」という意図なんだろうけど。
0439RNGNG
複素数に対して複素数で%(余り)を求めた時の結果が、ワケわかりません。
PythonのVers.は2.2.1(SJIS enhanced)。WinのKaaeditで試してます。
こんなコードで試しています。

ーーーーーーーーーー
import random

x = complex(random.choice(range(10,99)),random.choice(range(10,99)))
d=0
while not d: d = complex(random.choice(range(-9,10)),random.choice(range(-9,10)))

print '-- '*10
print 'x =',x,', d =',d

print 'x / d =',x / d
print 'x % d =',x % d

print '( x / d ) * d + x % d =',( x / d ) * d + x % d
ーーーーーーーーーーー
結果はたとえばこんな感じです。

-- -- -- -- -- -- -- -- -- --
x = (47+26j) , d = (8+6j)
x / d = (5.32-0.74j)
x % d = (7-4j)
( x / d ) * d + x % d = (54+22j)

もともと、数値をマイナスで割った時の余りってどうなるのだろうと調べてて、
複素数にまで手を出してしまいました。
0440デフォルトの名無しさんNGNG
>>439
結果が決まったものではないと思ってプログラミングすれば良いのでは?
結果を使わないようにするんです.
でも割り算の方は正しいですよ.
一般に,剰余についてはいくつか種類があり,仕様に書いてあります.
負のときはどうなるか,調べてから使いましょう.

ところで,>>439さんが期待した結果は何ですか?
0441RNGNG
即レスありがとうございます。>>440
私の期待した(複素数 % 複素数)の結果は、
(整数 % 整数)の時は割った値よりも小さい正の整数だったように、
複素数の時でも割った値よりも小さい正の複素数だと思ってました。
具体的には余りの値を a+bj としたら a,b > 0 でかつ、abs(a+bj) < abs(d) です。
ところが、実際は全くそうではなく理由も分からず驚いてました。
(私の複素数の概念の理解がいまいちなのかも知れません)
また、私の期待した値を得ようとすると、一意には定まらない事が机上で分かりました。多分!
また(複素数 / 複素数)の結果をa+bjとすると、a,bはintではなくlongで返ってくる事も整数の時と違ってて驚きました。
ちなみに、(複素数 % 整数)とすると、実数部分だけ計算されて結果が返されますね。

ちなみにこれらの使い道は、、、今から考えます。ははは
0442デフォルトの名無しさんNGNG
>>441
複素数の大小は数学的には微妙な話なので、たとえば
ttp://www004.upp.so-net.ne.jp/s_honma/number/complexnumber.htm
こんなのみるといいよ。
0443RNGNG
ありがとうございます。参考にします。>>442

実は、上で書いた文章にも少し間違いがったあったのですが、
例えばこんな事を試してみると
lst = [[10,-10],[7,-7]]
for i in lst[0]:
 for j in lst[1]:
  print i ,'=',i/ j ,'*',j,'+',i%j
結果は
10 = 1 * 7 + 3
10 = -2 * -7 + -4
-10 = -2 * 7 + 4
-10 = 1 * -7 + -3
と言うワケで、除数がマイナスの時は%余りもマイナスになるようですね。
と、あれから、この整数の割り算を複素数に拡張できないかなぁと考えてます。
なにか出来たら、またここで報告しますね。では
0444デフォルトの名無しさんNGNG
DBについて質問なんですが、
bsddbとcdbの速度を比較したページとかあるでしょうか?

cdbは速いと聞いていたのでbsddbで使っていたプログラムを
cdbを使うようにしたら、逆に1.5倍から2倍遅くなってしまったので。
0445デフォルトの名無しさんNGNG
>>444
使い方がまずいんだと思う。
0446デフォルトの名無しさんNGNG
http://www.hatena.ne.jp/1020846136
0447デフォルトの名無しさんNGNG
>>446
ワラタ

「リンク集ページを見る」という習慣が無い人間て本当に居るんだね。
0448デフォルトの名無しさんNGNG
Python における剰余演算の意味付けは,Python Language Reference
http://python.org/doc/current/ref/binary.html
に記述されています.(和訳はまだ訳了していません)
a, b が浮動小数点数:
a%b -> 剰余は b の符号と同じ
math.fmod(a, b) -> 剰余は a の符号と同じ
複素数の場合:
Python 2.2 まで -> a%b = a - b*math.floor((a/b).real)
Python 2.3 以降 -> 撤廃
です.
0449デフォルトの名無しさんNGNG
Gembook.jpでは、何Wikiを使っているんですか?
ユーザ登録とかがあって、Moinじゃないような気がするんですが。
ttp://www.gembook.jp/tsum/page.pys?wiki=TitleIndex
0450デフォルトの名無しさんNGNG
tsumwikiでぐぐってみ。
0451デフォルトの名無しさんNGNG
>>450
ありがとうございます。ソース非公開のようですね。というよりも、
gembook.jpサイト専用Wikiですね。残念。
ttp://www.atransia.co.jp/home/ZenKai/Members/kafka/News/1041268894/view
0452デフォルトの名無しさんNGNG
>>451
以前は公開してたよ
漏れ持ってるけどあげない(w
0453デフォルトの名無しさんNGNG
iしもと氏は優しいから「くれ」って言ったら、くれるんじゃないかな。
0454デフォルトの名無しさんNGNG
メーリングリストって存在価値あんのか?
0455デフォルトの名無しさんNGNG
うん。
0456デフォルトの名無しさんNGNG
windows で動かしたいのですが,
バイナリをそのままコピーするだけで使えますか?
Windows2000 以降,一般ユーザはインストーラを実行できなくなった為,
お気軽スクリプティングが難しくなりました.
0457456NGNG
あ,>>195-198 に同じような発言が...
未解決なのは難問だから?実は python の普及率は IE を越えているとか?
0458デフォルトの名無しさんNGNG
ええ? 警告はでたけど、ふつうにデスクトップにインストールできたよ。
0459デフォルトの名無しさんNGNG
逆に管理者権限を持てないマシンに
勝手にソフトインストールしたらダメだろ。
0460デフォルトの名無しさんNGNG
どの encoding が分からない日本語を受け取り (cgi),
自動で判別して欲しいのですが,Kconv が唯一の方法ですか?
python2.2 です.

実は使い方が良く分からないのですが,
日本語処理の教科書みたいなソースがあればキボンヌ〜〜〜v
0461デフォルトの名無しさんNGNG
cgi なら CONTENT_TYPE から encoding とってこれないか?
0462460NGNG
>>461
小さな wiki を拾ってきて,それを改良して使おうとしているところなんです.
狂ったユーザーエージェントに wiki ファイルをめちゃくちゃにされたく
ないのです.
rOOy って .toeuc とか書くだけで何とかなったりするらしいんですが,
ちょっと抵抗が...
0463デフォルトの名無しさんNGNG
>>462
> 狂ったユーザーエージェントに wiki ファイルをめちゃくちゃにされたくないのです.
なら UA チェックするとかすればいいじゃん。文字コードの話と関係ない。

あと、文字コード推測なら pykf があるよ。
0464デフォルトの名無しさんNGNG
moin にreStructuredText を使えたでしょうか?
資料などをご存知の方、いらっしゃいましたら、教えて下さい。
0465444NGNG
>>445
使用方法は、キーに文字列のパターン、その値にキーのパターンに合う
文字列のリストを持たせるようにしています。
リストは、bsddbを使っていたときは、pickle.dumps してから格納していました。
それで、cdbの方も同様に pickle を使ってみたら、bsddbより遅くなってしまいました。

でもcdbだといちいちpickleしなくてもいいようなので、
その部分を変更したら、bsddbよりも多少速くなりました。

うーん、これでもやっぱり使い方がおかしいでしょうか?
0466デフォルトの名無しさんNGNG
>>456
\Python23 の下をコピーすればいいです。
CD-RやUSBフラッシュメモリにコピーすれば
持ち運べます。この場合拡張子とプログラム
の関連付けはなされないので、必要に応じて
エクスプローラで関連づけるか、または、
コマンドプロンプトで 「P:\Python23\python
myscript.py 」のように実行するなどします。

Win2K/XPでAdmin権限の無い場合にPython.orgの
windows版インストーラ(Python-2.3.3.exe)で
インストールするには、「Select Components」
の画面で「Advanced Options」ボタンを押して
「Non-Admin install」のラジオボタンをチェック
します。インストーラを使った場合は、拡張子と
プログラムの関連づけが設定されます。

(もしスクリプトの実行方法がよくわからなければ
「1から学ぶ」スレか、「PC初心者板」の適当な
スレッドでお願いします。)
0467デフォルトの名無しさんNGNG
ムネオたんスレがやっと逝ったっすね。
http://piza2.2ch.net/mona/kako/1004/10041/1004165144.html
0468デフォルトの名無しさんNGNG
>>467
すごい面白かった! TV版Monty PythonのDVD買おうかな〜。
0469デフォルトの名無しさんNGNG
>>464
2.10 Are there any Wikis that use reStructuredText syntax?
http://docutils.sourceforge.net/FAQ.html#are-there-any-wikis-that-use-restructuredtext-syntax
0470デフォルトの名無しさんNGNG
>>469
ありがとうございます。
でも、普通のMoin ver.1.1 にreStructuredText を使っても駄目ですよね。
このページにあるSample はどういう環境(or 設定)になっているのでし
ょうか?
0471デフォルトの名無しさんNGNG
>>470
よくしらんけど、見た感じだと
moin_config.py で default_markup に 'rst' を設定じゃないの。
docutils も入れとく必要があるでしょう。

(ここは「ソフト板」じゃないので、ソフトの設定が
わかりませんではなく、できるだけプログラミングぽい
話題であるかのように見せかけてくだされ。)
0472デフォルトの名無しさんNGNG
466といい471といいずいぶん板・スレの使い分けに神経質だね。
0473デフォルトの名無しさんNGNG
>>471
ありがとうございました。
default_markup = 'rst' で、reStructuredTextが使えました。
markup としては、plain、python、wiki、rst が使えるようです。


ただし、rstではいくつかの書式は使えませんでした。その使え
ない書式によってWiki がエラーを起こすと、ローカルファイル
を修正しなければいけないようでした。
pyBlosxomのように、文書中にparserを指定できて、エラーを起
こすとplain で表示してくれればいいのにな、と思いました。

「ここは「ソフト板」じゃないので〜」
WebProg にはZopeしかなかったのでスレ違いかなと思いつつ、つ
い(^^;
申し訳ありませんでした。
0474デフォルトの名無しさんNGNG
UNIX USER で Python が紹介されているのはいいのだけど、インデントが全然
揃っていないと思うがどうよ?
チラッと立ち読みしただけだし、Mac はもっていないから確認できないのだけど。
0475デフォルトの名無しさんNGNG
まさかテストしてない・・・なんてことはないよな、まさか。
「インデントにタブを使った & ライター側と編集側でタブ幅が違う」説を推してみる。
0476デフォルトの名無しさんNGNG
>>475
インデントは基本的に半角4なのだけど、ところどころ4.4.3(なぜ?)となってたり、4.4.2(why?)とか
コードの細部を見なくても、明らかに縦方向で揃ってなかった。

実際に立ち読みするのが手っ取り早いと思う。
0477デフォルトの名無しさんNGNG
あ、そうなのれすか。
それは・・・マジで原因不明。
0478デフォルトの名無しさんNGNG
つーかアレにょ★
Pythonではインデントが重要な意味を持つというのに☆それを理解せず☆ 注意も払っていないってことにょ★
日本語では句読点が重要な意味を持つというのに☆ それを理解せず☆ 全部星マークに置き換えてるのと似たようなものにょ★
まったく怪しからん編集者にょ★
0479デフォルトの名無しさんNGNG
>>478
☆マークより個人的には「にょ」が問題だとおもうにょ。
0480デフォルトの名無しさんNGNG
星マークって何で JIS の文字集合に入ってるのかな。しかも二色も!
0481デフォルトの名無しさんNGNG
☆よりもハートマークが欲しいにょろ。
0482デフォルトの名無しさんNGNG
♥
0483デフォルトの名無しさんNGNG
にょろだったら@つかうにょろ。
0484デフォルトの名無しさんNGNG
仝 -> ♥
0485デフォルトの名無しさんNGNG
初心者にlambdaとreduceのコンボを教えるのは(ry
0486デフォルトの名無しさんNGNG
早く哲郎とメーテルが現れて奴を始末(ry
0487デフォルトの名無しさんNGNG
本文長すぎ。短く要約してくれると助かる。
0488デフォルトの名無しさんNGNG
>>486
ダウト

星野鉄郎
0489デフォルトの名無しさんNGNG
Python のプログラムって縦に長くなる傾向があるよね。
大したことない処理でも意外と行数が必要だったりする。
トリッキーな書き方で短くするのもどうかと思うし。
読みやすいコードを示しつつ長いと感じさせないように
説明を加えるのはなかなか難しい。
0490デフォルトの名無しさんNGNG
>>489
> Python のプログラムって縦に長くなる傾向があるよね。

具体的には?
0491デフォルトの名無しさんNGNG
インデント強制するから、
可読性犠牲にして詰めこんだ場合より
行数多いってことでしょ。
0492デフォルトの名無しさんNGNG
つまり縦型ヂスプレイ買え、と。
0493デフォルトの名無しさんNGNG
rubyやってると、endで無駄に長くなる時に pythonいいなーと思うけどなあ。
0494デフォルトの名無しさんNGNG
>>493
from ruby to python な変換スクリプトを紹介してください
0495デフォルトの名無しさんNGNG
初心者にlambdaとmapのコンボを教えるのは(ry
0496デフォルトの名無しさんNGNG
お前は罰として一週間 lambda 禁止だ!!
0497デフォルトの名無しさんNGNG
いっその事 lython http://www.caddr.com/code/lython/ を教える方が親切だね。
0498デフォルトの名無しさんNGNG
>>492
むかしむかし、Ken Tompson がそういうのを使ってたと聞いた覚えがあるようなないような・・・
0499デフォルトの名無しさんNGNG
boolって継承できないんだねー。それ、知らんかっとってんちんとんしゃん。

Françoisタソ:http://mail.python.org/pipermail/python-dev/2004-February/042535.html
> [...] and [I] am a bit surprised that `bool' refuses to be sub-classed.

(boolが下位クラスの定義を拒否することにややビクーリ)

Guidoパパ:http://mail.python.org/pipermail/python-dev/2002-March/020822.html
> I thought about this last night, and realized that you shouldn't be
> allowed to subclass bool at all! A subclass would only be useful
> when it has instances, but the mere existance of an instance of a
> subclass of bool would break the invariant that True and False are
> the only instances of bool! (An instance of a subclass of C is also
> an instance of C.) I think it's important not to provide a backdoor
> to create additional bool instances, so I think bool should not be
> subclassable.

(昨夜このことについて考えていて、bool の下位クラスを定義することは
まったくもって許されるべきではないとゆーことに気がついた。下位クラス
が役に立つのはインスタンスがあるときだけだが、bool の下位クラスのイ
ンスタンスが存在すると bool の不変性が壊れてしまう。つまり True と
False だけが bool のインスタンスである、という性質がダメになってしま
うんだ!(C の下位クラスのインスタンスは C のインスタンスでもある。)
bool インスタンスを追加するための裏口は用意しないことがじゅーよー。
つーことで、bool の下位クラスは定義可能であるべきではないと思われ。)
0500デフォルトの名無しさんNGNG
PythonのBlogであるPyblosxomのcommentsプラグインが動かず、
apache ログにエラーがでます。でも、エラーメッセージが少な
く、自分には理解ができません。
CGIで、さらに多くのログを得ることはできるのでしょうか?
ご面倒ですが、アドバイスをお願いします。

Traceback (most recent call last):
File "/foo/pyblosxom.cgi", line 47, in ?
p.run()
File "/usr/lib/bar/pyblosxom.py", line 306, in run
tools.run_callback("prepare", {"request": self._request})
File "/usr/lib/bar/tools.py", line 313, in run_callback
output = mem(input)
File "/usr/lib/bar/plugins/comments.py", line 281, in cb_prepare
writeComment(config, data, cdict)
File "/usr/lib/bar/plugins/comments.py", line 148, in writeComment
cfile.close()
UnboundLocalError: local variable 'cfile' referenced before assignment
0501デフォルトの名無しさんNGNG
>>500
contrib/plugins/comments/plugins/comments.py の
バグのようですね。

関数 writeCommentの中で、ファイルのオープン
cfile = open(cfn, "w")
に失敗するとそのようなエラーが出るのだと思います。

こんな感じで書くと、良いのではないでしょうか:

cfile = open(cfn, "w")
try:
  …
  cfile.write("</item>\n")
finally:
  cfile.close()

* * *
バグはさておき、そもそもファイルのオープンに失敗する原因として
考えられるのは、不正なパス指定とか、ディレクトリのパーミッション
不正なので、このへんの設定もチェックする必要がありそうです。
0502デフォルトの名無しさんNGNG
>>501
ご指摘をうけて、open('/tmp/foo',"w") としてみると途中まで
書き込まれてから、エラー発生。writeの問題であることを確認し
てご指摘の「ディレクトリのパーミッション不正〜」、をチェッ
クしました。
まさにそのとおりでした。たいへん勉強になりました。
ありがとうございました。:)
0503デフォルトの名無しさんNGNG
機械伯爵たん、苦し紛れの弁明が続いているね。
0504デフォルトの名無しさんNGNG
仕方ないよ
機械らしいから(w
0505デフォルトの名無しさんNGNG
>> 503
各所でね(w
http://rakunet.org/TSNET/TSpython/index12t.html
0506デフォルトの名無しさんNGNG
>>505
marz、なんか丸くなったなぁ・・・
昔py-ml-jpで(以下自粛
0507デフォルトの名無しさんNGNG
>>505
関わりたくないPython関係者の3人目に認定しますた。もぅぃゃ。
0508デフォルトの名無しさんNGNG
>>507
一人目と二人目は?
Sさんとsさん?
0509デフォルトの名無しさんNGNG
>>507
他の二人はだれさ?
一人は想像つくけど(w
0510デフォルトの名無しさんNGNG
>>508-509
ケコーンかよ。
0511デフォルトの名無しさんNGNG
>>508
sさんはワカッタけど、Sさんがワカラネ
0512デフォルトの名無しさんNGNG
euc-jp環境で、utf-8の文字をファイルに保存するコードを書きました。
f = open("/tmp/gomi2","w")
a=unicode("日本語","euc_jp")
f.write(a.encode('utf-8'))
f.close()

もっとよい書き方があると思うのですが、アドバイスをいただけな
いでしょうか。



0513デフォルトの名無しさんNGNG
>>512
こんな雰囲気でよく質問できるね。
0514デフォルトの名無しさんNGNG
>もっとよい書き方があると思うのですが
って、何が気に入らないの?

それはともかく、やっぱムネオタンスレあったほうがよくね? >>513
0515デフォルトの名無しさんNGNG
>>514
すごく気に入らないというわけではないのですが、下のような
見やすいコードを見つけたので、お願いしました。
datafile=open(filename, "w")
print >>datafile, form.getfirst("title")
print >>datafile, '#author %s' % user2Link(getUser())
(Pyblosxomの補助ツール、weblog-add.pyより)
0516デフォルトの名無しさんNGNG
# coding: euc_jp
import codecs
f = codecs.open('filename', 'w', 'utf-8')
f.write(u"全ての**は神聖なり!")
f.close()
0517デフォルトの名無しさんNGNG
>>516
codecs.openってのがあるんですね。これを使わせてもらいます。しかし、
まだunicode回り(?)でエラーがあります。
このコードはCGIであり、formの文字コードをutf-8にするために
<meta 略 charset=utf-8">を指定しています。

生成されているページはutf-8なので、CGIの問題ではなく、下の
コードにミスがあるとおもうのですが。
初心者の質問がつづいて申し訳ないですが、ご教授ください。

>>>f = codecs.open(filename,"w",'utf-8')
>>>w = unicode(form.getfirst("title"),"utf-8")
>>>f.write(a.encode('utf-8'))
UnicodeError: ASCII decoding error: ordinal not in range(128)
(ASCII decoding error は見たくない。。(^^;
0518デフォルトの名無しさんNGNG
>>517
f.write(w) でいけると思うよ。unicodeをいちいちencodeしなくても良い。
0519デフォルトの名無しさんNGNG
>>518
ありがとうございます。そのとおりでした!
pyblosxomのツールweblog-add.pyをunicode対応にできました。ご希望の
かたは知らせてくださいね。
0520デフォルトの名無しさんNGNG
>>519
日本語化、またはunicode対応になっていないスクリプトって多いです
よね。そういうスクリプトを毎回書き直すのもいいのですが、何かも
っとスマートな方法があればいいですね。
lispだとマクロ?

0521デフォルトの名無しさんNGNG
>>514
どうして板内のPythonスレを3つにしたがるかな・・・
0522デフォルトの名無しさんNGNG
from hoop import *

のhoopはどういう意味なのですか?
教えてください。
0523デフォルトの名無しさんNGNG
>>522
hoop はモジュールの名前。
hoop.py とかCでかかれた拡張モジュールとか何かあるんじゃない?
0524デフォルトの名無しさんNGNG
なぜか入会できません
ワラタ(w
0525デフォルトの名無しさんNGNG
あれてますな。
0526デフォルトの名無しさんNGNG
c.l.py にビデオゲームが紹介されていた。
SolarWolf by Pete Shinners
http://www.pygame.org/shredwheat/solarwolf/
0527デフォルトの名無しさんNGNG
ええと、初心者への教育がどうこうと言っているその人こそが
まず初心者だった、というオチに見えて仕方がないのですが・・・。
0528デフォルトの名無しさんNGNG
それ、全然オチてないし(w
0529デフォルトの名無しさんNGNG
for について、あんなフレームまがいのこと言いあっていたら、
初心者はもろに引いてしまいそうだ。・゚・(つД`)・゚・
0530460NGNG
>>463
pykf (゚д゚)ウマー
これで r... みたいに快適にできます w
0531460=456NGNG
やっとアク禁が解かれたぽ.

>>458,466
日本語環境用インストーラしか使ったことがないので
見落としていました.ありがとうございました.ウマウマですよv

でもレジストリは使ってますね.丸ごとコピーが完璧かな.

>>459 Windows には bourne shell も awk も sed も perl もないですから.
0532デフォルトの名無しさんNGNG
>>529
鈴木先生もコメントしたら、収集がつかなくなりそう。
何ヶ月か前の Ruby の箱モデルの議論を思い出した。
0533デフォルトの名無しさんNGNG
Mさんはいたって真摯に受け答えしていると思うけど
キレるとしたら機械タンの方だろ
0534デフォルトの名無しさんNGNG
機械タソの言いたいことがイマイチよく分からんのだが、要するに
「(x)rangeは分かりにくいから初心者に教えるのは後回しにしよう」ってこと?
だったら漏れ的には+0。「好きにすれば?」って感じ。

漏れもずいぶん長い間 list comprehension を理解できずに放置してた。
もし漏れが入門書めいたものを書くとしたら list comprehension は説明しないか
一番最後に付け足す程度に留めるかのどちらかだ。
0535デフォルトの名無しさんNGNG
自分は初心者だけれども、初心者向けの文書で使ってほしくない
書きかたは、
・効率とか言うな! そんなんビギナーに関係ないだろ、
 しかもインタープリタで。わかりやすいかどうかが、すべてだ。
・C では、とか perl ではとか説明するのはやめてほしい。
 知らない初心者は混乱するだろ。知っている人間には便利なのは
 わかるけど。
・言語の詳細についていちいち「ちなみに」とか書かなくてもけっこう。
 詳しく知りたくなったら自分でリファレンス調べるだろう。

for x in range(10):

これって分りにくい? 自分がはじめてチュートリアル見たときには、
「そういうものなんだ」と思っただけ。
0536デフォルトの名無しさんNGNG
>>535
おはよう&全面的に胴衣。

> これって分りにくい?

漏れ的には分かりにくくない&漏れも「そういうもんなんだ」とオモタ。
0537デフォルトの名無しさんNGNG
コレに似てるんだよな。

for i in `seq 10`; do
0538デフォルトの名無しさんNGNG
ttp://starship.python.net/crew/lornew/wxgadfly/wxgadfly.htm
ここにある wxGadfly が上手く動かず、
いろいろいじってみて入るんですが、
どなたかお助けください。
0539デフォルトの名無しさんNGNG
確かに「10回やる」というだけの例題に


for x in range(10):
  hoge()


みたいなの書かれると「その x は何?」とか聞きたくなるけどね。

でもまあそのために新たに

loop 10:
  hoge()

とかあるいは Ruby の times みたいなのを追加するよりかは今のままの方がいいとは思う。
0540デフォルトの名無しさんNGNG
>>539
例えば、Java の
for(int i=0; i<=10; i++){
 hoge();
}
に対して、「その i は何?」という質問が成立すると思いますが?
なにか Python のものと違いがありますか?
0541デフォルトの名無しさんNGNG
明示的なカウンタ無しの単純繰り返しがある言語の方が珍しいのね。
ていうかRuby以外に知らないっす。
0542540NGNG
>>540
今見返したら i<=10 なんてやってるね。
なんでこんな風に書いちゃったんだろ?
この部分はスルーしてね。
0543539NGNG
>>540

for(int i=0; i<=10; i++){

の場合だと「i をインクリメントしながら10まで数えている」という
内部事情までそこに表記されているので「その i は何」という
質問にそのコード自体が答えている。

でも

for x in range(10):

の場合はシークエンスの要素を x にわざわざ代入する意味が
分からない。

別に数列でなくて

for dummy in [None]*10:

でも同じなわけで、range(10) が生成するリストの中に数列が入っている必要は無いですから。
0544デフォルトの名無しさんNGNG
> for(int i=0; i<=10; i++){
所詮、whileを見やすくしたようにしか見えん
0545デフォルトの名無しさんNGNG
for x in range(10): の x が不要な場合は意味不明という点は、まあ同意。

しかし、カウンタ x の値がコーディングの過程で後から必要になることって
結構ある気がする。デバッグのときに何回目のループか知りたくなることがあるし、
実質的な処理のために必要であることが後から分かることもある。

例えばC言語でもブロック内が1ステートメントなら { ... } は不要なワケだけど、
後でステートメントが増えるかも知れないから敢えて括弧付きにしたりする。
それと同じ。

多少冗長な方が融通が利いて良いと思う。
カウンタ無しのループ構文が導入されても俺はあんまり使わないかも知れない。
0546デフォルトの名無しさんNGNG
あ、しまった。語尾を「にょ」に変えるのを忘れてた。
0547デフォルトの名無しさんNGNG
>>546
犯 人 は お 前 か
0548デフォルトの名無しさんNGNG
>> 538
wxGadfly は wxPython 2.0 のころに書かれてますね.パッケージ構成や
メソッド名,引数の扱い方が今の wxPython 2.4 の設計と違うので,
そのままでは動かないようです.
0549デフォルトの名無しさんNGNG
>>546 「にょ」 は ヤ メ ロ
0550デフォルトの名無しさんNGNG
Pythonちゅことで「にょろ」はどうですにょろ?
0551デフォルトの名無しさんNGNG
>>548
そうでしたか wxPython は随分と仕様が変わってきているんですね
wxGadfly は data 操作と visual な部分がごっちゃっぽいので
理解しづらく感じるんですが
あんなもんなんでしょうか?
取りあえず新規作成とするとリストになにやら出る用にまではなりましたが、
なんか始めから作ったほうが早そうな…
作者さんはアップグレードするきないのかなぁ
0552デフォルトの名無しさんNGNG
>>551
空気読め。
0553527NGNG
 た す け て く れ (喀血
0554デフォルトの名無しさんNGNG
なんだかよく分からないが
盛り上がっていることだけは確かなようだ
0555デフォルトの名無しさんNGNG
機械の身体を貰うとああなっちゃうのか…
0556デフォルトの名無しさんNGNG
正直、ループの話はおなかいっぱいです…。
0557デフォルトの名無しさんNGNG

while True:
  >>556
0558デフォルトの名無しさんNGNG
個人的な意見ですが、初心者を引かせる状況を作ったという点では、
機械タソもM氏もたいして変わりないな。言ってる事は両者とも違うけど。
鈴木先生がもっと絡んでたら、状況はさらにひどかっただろうねぇ。

python使い(といっても一部の目立つ人たち)ってのは、
なんであんなにくどいんだ?
0559デフォルトの名無しさんNGNG
  File "<stdin>", line 2
    >>556
     ^
SyntaxError: 文法的に間違っていると思われ
>>>
0560デフォルトの名無しさんNGNG
ワリコマレタYO!ヽ(`Д´)ノウワァァン
0561デフォルトの名無しさんNGNG
,,,これだからにょろ使いは,,,
0562デフォルトの名無しさんNGNG
>>558 同意。
0563デフォルトの名無しさんNGNG
>> 558
初心者専用MLじゃないんだから話題はべつにかまわんと思うけど。
機械タソのお花畑があるんだし。むしろM氏は機械タソと遊んでる暇があったら
和訳しる。
0564デフォルトの名無しさんNGNG
>>563
それはものすげく失礼
おまえがヤレ
0565デフォルトの名無しさんNGNG
>>552
すまないにょ
0566デフォルトの名無しさんNGNG
みんななかよくするにょろ
0567デフォルトの名無しさんNGNG
>>565
gfsql: ttp://wspiegel.bei.t-online.de/gfsql/info_e.html
もあるなあと思ったけど,wxGadfly ほど高機能じゃありませんでした.
0568デフォルトの名無しさんNGNG
過去ログ検索作りました。
どの程度役に立つかようわからんが、よかったら使ってください。

例えば「継承」と「委譲」で検索するとこんなかんじ。
ttp://2chlinux.dtdns.net/2ch-program-python/index.cgi?query=%B0%D1%BE%F9+%B7%D1%BE%B5&whence=0&max=20&result=normal&sort=score
0569568NGNG
今突込んであるのは、

Pythonお勉強スレッド
1 ttp://pc.2ch.net/tech/kako/965/965815778.html
2 ttp://pc3.2ch.net/test/read.cgi/tech/1020718991/
4 ttp://pc3.2ch.net/test/read.cgi/tech/1068824510/

人生の敗北者でも使えるPythonのお勉強
3 ttp://pc2.2ch.net/test/read.cgi/tech/1053955472/

です。
0570デフォルトの名無しさんNGNG
2chlinux.dtdns.netの中の人はネ申
0571デフォルトの名無しさんNGNG
>>567
情報ありがとうございます。
zope に gadfly が付属してくるらしいので
こういった機能を持っているかな?と思って調べたのですが、
残念ながらないんですね。いろんなエンジンを使うから仕方ないか。
0572デフォルトの名無しさんNGNG
うわ、file()なんて知らなかった世・・・

file = open(...)

ってやること多かったけど改め名阿寒のかい。
ほんでさ、

for line in file(...):

なんつーのは普通に使われるわけ?
0573デフォルトの名無しさんNGNG
>>572
厳密に言うと close() しないとまずいので書き捨てスクリプト以外ではお勧めしない。
0574デフォルトの名無しさんNGNG
リストの内包表記について質問があります。

def foo(func, list):
for item in list:
result = func(item)
if result:
return result
return False

みたいな関数を同じ計算量で内包表記で書くことはできますか?

def foo(func, list):
return [func(item) for item in list if func(item)]

というのを考えたのですが、

1. list の要素すべてにアクセスしてしまう
2. func を 2 回呼びだしてしまう

という点で元の関数と違ってしまいます。
0575デフォルトの名無しさんNGNG
>>574
こゆこと?

[func(item) for item in list][-1] or False
0576デフォルトの名無しさんNGNG
あ、いかん。インデントを推測し間違えた。>>575は忘れて下さい。
0577デフォルトの名無しさんNGNG
>>574の上と下って同じ?
上はシーケンスの中で最初に見つかったTlueなオブジェクト
下はTlueなオブジェクトのシーケンス
な気がするけど。
上のline5はyield resultならほぼ同じかもしれんが
>1. list の要素すべてにアクセスしてしまう
と噛み合わんね。

基本的にリストコンプリヘンションは
「Listを生成する表現の一つ」なので
帰ってくるのは常にシーケンス。
0578デフォルトの名無しさんNGNG
>>574
> def foo(func, list):
>     for item in list:
>         result = func(item)
>         if result:
>             return result
>     return False
>
> みたいな関数を同じ計算量で内包表記で書くことはできますか?

これに list comprehension を使うのは間違いでは?
itertools を使うのが最適だと思う。

def foo(func, list):
    import itertools
    for item in itertools.ifilter(func, list):
        return item
    return False

あと、好みの問題ですが、list は built-in 関数の名前なので、別の名前にした方が
いいと思います。
0579デフォルトの名無しさんNGNG
Tlue
0580578NGNG
元のコードを filter で書き換えただけですね ^^;
質問の答えになっていないか、、、

あと、他の人も指摘していますが、>>574 だと何をやりたいのかはっきりしません。
関数 foo と list comprehension のコードで食い違いがあるので。
0581デフォルトの名無しさんNGNG
Tlueで悪いかちくしょー
0582デフォルトの名無しさんNGNG
珍しいタイポだねw
0583デフォルトの名無しさんNGNG
ええ、素で間違えましたとも。
言われるまで気付きませんでしたとも。

Traceback (most recent call last):
 File ">>577", line 2, in ?
    Tlue
NameError: name 'Tlue' is not defined

これから全部/usr/bin/env python の次に
Tlue = Trueって書いてやるからな!
0584デフォルトの名無しさんNGNG
Sタンの

> このとき回数カウンタとかそういった
> 機械的なからくりが実装内部で動いているはずですが
 ^^^^^^^^^^^^^^^^^
いろんな意味でワロタ。Sタン狙ってやってるの?
0585574NGNG
>>577,578
ごめん、質問は 2 点あってそれを一つのコードで聞いてしまったのが間違い
でした。

1. リストの内包表記では、リストの途中で処理を打ち切ることができるかど
うか(break できるかどうか)

=> 必ずリストの要素すべてにアクセスするので、できない

2. リストの内包表記で下のようなことがしたい場合、func を 2 回呼びださ
ないためにどうすればよいか。

def foo(func, lst):
'''これをしたいけど, func を 2 回呼びだすのがまずい.'''
return [func(item) for item in lst if func(item)]

=> itertools を使え

ということですか?

Tlue!
0586デフォルトの名無しさんNGNG
そういえば、むかし flag のことを frag と書いてたなぁ。
0587デフォルトの名無しさんNGNG
雑談スレ立てた。

パイソンプログラマーならフォトンすきだよな?
http://pc2.2ch.net/test/read.cgi/tech/1068819212/
0588デフォルトの名無しさんNGNG
>>587
ブラクラ注意

フォトンってあれか、20年ぐらい前にあったナムコのゲームか?
0589デフォルトの名無しさんNGNG
>>585
1. 途中で止めたい
  リストの要素が10のとき止まる(10は新しいリストに含まれない)例:
>>> list(itertools.takewhile(lambda x: x!=10, range(20)))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2. 問題がよくわからんがこれはどう?
def foo(func, lst):
    return [b for b in [func(a) for a in lst] if b]

>>> foo((lambda x: x%2==0 and x*2 or 0), range(20))
[4, 8, 12, 16, 20, 24, 28, 32, 36]

1.と2.を組み合わせて:
>>> foo((lambda x: x%2==0 and x*2 or 0),
    itertools.takewhile(lambda x: x!=10, range(20)))
[4, 8, 12, 16]

なお、リスト内包がすこし難しく感じるときは、forループでリストを
作ってもよいと思います。
0590デフォルトの名無しさんNGNG
>>587
パイソンプログラマーならフォントすきだよな?
かと思ったよ。さすがコードの見た目に気を使う Python ユーザだなと。
0591デフォルトの名無しさんNGNG
>>589
1 の答えになっていないと思われ。
「リストの内包表記では,,,」なのだから。

0592デフォルトの名無しさんNGNG
Python使ってる人の日記とかのへのリンク集ってない?

それにしても、新山さんの日記は面白いね。
0593デフォルトの名無しさんNGNG
ぱいそにあんてな?
0594デフォルトの名無しさんNGNG
>>592
gembook.jp
0595デフォルトの名無しさんNGNG
>>592
胴衣。腹八分目くらいで思索に疲れてメモってる/優雅さ/がにじみ出ててイイ。
0596デフォルトの名無しさんNGNG
Python用のはてなアンテナを作ろうかな。
プライベートモードで。
0597デフォルトの名無しさんNGNG
TimおじさんてTim Petersのこと?どこで会ったんだろ?
0598デフォルトの名無しさんNGNG
Tim Petersって実在の人なの?
0599デフォルトの名無しさんNGNG
たはらさんもblog始めたのか。ネタじゃなしに、Pythonアンテナの需要は結構ある?
0600デフォルトの名無しさんNGNG
>>599
そうなの? URLおしえて

ていうか
600ゲトズサー
0601デフォルトの名無しさんNGNG
>>600
これじゃない?
http://lowlife.jp/users/0000041/weblog/
0602デフォルトの名無しさんNGNG
>>601
サンクス

>>599
はじめたばかりなのによく見つけたな
本人か(藁
0603デフォルトの名無しさんNGNG
>>602
18時間後だからそんなことはないと思うが。
0604デフォルトの名無しさんNGNG
いかん、「にょろ」なら許せるかもと思い始めてきた。
0605デフォルトの名無しさんNGNG
>>603
反応早いな
やっばり(ry
0606デフォルトの名無しさんNGNG
languages = {'C': u'死', 'Java': u'邪', 'C++': u'サ', 'Ruby': u'首',
'Python': u'〜', 'Lisp': u'λ', 'perl': '駝', }

Rubyは分裂した!Rubyは噛み付いた!Rubyは噛み付いた! [more]
+====+              a) 呪われたタブ置換エディタ
|〜首首邪|              b) 「せんぷりに」と書かれた巻物
|首首死首λλλ・・・          c) 祝福されたTimおじさんの石像
|首首首サ|
+==邪=+
   ・
 駝 ・・・・・ 
0607デフォルトの名無しさんNGNG
>>597 「どこで」
PyCon 2003に参加されたようですよ。
www.python.org/~guido/pycon03/

>>598 「実在の人」
c.l.pyへ信じられないぐらい精力的に投稿するので、
実は barryがelispで書いたAI (timbot)で…
などという説があったね。
BeOpen/PythonLabsに移ったとき (2000年?) に
メンバーとしてTim Peters氏の写真が公表された後は、
そうしたジョークはフェードアウトしていったように思う。

Python紹介のビデオにも出演していますよ。
www.ibiblio.org/obp/pyBiblio/pythonvideo.php
0608デフォルトの名無しさんNGNG
>>601
http://lowlife.jp/yusei/
こっちのほうがいいんじゃない?
無愛想な数字よりも。
0609デフォルトの名無しさんNGNG
lowlifeのBlog数伸びない。

それと、lowlifeの中の人のファッションセンスがすごい。
0610デフォルトの名無しさんNGNG
>>429

moinは、[[日本語]] は書けないけど ["日本語"] ならOK。
ファイル名を独自のエスケープ( _のあとに16進2文字 )で作るので
ちょっとうっとうしいかもしらんけど。

0611デフォルトの名無しさんNGNG
急に実物のロボットを動かしてみたくなったのですが、
Pythonで操れるものってありますか?
0612デフォルトの名無しさんNGNG
http://emergent.brynmawr.edu/~dblank/pyro/
0613デフォルトの名無しさんNGNG
>>601,608あたり

逆効果だったみたいよ(´・ω・`)
0614デフォルトの名無しさんNGNG
>>611
ttp://www.roboken.channel.or.jp/er1/030318_01.htm
0615611NGNG
>>612,614
レスサンクス。
やはりロボットは勢いだけで作れるようなものでは
なさそうですね。(´・ω・`)
0616デフォルトの名無しさんNGNG
reStructuredTextでリンク付きイメージってどう表記するんですか?

こういうかんじの出力がほしいです。
<a href="http://example.com">
<img src="http://example.com/x.jpg" />
</a>
0617デフォルトの名無しさんNGNG
>> 616
target オプションが予定されてるみたいだが docutils 0.3 では未実装。
http://docutils.sourceforge.net/spec/rst/directives.html#images
0618デフォルトの名無しさんNGNG
いい書籍ないもんかね?オライリーは評判良くないみたいだし
0619デフォルトの名無しさんNGNG
ttp://www.python.jp/Zope/links/python_books
↑で全部。みんな対応バージョンが古いけど。

ttp://www.python.jp/Zope/PyLog/1077280652
なので↑を勧めてみる。まだ出てないけど。

# こんなとこにも伯爵の電波^H^H○○が・・・
0620デフォルトの名無しさんNGNG
python関連の洋書ってどうやって買ってますか?
LAOXのBOOK館が有った頃はあそこで買ってたけど今は。。。
0621デフォルトの名無しさんNGNG
あまぞん.eBookで買えるのもあります.
0622デフォルトの名無しさんNGNG
件のrange-forループと、これまた件のタプルをキーとした辞書を使った
しょーも無いスクリプト思いついちゃったんで晒します。あんまり丸くないです。
mat={}
for y in range(-20,21):
  for x in range(-20,21):
    if x*x + y*y <= 400:mat[(x,y)]="●"
for y in range(-20,21):
  for x in range(-20,21):
    print mat.get((x,y),"○"),
  print ""
0623デフォルトの名無しさんNGNG
> 配列を逆からたどるにはどうするのが一番てっとり早いのだろう。

2.3だと x[::-1]と書けるけどこれではだめ?
0624デフォルトの名無しさんNGNG
なんかML連動スレになってるな。
0625デフォルトの名無しさんNGNG
時々日記にも連動するw
0626デフォルトの名無しさんNGNG
>>622 肌理細かくしてみました。これはdictを使わなかった。

from Tkinter import Tk, Canvas
root = Tk()
root.bind_all('<Escape>', lambda ev:root.destroy())
can = Canvas(root, width=600, height=400, bg='white')
can.pack(expand=True, fill='both')
for x,y in [(x,y) for x in range(600) for y in range(400)]:
    if (x-300)**2 + (y-200)**2 <= 16000:
        can.create_rectangle(x, y, x, y, outline='red')
root.mainloop()
0627デフォルトの名無しさんNGNG

↑ここまで Python 2.3

↓ここから Python 1.0.1
0628デフォルトの名無しさんNGNG
ハァ?(゚Д゚)
0629デフォルトの名無しさんNGNG
ML連動でsparceなdict

from Tkinter import Tk, Canvas
xRange = 1024
yRange = 768
iteration = yRange/5
yColors = ["red", "yellow", "green", "blue"]
dots = {}
for x in range(xRange):
  y = 0.4
  for i in range(iteration):
    dots[(int(x), int(y*yRange))] = yColors[ i % len(yColors) ]
    y = y*(1-y)*(x+0.01)/xRange*4
    continue
print len(dots)
root = Tk()
root.bind_all('<Escape>', lambda ev:root.destroy())
can = Canvas(root, width=xRange, height=yRange, bg='black')
can.pack(expand=True, fill='both')
for (x, y), color in dots.items():
  can.create_rectangle(x, y, x, y, outline=color)
root.mainloop()
0630デフォルトの名無しさんNGNG
うわ、sparseだし………
0631デフォルトの名無しさんNGNG
$ python -v sparce.py
Python 1.0.1 (Mar 1 2004)
Copyright 1991-1994 Stichting Mathematisch Centrum, Amsterdam
 File "sparce.py", line 16
  can = Canvas(root, width=xRange, height=yRange, bg='black')
              ^
SyntaxError: invalid syntax

(´;ω;`)グスン
0632デフォルトの名無しさんNGNG
>>629
どの ML?
0633デフォルトの名無しさんNGNG
>>631
全角スペースでインデントしてるんで、そのせいかも。

$ gzip -c < logistic.py | uuencode - > logistic.py.gzip.uuencode
したんで、
$ uudecode < logistic.py.gzip.uuencode | gzip -dc
とかしてください。


begin 664 -
M'XL(`+GD0D```YV3W6Z;,!3'[_T49T$3-B6$9%DW164WU5Y@RET450XXP8JQ
MD7$:K&GOOF.@:55IFC8NX/CX?[Y^V-$'6%PZNSA(O6B]JXU>92M"CM8TL#U+
M[80%V;3&.ERF\,CU,^\(Z7]P?1)0P#)?K8E_67VY_TJ(Q!CNI-'H&'<6GXE_
M-,K8#EV[F175+(69%TJ9:[!.5@@=C(.ZB-F>D,JX(/WYBQR-A1ZD!AL2T;$N
MVQ#`QZ,DS]:#'73R57?K89*&)R3=41R)]BR%\/7)V!]C^]#KV.(.\WP$)32=
M'`SVMQRAI$_H<NY90ON[/,N7;#$VE:QOJM)H)_5%$-):K#,D"]49L<8X3+$]
MT]'.D'OUQ)6B\</WKN2M^!:GH'ASJ#B(Y\V@J43GK/&4,5+R0'7\"S1LIG"5
ME:N+L8<4:B%/M2O\M#R<BOB@>'F.A]BL19.*ON6Z*K;V@HJC5`HUQM4H"11I
MGX)'0&48/A`-G6<(M.GH1#-D*JW@3CQ943HLI<00EL+X-A>GI!;%D&.:M.%2
M*V-:G)Q$;SE$_P,B^B.)^SR_85@'.S"XUCA`/(;]#4(TG+G4A]EW.)9G\.X4
M8HG1YU]]6(KM-R0*?.01*<X_H2=)5G`'U,]7T^(!KPR&YY/RGVC&>''B%UYO
+</X&N77@`L0#````
`
end


>>632
Python-ml-jp 2815
とか。
0634633NGNG
こっちのがいいかもしんねっす。

#! /usr/bin/python2.2

from Tkinter import Tk, Canvas

xRange = 1024
yRange = 768

iteration = yRange/5
yColors = ["red", "yellow", "green", "blue"]

dots = {}
for x in range(xRange):
y = 0.4
for i in range(iteration):
y = y*(1-y)*(x+0.01)/xRange*4
continue
for i in range(iteration):
dots[(int(x), int(y*yRange))] = yColors[ i % len(yColors) ]
y = y*(1-y)*(x+0.01)/xRange*4
continue

root = Tk()
root.bind_all('<Escape>', lambda ev:root.destroy())
can = Canvas(root, width=xRange, height=yRange, bg='black')
can.pack(expand=True, fill='both')
for (x, y), color in dots.items():
can.create_rectangle(x, y, x, y, outline=color)
root.mainloop()
0635633NGNG
わ。つぶれた。さっきからすまんです。

#! /usr/bin/python2.2
from Tkinter import Tk, Canvas
xRange = 1024
yRange = 768
iteration = yRange/5
yColors = ["red", "yellow", "green", "blue"]
dots = {}
for x in range(xRange):
    y = 0.4
    for i in range(iteration):
        y = y*(1-y)*(x+0.01)/xRange*4
        continue
    for i in range(iteration):
        dots[(int(x), int(y*yRange))] = yColors[ i % len(yColors) ]
        y = y*(1-y)*(x+0.01)/xRange*4
        continue
root = Tk()
root.bind_all('<Escape>', lambda ev:root.destroy())
can = Canvas(root, width=xRange, height=yRange, bg='black')
can.pack(expand=True, fill='both')
for (x, y), color in dots.items():
    can.create_rectangle(x, y, x, y, outline=color)
root.mainloop()
0636デフォルトの名無しさんNGNG
>>633
あああすんまそんぶんぽうえらーになるのはきーわーどひきすうにたいおうしていないばーじょんだからですごめんなさいごめんなさいもうしませ(NO CARRIER
0637デフォルトの名無しさんNGNG
# -*- coding: shift_jis -*-
import marshal, binascii
fleet = marshal.loads(binascii.a2b_base64(
  "e3MGAAAAj4SXbYrNWwMAAAAoAgAAAGkHAAAAaQUAAAAoAgAAAGkHAAAAaQYAAAAoAgAAAG"\
  "kHAAAAaQcAAABzBgAAAIpqlJqSZVsBAAAAKAIAAABpCQAAAGkIAAAAcwYAAACL7JKAis1b"\
  "AgAAACgCAAAAaQMAAABpBQAAACgCAAAAaQMAAABpBgAAAHMEAAAAkO2KzVsEAAAAKAIAAA"\
  "BpBAAAAGkDAAAAKAIAAABpBQAAAGkDAAAAKAIAAABpBgAAAGkDAAAAKAIAAABpBwAAAGkD"\
  "AAAAcwQAAACL85XqWwUAAAAoAgAAAGkCAAAAaQEAAAAoAgAAAGkCAAAAaQIAAAAoAgAAAG"\
  "kCAAAAaQMAAAAoAgAAAGkCAAAAaQQAAAAoAgAAAGkCAAAAaQUAAAAw"))
battlefield = {}
for ship, coords in fleet.items():
  for coord in coords: battlefield[coord] = ship
while 1:
  instr = raw_input("どこを攻撃しますか? [x, y] = > ")
  try:
    x, y = map(int, instr.strip().split(','))
  except:
    print '「3, 7」のように入力しる!'; continue
  if not battlefield.has_key((x, y)):
    print 'なにも起きまそん、艦長!'; continue
  ship = battlefield[(x, y)]
  if ship == '核爆弾':
    print 'あぼーん、核爆弾を撃ってしまいますた (あんたの負け)'; break
  print "%s に命中しますた、艦長!" %(ship)
  fleet[ship].remove((x, y)); del battlefield[(x, y)]
  if len(fleet[ship]) == 0:
    print "%s を轟沈しますた、艦長!" %(ship); del fleet[ship]
  if len(fleet) == 1:
    print "艦長!全ての敵を殲滅しますた!"; break
0638637NGNG
sparse の例ということで。
fleet に SJIS 入れちゃったんで、SJIS 限定でおながいします。
0639デフォルトの名無しさんNGNG
ja_JP.eucJP な環境の艦長は次の一行を追加しよう。ファイルエンコーディングは sjis のままで桶。

import codecs, sys; sys.stdout = codecs.EncodedFile(sys.stdout, 'sjis', 'euc-jp')
0640デフォルトの名無しさんNGNG
#! /usr/bin/env python
# coding: base64

なスクリプトが書けるか挑戦したけどできなかった・・・(←馬鹿

# 原理的にできないのかおいらができなかっただけなのかも不明
0641デフォルトの名無しさんNGNG
原理的に無理だと思うにょ。
エンコードした後の字面に coding: *** が見えてないと
エンコーディング名を探してデコードすることができないにょ。
0642640NGNG
>>641
そう思って、その二行だけASCIIにして、残りをBASE64にしてcatで繋げたり
してみたんだけど・・・無理ですた。こんなかんじで。

# coding: base64
aW1wb3J0IHN5cwoKcHJpbnQgc3lzLmFyZ3YK

でもNameErrorにならずに SyntaxError: 'bad argument type for builtiin
operation' になるので、実はもう一歩でできるのかも、と思ったり。
0643デフォルトの名無しさんNGNG
# coding: rot13
cevag h"ahqtr ahqtr?"
0644デフォルトの名無しさんNGNG
>>643
rot13 だとできるのね・・・む〜ん
0645デフォルトの名無しさんNGNG
>>640
1. default encoding でスクリプトの最初の行を読む→ # coding: base64 発見
2. (最初の2行を含む)ファイル全体を base64 でデコード
  → "# coding: base64" は "r\x87b\x9e\x06\xda\xb1\xee\xb8" になる
3. 最初の行を実行できずクラッシュ
ということだと思います. rot13 は '#' を '#' にデコードするから,
"# coding: rot13" は "# pbqvat: ebg13" に変換され,ただのコメント
として扱われるんじゃないかなぁ.
0646デフォルトの名無しさんNGNG
その可能性もありそうですが・・・エラーメッセージは、

  File "spam.py", line 2
SyntaxError: 'bad argument type for built-in operation'

なんですよね。二行目に問題があるらしいです。謎。
0647デフォルトの名無しさんNGNG
640 のコードの最初の行は #!/usr/bin/env... じゃないのかな?
削ったらどうなるんだろう.
0648デフォルトの名無しさんNGNG
すんませんややこしくて。
>>642の二行スクリプトの結果が>>646です。
ちなみに中身は、

import sys
print sys.argv

だけです。
0649デフォルトの名無しさんNGNG
原因を追求してみたにょ。
base64コデックのdecode()がunicodeオブジェクトではなく
stringオブジェクトを返すのが原因だったにょ。
漏れの考えではこれはバク(仕様違反)にょ。
次のように修正すると動くようになるにょ。

× output = base64.decodestring(input)
○ output = unicode(base64.decodestring(input), "iso-8859-1")

>>645
調べてみて分かったんだけど、デコードの対象になるのは
エンコーディグ指定の行よりも後の行だけみたいだにょ。
よって、

# coding: base64
aW1wb3J0IHN5cwoKcHJpbnQgc3lzLmFyZ3YK

はOKだけど、

# coding: base64
# by 640
aW1wb3J0IHN5cwoKcHJpbnQgc3lzLmFyZ3YK

はNGにょ。
0650デフォルトの名無しさんNGNG
py2exeを使ってexeファイルと一緒にlibrary.zipもできます。
exeファイルを実行すると正しく動作します。そこで更に
このlibrary.zipをexeファイルにまとめてしまいたいのですが
方法をご存知の方居られませんか? どうぞ宜しくお願いします。

ご参考 setup.py
-----------------
# setup.py
from distutils.core import setup
import py2exe

setup(windows=["hoge.py"])
---------------------------


0651デフォルトの名無しさんNGNG
現在、Pythonを組み込んだアプリケーションを作っています。
このアプリケーションを配布する際に、Pythonの必要な部分だけを添付していも良いのでしょうか?
具体的には、python??.dll と、Lib 以下の必要なスクリプトのみになりそうなのですが、
こういった配布の仕方をしてもかまわないですか?
0652648NGNG
>>649
どうもありがとうございます。実は昨晩調べて同じ結論にたどり着きました。
# 思わず徹夜しちまったぃ・・・ねむ・・・

Python VM レベルでの文字コードの変換を
Python Script レベルで記述できるような仕組みが、
なかなかトリッキーな作りになっていて勉強になりますた。
0653デフォルトの名無しさんNGNG
OK。ただし、最終判断はttp://www.python.org/psf/license.html
を自分でしっかり読んで自己責任で。
GPL のライブラリやスクリプトと一緒に配布して問題ないかどうかは
よく知らない。

0654デフォルトの名無しさんNGNG
岩田氏がbzeroというblogツールをutf-8化してほしいと言っていたが
これpycだけでソースなし?無理ぽ。


とりあえずデコンパイラ見付けたのでギコギコしてみる。
んーうまくpyに戻せるのもあるがそうでないのも多い
0655デフォルトの名無しさんNGNG
>>654
それどころか404ですた。完。
0656デフォルトの名無しさんNGNG
つーか作者にソース呉って頼んだ方がいいと思われ。
ライセンス見てないけどデコンパイルして改造ってのはマズかろう。
改良してもパッチ投げられないし。
0657654NGNG
前言撤回。全部復元できた。動作確認しているがちゃんと動くみたい。

>>655
http://www.myelin.co.nz/bzero/
のpython2.2用を取って来る。
デコンパイラは
http://www.crazy-compilers.com/decompyle/
のver2.2
debianはすでにパッケージがあるのでそれを使った。
RSS.pyだけデコンパイルに失敗するが、これは元が
www.mnot.net/python/RSS.py
なので問題なし。

>>656
bzero is free for personal use.
It may end up as part of a commercial package, or it may not.
とREADMEに書いてあります。自分の勉強用にとどめておくのが無難ですし、
そうするつもりです。
0658デフォルトの名無しさんNGNG
>>657
Thanks! おもしろそう。

・・・なぬ、Winで動かないだとぅ! 完。
0659デフォルトの名無しさんNGNG
>>650
library.zip は 0.5.0 になってからの仕様で,ここには pure Python の
モジュールが入ります.旧バージョンの py2exe では,実行ファイル本体に
スクリプトをまとめていたと思います.旧バージョンにしても, python*.dll
や zlib.pyd を exe に埋められないのだから,スクリプトだけを埋められた
ところでたいした違いはないのでは? 去年の今ごろに,作者の Thomas
Heller が「ディレクトリごと zip して配ればいいはずから,あまり単一
ファイル化することに興味はありません.どうしても単一ファイルにしたい
なら Gordon McMillan の Installer を使ったらどうですか」という
内容の発言をどこかでしていました.(残念ながら,Installer のページは
なくなっています)
0660デフォルトの名無しさんNGNG
>>659 どうもです。

確かに参考とするファイルやビルド方法も古い記述の物でしたの
旧バージョンじゃないとダメなのかなーとうっすら思っていましたが、
ありがとうございます。

出来れば配布するファイルは少なく、大きさが小さい物を良しと考えて
いますので。。。exeならupxで圧縮できますし。。
Gordon McMillan を調べてみます。最後にもう一度、ありがとうございました。
0661デフォルトの名無しさんNGNG
>>649
> base64コデックのdecode()がunicodeオブジェクトではなく
> stringオブジェクトを返すのが原因だったにょ。
> 漏れの考えではこれはバク(仕様違反)にょ。

Base64は、任意のオクテット列を、8bit目を通さない通路にも
流せるように変形するためのエンコーディングなんだから、

> 次のように修正すると動くようになるにょ。
> 
> × output = base64.decodestring(input)
> ○ output = unicode(base64.decodestring(input), "iso-8859-1")

こんなことしたら本来の役目が果たせないんじゃないかね。
それにデコード後 iso-8859-1 決め打ちもちょっといただけないし。

まぁ「ソースコードの」エンコーディングに使うなんて考えてないコーデック
なわけだし、素直にあきらめるが吉だと思います。ちょっと残念だけど。
0662デフォルトの名無しさんNGNG
>>661
単なるネタじゃなかったんだ…
0663デフォルトの名無しさんNGNG
>>662
半分冗談でしたよ。ええ。
0664デフォルトの名無しさんNGNG
>>661
まあネタなのは重々承知の上で最後に二点だけ。

まず、「base64モジュール」と「base64コデック」の二つがあるというのが一点。
前者はbase64本来のエンコード/デコードを担当するモジュールで普通はこれを使う。
後者はコデックだからstring型とunicode型の相互変換を担当するのが「本来の目的」のはず。
(その目的を果たしてないからバグだと書いた)
デコード結果をiso-8859-1にしたのはunicode型でバイト列を表す手っ取り早い方法だったから。
(というか他にいい方法を思いつかない)

もう一点、base64は入力も出力もバイト列であることが期待される変換方式だから
そもそもコデックを使って変換を実現すること自体がおかしいと言えばおかしい。
類似のuuコデックなどについても同様。ぶっちゃけ、base64コデックの存在自体が
ネタみたいなもんだ。たぶん作者のMALも面白半分で作ったのだと思われ。
0665デフォルトの名無しさんNGNG
また「にょ」に直すの忘れた..._| ̄|○
0666デフォルトの名無しさんNGNG
>>664
うぃ。たいへんよく解りますたにょ。

>>665
忘れるくらいなら、わざわざやらなきゃいいのにw
0667デフォルトの名無しさんNGNG
うーん,もともとの目的は知らないけど, codecs オブジェクトが Unicode への
暗黙の変換を行わなければならないという仕様は変更されているようです.
base64, uu, rot13, zip は, string to string の変換ができるように
変更されたのに伴って,MAL がサンプルに作ったパッチらしいです.
そういう意味ではネタ codec なのかもね.

0668デフォルトの名無しさんNGNG
> codecs オブジェクトが Unicode への
> 暗黙の変換を行わなければならないという仕様は変更されているようです.

ソースきぼんぬ。
0669デフォルトの名無しさんNGNG
ttp://starship.python.net/~lemburg/unicode-proposal.txt
ttp://cvs.sourceforge.net/viewcvs.py/python/python/dist/src/Lib/encodings/base64_codec.py
0670デフォルトの名無しさんNGNG
後付けだけど,これも.
ttp://www.python.org/doc/2.2.3/whatsnew/node8.html
MAL はこんなことも言っていました.
ttp://mail.python.org/pipermail/python-dev/2001-May/014748.html
0671デフォルトの名無しさんNGNG
>>626 総天然色
from Tkinter import Tk, Canvas
import colorsys

def gen(coords):
    for x,y in coords:
        if (300-x)**2 + (200-y)**2 <= 16000:
            r,g,b = [i*256 for i in colorsys.hls_to_rgb(y/200.,(x-160)/300., .9)]
            yield x,y,r,g,b

root = Tk()
root.bind_all('<Escape>', lambda ev:root.destroy())
can = Canvas(root, width=600, height=400, bg='black')
can.pack(expand=True, fill='both')
for x,y,r,g,b in gen([(x,y) for x in range(600) for y in range(400)]):
    can.create_rectangle(x, y, x, y, outline=('#%02x%02x%02x'%(r,g,b)))
root.mainloop()
0672デフォルトの名無しさんNGNG
>>669-670
ソースありがと。
unicode-proposal.txt には「.decode() must return an Unicode object」と
ハッキリ書いてあって、漏れの理解はこれがすべてだった。しかし、
2.2で加えられた string 型オブジェクトの .encode() メソッドと
.decode() メソッドのために混乱が生じているみたいだね。

2.2では次のようなことができるようになって嬉しいというわけだ。
>>> "test".encode("base64")
'dGVzdA==\n'
>>> "test".encode("base64").decode("base64")
'test'

それじゃあってことで改めてbase64コデックを Unicode コデックとして
使ってみたらおかしなことになった。
>>> unicode("dGVzdA==\n", "base64")
TypeError: decoder did not return an unicode object (type=str)
>>> u"\u6f22\u5b57".encode("base64")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

つまり、base64コデックは Unicode コデックと同じ方法で実装されているけれど
実は Unicode コデック*ではない*(あるいは
http://mail.python.org/pipermail/python-dev/2001-May/014748.html
のMALの言葉を借りるなら「non-Unicode related codecs」)というわけだ。驚いたw
引用したメッセージの中で /F の「your "decode" design is broken,
instead of just buggy...」という言葉が引用されてるけど全く同感だ。
0673デフォルトの名無しさんNGNG
MAL なんていう略仕方は始めてみた。
0674デフォルトの名無しさんNGNG
GvRってのもあるよ。
0675デフォルトの名無しさんNGNG
>>673
いやメールアドレスが mal@... てなってるしさ。
0676デフォルトの名無しさんNGNG
>>616

現状の docutils でもこんなことならできるようです.

here is an |image|__
.. |image| image:: hodge.png
.. __: hodge.html

<div class="document">
<p>here is an <a class="reference" href="hodge.html"><img alt="image" src="hodge.png" /></a></p>
</div>

0677デフォルトの名無しさんNGNG
here is an |image|_
.. |image| image:: hodge.png
.. _image: hodge.html

も通りました. `ここ`_ に書いてあったよ.
.. _`ここ`: ttp://docutils.sourceforge.net/spec/rst/reStructuredText.html#substitution-references
0678デフォルトの名無しさんNGNG
>>675
メアドもそうなんだけど、例えば Python-Dev Summary では
MAL said ... とか MAL's proposal とか書かれたりする。GvR についても同様。
もっとも、漏れらが私信でこんな書き方したら「なにタメぐちきぃとんねん」って
怒られるかも知れない(w
0679デフォルトの名無しさんNGNG
コーデックの使い方が良くわかりません。
ユニコードをeuc-jpに変換して出力する場合、
s.encode('euc-jp')
というのはわかりますが、
ソースコードがeuc-jpで、CGIなどを書いていて、フォームから入力されるデータの
文字コードが何かわからない場合、unicode(s).encode('euc-jp')とすれば
nkf -eみたいに自動的にeuc-jpに変換されるのですか?

unicode(s, 'euc-jp')とするのは、
あらかじめHTMLにcharset=euc-jpとしておくのが前提でしょうか?
0680デフォルトの名無しさんNGNG
>>679
RTFM って言おうと思ったけど,和訳マニュアルの大事なところがごっそり抜けて
ました.直しときます.unicode( [object[, encoding [, errors]]])
は,encoding が指定されていれば encoding を使って object をデコード
して返します.指定されていなければ,object の __unicode__() メソッドを
呼び出そうとします, __unicode__() が定義されていなければ, Unicode
オブジェクトを返す str(object) のような働きをします.つまり文字コード
推定は行いません.
一方, decode( [encoding[, errors]]) は string を encoding で指定
された文字コードでデコードしようとします. encoding を省略すると,
デフォルトエンコーディングを使うだけです.
結論として, unicode にも decode にも,対象文字列の文字コードごとに
適応的な変換をする仕様はありません.
文字コードに柔軟なデコードを実現したければ,pykf など(といっても他に
知らないけど)を使うか,「日本語文字列全般」からのデコードを実現する,
不可逆で tricky な codec を作るか,ぐらいだと思います.
0681デフォルトの名無しさんNGNG
0から99までの整数で、重複せずに4つ選ぶとしたら、どうするのが一番コードが
単純になりますか?
一端リストを作成してシャッフルして、4回pop()するのが一つの手だと思うのですが、
ほかにどんな方法がありますかね?
0682デフォルトの名無しさんNGNG
random.sample(range(100), 4)
ttp://www.python.jp/pub/doc_jp/lib/module-random.html#l2h-1133
0683デフォルトの名無しさんNGNG
>>679
なんちゃって自動判別...
Python で CGI を書く時はこんなので胡麻化してる。

def japaneseToUnicode(s, encodingList=['utf-8', 'japanese.euc-jp', 'japanese.shift_jis', 'japanese.iso-2022-jp']):
'''Convert Japanese string to Unicode.'''
for enc in encodingList:
try:
# print 'trying', enc , '...'
u = unicode(s, enc)
# print 'done:', enc
return u
except UnicodeError:
pass
raise UnicodeError, 'codec can\'t decode: "' + s + '"'
0684デフォルトの名無しさんNGNG
>>680
どうも。よくわかりました。
普段Linux上でEUC-JPで完結していたため、
Web上で入出力するとどうなるかわからなかったんです。
0685デフォルトの名無しさんNGNG
>>684
ブラウザがどういう文字コードでフォームデータを送ってくるかはブラウザ依存。
普通はフォームがあるページの文字コードに合わせて送ってくる。
だから、ページの文字コードがEUC-JPならフォームデータの文字コードもEUC-JPだと仮定していい。
ただし、残念ながらページの文字コードとは異なる文字コードで送ってくるブラウザもあるようだ (具体的にどれかは知らない)。
よって一応文字コード判別をしておくのが無難 (683さんのコードはナイスアイデアだと思う)。
0686デフォルトの名無しさんNGNG
>>682
sampleには気づいていなかった。サンクスコ
0687デフォルトの名無しさんNGNG
すみません、教えてください。

test = ['a','b']
hoge = test
del hoge[1]
hoge.insert(1,'c')

print test
print hoge

出力結果:
['a', 'c']
['a', 'c']

となります。
意図としてはtestの値を変えたくないのですが、
どのようにすればよいのでしょうか?
0688デフォルトの名無しさんNGNG
line 2
hoge = test[:]
0689デフォルトの名無しさんNGNG
明示的に新しいオブジェクトを作る。
hoge = list(test)
0690デフォルトの名無しさんNGNG
>>688
おぉ…。ありがとうございました。
0691デフォルトの名無しさんNGNG
>>689
あ、こんな方法もあるのですか。。
ありがとうございます。
0692デフォルトの名無しさんNGNG
http://friedfish.org:8080/bbs/upimg/012.zip

初めてのプログラミングでYahoo!天気から
今日の天気と明日の天気を得とくするスクリプトを
書いて見たのですが、アドバイスしてもらえないでしょうか?
0693デフォルトの名無しさんNGNG
漢字を勉強しような。
0694デフォルトの名無しさんNGNG
http://dictionary.goo.ne.jp/search.php?MT=%A4%A8%A4%C8%A4%AF&kind=&mode=0&jn.x=17&jn.y=13

http://dictionary.goo.ne.jp/search.php?MT=%A4%B7%A4%E5%A4%C8%A4%AF&kind=jn&mode=0&base=1&row=1

漢字の前に(略
0695デフォルトの名無しさんNGNG
>>683
JapaneseCodecs は 0x1b 以下の文字が入っててもエラーを出さないので、
それは euc、sjis、utf8 の認識には使えるが、iso-2022-jp の認識には使えないと
思いますが、どうでしょうか。
0696692NGNG
>>693
>>694

すみません。気をつけます。
0697デフォルトの名無しさんNGNG
得とく(←なぜか変換できない)
0698デフォルトの名無しさんNGNG
取得
0699デフォルトの名無しさんNGNG
ptn = re.compile(u'(?<=\<font size=-1\>$)[^<]*(?=\</font\>$)', re.I|re.M)
print ptn.findall(s)

0700デフォルトの名無しさんNGNG
>>692
HTMLページ全体を一度に得とくして page に保存し、
この page 全体にたいして re.findall すると、
プログラムがもっと単純になります。

def main(url):
    f = urllib.urlopen(url)
    page = f.read().decode('euc-jp')
    f.close()
    result = re.findall(r'(?im)<font size=-1>\n(.+?)</font>', page)
    return result[0], result[1]

if __name__ == '__main__':
    today, tomorrow = main(URL)
    print 'Today:', today.encode('shift_jis')
0701692NGNG
>>697-700

レスありがとうございました。

正規表現関連のところはリファレンスを見ただけで書いたのですが、
面白そうなのでもっと調べてみます。
0702デフォルトの名無しさんNGNG
Python or Perl on Nokia smartphones.
ttp://www.mobilewhack.com/programming/python/python_on_nokia_screenshots.html
0703デフォルトの名無しさんNGNG
lambdaには式しか書けないことに,いまさら気づいた.
うーん….
0704デフォルトの名無しさんNGNG
Guido御大としては、式で書ける以上のことをlambdaで書いたら読みづらい
んだからやめれと。つかlambdaより関数使えと、そういうことだ。
0705デフォルトの名無しさんNGNG
式と文が分かれていること自体、パーサー(を作った人)の都合以上の何者でもないのだが。
0706デフォルトの名無しさんNGNG
>>704
Pythonだとインデントのことがあるからlambdaを使うと読みづらいのは分かるけど,
やっぱり使いたくなるときはあるんだよなぁ.

>>705
原則としては,実行順序が問題になる場合「文」なんじゃないの?
0707デフォルトの名無しさんNGNG
>>705
式と文が分かれてない言語だって、作った人の都合でしかないと思うんだけど。
あんたは何が言いたいの?
0708デフォルトの名無しさんNGNG
>>705は脳内スーパーハカー
0709デフォルトの名無しさんNGNG
> >>705は脳内スーパーハカー

「゛」が抜けてる。
0710デフォルトの名無しさんNGNG
デアッ
0711デフォルトの名無しさんNGNG
>>707
構文解析器(の実装)の都合で式と文が分かれている、と言いたいんじゃない?(w
つまり、Pythonの文法は実装によって決まった、というわけだ。なかなか興味深い。
0712デフォルトの名無しさんNGNG
"Mon, 01 Mar 2004 19:23:24 GMT"のような文字列からdatetimeオブジェクトを
生成する関数ってないかな?
0713デフォルトの名無しさんNGNG
email.Utils.parsedate()
time.strptime() and datetime.fromtimestamp()
0714デフォルトの名無しさんNGNG
>>711


   / ̄ ̄ ̄ ̄ ̄ ミ
  /   ,――――-ミ
 /  /  /   \ |
 |  /   ,(・) (・) |
  (6       つ  |
  |      ___  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |      /__/ /  < なわけねぇだろ!
/|         /\   \__________
0715デフォルトの名無しさんNGNG
>>714
懐かしいな
久しぶりに見たぞ

で、ハゲドウ
0716デフォルトの名無しさんNGNG
 1970年以前の「Time」を扱いたいのですが、どのような方法があるので
しょうか。
 プログラムの初学者で、epochってのをはじめて知りました(^^;
0717デフォルトの名無しさんNGNG
>>716
Python のバージョンは何ですか?
2.3 以降なら、1970 年を意識せずに実用上の年号ならほとんど扱えるようになったと思います。

試しに、
>>> import datetime
とやってエラーがでるか確認してみてください。
0718デフォルトの名無しさんNGNG
>>717
ありがとうございます。Python は2.1でした。
>>>> import datetime は"No module named datetime"でした。

実は、Windows版Plone、Zopeなんです。2.3以降にした方がいい
のでしょうか。
少し怖いです。Data.fs めちゃめちゃにならないか、心配です。
(Zope 2.6.1 、python 2.1.3)
0719デフォルトの名無しさんNGNG
mxDateTime を試してみてはどうですか?
0720デフォルトの名無しさんNGNG
>>719
 あっ、すいません。Zopeネタかと思って、そっちに書き込んじゃい
ました。mxDateTimeはZopeというよりは、Pythonのライブラリですね。
 いまページを見て理解しました。
 アドバイスありがとうございました。

PS いまインストールで失敗しています(^^;
ttp://pc2.2ch.net/test/read.cgi/php/1045704268/933-
0721デフォルトの名無しさんNGNG
犬板に蛇スレが立った。
http://pc.2ch.net/test/read.cgi/linux/1078144088/l50
0722デフォルトの名無しさんNGNG
刻一刻とデータを受けながらグラフを更新していくプログラムを
組もうとしたとき、グラフ描画は何を使えばいいでしょうか?
0723デフォルトの名無しさんNGNG
Flash
0724デフォルトの名無しさんNGNG
>>722
SVG とか。
0725デフォルトの名無しさんNGNG
>>722
何でもいいのでは。Tkinter の Canvas とかお手軽で良さげ。
データを受け取る時間隔が長くてグラフの描画手順が面倒なら、
一時ファイルにデータを書き出して gnuplot で PNG ファイルに
グラフをプロットして、その画像ファイルを(再)表示するとか。
gd ライブラリもいいかも。
http://www.boutell.com/gd/
http://newcenturycomputers.net/projects/gdmodule.html
0726デフォルトの名無しさんNGNG
python勉強しようと思うんですが、本当に初歩の初歩から教えてくれるサイトとか本手ないですかね?
0727デフォルトの名無しさんNGNG
どの程度の初歩なんだい。

1. キーボードは一本指でしか打てない。
2. 「インストールって何?」
3. プログラミングって何するのかわからない。
4. いくつかの例は覚えたが何もできない。
5. 大きなプログラムを作ろうとして挫折した。
6. まだコンパイラを書いたことがない。
0728デフォルトの名無しさんNGNG
>>727
パソコン持ってません 程度
0729デフォルトの名無しさんNGNG
やべえ俺プロなのにまだコンパイラ書いたことないや
0730デフォルトの名無しさんNGNG
りなざうでもNokiaでもいいからまず端末を買いなさい
0731デフォルトの名無しさんNGNG
ネタスレ化警報!
0732デフォルトの名無しさんNGNG
>727
4です。
0733デフォルトの名無しさんNGNG
>>732
多分キミは「パソコン買ったけど何に使えばいいのか分からない」って言ってる
香具師と似た状況にあると思われ。

次にすべきことは、自分はどんなプログラムを作りたいかを考えることだ。
最初は小さな、ただ一つの機能を持ったプログラムを考えてみるといい。
普段自分のパソコンで繰り返しやっていて面倒だと思うこと、自動化できたら
便利だなーと思うことを探してみるのもよい方向だ。

やりたいこと(解決したい問題)が見つかったら、それを Python で実現する
具体的な手順を考える。大抵の問題は、あれをやってこれをやれば目的達成と
いうように、小さな問題の列に分解できる。それらの小さな問題の一つ一つを
Python のプログラムコード片に翻訳していく。

やりたいこと(の部分問題)の実現方法や書き方が分からなければ、またこの
スレで聞けばいい。
0734デフォルトの名無しさんNGNG
Pythonの命令、関数を詳しく解説しいるサイトとかってないですか?
0735デフォルトの名無しさんNGNG
>>734
726 == 734
ですか?
0736デフォルトの名無しさんNGNG
そうです。
0737デフォルトの名無しさんNGNG
>>734
http://www.python.jp/pub/doc_jp/ref/contents.html
http://www.python.jp/pub/doc_jp/tut_2.3/index.html
http://www.python.jp/pub/doc_jp/lib/contents.html
http://hp.vector.co.jp/authors/VA003670/python/index.htm
ここらへん読んでがんばってみたら、どうです?
0738デフォルトの名無しさんNGNG
>737
どうもありがとうございます。
0739デフォルトの名無しさんNGNG
string.split() を拡張したような、my_split() を作りたいと思っているのですが、
エレガントな方法はあるでしょうか?

というのも、string.split() はそれなりに便利ですが、
たとえば、"aaa, bbb, ccc\n" といった文字列を ("aaa", "bbb", "ccc")
といったトークンに分割したい場合に、それだけでは少し機能が足らないためです。
(split()/my_split()などではない、全く違ういい方法があればご教授ください)

ちょうど、C における strtok()の第2引数のように、
my_split(str, " ,\n") もしくは、my_split(str, (" ", ",", "\n"))
のように指定して使える形にするには、どうすればよいでしょう?

とりあえず、安易なやり方としては以下が考えましたが、あまりエレガントではありません。
(str が長く、sepの個数が多い場合、涙モノの性能になると思われます)

def my_split(str, sep):
 for c in sep[1:]:
  str = str.replace(c, sep[0])
 return str.split(sep[0])
0740739NGNG
実際に動かすと、
string.split("a ", " ") とやると、['a', '', '', '', '', ''] などとなるんですね。
最後に空白要素を抜く処理を加えないとダメですね。

それはそれとして、別のベタなやり方を考えてみました。
こちらはそれなりに動くようです。

def my_split(str, sep):
 ret_list = []
 tok = ""
 for c in str:
  if sep.find(c) == -1:
   tok += c
   continue
  if tok:
   ret_list.append(tok)
   tok = ""
 if tok:
  ret_list.append(tok)
 return ret_list
0741デフォルトの名無しさんNGNG
分割したいパターンに正規表現を適用できるなら, re.split() を使えます.
ttp://www.python.jp/pub/doc_jp/lib/node103.html#l2h-823
>>> import re
>>> s = "V<asdfas />ia<erfsdas />g<poaacaa />ra<zdfdasd />"
>>> re.split("<[^>]*>", s) # 区切りはマークアップタグ様のパターン (<...>)
['V', 'ia', 'g', 'ra', '']
>>> s = "OIriaYnIgie AylJeirIt!"
>>> re.split("[IiYyJ]", s) # 区切りは I, i, Y, y, J
['O', 'r', 'a', 'n', 'g', 'e A', 'l', 'e', 'r', 't!']

単に末尾の改行が煩わしいだけなら,strip() で剥ぎ取れます.
ttp://www.python.jp/pub/doc_jp/lib/module-string.html#l2h-803
>>> s = "Nudge, nudge, nudge, nudge\n"
>>> s.strip().split(', ')
['Nudge', 'nudge', 'nudge', 'nudge']

ファイルのサイズが小さいなら,file.read().spltlines() すれば,
手軽に改行のないレコード列を手に入れられます.
ttp://www.python.jp/pub/doc_jp/lib/string-methods.html#l2h-197
>>> import StringIO
>>> f = StringIO.StringIO("spam\nspam egg\nspam bacon egg")
>>> for i in f.read().splitlines():
... print i.split(" ")
...
['spam']
['spam', 'egg']
['spam', 'bacon', 'egg']
0742739NGNG
>>741

ありがとうございます。

def my_split(str, sep):
returnre.split("[%s]+" % sep, str)

で、かなり近い振る舞いはできるようですね。

ただ、たとえば、my_split("#a, b, c ", " ,#") とした場合、['', 'a', 'b', 'c', ''] となって、
前後に空白要素が入ってしまうようです。

この場合、空白要素を入れないような、うまい正規表現はありますかね?
0743デフォルトの名無しさんNGNG
「いらないものを除く」んじゃなくて、
「いるものを取り出す」ようにしたほうが、
すっきりするんじゃないの?
0744デフォルトの名無しさんNGNG
>>739
>>> import re
>>> def your_split(str, sep, stripchars=None):
... return re.split("[%s]+" %(sep), str.strip(stripchars))
...
>>> your_split("#!/usr/bin/env/python -u -E -d\n", " ", stripchars="#\n!")
['/usr/bin/env/python', '-u', '-E', '-d']
RTFMA, ttp://www.python.jp/pub/doc_jp/lib/module-string.html#l2h-803
0745デフォルトの名無しさんNGNG
>>743
たしかに.
ttp://www.python.jp/pub/doc_jp/lib/node103.html#l2h-824
>>> re.findall("[^#!\n ]+", "#!/usr/bin/env/python -u -E -d\n")
['/usr/bin/env/python', '-u', '-E', '-d']
0746739NGNG
みなさんありがとう!
とりあえず、この2バージョンで行くことにしました。

# strtok
def strtok(str, sep):
 return re.findall("[^%s]+" % sep, str)

# strtok pre-complied version
def make_strtok(sep):
 r = re.compile("[^%s]+" % sep)
 return lambda str : r.findall(str)
0747デフォルトの名無しさんNGNG
pre-compiled version を return re.compile(...).findall(...)に
しないのは何か理由があるのかなぁ
0748739NGNG
1行バージョンだと
xx_strtok()の呼び出しのたびに、
re.compile(..).findall()
の全体が毎回実行されちゃうことにならないですかね?
(lambda は初めて使うので、あまり自信ないですが…)

実際に手元で計測してみたんですが、746と1行バージョンで、
1.5-2倍程度の速度差が出るようです。
0749デフォルトの名無しさんNGNG
>>> a = [0,1,2,3]
>>> b = [2,3]

とした時に、配列aとbの共通する要素の数
を返すような関数はありますか?
0750デフォルトの名無しさんNGNG
>>749
sets を使えば OK
0751デフォルトの名無しさんNGNG
sets がなければ [i for i in a if i in b]
0752デフォルトの名無しさんNGNG
実際に計測してみるというのはよい心がけですね。
0753デフォルトの名無しさんNGNG
アルゴリズムとは関係ないけど、コメントはdocstringにしようぜ。
0754デフォルトの名無しさんNGNG
下の用なftp用の関数を作って複数ファイルをダウンロードしようとしたのですが
2回目のダウンロードで失敗します。(1回目は成功する)
なにが悪くてこうなるのか教えてもらえないでしょうか?


エラー(一部):
File "./autoupdater.py", line 24, in download_file
self.ftp_site.retrbinary( "RETR "+downloadfile, filename.write)
:
ftplib.error_perm: 550 Failed to open file.

関数:
def download_file(self,root,downloadfile):
self.ftp_site = FTP( FTP_SITE )
self.ftp_site.login()
self.ftp_site.cwd(root)
filename = open(downloadfile, 'wb')
self.ftp_site.retrbinary( "RETR "+downloadfile, filename.write)
filename.close()
self.ftp_site.quit()
0755デフォルトの名無しさんNGNG
一度目にダウンロードしたファイルに書き込み禁止パーミッションが掛かっていて,
上書きできないのでは?
0756デフォルトの名無しさんNGNG
>>754-755
「2回目」にダウンロードするリモート側のファイルが
存在しないか、読み出し権限が無いように見えますよ。

550 はFTP(RFC959)のリプライコードです。
#  550 Requested action not taken.
#     File unavailable (e.g., file not found, no access).

ローカル側のファイルを開くのに失敗したなら
IOError例外が生じます。
0757デフォルトの名無しさんNGNG
これはTkinter PhotoImageを使った研究試作で、「example.py b r」のように二つの r g b を指定すると、グラデーションを表示します。
import sys
from Tkinter import Tk, PhotoImage, Canvas, BOTH
W, H = 300, 200;  kx, ky = 256./W, 256./H
if len(sys.argv) != 3: sys.argv[1:3] = ['r', 'g']
exprs = ['0'] * 3
exprs['rgb'.index(sys.argv[1])] = 'int(x*kx)'
exprs['rgb'.index(sys.argv[2])] = 'int(y*ky)'
funstr = 'lambda x, y: (%s, %s, %s)' % tuple(exprs)
fun = eval(funstr) ## fun(x, y) -> r, g, b
# PhotoImage.put takes an image data represented as '{#fafafa #fefefe ...} {#bababa #bebebe ...} ...'
M = []
for y in range(H):
    M.append('{')
    for x in range(W):
        M.append('#%02x%02x%02x' % fun(x, y))
    M.append('}')
root = Tk()
root.title('%dx%d - %s' % (W, H, funstr))
img = PhotoImage()
img.put(' '.join(M)); del M
can = Canvas(root, width=W, height=H, highlightthickness=0)
can.create_image((0, 0), anchor='nw', image=img)
can.pack(expand=True, fill=BOTH)
root.bind_all('<Escape>', lambda ev:root.destroy())
root.mainloop()
0758デフォルトの名無しさんNGNG
>>755,756
ありがとうございました。エラーの出るファイルを削除した所、無事に動きました
こういった問題(ファイルが見付からない)に対してtry〜exceptで躱すことは
できるんでしょうか? ちなみに
try:
____self.ftp_site.retrbinary( "RETR "+downloadfile, filename.write)
except ftplib.error_perm:
____print "Can't Find File", filename
だと、
NameError: global name 'ftplib' is not defined
になります。
このNameErrorをtry文で捕獲すればいいとか?
0759デフォルトの名無しさんNGNG
>>758
from ftplib import FTP, error_perm
して
except error_perm:
にすれば?
0760デフォルトの名無しさんNGNG
>>759
同じ結果です
NameError: global name 'error_perm' is not defined
0761デフォルトの名無しさんNGNG
>>760
本当にちゃんと
from ftplib import error_perm
してる?
つーか、エラーメッセージの意味、わかる?
0762デフォルトの名無しさんNGNG
class A(list):
  ...
という風にリストを継承したクラスをつくって、
a = A()
a[:]
とやったときのインスタンスのコピーをカスタマイズしたいのですけど、
どこをいじればいいのですか?
0763デフォルトの名無しさんNGNG
>>761
おお、直った。ありがとうございました

>つーか、エラーメッセージの意味、わかる?
チュートリアルに載ってる範囲ならなんとか...
0764デフォルトの名無しさんNGNG
>>762
Python言語リファレンスの「3.3.5 コンテナをエミュレートする」と
「3.3.6 配列型をエミュレートする」辺りかな。

__getitem__ とか、必要なメソッドを再定義すればおーけー。
0765デフォルトの名無しさんNGNG
>>764
そのあたり、眺めてみます。
0766デフォルトの名無しさんNGNG
>>758
いわゆるエラーには
・実行時の条件次第で発生するエラー(例えばFTPのエラー)
・プログラムそのもののエラー(文法間違い、バグなど)
があるよ。
前者は try/except で捕捉して処理する必要がある。
後者は発生しないように直す必要がある (try/except で対処するのは誤り)。
0767デフォルトの名無しさんNGNG
書き忘れ。>>758のNameErrorは後者(バグ)です。
0768デフォルトの名無しさんNGNG
globで取得したリストから各要素のパーミション調べたりファイルかディレクトリかを調べたりって
どうすればできますか?
0769デフォルトの名無しさんNGNG
python で blog つくれる?
0770デフォルトの名無しさんNGNG
>>766
どっちもエラーというか
前者はエラー
後者はバグ
という位置づけで十分ではなかろうか
0771デフォルトの名無しさんNGNG
http://py.vaults.ca/apyllo.py?find=blog
0772デフォルトの名無しさんNGNG
isfile(), isdir(), islink(): ファイルの種類を調べる
ttp://www.python.jp/pub/doc_jp/lib/module-os.path.html
access(): ファイル・ディレクトリのアクセス権限を調べる
ttp://www.python.jp/pub/doc_jp/lib/os-file-dir.html
0773デフォルトの名無しさんNGNG
>>770
前者は例外
後者はバグ
のほうが適切かな
0774デフォルトの名無しさんNGNG
>>769
どんな blog をイメージしてる?

漏れは手元で月別(日付は昇順)の HTML ファイルを手書きして
Python スクリプトで最新一週間分のダイジェスト(日付は降順)を作ってるよ。
FTP でうpするのも別の Python スクリプトで自動化。漏れ的には結構快適。

あと、独自 DTD の XML で日記を書いて PyXML アプリで HTML や TeX に変換したりもしてる。
こちらはパソコン上で使うだけの単なる日記帳 (一時期 blog 用に使っていた)。
0775デフォルトの名無しさんNGNG
>>769
http://kugutsushi.s12.xrea.com/doc/TinyBlog.html
0776デフォルトの名無しさんNGNG
文字列の結合って + 演算子でできないんでしょうか?
readline で各行を読みとって、それを変数にどんどん追加していきたいんですが。

while 1:
line = fi.readline()
buf += string.lstrip(line)

こんな感じで。するとこんなエラーが出ます。
TypeError: can only concatenate tuple (not "str") to tuple
0777デフォルトの名無しさんNGNG
>>776
buf が tuple なんじゃないの?
buf を list にして、 buf.append(foo)とするとか、str 型にして、buf += foo としたら?
0778デフォルトの名無しさんNGNG
あと、文字列の結合はパフォーマンスがむちゃくちゃ悪いので、出来るだけさけた方がいいです。
0779デフォルトの名無しさんNGNG
>>776
ループに入る前に buf="" で初期化するとどうなる?
0780デフォルトの名無しさんNGNG
>>778
それが本当なら糞言語の仲間入りだな
0781デフォルトの名無しさんNGNG
>>780
文字列はimmutableだからだよ。Javaと同じ。
StringBuffer/cStringBufferモジュールを使うべし。
0782デフォルトの名無しさんNGNG
>>776-781
レスサンクスです。
ループの前に

h1 = re.compile("^<h1>(.*)</h1>$")
result = h1.match(line)
if result:
buf = result.group(1)

こうしてます。result.group(1)が tuple を返してるんですよね。
list に追加していく方法も考えたんですが、最終的に TextWrapper の
wrap で折り返しを調整したいので、str型の変数にどんどん追加
していこうと思いました。

この場合は tuple を str 型にキャストするのが普通なんでしょうか。
0783デフォルトの名無しさんNGNG
>>781
> StringBuffer/cStringBufferモジュールを使うべし。

何それ?
0784デフォルトの名無しさんNGNG
>>782
> result.group(1)が tuple を返してる

ソンナコトハナイト思ワレ。
0785デフォルトの名無しさんNGNG
$ cat string.py
buf = ""
for i in xrange(20000):
  buf += str(i)

$ cat tuple.py
buf = []
for i in xrange(20000):
  buf.append(str(i))
buf = "".join(buf)

$ time python2.3 string.py
real 0m19.112s
user 0m15.510s
sys 0m3.600s

$ time python2.3 tuple.py
real 0m1.067s
user 0m1.010s
sys 0m0.050s

この例では15倍の差が出た。
0786754NGNG
やった!!
gnomeの(正確にはgarnomeの)auto-updaterできた〜!
質問に答えていた方々、ありがとうございます
自分で作っといてなんだけどできたのがうそみたいだ

さて、機能拡充するか
0787デフォルトの名無しさんNGNG
#stripper.py
#usage:python stripper.py http://www.python.jp/Zope/ > pujug.html
import string,urllib,sys
def stripAndPrint(url):print "".join(map(string.lstrip,urllib.urlopen(url).readlines()))
if __name__ == "__main__":stripAndPrint(sys.argv[1])
0788デフォルトの名無しさんNGNG
>>781
ttp://www.asahi-net.or.jp/~dp8t-asm/java/tips/Immutable.html
0789デフォルトの名無しさんNGNG
>>783
そうなんですか。。

buf = result.group(1)
buf += string.lstrip(line)

だと
TypeError: can only concatenate tuple (not "str") to tuple
こういうエラーが出て

buf = result.group(1)
buf = ""
buf += string.lstrip(line)

だとエラーが出なかったもんで。型情報を含めて変数の内容を
ダンプしてくれるような関数ってありますか?

なんだか PyJUG のドキュメントって検索できなくてすごい不便
だと思ってるのは漏れだけかな。
0790↑NGNG
意図不明
0791↑NGNG
割り込まれちゃった。>>788宛なので悪しからず。
0792デフォルトの名無しさんNGNG
readline と書くつもりで readlines って書いてるとか
0793デフォルトの名無しさんNGNG
>>789
おかしいな。
http://www.python.jp/pub/doc_jp/lib_2.3/match-objects.html
> group([group1, ...])
> マッチした1個以上のサブグループを返します。もし引数で一つであれば、
> その結果は一つの文字列です
というわけで文字列が返されるはずなんだけど。
buf = result.group(1)
の後に
print type(buf)
を入れると何と表示される?

>>792
readlines() はリストを返すと思はれ。
0794デフォルトの名無しさんNGNG
>>789
まさかmatchがNoneだったりしてないだろうな・・・
0795デフォルトの名無しさんNGNG
>>789
ヲレもmatch オブジェクトが None に +1

それはともかく、
> buf = result.group(1)
> buf = ""
> buf += string.lstrip(line)
これはなに?
buf で何をやりたいの?
0796デフォルトの名無しさんNGNG
$ python -c "None + ''"
Traceback (most recent call last):
File "<string>", line 1, in ?
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

>>782 にもどるけど、
buf を定義しているのは、
buf = result.group(1)
この場所が最初なの?

それ以前で、buf を定義していない?

それと、
result = h1.search(line)
とやったら、結果が変わると思われ。
0797デフォルトの名無しさんNGNG
>>787
One-linerで真似してみた。
python2.3 -c 'import urllib, htmllib, formatter, sys; \
p = htmllib.HTMLParser(formatter.AbstractFormatter(formatter.DumbWriter(sys.stdout))); \
p.feed(urllib.urlopen("http://www.python.jp/Zope/").read() + "<BR>"); \
print "\n".join(["[%d] %s" % (i+1, j) for i, j in enumerate(p.anchorlist)])'
0798794NGNG
>>796
あのさ、matchがNoneってのは、>>782で言えばresultがNoneということで、
buf = result.gourp(1)が実行されていないという可能性を指摘しているんですが。
それがどうしてNone + ''になるんですか?
0799デフォルトの名無しさんNGNG
皆さん親切にレスしていただいたのに、非常に申し訳ないのですが

buf = result.group(1),

と、なぜか後ろに , をつけてるのを見落としていました。こいつが
いけなかったようです。すいません。。

ついでに質問なんですが

# coding: EUC-JP
import textwrap
wrapper = textwrap.TextWrapper(width=100)
hoge = "文字列"
print hoge
print wrapper.wrap(hoge)

このスクリプトを実行すると、1行目は正常に表示されますが、2行目は文字化けします。
['\xca\xb8\xbb\xfa\xce\xf3']
こんな感じに。何かとんでもない使い方してるんでしょうか。
0800デフォルトの名無しさんNGNG
>>798
> resultがNoneということで、
> buf = result.gourp(1)が実行されていないという可能性

そんな可能性はありえない。

>>> None.group(1)
AttributeError: 'NoneType' object has no attribute 'group'

>>799
for line in wrapper.wrap(hoge):
  print line
とすればよいと思われ。wrapper.wrap() は文字列のリストを返す。

> ['\xca\xb8\xbb\xfa\xce\xf3']

厳密にはこれは文字化けではない。
日本語を含んだ文字列定数は普通このように表示される。
0801794NGNG
>>800
> そんな可能性はありえない。

あのさ、>>782の"if result:"の意味、わかる?
っていうか、ひょっとして釣りのつもりか?
0802デフォルトの名無しさんNGNG
盛り上がってまいりました。
0803デフォルトの名無しさんNGNG
buf = result.group(1)
のうしろにカンマが入ってたりして。
0804803NGNG
やべぇ、出遅れた
0805デフォルトの名無しさんNGNG
>>803-804
ひょっとして釣りのつもりか?
0806803NGNG
>>805
ほっといてくれよ
0807デフォルトの名無しさんNGNG
802 名前:デフォルトの名無しさん[sage] 投稿日:04/03/14 18:40 ID:eghUy09a
盛り上がってまいりました。

803 名前:デフォルトの名無しさん[sage] 投稿日:04/03/14 18:41 ID:eghUy09a
buf = result.group(1)
のうしろにカンマが入ってたりして。

804 名前:803[sage] 投稿日:04/03/14 18:41 ID:eghUy09a
やべぇ、出遅れた

805 名前:デフォルトの名無しさん[sage] 投稿日:04/03/14 18:45 ID:eghUy09a
>>803-804
ひょっとして釣りのつもりか?

806 名前:803[sage] 投稿日:04/03/14 18:49 ID:eghUy09a
>>805
ほっといてくれよ

0808デフォルトの名無しさんNGNG
サンクス。
>for line in wrapper.wrap(hoge):
>  print line
>とすればよいと思われ。wrapper.wrap() は文字列のリストを返す。
うまく出力できました。文字コードのことはあまりよく分かってないので
勉強の必要がありそうです。

最後の質問なんですが
re.gsub() で後方参照する方法が分かりません。

hoge = re.gsub("<a href=\"(.*)\">(.*)</a>","url:$1 \n title: $2",hoge)

みたいなことがしたいんです。よろしくおながいします。
0809デフォルトの名無しさんNGNG
>>801
> あのさ、>>782の"if result:"の意味、わかる?

なるほど。誤解してますた。
0810デフォルトの名無しさんNGNG
>>808
import re
hoge = '<a href="URL">ANCHOR</a>'
def rep(match):
return "url: %s\ntitle: %s" % match.group(1, 2)
print re.sub('<a href="(.*)">(.*)</a>', rep, hoge)
0811デフォルトの名無しさんNGNG
thread.start_new_threadで開始したスレッドを、
メインスレッドから任意のタイミングで殺したりしたいのですが、
スレッドIDが判明しててもそれをどうしたらいいのか分からない。
0812デフォルトの名無しさんNGNG
>>785
ところで、tupple.pyという名前の由来は?
0813785NGNG
(・∀・)えっ?
0814785NGNG
ああ、そうか。tuple ぢゃなくて list だよな。寝ボケてますた。
0815デフォルトの名無しさんNGNG
サンクスコ!
pythonには名前で後方参照できるナイスな機能があったんでつね。
0816デフォルトの名無しさんNGNG
他サイトのRSSを作成しようとしておりまして、itemの更新日付を取得したいと思っています。

import urlilb, time, rfc822
u = urllib.FancyURLopener()
url = "http://localhost/index.html"
lmdate = u.open(url).headers['Last-Modified']
date = time.strftime('%Y-%m-%dT%H:%M:%S', rfc822.parsedate(lmdate))
print date

こんな感じでやるとグリニッジ標準時間になっちゃうので東京のタイムゾーンにあわせたいのですが
rfc822.parsedate_tz()でタプルの値から9時間足して整形すればいいのはわかるのですが、そうなると処理がまわりくどくなります。
もう少し簡単な方法があるように思えますがいかがでしょうか。
0817デフォルトの名無しさんNGNG
タプルって素敵だよね
0818デフォルトの名無しさんNGNG
タプルタンハアハア(;´Д`)
0819デフォルトの名無しさんNGNG
たぷるたん擬人化きb
0820デフォルトの名無しさんNGNG
ウホッ、いいタプル
0821デフォルトの名無しさんNGNG
>>816
time.tzset() とかどう?
0822デフォルトの名無しさんNGNG
たぷるたんはimmutable。
変身するにはリスト君とのフュージョンが必要です。
だけどたぷるたんはお年頃。
リスト君とフュージョンするときのあの格好が
ちょっと恥ずかしかったりするのでした。
そんなある日、
0823デフォルトの名無しさんNGNG

817 名前:デフォルトの名無しさん[sage] 投稿日:04/03/15 13:40 ID:Kj0IOP58
タプルって素敵だよね

818 名前:デフォルトの名無しさん[sage] 投稿日:04/03/15 14:04 ID:Kj0IOP58
タプルタンハアハア(;´Д`)

819 名前:デフォルトの名無しさん[sage] 投稿日:04/03/15 14:15 ID:Kj0IOP58
たぷるたん擬人化きb

820 名前:デフォルトの名無しさん[sage] 投稿日:04/03/15 14:43 ID:Kj0IOP58
ウホッ、いいタプル
0824デフォルトの名無しさんNGNG
>>822

l = []
for i in tup:
  l.append(i)

こんなフュージョンの仕方は
たしかに恥ずかしいな(;´Д`)
0825デフォルトの名無しさんNGNG
class tupletan(tuple): pass
0826デフォルトの名無しさんNGNG
>>821

ttp://www.python.jp/pub/doc_jp/lib/module-time.html
にPython2.3から使えるようにあるんだけど

Python 2.3.3 (#1, Mar 14 2004, 12:40:47)
[GCC egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> dir(time)
['__doc__', '__file__', '__name__', 'accept2dyear', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']

使えないっす。glibcのバージョンとかも関係あるのかな。
0827デフォルトの名無しさんNGNG
>>824-825

class tupletan(tuple):
  def fusion(self):
    listkun = []
    for asoko in self:
      listkun.append(asoko)
    return listkun

・・・・・(((´д`;)))'`ァ'`ァ
0828デフォルトの名無しさんNGNG
l = [x for x in tpl]

長官 「見よ! これが我々の新しい必殺技,コンプリヘンシブ・フュージョンだっ!」
たぷるタン 「長官!」
0829デフォルトの名無しさんNGNG
スレの目的を見失っている
流浪のスレだな
0830デフォルトの名無しさんNGNG

            __,,,,_
            /´      ̄`ヽ,
            / 〃  _,ァ---‐一ヘヽ
         i  /´       リ}
          |   〉.   -‐   '''ー {!    。
          |   |   ‐ー  くー |  〜゚
           ヤヽリ /// ,r "_,,>、 ゚'}
         ヽ_」     ト‐=‐ァ' !
          ゝ i、   ` `二´' 丿
              r|、` '' ー--‐f´
         _/ | \    /|\_
       / ̄/  | /`又´\|  |  ̄\

皇太子様がたぷるタソに興味をお持ちになったようです
0831デフォルトの名無しさんNGNG
Pythonを実行してできたデータを保存しようとして保存方法を調べた所
色々と見付かりましたが使い分け方とか長所、短所とかがいまいちわかりません
こういうときにはこう、みたいなアドバイスをもらえませんか?
下に行く程速くなって大規模向けなのかなぁと思ってみたり

-普通にopen〜writeで書き込み
-pickleを使用
-データベースへアクセス
-CへのAPIで読み書き用の関数をCで書く
0832デフォルトの名無しさんNGNG
保存したデータをどうしたいかに依ると思われ。

> 普通にopen〜writeで書き込み
そのアプリだけで使うデータならこれでいい。あるいは、同じデータを
利用する別アプリでも同じ入出力処理を書く気があるなら可。

> pickleを使用
これはお手軽で良い。ただし、別アプリの方も Python に限定される。

> データベースへアクセス
別アプリが他の言語(Javaなど)だったりデータが大規模(スケーラ
ビリティが重要)だったりするなら RDBMS はいい選択肢。

> CへのAPIで読み書き用の関数をCで書く
これも Python に特化してるけど Python だけで書いたのでは遅い
場合に有効。まず Python で書いて、遅いところ(ボトルネックの
部分)だけ C の拡張にするのがいい。
0833デフォルトの名無しさんNGNG
追記。

> 普通にopen〜writeで書き込み
読み書きするデータを XML にするという選択肢も重要だと思った。
0834デフォルトの名無しさんNGNG
pickleって素敵だよね
0835デフォルトの名無しさんNGNG

(´∇`) たぷるタソ

[・∀・] リスト君

ヽ(*´ω≡∀・]ノ フュージョン!

[´∇`] mutableナノ♥
0836デフォルトの名無しさんNGNG

[for]ヽ(´∇`)ノ[in] スチャチャッ!!

−=≡[for≡*´ω`*≡in]≡=− コンプリヘンシブ・フュージョン!

説明しよう! コンプリヘンシブ・フュージョンとは、たぷるが可変オブジェクト
に変身するための究極の必殺技なのだ! たぷるがフュージョン・ポーズを取ると
for-in ブロックが全身を覆う! この間わずか0.01秒! さらにローカル変数に
エネルギーが充填され、たった0.2秒という驚異的なスピードでコンプリヘンシブ・
フュージョンは完了する!

[´∇`] mutableナノ♥
0837デフォルトの名無しさんNGNG
Dive into Python(http://diveintopython.org) の本、5月に出るようです。
http://www.amazon.co.jp/exec/obidos/ASIN/1590593561/

OnLine版のほうは中・韓の訳もあるんですね。
日本はRuby発祥の地ということでRuby優勢のようですが
ほかのアジアの国々ではどうなんでしょうか?
(Rubyは作者が日本人ということで2バイト文字の扱いにも強い、といわれもしますが)

CJKcodecsの作者は韓のひとなんだっけ?
0838デフォルトの名無しさんNGNG
> 日本はRuby発祥の地ということでRuby優勢のようですが
> ほかのアジアの国々ではどうなんでしょうか?

スレ違い。

> CJKcodecsの作者は韓のひとなんだっけ?

そそ。
0839デフォルトの名無しさんNGNG
>>82
date = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.mktime(rfc822.parsedate(lmdate)) - time.timezone))
0840↑NGNG
レス番号間違った。>>816宛っす。
0841デフォルトの名無しさんNGNG
>>826
tzset() が使えるシステムは UNIX 系のみって,
書いてなかったかな...
0842デフォルトの名無しさんNGNG
>>841
> [GCC egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)] on linux2
0843デフォルトの名無しさんNGNG
Python 2.3.3 (#1, Mar 14 2004, 18:23:33)
[GCC 2.95.3 20010315 (release) [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> dir(time)
['__doc__', '__file__', '__name__', 'accept2dyear', 'altzone', 'asctime', 'clock
', 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 's
trptime', 'struct_time', 'time', 'timezone', 'tzname', 'tzset']
>>>
0844デフォルトの名無しさんNGNG
Python 2.3.3 (#2, Feb 24 2004, 09:29:20)
[GCC 3.3.3 (Debian)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> dir(time)
['__doc__', '__file__', '__name__', 'accept2dyear', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname', 'tzset']
>>>
0845デフォルトの名無しさんNGNG
RedHat系でpythonて入力するとpython 1.5.*が起動するよねぇ。
0846デフォルトの名無しさんNGNG
>>845
RHLのバージョン何?
0847デフォルトの名無しさんNGNG
7かな?8ではどうか知らない。
>>846
ttp://www.python.jp/pipermail/python-ml-jp/2002-October/001933.html
ttp://www.cubelab.com/ymasuda/python/gadfly-jp/installation_jp.html
ttp://rakunet.org/TSNET/TSpython/9/291.html
0848デフォルトの名無しさんNGNG
>>839
できますた。サンクスコ。
0849デフォルトの名無しさんNGNG
>>811 「他のスレッドを殺す」
それはcomp.lang.pythonでよく見かける質問なのですが、そういうことはできないという回答以外はみたことがないです。ワークアラウンドとしては自殺を教唆する方法があり、具体的には例えばこんな感じでしょうか。
import sys
from threading import Thread, Event
from time import sleep

def Child(shouldQuit):
    i = 1
    while not shouldQuit.isSet():
        sys.stderr.write('child: %s\n' % ', '.join(['spam']*i))
        i += 1
        sleep(1.)
    else:
        sys.stderr.write('child: exitting now\n')

def main():
    shouldQuit = Event()
    child = Thread(target=Child, args=(shouldQuit,))
    child.start(); sys.stderr.write('main: started child\n')
    sleep(10.)
    shouldDie.set(); sys.stderr.write('main: set event\n')
    child.join(); sys.stderr.write('main: terminated child\n')

if __name__ == '__main__':
    main()
0850デフォルトの名無しさんNGNG
>>849
【誤】
    shouldDie.set(); sys.stderr.write('main: set event\n')
【正】
    shouldQuit.set(); sys.stderr.write('main: set event\n')
済みませ
0851デフォルトの名無しさんNGNG
たぷるタソは人気者だな。いいな。
ところで>>781のはStringBufferじゃなくてStringIOだよな。
まあJythonならどっちもあるけどな。
0852デフォルトの名無しさんNGNG
誰か虹絵にして。。。(´д`;)
0853デフォルトの名無しさんNGNG
端末から一文字だけ読み込んで、RETを待たずに戻ってくるにはどうしたらいいのかな。
termiosのマニュアルと
http://216.239.57.104/search?q=cache:lQJXcJ9HGoAJ:www.kt.rim.or.jp/~kbk/perl5.doc/perlfaq5.html+python+getc&hl=ja&lr=lang_ja&ie=UTF-8&inlang=ja
これを参考に下のようにしてみたのだけど、どうにも。
cursesを使うのは大袈裟だし。
def my_getc():
import termios
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO # lflags
new[6][termios.VTIME] = 1 # cc
try:
termios.tcsetattr(fd, termios.TCSANOW, new)
c = sys.stdin.read(1) # raw_inputも試した
finally:
termios.tcsetattr(fd, termios.TCSANOW, old)
return c
0854デフォルトの名無しさんNGNG
あれ、>>849がそのままのスペースで圧縮されてないのはなんで?
0855デフォルトの名無しさんNGNG
def my_getc():
  import tty, termios
  fd = sys.stdin.fileno()
  old = termios.tcgetattr(fd)
  try:
    tty.setcbreak(fd)
    c = sys.stdin.read(1)
  finally:
    termios.tcsetattr(fd, termios.TCSANOW, old)
  return c
これでよかったのか。スレ汚しスマソ。
0856デフォルトの名無しさんNGNG
たぷるタンのCVはこの娘でおながいします ttp://pya.cc/pyaimg/img/2003121008.wmv
0857デフォルトの名無しさんNGNG
この頭悪そうなのは誰?
0858デフォルトの名無しさんNGNG
きこうでんみさ
0859デフォルトの名無しさんNGNG
>>811
サブスレッド側の終了処理をメインからコールするだけやん
0860デフォルトの名無しさんNGNG
そろそろ次スレのスレタイでも考えるか。

Pythonがこの先生きのこるには?Part5

Pythonって死滅しちゃうの???Part5

Pythonなら俺に聞け!Part5

【たぷるタソ】Pythonお勉強レPart5【ハァハァ】

萌える!PythonプログラミングPart5

フリーザですよ。Pythonしなさい。Part5

Python!Python!のガイドラインPart5

やったーボクにもPythonできたよ!Part5
0861デフォルトの名無しさんNGNG
Pythonって死滅しちゃうの???Part5
に1票
0862デフォルトの名無しさんNGNG
この先生?
きのこるって動詞?
0863デフォルトの名無しさんNGNG
>>860
タイトルというより、あんたが考えてるのはネタだ・・・
0864デフォルトの名無しさんNGNG
すみません。
Pythonのこれ↓について解説してあるページをご存知でしたら紹介してください。

   C/C++アプリケーションへの組み込みが簡単
0865デフォルトの名無しさんNGNG
>>864
C++Builder なら Python for Delphi おすすめでつ
5分で組み込めます
0866デフォルトの名無しさんNGNG
>>865
どうやるんでつか?
0867デフォルトの名無しさんNGNG
>>859
どうやったらいいのん?
0868デフォルトの名無しさんNGNG
>>866
付属のTutorial.txt、分かりやすいので読むのが吉でつ。
高卒のおいらでも読めたので大丈夫だと思います。
0869デフォルトの名無しさんNGNG
日本語コーデックについて聞いた者です。
Linux上のpython2.3で、
ttp://130.158.86.5/~keiichi/diary/index.rdf
をeuc-jpに変換しようとしました。
>>> import urllib
>>> page = urllib.urlopen('http://130.158.86.5/~keiichi/diary/index.rdf')
>>> text = unicode(page.read(), 'utf-8')
>>> print text.encode('euc-jp')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  UnicodeError: EUC-JP encoding error: invalid character \u2014

この\u2014というのは
http://www.asahi-net.or.jp/~hc3j-tkg/unicode
で言っている事だと思いますが、これはどう対処すればいいでしょうか?
0870デフォルトの名無しさんNGNG
>>869
問題の文字を適当な別の文字に置換すればいいと思われ。

>>> print u"\uff21\u2014\uff3a".encode("euc-jp")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeError: EUC-JP encoding error: invalid character \u2014
>>> print u"\uff21\u2014\uff3a".replace(u"\u2014", u"\u2015").encode("euc-jp")
A―Z
>>>
0871デフォルトの名無しさんNGNG
たぷるタソの虹絵まだあ? マチクタビレターマチクタビレター (・∀・)っ/凵⌒☆チンチン
0872デフォルトの名無しさんNGNG
>>789
検索ってのは、こういうやつのことか?
ttp://2chlinux.dtdns.net/python_jp_search/
0873デフォルトの名無しさんNGNG
いみゅーたぶるしーけんす・たぷるタソ

がいしゅつスペックのまとめ:
名前:たぷるタソ
性別:おにゃのこ
年齢:?才
必殺技:
・フュージョン
 可変オブジェクトに変身するための技。ポーズがちょっと恥ずかしいらしい。
・コンプリヘンシブ・フュージョン
 高速フュージョン。0.2秒で完了するらしい。要 for-in ブロック。
サブキャラ:
・リスト君
 たぷるタソがフュージョンする時の補佐役。
・長官
 たぷるタソとリスト君のボス。ちょっと熱血ギミ。
・皇太子様
 中の人。とてもエラいらしい。

おい、お前ら!肝心の年齢が決まってませんよYO!何才がいい?
漏れは12才に+1。
0874デフォルトの名無しさんNGNG
>>873
何でもいいからさっさとネタスレつくってそっちでやれ。
0875デフォルトの名無しさんNGNG
>>873
新キャラ追加ヨロ

・番長
「何でもいいから〜やれ」が口癖。でも本当はたぷるタンが好き。

新スレタイは

【はきゅ〜ん】Python関係でハァハァするスレ【はきゅ〜ん】

ぐらいか?
0876デフォルトの名無しさんNGNG
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ      貴様ごときに釣られクマ━━━━━!!!!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_  番長\
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
0877デフォルトの名無しさんNGNG
はきゅんヤメレ。あの動画脳内消去したい。
0878デフォルトの名無しさんNGNG
馬鹿が一匹紛れ込んでるみたいだけど消えるか
ネタスレ立てそっちでやれ。
0879デフォルトの名無しさんNGNG
>>878
ムネオたんスレを復活させろと主張するのか!
0880デフォルトの名無しさんNGNG
>>868
http://www.zob.ne.jp/~hide-t/comp/python/tut-ja/
(・∀・)ドコ?ドコ?ドコニカイテアリマツカ?
0881デフォルトの名無しさんNGNG
>880
そっちではないとおもうにょろ。

Python for Delphiに附属してる文書にょろ。

ネタかにょろ?
0882デフォルトの名無しさんNGNG
>>881
にょろ->にょ
0883mand.py (1)NGNG
"""Mandelbrot set"""
# 2004-03-20, placed in the public domain.
from Tkinter import Tk, Canvas, PhotoImage
from math import log
from colorsys import hsv_to_rgb

def iteration(z, maxiter):
    c, i = z, 0
    while True:
        i += 1
        if i >= maxiter:
            return None
        z = z*z + c
        if abs(z) > 2.0:
            return i

def map_color(n):
    if n is None:
        return 'black'
    else:
        hue = log(n)*128%128/128
        val = 0.8 + 0.2*(n%2)
        return '#%02X%02X%02X' % tuple(
               [int(elem*255) for elem in hsv_to_rgb(hue, 1.0, val)])
0884mand.py (2)NGNG
def pixels(w, h, dx, dy, zoom, maxiter):
    zoom = float(zoom)
    for y in [(y-h/2)/zoom for y in range(h)]:
        yield '{'
        for x in [(x-w/2)/zoom for x in range(w)]:
            yield map_color(iteration(complex(x+dx, y+dy), maxiter))
        yield '}'

W, H, dx, dy, zoom, maxiter = 300, 300, -0.7454265, 0.113009, 5.0e4, 250

root = Tk()
img = PhotoImage()
img.put(' '.join(pixels(W, H, dx, dy, zoom, maxiter)))
can = Canvas(root, width=W, height=H, highlightthickness=0)
can.create_image((0, 0), anchor='nw', image=img)
can.pack()
root.bind_all('<Escape>', lambda ev:root.destroy())
root.resizable(False, False)
root.mainloop()
0885デフォルトの名無しさんNGNG
これ移植できますか?

Set theNatter = CreateObject("HNetCfg.NATUPnP")

Dim mappingPorts

Set mappingPorts = theNatter.StaticPortMappingCollection
'192.168.0.1を自身のプライベートアドレス
'12345を空けたいポートに
mappingPorts.Add 12345, "TCP", 12345, "192.168.0.1", TRUE, "XXX"
'mappingPorts.Remove 12345, "TCP"
MsgBox("Total number of ports after add is " & mappingPorts.Count)
0886デフォルトの名無しさんNGNG
非線形写像マニアくん、こんなのもあるよ。
ttp://www.pygame.org/pcr/mandelbrot/index.php
ttp://www.cs.unc.edu/Courses/comp144-s02/assignments/2/mandelbrot.py.html
ttp://www.eddaardvark.co.uk/python_patterns/mandj.html
0887デフォルトの名無しさんNGNG
>>885 藻マエはこんなことがしたいのかと。
ttp://www.icepick.info/2003/09/17/upnp_example.py
0888デフォルトの名無しさんNGNG

( ,,´ω`)っ888
0889デフォルトの名無しさんNGNG
socketモジュールで(間違って)存在しないホストに繋いだとき、
エラーがでるまでの時間を短縮したいんですが、そのような方法はありますか?
0890889NGNG
timeoutを使えばいいんですね。スレ汚しスマン
0891デフォルトの名無しさんNGNG
申し訳ありません一つ質問させて下さい
Mac OX10.3.3、Python 2.3の環境で

import EasyDialogs
EasyDialogs.Message("ほにゃらら")

で文字化けしてしまうのですが、どうしたら日本語表示できますか?
ネットで調べたり、文字コード変えたりと試したのですが…(つд`)デキナイヨー
0892デフォルトの名無しさんNGNG
文字コードを直接書くか、変換のコードを使用するしかないでしょう
0893デフォルトの名無しさんNGNG
漏れマカーじゃないんだけど、
間違いなく日本語使えるんだよね?>EasyDialogs
ユニコードで文字列渡したらどーなる?

EasyDialogs.Message(unicode("ほにゃらら", "euc-jp"))
0894891NGNG
>>892
すみません例えばどのようにすればいいですか?

>>893
OS9のときは使えたのですが、
OSXでは確認できませんでした・・・モウシワケアリマセン
ユニコードで渡したら
SyntaxError: invalid syntax
ってなりした(つд`)エラーデター
0895デフォルトの名無しさんNGNG
>>894
SyntaxErrorってことはプログラムの書き方が間違ってるよ(w
どういうコードを書いた?
0896891NGNG
カッコ抜けてました(^_^;)ゴメンナサイ
訂正してもう一度・・・
>>> EasyDialogs.Message(unicode("ほにゃらら","euc-jp"))
UnicodeError: EUC-JP decoding error: invalid character 0xe381 in JIS X 0208
一応utf8でも
>>> EasyDialogs.Message(unicode("ほにゃらら","utf-8"))
TypeError: Str255 arg must be string of at most 255 chars

つд`)マタエラーデス
0897デフォルトの名無しさんNGNG
> >>> EasyDialogs.Message(unicode("ほにゃらら","euc-jp"))
> UnicodeError: EUC-JP decoding error: invalid character 0xe381 in JIS X 0208

こういうエラーが出るってことは "ほにゃらら" の部分の文字コードは UTF-8 だね。

> >>> EasyDialogs.Message(unicode("ほにゃらら","utf-8"))
> TypeError: Str255 arg must be string of at most 255 chars

unicode("ほにゃらら","utf-8") は正しい unicode オブジェクトのはずだから、
TypeError になるってことは EasyDialogs.Message は unicode オブジェクトを
受け付けない、つまり

   全  然  ダ  メ  ポ

ってことだね(w
0898891NGNG
>>897
ダメダメですかぁ(´・ω・`)ショボーン
お教えいただきありがとうございました
つд`)オサワガセシマシタ
0899デフォルトの名無しさんNGNG
unicode オブジェクトを受け付けないなら、文字列オブジェクトにデコードするとか。

ファイルの文字コードが UTF-8、Message() の受け付ける文字コードが EUC-JPだとして、
EasyDialogs.Message(unicode("ほにゃらら", "utf-8").decode("euc-jp"))
とか(文字コードは環境に合わせて適宜読み替えて下さいな)。

更に、ダイアログのフォントが欧文になっている可能性もある。
0900891NGNG
>>899
AttributeError: 'unicode' object has no attribute 'decode'
エラーで動かないです(つд`)マタマタエラー
ダイアログのフォントいじるには、
どうすればいいんでしょうか?
0901デフォルトの名無しさんNGNG
>>900
すんません deocde じゃなくて encode でした(_ _)
0902891NGNG
>>901
euc-jp、utf-8、sjisどれも文字バケバケでした・・・
つд`)ナンダカモウシワケナイ
0903891NGNG
すみません解決シマシタ
AppleScriptの文字化けの直し方を真似したら
一応日本語表示できました。つд`)ヤットデキター
(ちなみに文字コードはsjisでした)
アリガトウゴザイマシタ(TдT)
0904デフォルトの名無しさんNGNG
Pythonで比較的大きなゲームを作ってみたいのですが、
おすすめの本とかありますか?
0905デフォルトの名無しさんNGNG
洋書ならこのふたつが該当。

Game Programming With Python, Lua, and Ruby
  ttp://www.amazon.co.jp/exec/obidos/ASIN/1592000770/

Game Programming With Python (Game Development Series)
  ttp://www.amazon.co.jp/exec/obidos/ASIN/1584502584/

和書はこれで全部・・・たぶん。ゲームに特化した本はない。
  ttp://www.python.jp/Zope/links/python_books

て、今気づいた。Lightweit Languageの本が出るんだ・・・
以前やった、LL Saturdayと関係あるのかな。
0906デフォルトの名無しさんNGNG
>>905
> て、今気づいた。Lightweit Languageの本が出るんだ・・・
> 以前やった、LL Saturdayと関係あるのかな。

ASCIIのサイトにおもいっきりそう書いてあるじゃん。
あと、柴田さんのCOREBlogに本の写真が載ってるよ。

・・・ちょっとまてよ、HaskellってLLか?(板違い
0907デフォルトの名無しさんNGNG
>>906
> ・・・ちょっとまてよ、HaskellってLLか?(板違い
それは板違いじゃなくてスレ違いだろう。
というわけで逝ってらっしゃい。↓へ。
http://pc2.2ch.net/test/read.cgi/tech/1076418993/

しかしHaskellも載ってるのか……。
ちょっと読みたいかも。
0908デフォルトの名無しさんNGNG
目次とかってどこかにでてる?
0909デフォルトの名無しさんNGNG
>>908
ざっと調べたが、見つからん。
出版社のサイトはダメダメだし。

てか、LLMってMagazineだから雑誌? それとも実はムック?
いずれにしろオンライン書店には載りづらいしなぁ・・・。
0910デフォルトの名無しさんNGNG
どうせ今週末には出るんだし、それまでの辛抱。
ついでに来週頭には、クイックリファレンスも出るね。
0911デフォルトの名無しさんNGNG
cursesの事で質問です。
これって描画する時、XのKterm上ではCOLOR_WHITEが灰色で見ずらいんですが
どうすればいいですか?curses.can_change_color()がFALSEで
init_color()もできない。

X上では背景が水色で黒文字ぐらいしかうまく表示できないから、
実質使いものにならないのかなあ。
0912デフォルトの名無しさんNGNG
Pythonでどうにかなる問題かなぁ。素直にcolor ktermを使ったら?
0913デフォルトの名無しさんNGNG
Kterm に色が出るのと出ないのとがあるの?

漏れの Kterm (赤帽の kterm-6.2.0-28) では
curses.start_color()
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
stdscr.addstr(1,1, "spam", curses.color_pair(1))
とやったらちゃんと白地に赤の文字が出たよ。
0914デフォルトの名無しさんNGNG
>>912
ktermは普通に色が付いていますが?色指定してaddstr()は特に問題ありませんが、
白だけは灰色です。多分コンソール上の白の色設定をそのまま持ってきているようです。
demoフォルダのサンプルを試しても当然同じです。

現在のシェル上の色設定をそのまま引き継げる方法でもあればいいのですが。
RSSや2chのdatファイルのビューワーのを作ってみたかったのですが、
これではカーネルやネットワークの設定コマンドみたいな画面になってしまいます。
メーリングリスト見ても、curses自体の話題が5件のみ。

他に端末表示のライブラリありましたっけ?slangのバインディングみたいのが
ありましたがドキュメントが見付かりませんでした。
0915913NGNG
漏れの環境ではコンソールの文字は灰色だけど Kterm ではちゃんと白色が出てるよ。
何が違うのかな。
0916914NGNG
>>913
Debian Linuxのkterm6.2.0です。設定ファイルに問題があるのかもしれません。
色関係はデフォルトで使っているはずですが。
0917913NGNG
スマソ。よくよく見たら灰色だった。逝ってきm(NO CARRIER
0918デフォルトの名無しさんNGNG
解決しました。
.Xresourcesに
KTerm*VT100*textColor7: LightGray
の1行を追加。デフォルトはgray80みたいです。
whiteでもいいのですが、Chaliceがまぶしくなるのでライトグレイ。
Python単独での変更はは無理かもしれませんね。
0919デフォルトの名無しさんNGNG
よくサンプルのメインルーチンの先頭で
if __name__ == '__main__':
function()
等をやっていますがそのメリットがいまいちわかりません
教えてエライ人

0920デフォルトの名無しさんNGNG
>>919
スクリプト言語でよくやる手法。
サンプル自体をインタプリタの第一引数に指定して実行すると、
その条件が真になる。インクルードしたときなどには、負になる。
0921920NGNG
>>919
ちなみにPerlだとこう書く。(スレ違いだが、表現が似ているのは分かると思う)

function() if __FILE__ eq $0;

Rubyなんかでも似たような定型句がある。知ってて損は無いぞえ。
0922デフォルトの名無しさんNGNG
>>919
主にライブラリとして import して使うモジュールのテスト用ルーチンを書いておくのに便利。

import せず直接使うのに限るファイルなら

if __name__ == '__main__':

は不用。
0923デフォルトの名無しさんNGNG
>>920
> その条件が真になる。インクルードしたときなどには、負になる。

それじゃどっちも真じゃん!

真の対義語は、偽、な。
0924デフォルトの名無しさんNGNG
>>920
おまえの負け
0925デフォルトの名無しさんNGNG
つかインクルードとか言ってる時点でアウト
0926デフォルトの名無しさんNGNG
書きこみテスト
0927デフォルトの名無しさんNGNG
復旧したね。
0928デフォルトの名無しさんNGNG
質問が消えてしまった。

curses.textpadやcursesで日本語を入力する方法を教えて下さい。
getch()はキー入力1文字だけ捕捉なのでうまくいきません。
調べてみてもskkなど特殊なものしか例がなかったです。
0929デフォルトの名無しさんNGNG
926 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25 14:51
Pythonの場合requireだろ?

927 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25 15:14
>>926
cat だよ.

928 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25 16:10
useだってば

929 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25 16:30
.だろ。

930 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25 16:35
おめーらくだらねぇ論議してるヒマあったら早くOpenMotifとOpenCOBOL使ってCOBOL版かちゅーしゃ作れよ!
うるせー.NET野郎!
キレェオだろ?お前なんで所詮はキレェオなんだろ?
早く言えよ!カミングアウトしちまえよ!
抜くぞ?いいのか?抜かれちまうぞ?本当にいいんだな?絶対だな?
証拠出せよ!早く出せよ!
六角クランクと四角クランクの互換性が無い事くらいド素人でもしってるんだよ!
それを何が飼育係だ?糞以下!うんこ未満!ベクトル演算装置に土下座して謝れよ!馬鹿!
日9ゲそえよ!見えねーじゃねぇだんろ?う?あ?あ?あ?

931 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25 17:21
>>930
もちつけ。キレェオ山タソかあんたは。

0930デフォルトの名無しさんNGNG
932 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25 17:48
そこでまたブチ切れですよ。

933 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25 20:31
cursesライブラリの質問をしている者ですが、これの日本語入力のやりかたを教えて下さい。
getch()ではうまくいかないし、特にcurses.textpadで入力を可能にしたいです。
curses.meta()あたりか、unicodeに変換してごそごそやるのか。。
あとは文字の折り返しでの文字化け対策もかんがえなきゃいけないな。

日本語(というか2バイト文字)のcursesライブラリのいいサンプルしりませんか?

934 名前:デフォルトの名無しさん[sage] 投稿日:04/03/26 02:37
>>933
redhatのanacondaなんか参考にならんかな?
中身みたことないけどね。

935 名前:デフォルトの名無しさん[sage] 投稿日:04/03/26 07:12
>>930
議論はあまり行われておらず、どちらかというとくだらない雑談と質問でしょう。

936 名前:デフォルトの名無しさん[sage] 投稿日:04/03/26 12:57
>>934
slang使っているみたいでした。

0931デフォルトの名無しさんNGNG
某所でもうわさになってましたが、新しい nutshell はどのあたりが2.3対応なんでしょうか?
実際に購入して気づいたひとはいますか?
0932デフォルトの名無しさんNGNG
さっき買ってきました. 全くの初心者には向かず,他の言語も含めて小規模の
プログラムを書いた 経験のある人向け,実践的に Python を使いたい人向けの
本に思えました. 「Python テクニカルリファレンス」と同じような位置づけです.
2.3 の対応状況は以下の通り(o: 載っている x: ほぼ確実に載っていない):
1 PEP 218: A Standard Set Datatype ... x
2 PEP 255: Simple Generators ... o (p81)
3 PEP 263: Source Code Encodings ... ?
4 PEP 273: Importing Modules from Zip Archives ... x
5 PEP 277: Unicode file name support for Windows NT ... x
6 PEP 278: Universal Newline Support ... o (p230)
7 PEP 279: enumerate() ... x
8 PEP 282: The logging Package ... x
9 PEP 285: A Boolean Type ... o (p47)
10 PEP 293: Codec Error Handling Callbacks ... x
11 PEP 301: Package Index and Metadata for Distutils ... o (p681)
12 PEP 302: New Import Hooks ... x
13 PEP 305: Comma-separated Files ... x
14 PEP 307: Pickle Enhancements ... x
15 Extended Slices ... o (p57)
16 Other Language Changes ...
ほとんど x (作者のAlexが提案した sum() も入っていない!)
16.1 String Changes ... x
16.2 Optimizations ... x
17 New, Improved, and Deprecated Modules ... x
17.1 Date/Time Type ... x (mx.DateTime を取り上げている)
17.2 The optparse Module ... x
18 Pymalloc: A Specialized Object Allocator ... x
19 Build and C API Changes ... x
19.1 Port-Specific Changes ... x
20 Other Changes and Fixes ... ほとんど x
0933デフォルトの名無しさんNGNG
>>932
サンプルコードが原書とことなり、2.3ベースでかかれているとかそういったことは
ないということですか?

2.3対応といっても、たとえばジェネレータの説明で
「2.3以降ではfrom... はいりません」
とちょっとした一行コメントがついているとか、その程度?
0934デフォルトの名無しさんNGNG
>>933
サンプルコードが 2.3 ベースで書かれている,ってどういう意味ですか?
原著を全然読んでいないからよく分からないんですが,ほとんど 2.2 でも
2.3 でも動くコードみたいですよ.とはいえ,if 文に True/False を
使っているコードはいくつかあるようです.

ジェネレータの説明は,まさにそんな感じでした.が,訳注でつけた文章では
ないようです.原著も同じように書いてあるのでは?
0935デフォルトの名無しさんNGNG
>>934
> サンプルコードが 2.3 ベースで書かれている,ってどういう意味ですか?
2.3ではいったものを使えば簡単になる部分があれば書き換えるという意味です。

原著との違いは、ソースコードはいじらずにコメント的な補足説明が追加されていると理解すればいいのかな?
もちろん、英語が日本語になっているというのもあるだろうけど。
0936デフォルトの名無しさんNGNG
>>933
> 2.3ではいったものを使えば簡単になる部分があれば書き換える
932にも書いたように, enumerate() や csv や sum() や Set は
そもそも取り上げてないし,サンプルにも入ってないようです.
だいたいそんなことをしたら 2.2 ユーザが理解不能なコードが多くなって
こまるんじゃないのかなぁ. 2.3 ユーザ専用の本じゃないと思いますよ.

> 原著との違いは、... 追加されていると理解すればいいのかな?
さぁ...原書もってないから知りません.細かい書き方が気になるなら本屋で
調べてください.

「2.3 ユーザにも役立つし,2.1 以降の全てのユーザにおすすめできるが,
2.3 を完全網羅した本ではない」と思います.
0937デフォルトの名無しさんNGNG
>>929-930
復旧乙ディス!! ウェーイ!!
0938デフォルトの名無しさんNGNG
pythonで”Hit Any Key”みたいなトリガー処理ってどうやるんですか?
0939デフォルトの名無しさんNGNG
>>938
パンツを脱ぐ
0940デフォルトの名無しさんNGNG
>>938
try:
  raw_input("Hit Enter to continue (or Ctrl-C to abort)\n")
except (KeyboardInterrupt, EOFError):
  # abort
  return False
# continue
return True

とか。文字通り「任意のキー」にしたいなら curses 等を使う必要があると思われ。
0941デフォルトの名無しさんNGNG
>>939
トリガーが萎れてました
処理できないです
0942デフォルトの名無しさんNGNG
>>939
パンツを脱いだところで母がいきなり部屋のドアを開けるという例外が発生しました。
どのように例外処理を記述すればいいですか?
0943デフォルトの名無しさんNGNG
| try:
| book = self.bed.get_item(dir=UNDER)
| self.serve_forever(book)
| except:
| self.mother.destroy(book)
0944デフォルトの名無しさんNGNG
>>942
開き直って raise しとけ。
0945デフォルトの名無しさんNGNG
クイックリファレンス、訳が怪しい。

True と False が 1 と 2 になっていたり、0 と 1 になっていたり。
0946デフォルトの名無しさんNGNG
Linux上でのRSSリーダーってlifereaぐらいしか日本語が通るのがないのでPython製を探して
日本語が通るようにしようと思いました。でもwxPythonで作られたpearsとzaobaoは
Unicodeが可能になっていないと、wxHTMLに日本語が通らない。
しょうがないのでpython/Tkを探して日本語が通るようにしてみますた。
http://montpython.s13.xrea.com/file/newsfeed1.2j.tar.gz
シンプルですが、当分はこれでいいかな。
0947デフォルトの名無しさんNGNG
'\x61'を'a'に変換するPythonらしい方法はありますか?
0948デフォルトの名無しさんNGNG
>>947
質問の意図が分からない。
その二つは文字列リテラルとしては等価だよ。

>>> '\x61' == 'a'
True
>>>
0949デフォルトの名無しさんNGNG
print chr(0x61)
print ord('a')
ttp://www.python.jp/pub/doc_jp/lib/built-in-funcs.html
0950デフォルトの名無しさんNGNG
>>948
リテラルとしては同じもだったんですね。
'MZ\x90\x00\x03\x00\x00\x00\x04\x00'のような文字列があったのですが、
英数字や記号以外はreprの際に'\x..'とあらわされているだけなのか、、、
すんまそ。
0951デフォルトの名無しさんNGNG
そろそろ新スレかも。
0952デフォルトの名無しさんNGNG
次スレは>>875のスレタイ案でよろしく。
0953デフォルトの名無しさんNGNG
ここまでの集計

Pythonがこの先生きのこるには?Part5
0票

Pythonって死滅しちゃうの???Part5
1票

Pythonなら俺に聞け!Part5
0票

【たぷるタソ】Pythonお勉強レPart5【ハァハァ】
0票

萌える!PythonプログラミングPart5
0票

フリーザですよ。Pythonしなさい。Part5
0票

Python!Python!のガイドラインPart5
0票

やったーボクにもPythonできたよ!Part5
0票

【はきゅ〜ん】Python関係でハァハァするスレ【はきゅ〜ん】
1票
0954デフォルトの名無しさんNGNG
どのスレタイも悲惨だなぁ・・・でもどれかを選べといわれれば
フリーザですよ。Pythonしなさい。Part5
0955デフォルトの名無しさんNGNG
たぷるタソハァハァ
0956デフォルトの名無しさんNGNG
【コルト】Python【モンティ】Part5
0957デフォルトの名無しさんNGNG
【牌】Python【孫】Part5
0958デフォルトの名無しさんNGNG
>>957
孫→尊で+20サマディ
0959デフォルトの名無しさんNGNG
【たぷるタソ】Pythonお勉強レPart5【ハァハァ】
+1
0960デフォルトの名無しさんNGNG
【たぷるタソ】Pythonお勉強レPart5【ハァハァ】
+1

3票で断トツだし決まりっしょ。
0961デフォルトの名無しさんNGNG
【はきゅ〜ん】Python関係でハァハァするスレ【はきゅ〜ん】

たぷるタンってこんなの?
ttp://www.42ch.net/UploaderAnime/source/1081166016.jpg
0962デフォルトの名無しさんNGNG
はきゅ〜んは勘弁……。あの頭悪そうな女が脳内再生されちまった。
0963デフォルトの名無しさんNGNG
たぷるっていう意味を知らないが>>961のうpでたぷる決定(;´Д`)ハァハァ
0964デフォルトの名無しさんNGNG
どこがtupleなのかさっぱりなんだけど。
ttp://www.42ch.net/UploaderAnime/source/1081166680.jpg
0965デフォルトの名無しさんNGNG
>>961と>>964のおにゃのこ、どこから誘拐してきたの?
ちゃんと描き起こしたたぷるタソきぼんぬ〜。
0966__初心者__NGNG

Python初心者なのですが、>>952-965はPythonに関係ありますか?
初心者なので、教えてください。
0967デフォルトの名無しさんNGNG
後腐れがないように、ここはPython自信にスレタイを決めてもらおう。
ということで、
↓スレタイ決めるプログラムをささっと書いてくれ。
0968デフォルトの名無しさんNGNG
>>966
あと半年ROMれ。
0969デフォルトの名無しさんNGNG
(´∇`)ノPythonのお勉強 Part5ヽ[・∀・]
0970デフォルトの名無しさんNGNG
Tuple, tuple!!
ttp://www.42ch.net/UploaderSmall/source/1081263370.jpg
0971デフォルトの名無しさんNGNG
新スレ

【たぷるタソ】Pythonのお勉強 5【ハァハァ】
http://pc5.2ch.net/test/read.cgi/tech/1081264387/
0972デフォルトの名無しさんNGNG
>>970
ワラタ
0973デフォルトの名無しさんNGNG
>>970さんnice
0974デフォルトの名無しさんNGNG
>>969 これいいな。これにしてよ。
0975デフォルトの名無しさんNGNG
>>974
もう次スレ立ってるよ。二つも(藁
0976nyo.pyNGNG
import codecs

ENCODING = "EUC-JP"

encode, decode, BaseStreamReader, BaseStreamWriter = codecs.lookup(ENCODING)

class Codec(codecs.Codec):
    def encode(self, data, errors="strict"): # unicode to string
        data = data.replace(u"\u3002", u"\u306b\u3087\u3002")
        data, size = encode(data, errors)
        return data, size
    def decode(self, data, errors="strict"): # string to unicode
        data, size = decode(data, errors)
        data = data.replace(u"\u3002", u"\u306b\u3087\u3002")
        return data, size

class StreamReader(Codec, BaseStreamReader):
    pass

class StreamWriter(Codec, BaseStreamWriter):
    pass

def getregentry():
    return Codec().encode, Codec().decode, StreamReader, StreamWriter

if __name__ == "__main__":
    import sys
    sys.stdout = codecs.EncodedFile(sys.stdout, ENCODING, "nyo")
0977デフォルトの名無しさんNGNG
$ python2 -i nyo.py
>>> print """\
... 埋め立てのためにこの前作ったスクリプトうpしとく。
... みんなも自慢のヤシをはって欲すぃ。
... じゃあ、あとよろしく。
... """
埋め立てのためにこの前作ったスクリプトうpしとくにょ。
みんなも自慢のヤシをはって欲すぃにょ。
じゃあ、あとよろしくにょ。

>>>
0978デフォルトの名無しさんNGNG
よーし、パパも新スレ立てちゃうぞー
0979デフォルトの名無しさんNGNG
そこでまたブチ切れですよ。
0980デフォルトの名無しさんNGNG
お前らな、「ぱいそん!ぱいそん!」っていいたいだけちゃうんかと。
0981デフォルトの名無しさんNGNG
もう見てらんない。
0982デフォルトの名無しさんNGNG
てゆーか、眞子さまじゃねーか
>>961
>>964
おまいら不敬罪だぞw

ttp://natu-mikan.hp.infoseek.co.jp/index02.html
0983デフォルトの名無しさんNGNG

(´・∀・`)ヘェー
0984デフォルトの名無しさんNGNG
>>982
つーか美化しすぎ。現実見れ。
0985デフォルトの名無しさんNGNG
>>982
気付くの遅いよ(w
0986デフォルトの名無しさんNGNG
ネタスレにするなら
>(´∇`)ノPythonのお勉強 Part5ヽ[・∀・]
の方が良かったのぅ…
0987デフォルトの名無しさんNGNG
漏れは
番長避けに
【はきゅ〜ん】
が良かった
0988デフォルトの名無しさんNGNG
パッキュンワッ!
チュッチュ〜ン♪
0989デフォルトの名無しさんNGNG
微妙に堀江に似てるとオモタ
0990デフォルトの名無しさんNGNG
よかったらこれいれれ。
Pythonスレ過去ログ全文検索
http://2chlinux.dtdns.net/2ch-program-python
Python日本語化ドキュメント全文検索
http://2chlinux.dtdns.net/python_jp_search
0991デフォルトの名無しさんNGNG
タプルを捜すためだけで Python を入れた漏れって orz
0992デフォルトの名無しさんNGNG
そんな好奇心旺盛なあなたが好き。
0993デフォルトの名無しさんNGNG
タプルタン
ハアハア(;´Д`)

ttp://natu-mikan.hp.infoseek.co.jp/img02/038.jpg
0994デフォルトの名無しさんNGNG
(゚∀゚)tuple!
0995デフォルトの名無しさんNGNG
絵はいいけど別人だと思うと感情移入できないにょ。
だれか〜たぷるタソの虹絵きぼんぬきぼんぬ〜。
0996デフォルトの名無しさんNGNG
リアルタプルタン
ハアハア(;´Д`)

ttp://cgi.f22.aaacafe.ne.jp/~ochn/och/img/1452.jpg
0997デフォルトの名無しさんNGNG
>>996
クリが見えてる(;´Д`)ハァハァ
0998デフォルトの名無しさんNGNG
>>996
immutableなのに
変更を加えようとすると
切ない顔でたしなめられる

ハアハア(;´Д`)
0999デフォルトの名無しさんNGNG
自分の好きなキャラ/人をあげてるだけじゃないのかと。>たぷるタン候補
1000デフォルトの名無しさんNGNG
999げっとおおおおお
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。