1 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:20:45 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、 お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>950 辺りで 前スレ くだすれPython(超初心者用) その4 pc12.2ch.net/test/read.cgi/tech/1243160751/ 関連スレ Pythonのお勉強 Part35 pc12.2ch.net/test/read.cgi/tech/1253535109/
301 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:59:44 ] (lambda v: otherfunction(v) if v)(largefunction(arg))
302 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:01:24 ] ダメじゃん (lambda v: otherfunction(v) if v else None)(largefunction(arg))
303 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:02:05 ] >>301 SyntaxError: invalid syntax
304 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:04:14 ] lambda のコストってどんなもんなん?
305 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 04:00:20 ] 素直に3行で書きましょう
306 名前:293 mailto:sage [2009/11/19(木) 04:12:55 ] 誰か教えてくれよ!
307 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:06:09 ] 見たことあるよ でも忘れたよw
308 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:13:24 ] 辞書でd3 = d1 + d2見たいな操作できないの? 今は以下のようにやってるんですが、不便です。 pyhotnを触り始めてまだ日が浅いので、足りない知識が多いかと思いますが、よろしくお願いします。 tmp = d1 tmp.update(d2) d3 = tmp
309 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:17:35 ] ttp://www.koders.com/python/fid90CE0CDD808CCE258E869074C8C9B17E002A531E.aspx?s=email.Message#L10
310 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:19:08 ] >>308 過去スレにあったと思う
311 名前:308 mailto:sage [2009/11/19(木) 05:24:34 ] ありがとうございます。探してみます。
312 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:27:00 ] 過去スレの結論は d3 = d1 d3.update(d2) だったような気がするw
313 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 09:43:53 ] もしくは、 d3 = dict(d1, **d2) だっけかな。
314 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 20:29:32 ] feedparserでパースしたtitle要素をwxpythonのListbox内に挿入したいのですが どうすればいいのでしょうか?
315 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:46:18 ] システムのパスデリミタを気にせずに、ディレクトリ名やファイル名を結合する方法はありますか? 分割する方は割りと簡単にできたのですが、結合がよくわかりません。
316 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:55:02 ] os.path.append
317 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 09:01:37 ] できました。ありがとうございます。
318 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 17:19:47 ] os.path.join ?
319 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:39:04 ] >>294 if largefunction(arg): otherfunction(0)
320 名前:320 [2009/11/20(金) 23:01:19 ] wxPythonを使ってGUIツールを作っています。 自分の開発環境PCでは問題なく動作しているのですが、 wxPythonをインストールしていないPCで実行すると、 「ImportError: No module named wx」が出ます。 プログラムを実行させるには、 PCにwxPythonをインストールするしかないのでしょうか?
321 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:16:11 ] そうだね。 ImportErrorをキャッチして メッセージを出すのもありかも。
322 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:32:20 ] py2exe
323 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 00:49:33 ] def Plus(args): 〜 def Hoge(cmd = 'Plus'): globals()[cmd](〜) は出来るのですが、Plus関数をHogeの内部に記述するとキーが見つからないと起こられてしまいます。 globals()をlocals()に変えてもダメでした。 関数内関数を文字列で指定して実行するにはどうすればよいのでしょうか?
324 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 00:59:36 ] 駄目な方のソースも載っけてみ
325 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:04:15 ] 駄目な例 def Hoge(cmd = 'Plus'): globals()[cmd](〜) def Plus(args): 〜 もしかしたらと思い、以下のようにしたらエラーになりませんでした。 def Hoge(cmd = 'Plus'): def Plus(args): 〜 globals()[cmd](〜) 先に定義しておかないとダメってことでしょうか?
326 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:24:31 ] Yes 上から下に向かって実行されるから。 > def Plus(args): > 〜 の意味は、〜を解析してPlusという名前の関数で登録しろという意味の実行文。 実行されなければ、存在することが出来ない。
327 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:37:18 ] なんか前も見た流れだな C はコンパイラはとにかくコンパイルして リンカが頑張って名前解決してるから 順序とかどうでも良くなってる 一方で Python の def/class は代入式だと思っていい
328 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 07:39:23 ] >C はコンパイラはとにかくコンパイルして >リンカが頑張って名前解決してるから >順序とかどうでも良くなってる いや ヘッダがあるから大丈夫なだけで Cも順序が逆だと プロトタイプが無いエラーになるか 暗黙の型定義で代用される
329 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:29:03 ] あるプログラム(A)の出力をpythonプログラム(B)で読み込みたいのですが import sys if __name__=='__main__': while True: l = sys.stdin.readline() if len(l) == 0: break print '>', l, print 'fin' とした場合、(B)だけで実行すると望んだ結果が得られるのですが、 > (A) | (B) とすると fin close failed in file object destructor: Error in sys.excepthook: Original exception was: 最後のfinだけが表示されてエラーが出てしまいます。 パイプで繋げた標準入力から1行ずつ読み込むにはどうすればいいでしょうか?
330 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:41:57 ] Windowsだとパイプで変な挙動をすることがあったような 環境書いたほうがいいよ で、もしWindowsなら > A | python B で試してみる
331 名前:329 mailto:sage [2009/11/21(土) 11:49:50 ] 環境はWindowsXP SP3です。 >>330 の方法で試したら望んだ結果になりました。 ありがとうございました。
332 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:16:25 ] float返すC++の関数があり、それをあるPythonのラッパーが呼び出します。 この返り値をunittestのassertEqualでテストしたいのですが、 assertEqual(3.141592, その関数()) とやると、第1引数は倍精度、第2引数は単精度になり、比較結果が一致しません。 assertAlmostEqualを使わないで、第1引数を単精度にする方法はあるでしょうか。
333 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:48:17 ] それ精度の問題じゃないよ
334 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:52:51 ] じゃあ何の問題なんだよ…はっきり言え
335 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:55:45 ] numpyあたり単精度も扱ってくれたりしないのかな 使ったことはまったくないが
336 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:30:01 ] 浮動小数点数でassertEqualするのが間違いだろ
337 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:02:51 ] 間違いってことはあるまい。 浮動小数点数なんてCPUが違うと結果違うのは当たり前だし、 x86なんかFPUを使うかSSEを使うかで結果違ってくるし、 言語によっても浮動小数点数の扱いが広げ方や丸め方が違うし、 最適化のかけ方によっても結果が変わってくるし、 そういうのをテストで弾きたいって意味でしょ? となると、弾かれたのはまさに期待通りなわけだが。
338 名前:デフォルトの名無しさん [2009/11/21(土) 19:02:29 ] ahoが湧いてる
339 名前:デフォルトの名無しさん [2009/11/21(土) 19:06:19 ] assertEqual('3.141592', '%8.6f' % その関数())
340 名前:332 mailto:sage [2009/11/22(日) 08:21:04 ] ありがとうございます。 書き方が悪かったですが、第2引数は3.141592を計算した結果返すのではなく、 単精度で与えられた3.141592をそのまま単精度で返すだけです。 getterとsetterのテストをしています。 極端には、 float func(float val){ return val;} みたいなのがあって、 assertEqual(3.141592, func(3.141592)) とやると弾かれるというわけです。
341 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 08:27:40 ] assertEqual(func2(3.141592), func(3.141592))
342 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 13:58:31 ] www.atmarkit.co.jp/fcoding/articles/tengoku/04/shibata_a.html
343 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:52:08 ] URLから嫌な悪寒が
344 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:32:32 ] 本人乙
345 名前:332 mailto:sage [2009/11/23(月) 10:41:09 ] >>341 func2のユニットテストはどうやるのでしょうか。
346 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:07:09 ] 今までの経緯を見ると 必ずしもリップサービスではなくて 本当にそのつもりで頑張っているような気もする。 目標10割、達成6割でOKというのが アメリカ人の感覚なのかな。
347 名前:デフォルトの名無しさん [2009/11/23(月) 15:07:15 ] 正規表現使ってレクサ書こうとして def lex(input): if re.match(r'\d+', input): return "digit" elif re.match(r'\w+', input): return "ident" elif re.match(r'[+\-*/=@&|^~]+', input): return "operator" else: return "error" みたいにしようと思ったけどこれだとマッチした結果が使えない こんなとき普通はどうするもん?
348 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:10:48 ] def lex(input): pat = ( (r'\d+', 'digit'), (r'\w+', 'ident'), (r'[+\-*/=@&|^~]+', 'operator'), ) for p in pat: m = re.match(p[0], input) if m: return p[1], m else: return "error"
349 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:11:49 ] インデント消えたけど最後の else: は if じゃなくて for の else なので注意してね
350 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:04:38 ] >>348 サンクス参考にしてみる
351 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 19:06:50 ] 誰かが書いたPythonのコード読んでいいところをマネしたいので 参考になるコードを知っている方いましたら教えてください 一通り入門書を読み終えた程度のものなのであまり大規模ではないものを まずは見たいと思っています。バージョンは2でも3でも読めます よろしくお願いします
352 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 19:21:11 ] 標準ライブラリ
353 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 19:21:50 ] >>351 SourcrForgeで、関心がある分野(画像処理、とか)のプロジェクトのソースをダウンロード。 その次は、プロジェクトにパッチを送ってみる。 ttp://sourceforge.net/search/?type_of_search=soft&words=python
354 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:29:15 ] def FeedBtn(self, event): feedlist=[line for line in file("feedlist.txt")] tlist = [] for feedurl in feedlist: feed=feedparser.parse(feedurl) for e in feed.entries: feed.append(e.title, e.summary, e.enclosures[0].url, e.enclosures[0].type, e.enclosures[0].length) return tlist self.Frame.titlelist.Clear() self.Frame.titlelist.Appned(tlist(e.title)) 何とかしてtitle一覧作りたいのですがGUIのListBoxにtitle一覧が表示されないです ボタン押してもエラーが出ないので何が間違ってるか分からないです。
355 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:48:45 ] >>351 俺も標準ライブラリ読むのがいいと思う。良くないのも多いが あと先に言っておくけどtwistedとZopeは参考にするな
356 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:59:13 ] ワープアは大変だな。
357 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:05:14 ] >>354 ・GUI無しで、単純にtitle一覧リストデータは得られるか? ・ListBox以外のコントロールに表示は出来るか? ・title一覧でなくて、単純なリストの項目をListBoxに追加表示できるか? これくらい調べてきてくれ
358 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:05:55 ] >>342 普通に面白かった
359 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 23:01:18 ] なにも言ってないに等しいな
360 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 23:55:46 ] 変数の存在確認をする関数ってありますか?(phpで言うisset)
361 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 00:24:23 ] try: hoge == "PHPの仕様がおかしい" except NameError: pass
362 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 00:30:08 ] 方法1 初期化しとけ 方法2 例外を捕らえる>>361 方法3 'hoge' in locals()
363 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 00:56:19 ] >>362 >>361 方法1,2は知っていたのですが、 毎回書くのは面倒くさいのでべつの方法を探していました。 3を採用してみます
364 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 02:01:27 ] 何か知らないけどPythonのコードは例外の補足を必要とする率が極めて高い
365 名前:デフォルトの名無しさん [2009/11/24(火) 04:11:22 ] 100%と思ってた方がいい
366 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 15:13:29 ] みんぱいの人は中学から雑誌に原稿書いているのかぁ それに比べておれたちときたら...orz...
367 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 16:23:41 ] みんなのおっぱい乙
368 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 22:56:54 ] >>352 ,>>353 ,>>355 ありがとうございます。参考にさせていただきます
369 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 11:53:41 ] Editraで日本語入力ができないのですが これはpythonのライブラリが原因だからでしょうか? 日本語を扱うソフトを作りたいのですがこれはプログラミング側でどうにもできないですよね?
370 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 13:36:31 ] for(int i = 10; i >=0; i--) をpythonではどう書くんでしょうか?
371 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 13:54:34 ] >>370 for i in xrange(10, -1, -1): >>369 Pythonライブラリというか、その下のC言語で書かれた部分の問題だと思う。
372 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 15:18:49 ] >>371 ありがとう
373 名前:デフォルトの名無しさん [2009/11/26(木) 17:41:52 ] パイソンって強そうな名前ですが、本当につおいのですか? でもちょっとHでもありますが。。
374 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 17:45:57 ] けっこうつおい。
375 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 17:46:24 ] 750 デフォルトの名無しさん [] 2009/11/26(木) 17:39:38 ID: Be: まったくズブの素人です。 これからブイバ初めても間に合いますか? プログライミングをでけるようになりたいから 手始めにVBAから勉強するのか迷い中です。 何か時代は.NETでブイビーも.NET それじゃ〜ブイバももう手遅れなんでしょうか?
376 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 17:49:52 ] >>375 バイブだのズブズブだの初めてだの、エロいレスだな。
377 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 18:41:17 ] >>376 375のこいつ暇すぎて変なことばかりしとる
378 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 19:40:12 ] >>373 パイロンって読むんじゃないの?
379 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 19:42:32 ] またruby厨の荒らしっすか
380 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 20:42:05 ] パイソンはタイソンよりつおいから自信もってw
381 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 20:48:07 ] 972 デフォルトの名無しさん [sage] Date:2009/11/23(月) 17:09:32 ID: Be: ID強制になるだけで静かになるよ 973 デフォルトの名無しさん [] Date:2009/11/23(月) 18:02:02 ID: Be: その変更はキミに任せるから提案してくれ。 974 デフォルトの名無しさん [] Date:2009/11/23(月) 18:18:58 ID: Be: 反対するのは荒らしたい奴だけだから強行しちゃって良いよ
382 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 15:52:29 ] クラスの初期化と同時にプロパティをセットするにはどうやったらいいんでしょうか? 例えばC#なら A a = new A(){ Property = xxxx } みたいなかんじで書きたいんですが
383 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 16:06:08 ] 自分で作ったクラスなら__init__で引数取ってプロパティをセット そうじゃないなら諦めろ
384 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 16:19:50 ] **kwargs
385 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 00:36:27 ] functools.partial
386 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:40:12 ] def setprop(obj, **kw): for propname in kw: setattr(obj, propname, kw[propname]) return obj
387 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 10:01:30 ] 集合知プログラミング6章のtrain関数にMeCabで分かち書きした名詞の辞書渡そうとすると TypeError: 'dict' object is not callableで怒られる。 どうすればいいんだorz
388 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 10:17:58 ] ソース
389 名前:デフォルトの名無しさん [2009/11/30(月) 18:04:57 ] 作成したあるライブラリを python setup.py install でインストールし、無事に使用できています。 しかし新しいバージョンのライブラリを同様の手順で インストールすると古いバージョンのファイル (もはや使っていないモジュール)が残ってしまいます。 これは手動で削除するしかないのでしょうか? 旧バージョンのアンインストール+新バージョンのインストール という作業を自動化する方法はないのでしょうか?
390 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 18:27:37 ] easy_installでもuninstallは出来ないよね。なんでだろ。 手動でもいいのでuninstallの方法が知りたい。
391 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 18:58:10 ] setuptools を捨てて、 distribute + pip を使うんだ。 pip uninstall がある。
392 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 19:32:28 ] setuptoolsは俺も正直どうかと思う いちゃもんみたいなもんだがいつまでもバージョン1にならんし コードも汚い
393 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 19:48:59 ] パッケージのアンインストールは easy_install -m packagenameして登録解除?した後 lib/site-packagesからeggまたはディレクトリを手動で削除、らしい ほんとなんでこんなのがデファクトスタンダードになってしまったのだろうか
394 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 19:52:28 ] インストールがイージーだから
395 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 20:24:51 ] >>393 そんな簡単な手順なら easy_uninstall を作って配布してください
396 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 14:57:43 ] >>393 ナイス情報ださんくす
397 名前:デフォルトの名無しさん [2009/12/01(火) 18:14:17 ] 透明なウィンドウを作り、その上に文字を表示する方法が分かりません。 pygameでもwxでもそれ以外でも何でもいいです。 OSはXPで、pythonのバージョンは2.6です。 一応PILを使い myfont = ImageFont.truetype(font,size) wsize = myfont.getsize(text) img = Img.new('RGBA',wsize,(0,0,0,0)) draw = ImageDraw.Draw(img) draw.text((0,0),text,fill=color,font=myfont) img.save('temp.png')で文字画像を保存し wxPythonで style = wx.FRAME_NO_TASKBAR | wx.FRAME_SHAPED | wx.NO_BORDERのウィンドウを作成して bmp = wx.BitmapFromImage(wx.Image('temp.png')) self.SetClientSize(bmp.GetSize()) self.SetShape(wx.RegionFromBitmap(bmp))のようにしてやろうとしたのですが 背景が透明にならず、灰色になってしまいました。 画像ビューアではちゃんと背景は透明になっているのですが…。 あと、GIMPで作成した画像だとちゃんと背景が透明になります。 何が駄目なのでしょうか? この解決方法もしくは他の良い方法があれば教えて欲しいです。 よろしくお願いします。
398 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 18:39:08 ] アルファ付きの画像を表示しただけでウインドウまで透明になったら苦労しないよ。
399 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 19:30:45 ] >>397 やりかた知らないけどwxPythonのサンプルにヘビ画像のウィンドウサンプルがあったから、それで出来ないかな?
400 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:27:00 ] RegionFromBitmapColourで透過色指定するのは?
401 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:55:28 ] >>397 この質問どこかで見たぞ?