くだすれPython(超初心者用)at TECH
くだすれPython(超初心者用) - 暇つぶし2ch300:デフォルトの名無しさん
08/05/14 20:13:54
296につまんない of The Year 2008を授与するよ。

301:デフォルトの名無しさん
08/05/14 21:09:52
>>297-299
イケメンファッカー

302:デフォルトの名無しさん
08/05/14 21:14:44
>>301
おもろないわ。

303:デフォルトの名無しさん
08/05/14 21:16:49
>>301
おもろないってよ

304:デフォルトの名無しさん
08/05/14 22:53:13
>>301
つまらん

305:デフォルトの名無しさん
08/05/14 23:02:16
301は本当につまらないと思いました。
もうPythonをやめようと思うくらいくだらないです。

306:デフォルトの名無しさん
08/05/14 23:31:50
>>305
つまんねぇ。

307:デフォルトの名無しさん
08/05/14 23:51:33
>>305
面白くない。

308:デフォルトの名無しさん
08/05/14 23:57:25
>>305
空気嫁

309:デフォルトの名無しさん
08/05/15 00:07:54
この流れなんとかならんかな…

310:デフォルトの名無しさん
08/05/15 01:02:47
>306-308
イケメンハッカー

311:デフォルトの名無しさん
08/05/15 07:05:53
流れ変えたいってか?

みんながあまり知らないけど
開発が比較的活発なPythonモジュールって
何かある?

312:デフォルトの名無しさん
08/05/15 09:00:07
自己解決しました。

313:デフォルトの名無しさん
08/05/15 09:12:54
うぜー

314:デフォルトの名無しさん
08/05/15 09:13:53
ネタ的な流れに乗ろうとする奴が3人くらいいて
止めようとしている奴が1人くらいいる

そんな気がする

315:デフォルトの名無しさん
08/05/15 14:10:12
>>311
pygame

316:デフォルトの名無しさん
08/05/15 18:12:44
>>311
lxml

317:デフォルトの名無しさん
08/05/15 18:29:12
>>311
PyAMF

318:デフォルトの名無しさん
08/05/15 19:23:08
>>311
知らないけど、Googleの中の人たち専用ツールとかは活発だろうな。

319:デフォルトの名無しさん
08/05/15 19:31:31
>>311
Blender

320:デフォルトの名無しさん
08/05/15 20:05:08
pyjs

321:デフォルトの名無しさん
08/05/15 21:12:39
python-announceで定期的に報告が来るもの

322:デフォルトの名無しさん
08/05/16 09:17:56
>>311
おもしろくないよ

323:デフォルトの名無しさん
08/05/16 10:22:31
>>311
おもしろくないってさ

324:デフォルトの名無しさん
08/05/16 10:32:11
>>311
いや、俺にはおもしろかった。

325:デフォルトの名無しさん
08/05/16 13:37:34
>>322-324
オタク三兄弟

326:デフォルトの名無しさん
08/05/16 15:06:11
>>325
つまんね。

327:デフォルトの名無しさん
08/05/16 16:01:45
>>325
つまんねってよ

328:デフォルトの名無しさん
08/05/16 16:49:49
荒れ方がなんとなくWin32APIスレと似てる。

329:デフォルトの名無しさん
08/05/17 13:17:38
ここは「Pythonをネタにくだらないレスをする」スレですね。くだスレだけに。

330:デフォルトの名無しさん
08/05/17 13:18:31
初心者はここで練習して池

331:デフォルトの名無しさん
08/05/17 13:22:58
>>329
くだらなね。

332:デフォルトの名無しさん
08/05/17 15:12:25
もういいや、みんなこの調子でこれからもがんばろう。

333:デフォルトの名無しさん
08/05/17 17:21:36
>>332
おもしろいよ。

334:デフォルトの名無しさん
08/05/17 18:42:44
pythonで
htmlとかに使われる実体参照になっているを文字列に戻したいんですが
なんかいい方法はありませんか?そういう機能のあるライブラリとか

335:デフォルトの名無しさん
08/05/17 19:06:11
>>> import xml.sax.saxutils
>>> xml.sax.saxutils.escape('&')
'&'
>>> xml.sax.saxutils.unescape('&')
'&'

336:デフォルトの名無しさん
08/05/17 19:15:55
それって"&"、"<"、">" をエスケープするだけじゃないんですか?

337:デフォルトの名無しさん
08/05/17 19:20:12
htmlentitydefs

338:デフォルトの名無しさん
08/05/17 19:33:52
自己解決しました

339:デフォルトの名無しさん
08/05/17 19:47:27
やめてください!

340:デフォルトの名無しさん
08/05/17 20:22:56
htmlentitydefs.entitydefs

これ使い物にならないので、もっといいもの教えてください

341:デフォルトの名無しさん
08/05/17 20:25:59
自己解決しましたのでやっぱりいいです

342:デフォルトの名無しさん
08/05/17 20:33:28
やめてください

343:デフォルトの名無しさん
08/05/17 20:53:57
はやくしてください

344:デフォルトの名無しさん
08/05/17 21:11:25
ウホッ

345:デフォルトの名無しさん
08/05/17 22:11:14
はやく!!!!!!!!!!

346:デフォルトの名無しさん
08/05/17 23:06:53
ほんと勘弁して欲しいよ……

347:デフォルトの名無しさん
08/05/17 23:13:26
自演で書いてて楽しいか?
さもしい人間だな

348:デフォルトの名無しさん
08/05/17 23:15:25
ということにしたいのですね

349:デフォルトの名無しさん
08/05/17 23:32:15
はやくpygameの翻訳してください。

350:デフォルトの名無しさん
08/05/18 00:00:38
質問者はトリップつけた方がいいかもな…。

351:デフォルトの名無しさん
08/05/18 00:02:48
トリップとかどうでもいいけどよ
さっさとPyGameドキュメントの翻訳しろよボケ

352:デフォルトの名無しさん
08/05/18 00:03:12
pygameの翻訳こそがこのスレッドの至上命題だろうが

353:デフォルトの名無しさん
08/05/18 00:17:26
憑かれてるなぁ

354:デフォルトの名無しさん
08/05/18 00:26:07
憑かれてるってよ

355:デフォルトの名無しさん
08/05/18 00:43:55
>>334
普通は実体参照だけを文字に戻すことはしないからそういう機能はないんじゃないかな。
334さんの用途に合うなら以下のように安直に実装するのが手っ取り早いかと。
.subn() の代わりに .sub() を使うのも可。

# -*- coding: sjis -*-
import re, htmlentitydefs
re_ref = re.compile("&([a-zA-Z0-9]+|#x[a-fA-F0-9]+|#[0-9]+);")
def replace(match):
t = match.group(1)
if t[:2] == "#x":
return chr(int(t[2:], 16))
elif t[0] == "#":
return chr(int(t[1:]))
try:
t = htmlentitydefs.entitydefs[t]
except KeyError:
raise ValueError, "unknown entity: " + match.group()
if t[:2] == "#x":
return chr(int(t[2:], 16))
return t
# 正常終了するテスト
print re_ref.subn(replace, "Onde a terra acaba e o mar começa.")
# 異常終了するテスト
try:
re_ref.subn(replace, "&foo;")
except ValueError, e:
print e

356:デフォルトの名無しさん
08/05/18 00:46:07
# -*- coding: sjis -*-

import re, htmlentitydefs

re_ref = re.compile("&([a-zA-Z0-9]+|#x[a-fA-F0-9]+|#[0-9]+);")

def replace(match):
    t = match.group(1)
    if t[:2] == "#x":
        return chr(int(t[2:], 16))
    elif t[0] == "#":
        return chr(int(t[1:]))
    try:
        t = htmlentitydefs.entitydefs[t]
    except KeyError:
        raise ValueError, "unknown entity: " + match.group()
    if t[:2] == "#x":    
        return chr(int(t[2:], 16))
    return t

# 正常終了するテスト
print re_ref.subn(replace, "Onde &#97; terra acaba e &#x6f; mar come&ccedil;a.")

# 異常終了するテスト
try:
    re_ref.subn(replace, "&foo;")
except ValueError, e:
    print e

357:デフォルトの名無しさん
08/05/18 01:26:16
# -*- coding: sjis -*-

import re, htmlentitydefs

re_ref = re.compile("&([a-zA-Z0-9]+|#x[a-fA-F0-9]+|#[0-9]+);")

def replace(match):
t = match.group(1)
if t[:2] == "#x":
return chr(int(t[2:], 16))
elif t[0] == "#":
return chr(int(t[1:]))
try:
t = htmlentitydefs.entitydefs[t]
except KeyError:
raise ValueError, "unknown entity: " + match.group()
if t[:2] == "#x":
return chr(int(t[2:], 16))
return t

# 正常終了するテスト
print re_ref.subn(replace, "Onde a terra acaba e o mar começa.")

# 異常終了するテスト
try:
re_ref.subn(replace, "&foo;")
except ValueError, e:
print e

358:デフォルトの名無しさん
08/05/18 08:14:05
# -*- coding: sjis -*-

import re, htmlentitydefs

re_ref = re.compile("&([a-zA-Z0-9]+|#x[a-fA-F0-9]+|#[0-9]+);")

def replace(match):
t = match.group(1)
if t[:2] == "#x":
return chr(int(t[2:], 16))
elif t[0] == "#":
return chr(int(t[1:]))
try:
t = htmlentitydefs.entitydefs[t]
except KeyError:
raise ValueError, "unknown entity: " + match.group()
if t[:2] == "#x":
return chr(int(t[2:], 16))
return t

# 正常終了するテスト
print re_ref.subn(replace, "Onde a terra acaba e f; mar come?a.")

# 異常終了するテスト
try:
re_ref.subn(replace, "&foo;")
except ValueError, e:
print e

359:デフォルトの名無しさん
08/05/18 10:12:03
# -*- coding: sjis -*-

import re, htmlentitydefs

re_ref = re.compile("&([a-zA-Z0-9]+|#x[a-fA-F0-9]+|#[0-9]+);")

def replace(match):
  t = match.group(1)
  if t[:2] == "#x":
    return chr(int(t[2:], 16))
  elif t[0] == "#":
    return chr(int(t[1:]))
  try:
    t = htmlentitydefs.entitydefs[t]
  except KeyError:
    raise ValueError, "unknown entity: " + match.group()
  if t[:2] == "#x":
    return chr(int(t[2:], 16))
  return t

# 早くpygameドキュメント翻訳しろよ

360:デフォルトの名無しさん
08/05/20 22:39:09
もうやだこのスレ

361:デフォルトの名無しさん
08/05/21 03:06:16
そう思わそうと、わざと荒らしてるんだよ
荒らしの思惑にのるな

362:デフォルトの名無しさん
08/05/21 06:49:16
>361
ageてるあなたも荒らしですね

363:デフォルトの名無しさん
08/05/21 07:13:44
板としてもスレとしてもsage推奨とすら書かれていない現状でその断定w

364:デフォルトの名無しさん
08/05/21 07:59:33
朝っぱらから荒れてるなあ

365:デフォルトの名無しさん
08/05/22 00:19:49
>>355
ありがとうございます
参考になりました

なんか変なことになったのでもう諦めて見てませんでした
レス遅れてすいません


366:デフォルトの名無しさん
08/05/22 00:28:30
自己解決しました。

367:デフォルトの名無しさん
08/05/22 03:11:59
ソートについてお聞きしたいことあります。

以下のようなトランプがあります。
A、2、3、4、5、6、7、8、9、T、J、Q、K

それをもとにポーカー役判定のプログラムを作成しており、ストレートの判定を改良したいと思います。
実際にすべての値をソートし順番を並び替え、findでソートしたものが階段状になっているか判定し(表現が悪いかもしれませんが)、
ストレートかどうか決めています。
しかし、findで参照する先のリストを作るとなると、数字のみであらわせるリストと英語が混じった場合のリストの二つを組み合わせた
ものになるため、文章が長く見づらいリストになってしまいます。

そこで、ソートする順番をあらかじめ決められれば、参照先のリストを縮小できるし見やすくできるのでは
ないかと思います。
ソートする方法任意で決める関数はあるのでしょうか?

368:デフォルトの名無しさん
08/05/22 03:49:58
ありますよ

369:デフォルトの名無しさん
08/05/22 06:10:00
>>365
どういたしまして。

>>367
リストの sort メソッドには自前の比較関数が渡せるので、
数字カードと文字カードを比較できる比較関数を作ればいいと思われ。
安直な例:

letter = {"A": 1, "T": 10, "J": 11, "Q": 12, "K": 13}

def compare_cards(x, y):
    if letter.has_key(x):
        x = letter[x]
    else:
        x = int(x)
    if letter.has_key(y):
        y = letter[y]
    else:
        y = int(y)
    return cmp(x, y)

t = list("6T934A57JK28Q")
t.sort(compare_cards)
print t

370:デフォルトの名無しさん
08/05/22 06:42:15
>>367
俺はPythonの勉強始めて3日目なんでPythonの流儀は知らんが、
C++とかなら普通は内部表現にA23456789TJQKなんて使わないよ。
普通は1~13の数値で持っておいて、出力するときに変換する。

371:デフォルトの名無しさん
08/05/22 07:43:23
スートも含めて考えるとタプルかその他のオブジェクトになるだろうか

>>367
A K Q J 10 なんかもストレートになるから注意

372:デフォルトの名無しさん
08/05/22 08:03:37
>>369
比較関数方式よりdecorate-sort-undecorate方式の方がいいよ

373:デフォルトの名無しさん
08/05/22 22:22:45
こんばんは。 
PythonのCGIでファイルをダウンロードさせたく思い、以下のように書いたのですがバイナリファイルの場合、途中で切れてしまうようなのです。
助言等戴ければ幸いです。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, os
import cgi
import cgitb; cgitb.enable()

filepath = r'ぱす'
filename = os.path.split(filepath)
filename = filename[1]
filesize = os.path.getsize(filepath)

print '''Content-Disposition: attachment; filename="%(filename)s"
Content-Length: %(filesize)s
Content-Type: application/octet-stream
''' %(locals())
f = open(filepath, "r")
print f.read(),


374:デフォルトの名無しさん
08/05/22 22:39:27
ofp = open(u'%s/%s' % (savedir, file), 'wb', 0)
ifp = urllib.urlopen(url)
siz = int(ifp.info().getheader('Content-Length'))
print siz
cnt = 0
while True:
   buf = ifp.read(4096000)
   if len(buf) > 0:
     ofp.write(buf)
     ofp.flush()
   cnt += len(buf)
   if cnt >= siz:
     break
ifp.close()
ofp.close()


375:デフォルトの名無しさん
08/05/22 22:41:51
import msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
sys.stdout.write(hoge)
sys.stdout.flush()


376:デフォルトの名無しさん
08/05/22 23:44:22
自己解決しました。

377:デフォルトの名無しさん
08/05/23 10:34:45
分からないなら答えなくていいのに

378:デフォルトの名無しさん
08/05/23 12:42:47
いつもの阿呆です。

379:デフォルトの名無しさん
08/05/23 12:44:49
お願いします。回答ください。

380:デフォルトの名無しさん
08/05/23 15:04:39
自己回答してください。

381:デフォルトの名無しさん
08/05/23 15:16:59
>>373-374
使用環境をまったく書いてないのは質問として NG だと思う。
サーバがWindows環境だとバイナリファイルの扱いに注意が必要だから。
CGI 作成の注意としては、ヘッダの行末は \n ではなく \r\n でないといけないはず。
> print f.read(), 
ここも1バイト余計にデータを送っていることになるのでよくない。
手元の Windows マシンでは Python 付属の CGIHTTPServer を使って以下のコードで動いた。

import sys, os 
import cgi 
import cgitb; cgitb.enable() 

if sys.platform == "win32":
    import msvcrt 
    msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) 

filepath = "test.jpg"
filename = os.path.split(filepath) 
filename = filename[1] 
filesize = os.path.getsize(filepath)
sys.stdout.write('Content-Type: application/octet-stream\r\n')
sys.stdout.write('Content-Disposition: attachment; filename="%s"\r\n' % filename)
sys.stdout.write('Content-Length: %d\r\n' % filesize)
sys.stdout.write('\r\n')
f = open(filepath, "rb") 
sys.stdout.write(f.read())
sys.stdout.flush()
f.close()


382:381
08/05/23 15:22:29
CGI プログラムの実行時にエラーが起こっていないか常にチェックするようにして。
エラーメッセージの出力先やエラー時のサーバの挙動はサーバソフトごとに異なる。
CGIHTTPServer だと正常終了なら
localhost - - [23/May/2008 15:10:05] CGI script exited OK
のようなログが標準出力にプリントされる。エラーの場合は
localhost - - [23/May/2008 15:07:40] CGI script exit status 0x1
のようになる。後者の場合、クライアントがダウンロードした内容は CGIHTTPServer が吐いた
エラーメッセージを含む HTML ファイルだから、必要なら拡張子を変えてブラウザで開いてみて。

383:デフォルトの名無しさん
08/05/23 19:13:47
>>381-382
どうもありがとうございました。
お蔭様で解決致しました。

度々の質問で申し訳ありませんが遅延評価勉強法は性にあわないようなので
本でしっかりと勉強しようと思うので>>381のような基本的なことが
載っている本を教え戴きたいです。

384:381
08/05/23 20:33:27
>>383
恐らく「これを読めば Web アプリの基礎から実装上の詳細まで全部分かる」という都合のいい本はないと思う。
すくなくとも俺が勉強したときにはそういうものはなかった。
たぶん今も HTTP の仕様書(RFC 2616)のたぐいを読むしかないと思う。
RFC 2616 はオンラインで読める。今は和訳もあると思う。
でもちょっと読んでみたら分かると思うけど、とても通読できるような代物じゃないよ。
何か問題が起こったときに関連がありそうなところを拾い読みするぐらいがちょうどいいと思う。
実際にコーディングしながらでないと理解できないことが多いように思う(俺はそうだった)。

ちなみに、RFC や W3C が出している文書には URL とか MIME とか HTML とか XML とか XSL とか
いろんな要素技術の仕様書がたくさんある。そういうものをどんどん読むといい。きっと力がつくよ。
これらの文献のいいところは、それが原典という点だ。世界がそれに基づいて動いているという迫力がある。
英語で読まないといけないことが多いかもだけど、そうする価値はあるよ。

385:デフォルトの名無しさん
08/05/23 22:18:26
助けて
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkExit(Unknown Source)
at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.python.core.PyReflectedFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyInstance.invoke(Unknown Source)
at applet$_PyInner.init$1(applet.java:61)
at applet$_PyInner.call_function(applet.java:47)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject._jcallexc(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at applet$MyApplet.init(applet.java:139)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


386:デフォルトの名無しさん
08/05/23 22:45:11
         刑務所             さらりいまん
----------------------------------------------------
労働時間  8時間厳守           大体10時間以上
----------------------------------------------------
始業時間  7時50分            8時30分~9時
----------------------------------------------------
終業時間  16時30分           21時~24時
----------------------------------------------------
通勤手段  徒歩数分            満員電車1時間
----------------------------------------------------
昼食     食う                食えない日がある
----------------------------------------------------
夕食     食う                食えない日がある
----------------------------------------------------
夕食後    テレビや読書など自由     仕事
----------------------------------------------------
残業     全くない             ない日がない
----------------------------------------------------
残業代    残業がないから無い      残業あっても無い場合がある
----------------------------------------------------
休憩     午前午後それぞれ15分    上司次第
----------------------------------------------------
土日祝    確実に休み           出勤する日もある
----------------------------------------------------
年数     刑罰に応じる          自動的に40年


387:デフォルトの名無しさん
08/05/23 22:46:07
        刑務所          さらりいまん
----------------------------------------------------
労働時間  7時50分~16時30分      フレックスタイム
----------------------------------------------------
通勤手段  徒歩数分           都心回帰で30分強
----------------------------------------------------
食事    食べたいものが食べられない  食べたいものが食べられる
----------------------------------------------------
トイレ    監視付き           自由
----------------------------------------------------
夕食後    テレビや読書など自由     自分の裁量で自由
----------------------------------------------------
残業     全くない          自分の裁量で自由
----------------------------------------------------
給与      涙金            年収700万円弱
----------------------------------------------------
休憩     午前午後それぞれ15分    自分の裁量で自由
----------------------------------------------------
休暇     なし            家族旅行、趣味
----------------------------------------------------
性生活    オナニーか同性愛      妻または愛人
----------------------------------------------------
老後     孤独で悲惨         家族に囲まれて退職金・年金生活
----------------------------------------------------


388:デフォルトの名無しさん
08/05/24 00:36:52
>>384
やっぱり、そうやって勉強するしかないんですね

英語ってコードを読む延長で読んでいるのか、英語の延長にコードがあるのか、わからないけど
プログラム言語を読み解くみたいに読んでいるなあ

英語が苦手な私でも読もうと思えば、読めるものだね
6年間、一応英語の授業を受けてきた甲斐があったのかなと思う

意味だけ拾っているから、よくわからないけど
仕様書関係で関係代名詞って出ないよね?

中学英語ができれば、辞書片手にだいたいの意味は、わかるのかな

389:デフォルトの名無しさん
08/05/24 00:39:09
URLリンク(www.amazon.co.jp)

390:デフォルトの名無しさん
08/05/24 01:49:36
URLリンク(www.amazon.co.jp)

391:デフォルトの名無しさん
08/05/24 01:55:27
普通、こっちじゃないの?
URLリンク(www.amazon.co.jp)

うちの先生の口癖だけど、「良書・凡書・悪書の区別がつかなかったら、値段の高いほうを買え」
という言葉があるお

2,000円の本は、その程度の価値しかないわけなんだよ

392:デフォルトの名無しさん
08/05/24 02:52:52
httpのプロトコルやcgiの基本的なことならPythonの本に限定する必要はない

393:デフォルトの名無しさん
08/05/24 03:30:53
うちの先生は
読むべきページ1ページにつき100円で考えて
10ページあったら1000円
30ページだったら3000円
それでコストに合わなかったら買えと言っていました

394:デフォルトの名無しさん
08/05/24 06:31:53
HTTPやCGIでこれがオススメって本ある?
自分はStudyingHTTPやプログラミングCGI第二版で覚えたクチ

395:デフォルトの名無しさん
08/05/24 10:18:41
URLリンク(www.amazon.co.jp)

396:デフォルトの名無しさん
08/05/24 11:45:57
>>394
URLリンク(d.hatena.ne.jp)


397:394
08/05/24 16:58:46
>>395-396
ありがとう。参考にさせてもらうよ

398:デフォルトの名無しさん
08/05/24 19:49:36
pythonでCGIを書いても
使えるところがない

399:デフォルトの名無しさん
08/05/24 19:54:52
land.toでは使えるようだ(2.4.4だけど)
URLリンク(land.to)

400:デフォルトの名無しさん
08/05/24 20:02:38
2.4系でも御の字じゃないかー

401:デフォルトの名無しさん
08/05/24 23:51:53
suitex

402:デフォルトの名無しさん
08/05/25 12:56:24
例のアフォがお勉強スレに張り付くようになったようだな

403:デフォルトの名無しさん
08/05/25 15:04:21
お勉強スレに元々いたような

404:デフォルトの名無しさん
08/05/25 15:06:07
そしてアンチスレは全然伸びない

405:デフォルトの名無しさん
08/05/25 19:07:25
ありがとう
乗り換え先検討中なんで参考にさせてもらいます

406:デフォルトの名無しさん
08/05/25 21:19:44
やっぱやめます

407:デフォルトの名無しさん
08/05/25 22:09:29
うはは、わかりません。

408:デフォルトの名無しさん
08/05/25 22:24:32
なぜだか桃太郎電鉄の貧乏神を思い出したよ。

409:デフォルトの名無しさん
08/05/26 09:02:34
ありがとう例のアフォが
張り付く先検討中なんで参考にわかりません。

410:デフォルトの名無しさん
08/05/26 23:46:15
ももたろ社長!ここはPython温せ

アッー

411:デフォルトの名無しさん
08/05/27 01:15:14
うはは、わかりません。

412:デフォルトの名無しさん
08/05/27 02:31:56
>>410
Pythonでくだスレにしちゃネタがうますぎ。

413:デフォルトの名無しさん
08/05/28 22:26:55
おまいら温泉行く?
アッーー!

414:デフォルトの名無しさん
08/05/29 15:01:50
PythonCEで、日本語文字列を出力するにはどうすればいいんでしょうか。
どのエンコードを試してもできません。
宜しければご教示願います。


415:デフォルトの名無しさん
08/05/29 21:23:55
コンソールは何使ってる?

416:デフォルトの名無しさん
08/05/30 02:58:05
質問です。
複数の値を返す関数を作成してそれを受け取るというのもなのですが…。
cでかくとこんな感じです。

#include <stdio.h>

void Power(double x, double *sq, double *cu);
void main(void);

void Power(double x, double *sq, double *cu)
{
*sq = x * x;
*cu = x * x * x;
}

void main(void)
{
double x, xx, xxx;

printf("浮動小数点数を入力して下さい\t");
scanf("%lf", &x);

Power(x, &xx, &xxx);

printf("入力した値 = %lf その2乗 = %lf その3乗 = %lf\n",
x, xx, xxx);
}


417:デフォルトの名無しさん
08/05/30 04:07:51
Pythonではreturnで複数の値を返せるので
def power(x): return x**2, x**3
xx, xxx = power(x)
のように書くが、とりあえずチュートリアルは読もうよ
URLリンク(www.python.jp)

418:デフォルトの名無しさん
08/05/30 06:40:11
その関数はタプルを*ひとつ*返してるだけ
チュートリアルのどこにreturnで複数の値を返せるなんて書いてあるんだ?

419:デフォルトの名無しさん
08/05/30 08:23:40
チュートリアルのp.p.218読んだか?

420:デフォルトの名無しさん
08/05/30 09:37:52
タプルを*ひとつ*返すときは
def power(x): return (x**2, x**3)
だろ
def power(x): return x**2, x**3
ではreturnで複数の値を返せる

421:デフォルトの名無しさん
08/05/30 10:03:49
プログラムを起動中に、変数に任意の内容を記入できる関数はないでしょうか?
名前を忘れてしまったんですが、たしかc言語ではこの機能を使える関数があったと思います。

今は、任意の内容を処理する場合は、引数の文字を入れているのですが、複数の処理をするには
引数に任意で入れたい内容をリストにして、引数に入れてほしい内容はリスト番号を指定する。
という方法を用いてみたのですが、賢くない上に面倒です。

対話形式で処理をするためにユーザーに記入を求める関数を再現したいのですが、パイソンでは何か良い方法はないでしょうか?

422:デフォルトの名無しさん
08/05/30 10:04:54
>>> def power(x): return x**2, x**3
...
>>> type(power(1))
<type 'tuple'>

423:デフォルトの名無しさん
08/05/30 10:05:42
>>421
sys.stdin

424:デフォルトの名無しさん
08/05/30 10:14:01
input()

425:デフォルトの名無しさん
08/05/30 11:15:10
重複していました。
申し訳ありません

426:デフォルトの名無しさん
08/05/30 20:34:11
すんまそん.使わないパッケージのアンインストールってどうやるんでしょうか?

427:デフォルトの名無しさん
08/05/30 21:19:31
>>426
OS、アンインストールしたいパッケージ、それをどうやってインストールしたか、によって方法が違う。

428:デフォルトの名無しさん
08/05/30 21:24:45
OSはwindowsでコンパイル済みのexeファイルからインストールしています.
プログラム追加と削除に表示されるのもあるんですが,どうもないのもあって.

429:デフォルトの名無しさん
08/05/30 21:50:18
>>428
プログラムの追加と削除にないものは手動で消す必要があると思う。
C:\Python○○\Lib\site-packages\ 以下に追加パッケージがまとめて置いてある。
そこから選んで削除する。

パッケージによっては他の場所にもファイルを配置していることがある。
きれいサッパリ消せるかどうかはパッケージ構成に関するあなたの知識次第。

430:デフォルトの名無しさん
08/05/30 22:17:00
ありがとうございました.直接消すしかないんですね.

431:デフォルトの名無しさん
08/05/31 04:08:35
cd パッケージインストールしたときのディレクトリ
python setup remove

432:デフォルトの名無しさん
08/06/02 16:05:19
pythonを用いたバックアップを考えています。

バックアップ先とそれの保存先を引数として入力し、そのパスからコピーして貼り付けをすれば出きると思っていたのですが、現段階では、まだ出来ていません。


ファイルのバックアップを取りかたの概念が間違っているのでしょうか?

433:デフォルトの名無しさん
08/06/02 16:40:04
>>432
現段階は、ファイルのコピー方法について調べています。

434:デフォルトの名無しさん
08/06/02 16:53:58
xcopy使った方が早くね?

435:デフォルトの名無しさん
08/06/02 17:05:47
つ shutil

436:デフォルトの名無しさん
08/06/02 19:03:23
>そのパスからコピーして貼り付けをすれば

これは可笑しい


437:デフォルトの名無しさん
08/06/02 19:04:31
自己解決しました

438:デフォルトの名無しさん
08/06/02 19:05:22
そんなスキルで作られたバックアップソフト・・・・超怖い

439:デフォルトの名無しさん
08/06/02 19:12:08
表現に問題があり申し訳ありませんでした。
バックアップをしたいファイルがある場所からコピーして、保存先に貼り付けを行う作業が出きる関数を調べたいと思っていました。
意見ありがとうございます。バックアップに必要な関数が見つかりましたのでやってみます。

440:デフォルトの名無しさん
08/06/02 19:25:25
winは害悪だな

441:デフォルトの名無しさん
08/06/02 19:33:52
explorerが害悪っていう意味なら
gnomeもKDEも害悪だよな

442:デフォルトの名無しさん
08/06/02 21:05:55
世界のガイアク
1,2,3

443:デフォルトの名無しさん
08/06/02 21:36:02
ごめん。意味がわかんない。

444:デフォルトの名無しさん
08/06/02 21:53:47
>439 は発想の根っこにクリップボードがあるのがおもしろいな。普通はそうなのか?
「バックアップに必要な関数が見つかりましたの」で実装した結果がおもしろいとさらに高得点だ。

445:デフォルトの名無しさん
08/06/02 23:25:52
今時はあれですか
やりたり処理を実現する関数を「探す」事がプログラムなんでしょうね

446:デフォルトの名無しさん
08/06/02 23:31:26
探して調整することがプログラミング

447:デフォルトの名無しさん
08/06/02 23:33:18
泥のように働くのがプログラミング。
いちいち言わせるなよ。

448:デフォルトの名無しさん
08/06/02 23:33:32
むかしからそうだろ

449:デフォルトの名無しさん
08/06/02 23:37:37
自己解決しました。

450:デフォルトの名無しさん
08/06/02 23:41:19
>>443
世界のFizzBuzzだろ

451:デフォルトの名無しさん
08/06/03 19:48:19
すいません質問です。


キュー構造を実現するqueクラスとその確認コードを含むque.pyを作成せよ
queクラスは以下のメソッドを含む事。
def enque( data )
#値を受け取り、enque動作(待ち追加)を行う。
def deque()
#deque動作(待ち解消)を行い、値を返す。
def __str__()
#str()やprintで用いられる特殊メソッド。
#自分を表す文字列表現(ここでは内部値のカンマ区切りとする)を返す。

上記が課題なのですがだれか教えていただけないでしょうか。

452:デフォルトの名無しさん
08/06/03 20:23:34
富豪向け

class Queue:
 def __init__(q):
  q.queue = []
  q.next = 0
 def enque(q,v):
  q.queue.append(v) 
 def deque(q):
  v = q.queue[q.next]
  q.next += 1
  return v
 def __str__(q):
  return str(q.queue[q.next:])

453:デフォルトの名無しさん
08/06/03 20:40:28
ありがとうございます。
富豪向けとはどういう意味でしょうか?

454:デフォルトの名無しさん
08/06/03 21:13:26
>>432
> バックアップ先とそれの保存先

って同じじゃないか?
仕事でも「仕入れ先」と使うけど、何か納得できない。


455:デフォルトの名無しさん
08/06/03 21:32:00
>>453
URLリンク(pitecan.com)
URLリンク(0xcc.net)

456:デフォルトの名無しさん
08/06/03 21:36:17
>>455
なるほど、ありがとうございます。

457:デフォルトの名無しさん
08/06/03 22:54:04
class Queue(object):
    class Item(object):
        def __init__(self, value):
            self.value = value
            self.next = None
    def __init__(self, *args):
        self.first = self.end = None
        for i in args:
            self.enqueue(i)
    def enqueue(self, value):
        if self.first is None:
            self.first = self.end = Queue.Item(value)
        else:
            self.end.next = Queue.Item(value)
            self.end = self.end.next
    def dequeue(self):
        if self.first is None:
            raise IndexError('queue is empty')
        else:
            value = self.first.value
            self.first = self.first.next
            return value
    def __repr__(self):
        values = []
        item = self.first
        while item:
            values.append(repr(item.value))
            item = item.next
        return 'Queue(%s)' % ', '.join(values)

458:デフォルトの名無しさん
08/06/03 23:02:09
import collections
class Queue(object):
    def __init__(self, itr = ()):
        self.q = collections.deque(itr)
    def enqueue(self, v):
        self.q.append(v)
    def dequeue(self):
        return self.q.popleft()
    def __repr__(self):
        return self.q.__repr__().replace('deque','Queue')

459:デフォルトの名無しさん
08/06/03 23:06:08
URLリンク(codepad.org)
ここソース貼るのに便利だよ

460:デフォルトの名無しさん
08/06/03 23:08:36
codepadはログインしないと24時間で消えるから嫌い

こっちだと消えないように設定できるみたいURLリンク(ja.pastebin.ca)

461:デフォルトの名無しさん
08/06/03 23:10:06
from Queue import Queue
Queue.enque = Queue.put
Queue.deque = Queue.get
Queue.__str__ = lambda self: ','.join(str(x) for x in self.queue)

462:デフォルトの名無しさん
08/06/03 23:30:13
>>460
そうか、期限があるんだったな…。
やっぱりここに貼った方がログが残って便利かもね。

463:デフォルトの名無しさん
08/06/04 15:16:54
>>414
俺も知りたい。仕方ないからファイルに出力してるよ。

464:デフォルトの名無しさん
08/06/04 16:33:13
URLリンク(pastebin.windy.cx)
にたようなもんだけど

465:デフォルトの名無しさん
08/06/04 16:47:04
Python に比べて Ruby が「純粋な」オブジェクト指向言語
であるといわれる理由を教えてください。同僚にRuby厨が
いてうざいです。仕事は Java/C# なんで全然関係ないんですが。

466:デフォルトの名無しさん
08/06/04 16:56:10
Python初めて1日の僕が言うのもなんだけど
例えば長さを取得する場合
hoge.len()
ではなく
len(hoge)
であるとか。
よくわかんないけど

467:デフォルトの名無しさん
08/06/04 17:29:50
Pythonもすべてオブジェクトだから純粋なOOPLじゃない?

468:デフォルトの名無しさん
08/06/04 17:43:44
そのRuby厨に聞いてみれば?
どうせどっかからの受け売りだろうから
ググればそれっぽい記事がでてくんじゃね

469:デフォルトの名無しさん
08/06/04 18:55:15
Rubyは使ったことないや。
どっちがよりオブジェクト指向なのかはどうでもいいんじゃね?

470:デフォルトの名無しさん
08/06/04 18:56:33
いいや。すごく重要だ。

471:デフォルトの名無しさん
08/06/04 19:04:12
どう重要?

472:デフォルトの名無しさん
08/06/04 19:16:05
どっちがよりオブジェクト指向かを決める前に
オブジェクト指向の定義を明確かつ厳密に行う必要があるな

473:デフォルトの名無しさん
08/06/04 19:17:42
小学生のときにどれくらい飛ばせたかというくらいの重要さ。

474:デフォルトの名無しさん
08/06/04 19:23:57
チ○コがどれくらい大きいかくらいの重要さ。

475:デフォルトの名無しさん
08/06/04 19:55:55
>>474
チェコ共和国(The Czech Republic/CZE)
首都:プラハ
人口:1,022万人
言語:チェコ語
通貨:コルナ
面積/7万9千平方km(北海道とほぼ同じ)。


476:デフォルトの名無しさん
08/06/04 20:11:00
なんという親御さんも安心スレ

ちなみにこんなのもあるよ
>>> hoge = [1, 2, 3]
>>> len(hoge)
3
>>> hoge.__len__()
3

477:デフォルトの名無しさん
08/06/04 23:01:45
hoge = {}
for j in xrange(10):
  for i in xrange(10**j):
    hoge['hoge%d' % i] = 'fuga%d'
  print j, len(hoge)


478:デフォルトの名無しさん
08/06/05 00:00:45
>>465
書籍からの受け売りですが。。

ーーーーーーーここからーーーーーーーーー
速効 python プログラミングより
p188

# coding: Shift_JIS

class a:
    var1 = 1

   def show_class_var(self):
      print 'class variable var1 = %d' % self.__class__.var1

v = a()
v.show_class_var()
a.var1 = 2
v.show_class_var()
print a.var1
a.another_var = 100
print a.another_var

クラス変数はa.var1 = 2 のように勝手に変更できてしまうだけではなく、
クラス定義ではまったく現れていないような another_var という変数を
後で外から無理やり追加することすら出来てしまいます。
ーーーーーーーーーーーーここまでーーーーーーーーーーーーーーー

「カプセル化」っていうOOPの原則の重要性が
python では、なおざり・・・という意味での指摘ぢゃないかな、と。。


479:デフォルトの名無しさん
08/06/05 00:05:16
>>478
そりゃ単にその本の著者が無知なだけだろ。
分かりやすさのために、わざと書いてないだけかもしれんが。

480:478
08/06/05 00:11:51
>>479
これじゃないとしたら>>465の同僚の指摘は
ちっと分かんない☆

う~む、ruby厨というより
アンチpythonな人なのかな?

481:デフォルトの名無しさん
08/06/05 00:14:24
またクソ本フラグが立ったな

482:デフォルトの名無しさん
08/06/05 00:17:54
Pythonはドキュメントがカプセル

漏れいいこと言ったな

483:デフォルトの名無しさん
08/06/05 00:22:29
いまいちわからん。説明してくり

484:デフォルトの名無しさん
08/06/05 00:36:00
ドキュメントにクラスのインタフェースが漏れなく記載されていれば
クラスのユーザはクラス定義を読まずにクラスを利用できる
結果としてユーザに公開されるべきでない情報は隠蔽される

でもドキュメントが貧弱だと、クラスの使い方を調べるために
ユーザがクラス定義を読む、なんて事態が生じうる
結果としてユーザに過度の情報を公開することになってしまう

つまり言語仕様だけからしかカプセル化の程度を判断するのは片手落ち

485:デフォルトの名無しさん
08/06/05 00:48:40
482はドキュメント的にカプセルでない説。

486:デフォルトの名無しさん
08/06/05 01:19:30
質問です
「Hello World!」の表示を2つ並べたウインドウを表示せよ。
複数並べるには、親となるフレームを用意し、そこに配置すれば良い。

という課題なのですがだれか教えてください

487:デフォルトの名無しさん
08/06/05 01:38:50
>>> from Tkinter import *
>>> root = Tk()
>>> frame = Frame(root)
>>> frame.pack()
>>> Label(frame, text="Hello, world!").pack(side=LEFT)
>>> Label(frame, text="Hello, world!").pack(side=RIGHT)
>>> root.mainloop()

上下に並べる場合は
>>> Label(frame, text="Hello, world!").pack()
>>> Label(frame, text="Hello, world!").pack()

これで点くれるのかしら

488:デフォルトの名無しさん
08/06/05 02:18:16
>>484
じゃあPythonでオブジェクト指向なプログラミングをするなら、ドキュメント作成は必須ってこと?

489:デフォルトの名無しさん
08/06/05 02:22:14
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((100, 100))
pygame.display.set_caption('Hello pygame')
fp = open(u'みかちゃん-P.ttf', 'rb')
font = pygame.font.Font(fp, 24)
text = font.render(u'Hello World!', True, (255, 0, 0))
text2 = font.render(u'Hello World!', True, (0, 255, 0))
fp.close()
while True:
screen.blit(text, (0, 0))
screen.blit(text2, (0, 60))
pygame.display.flip()
for event in pygame.event.get():
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
break


490:デフォルトの名無しさん
08/06/05 02:51:23
別にオブジェクト指向する必要が無ければしなくてもいいんだよ
ドキュメントはもちろん書いたほうが良い

491:デフォルトの名無しさん
08/06/05 03:20:03
>>489
ゲ板の誤爆だろ

492:デフォルトの名無しさん
08/06/05 03:28:31
>>479 の指摘がよく分からんのだが・・・・
てか,もうちょっと詳しく説明してくれ.

493:デフォルトの名無しさん
08/06/05 07:42:31
>>492
横レスだが、カプセル化は
× 外部から操作不能にすること
○ 個々のオブジェクトが、役割を果たすために必要なデータと操作をまとめること

ただし、デフォルトで外部からアクセス禁止にできる実装の言語は、初歩的ミスを
減らせる場合があるというメリットはある。

494:デフォルトの名無しさん
08/06/05 09:13:01
>>490
後で他人がリファクタリングする事を前提とした場合の
望ましいドキュメントの具体例をキボンヌ。

つか、「ドキュメント」って docstring 記述と
doctest での確認のセットの事だと
漏れは理解してるけど合ってる?

全然違うなら、追加解説も気盆奴

495:デフォルトの名無しさん
08/06/05 17:30:34
>>493
URLリンク(www.horijp.com)
URLリンク(www.okisoft.co.jp)

スレ違いかもしれないけど、いいかんじだとおもたDuke

URLリンク(blogs.sun.com)

496:デフォルトの名無しさん
08/06/05 18:05:55
いいかんじかもしれない
だがことわる!

497:デフォルトの名無しさん
08/06/05 18:15:00
>>479
この本持ってるけど、pythonはオブジェクト指向言語として不完全みたいなことは書いてないぞ。

498:デフォルトの名無しさん
08/06/05 19:07:00
じゃあ、分かっててわざと書いてないだけなんじゃね?

499:デフォルトの名無しさん
08/06/05 22:40:34
お疲れ様です

pythonでコマンドプロンプトを操作する方法を検討しています。

これを実行するためにgetoptを用いたいと思い、この関数を用いて、
コマンドプロンプトから対象のpythonファイルを開いたときに、
コマンドプロンプトのヘルプを表示するようにhelpを命令するプログラムを
作成してみました。

import getopt, sys

def helps():
getopt.getopt(sys.argv[1:], "help")

実際にコマンドプロンプトで動かしても無反応で、実際に実行しても
「GetoptError: option -n not recognized」というエラーが出てしまいます。

リファレンスで確認してみたのですが、私には何が悪いのかわかりませんでした。

本当にPythonでコマンドプロンプトの操作ができるのでしょうか?
また、操作ができるとして、このプログラムがどのように表記されてればよかったか
についてもお聞きしたいです。

何卒よろしくお願いします

500:デフォルトの名無しさん
08/06/05 22:52:21
オブジェクト指向においてカプセル化ってそんなに大事な要素だとは思えない。
スコープさえ区別してくれれば、充分だ。

501:デフォルトの名無しさん
08/06/05 23:18:40
>>499
>>> import getopt
>>> args = '-h -e -l -p'.split(' ')
>>> getopt.getopt(args, 'help')
([('-h', ''), ('-e', ''), ('-l', ''), ('-p', '')], [])

でもやりたいのはこっちだろう
>>> args = '-n --help kwsk --lang=ja'.split(' ')
>>> getopt.getopt(args, 'n', ['help=', 'lang='])
([('-n', ''), ('--help', 'kwsk'), ('--lang', 'ja')], [])

リファレンスもっかいよく読んでわからなかったらまたおいで

502:デフォルトの名無しさん
08/06/06 09:37:04
>>500
俺もそう思う
オブジェクト指向はポリモフィズムが肝だと思う
ああ、PythonがRubyに比べて云々って逝ってる香具師は
もしかしたらselfが鬱陶しいっていうだけの話鴨試練


503:デフォルトの名無しさん
08/06/06 11:29:42
pygame翻訳サイトさえあれば、、、俺だって、、俺だって、、、

504:デフォルトの名無しさん
08/06/06 12:40:04
URLリンク(www.nishihiroshima.com)
>なにせ、いくら頭をひねっても、「型の無い言語であるPythonが、
>多重継承をサポートしなければならない理由」など、
>全くといっていいほど無いからです。

なんでこのひとは「型が無い」と思ったんだろう.

505:デフォルトの名無しさん
08/06/06 13:00:37
俺、昔、「Haskellには型が無い」って主張する奴と議論したことあるよw

Python の C3 MRO はそれだけ独立してでも知っておいて悪くないと思うおいら

506:デフォルトの名無しさん
08/06/06 13:31:11
>>504
静的型でnominal subtypingな言語だけを念頭に置いて「型」と
言ってるんだろうけど
言葉の使い方がいい加減で不正確なんだな

ま、nominal subtypingならポリモーフィズム実現するには継承するしかないが
Pythonのようなduck typingやstructural subtypingならそうではないから、
継承の意味薄いってのはその通り

507:デフォルトの名無しさん
08/06/06 13:40:26
self は確かにうっとうしい
あれがつきまとうだけで
オブジェクト指向っぽくない

508:デフォルトの名無しさん
08/06/06 21:17:31
>>507

509:デフォルトの名無しさん
08/06/06 22:25:39
むしろselfはオブジェクト指向っぽいと思う

510:デフォルトの名無しさん
08/06/07 00:12:52
PHPの$thisとかもうざいとか言い始めそうだな

511:デフォルトの名無しさん
08/06/07 00:23:29
>>509
いやselfはオブジェクト指向そのものなんだが
それをいちいち書くからおかしいっつー話だよ

>>510
いくら糞PHPでも引数に毎回書く必要はないだろ?
Rubyでもselfが必要なときは書くんだし

だけどPythonはくどいほど書くからw

512:デフォルトの名無しさん
08/06/07 00:39:24
オブジェクト指向っぽい考え方自体が
オブジェクト指向っぽくないんだよ、俺にしてみれば。

513:デフォルトの名無しさん
08/06/07 00:48:47
オブジェクト指向かそうでないかの議論に熱くなる奴らは
総じてオブジェクト指向だな

514:デフォルトの名無しさん
08/06/07 01:07:28
さあwみなさまご一緒に
レッツオブジェクト指向!

515:デフォルトの名無しさん
08/06/07 02:29:40
おまえらオブジェクト指向を嗜好し過ぎでオブジェクト思考になってると

516:デフォルトの名無しさん
08/06/07 09:20:45
誰が(ry

517:デフォルトの名無しさん
08/06/07 10:47:16
殺した(ry

518:デフォルトの名無しさん
08/06/07 11:07:46
クックロビ(ry

519:デフォルトの名無しさん
08/06/07 14:33:46
あ、そーれ

520:デフォルトの名無しさん
08/06/07 14:48:58
~三波春夫さん江~

521:デフォルトの名無しさん
08/06/07 16:15:14
も り あ が っ て る よ う だ な w

522:デフォルトの名無しさん
08/06/07 16:58:49
盛り上がってるところ悪いが
対話モードでの浮動小数で質問。

Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 4.8
>>> print a
4.8
>>> a
4.7999999999999998

aが「4.7999999999999998」になってしまう理由って何?


523:デフォルトの名無しさん
08/06/07 17:04:35
B. 浮動小数点演算、その問題と制限
URLリンク(www.python.jp)

524:デフォルトの名無しさん
08/06/07 17:26:30
>>523
printはコンピュータ内部の値じゃなくて
見た目を整えたものを表示してくれるのね。
サンクス。

盛り上がってるところすまなかった、続けてくれ。
URLリンク(jp.youtube.com)


525:デフォルトの名無しさん
08/06/07 19:29:57
>>524
printというより、repr()とstr()の違いってとこだな
URLリンク(www.python.jp)

526:デフォルトの名無しさん
08/06/07 20:07:06
>>> (4.8).__str__(), (4.8).__repr__()
('4.8', '4.7999999999999998')

527:デフォルトの名無しさん
08/06/08 16:34:28
クッキーについて質問です
webページの自動ログインスクリプトを作ろうと思い、urllib.urlopen()を使って
あるページのフォームの情報をPOSTしてみたのですが、そのページのhtmlが

<script>
function Func(){ document.cookie = aaa }
</script>

<form method="post" action="URLリンク(bbb)" onSubmit="javascript:Func();">

のようにクッキーを設定しており、思ったような結果が返ってきません。
この動作をpythonで代替するにはどうすればよいのでしょうか?

528:デフォルトの名無しさん
08/06/08 21:44:45
>>527
cookielib, urllib2

529:デフォルトの名無しさん
08/06/08 22:18:10
urllibでなんとかしたいんじゃないの?

530:デフォルトの名無しさん
08/06/08 22:36:10
いえ、出来るなら何でもいいです

cookielibとurllib2、色々ググってみて

cj = cookielib.CookieJar()
cjhdr = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cjhdr)

r = opener.open(url, params)

のようにするのは何とかわかりましたが、クッキーをどう設定したらいいのかよくわかりません
具体的にどうすればいいのか、ご教授願えないでしょうか

531:デフォルトの名無しさん
08/06/08 22:43:26
JavaScriptの部分を自分で解析しないと駄目じゃない?

532:デフォルトの名無しさん
08/06/08 22:44:11
ググって見つかった例でうまくいかないなら
具体的なサイトを示した方が早い気が
javascriptがはさんであるとうまくいかないのかな?

533:デフォルトの名無しさん
08/06/08 22:48:09
cookielibはレスポンスヘッダの解析のみでしょ

534:デフォルトの名無しさん
08/06/08 23:22:02
そもそもcookieについてよく知らないもので、この質問が適切かどうかもよくわからない状況です…
身元がばれるため具体的なサイトは示せませんが、問題と思われる部分を抜粋すると、

function idgisSetRedirectionCookie( theForm ) {

{
// modify the following values for your environment
var idgisRedirectorUrl = "URLリンク(aaaa)<)" onSubmit="javascript:{ return idgisSetRedirectionCookie( this ); }">
<input type='hidden' name='HiddenURI' value="URLリンク(dddd)">

こんな感じです(aaaa、bbbb、cccc、ddddは全部違うURL)

535:デフォルトの名無しさん
08/06/08 23:50:22
原理的にはそのJavaScriptを解析して動作をエミュレートすれば良いはずだけど
実際にはかなり難しいんじゃないかと思う

現実的かと思うのはwin32comを使ってWebブラウザをコントロールする方法
ExcelをPythonからいじくる例はたまに見かけるからそれらを参考にしてみては

536:デフォルトの名無しさん
08/06/09 00:05:54
>>534
そのスクリプトで
document.cookie = hogehoge とか設定してる値が常に固定なら、

HTTPのヘッダに
Cookie: hogehoge
という形で加えてPOSTすりゃいいだけ
urllib2のRequestクラスならheaderを好きなように設定できるはずだ

スクリプトの内容が可変なら、>>535が言ってるように
スクリプトを自分でパースするしかない

537:デフォルトの名無しさん
08/06/09 00:15:58
固定だったらそいつはわざわざ何がしたいんだって話になるがなw

538:デフォルトの名無しさん
08/06/09 00:18:04
可変にしても、スクリプトの内容自体はほぼ同じで、埋め込まれてる
文字列リテラルの内容が違うだけだろうから、
正規表現や何かで簡単にぶっこぬけると思うけどね


539:デフォルトの名無しさん
08/06/09 00:48:31
なんとなく、SPAM用のスクリプト作成の手助けをした気がしなくもないw

540:デフォルトの名無しさん
08/06/09 00:48:52
環境によって若干変わってくるのでなんとか正規表現とかで頑張りたいと思います
今現在の環境だけでは変わらないので、とりあえず今だけでも動かそうと思うのですが、
Requestクラスの使い方は

data = {'username':'qwerty', 'password':'asdfgh'} #等など
req = urllib2.Request('URLリンク(cccc)', urllib.urlencode(data), {'Cookie':hogehoge})
r = urllib2.urlopen(req)

こんな感じで合ってます?

541:デフォルトの名無しさん
08/06/09 04:46:25
一応通報した


542:デフォルトの名無しさん
08/06/09 06:30:18
except Exception, inst:

って書き方がなんかきもちわり.
投げられた Exception クラスのインスタンス inst を受け取るわけだけど,

except (Exception1, Exception2, Exception3):

みたいに複数のクラスを受け取る時にはどうやってインスタンス受け取るんだよ.


543:デフォルトの名無しさん
08/06/09 06:35:13
except (Exception1, Exception2, Exception3), inst:

544:デフォルトの名無しさん
08/06/09 06:35:33
>>542
except (Exception1, Exception2, Exception3), inst:

Python3.0では書式変わるから、それまで我慢しる

545:デフォルトの名無しさん
08/06/09 11:35:42
Python 3000 とかいうやつ?

546:デフォルトの名無しさん
08/06/09 20:54:37
>>500 ありがとうございます。
お礼が遅れてしまい申し訳ありません。
恐縮ですがもう少しお付き合いお願いします。
先日教えていただいた、
>>> args = '-n --help kwsk --lang=ja'.split(' ')
>>> getopt.getopt(args, 'n', ['help=', 'lang='])
をpythonで実行してみたところ、エラーが出ず、

([('-n', ''), ('--help', 'kwsk'), ('--lang', 'ja')], [])
と正常に表示されました。

正常に動いていると判断し、このプログラムを以下のように記述したpyファイルを
用意し、実際にコマンドプロンプトで起動したときにコマンドプロンプトのヘルプを
表示できるか確認したのですが、無反応でプログラムが終了してしまいます。

ファイル名:ex.py
# coding: utf-8
import getopt, sys
args = '-n --help kwsk --lang=ja'.split(' ')
getopt.getopt(args,'n',['help=','lang='])

考えられる引数を入力してみたのですが反応がなく、このプログラムを進めていただく前に、教えてもらった方法でもやってみたのですが
ヘルプの表示ができませんでした。
リファレンスのテストコードでgetoptの動きを確認してみたかったのですが、
こちらも起動しなかったため確認できませんでした。

コマンドプロンプトでこのファイルを起動し、コマンドプロンプトのファイルを起動するには、
プログラムのソースに何か加える必要があったのでしょうか?
それとも、コマンドプロンプトを使用するときに、何か特別な記述が必要だったのでしょうか?
アドバイスをよろしくお願いします。

547:デフォルトの名無しさん
08/06/09 21:30:31
「コマンドプロンプトのヘルプ」って、
C:\>cmd /?
のことだよな?普通

それに>>500とどう関係があるんだよ。

548:デフォルトの名無しさん
08/06/09 22:01:46
getopt.getoptの戻り値を使った処理を書かないと何も起こらないのは当然のような
URLリンク(www.python.jp)

549:デフォルトの名無しさん
08/06/09 23:00:33
対話型プロンプトだと戻り値と出力の区別が付かないからね
勘違いする初学者が出てきてもおかしくない
どこかのカンファレンスか何かで問題提起されてたらしいが

>>546
レス遅そうなのであなたが本当にやりたいことを確かめずに書くけど

myhelp.py:

import os, sys
os.system('help %s' % (' '.join(sys.argv[1:])))

実行例:

C:\> myhelp.py cd
現在のディレクトリを変更したり、ディレクトリ名を変更したりします。
[以下略]

550:デフォルトの名無しさん
08/06/10 01:45:45
解決しました
ほんとうにありがとうございました


551:デフォルトの名無しさん
08/06/10 01:53:33
どうみても(ry

552:デフォルトの名無しさん
08/06/10 02:19:09
mailto:cookiejar

553:デフォルトの名無しさん
08/06/10 04:14:00
あぁ俺か
時間帯でばれるもんなんだな
これから気をつける

554:デフォルトの名無しさん
08/06/11 19:05:34
はじめまして、Pythonを勉強してみようと考えているものです。
おすすめサイト、書籍などお教えください。

・やりたいこと
 TDDでWebアプリ開発

・プログラミング暦
 Delphi 3年(趣味のフリーソフト作成)
 Java 1年(資格取得のみ、実務経験なし)
 PHP 4年(Webアプリ構築)

よろしくお願いします。

555:デフォルトの名無しさん
08/06/11 19:55:44
っamazon.com

556:デフォルトの名無しさん
08/06/11 19:59:56
つgoogle.com

557:デフォルトの名無しさん
08/06/11 20:01:51
つyahoo.com

558:デフォルトの名無しさん
08/06/11 20:02:05
スレリンク(tech板:5番)

559:デフォルトの名無しさん
08/06/11 20:02:27
URLリンク(wiki.python.org)

560:デフォルトの名無しさん
08/06/11 20:04:14
URLリンク(www.python.jp)

561:デフォルトの名無しさん
08/06/12 05:09:29
グラフ処理をPythonでやりたいんだけど
いいライブラリーありませんか?
boostのBGLみたいなものを考えています。

562:デフォルトの名無しさん
08/06/12 05:13:55
graphviz

563:デフォルトの名無しさん
08/06/12 09:21:07
ちょ、それは可視化なんで。

564:デフォルトの名無しさん
08/06/12 10:15:40
>558-560
ありがとう、一通り目を通してみます。

ひきつづきTDDでWebアプリについて解説してるページやチュートリアルがあったら教えてください。
英語でも可。

565:デフォルトの名無しさん
08/06/12 12:45:52
>>561
networkx

566:デフォルトの名無しさん
08/06/12 19:09:52
>>565
すげぇ,マジTHX

567:デフォルトの名無しさん
08/06/12 19:36:29
>>564
いちいち人に聞くんじゃないよ
素人じゃあるまいし

568:デフォルトの名無しさん
08/06/14 11:16:08
>>567
くだすれなんだから初心者にやさしくしようぜ。

569:デフォルトの名無しさん
08/06/14 11:30:18
初心者になら回答者もやさしくするだろうけど
Delphi3年Java1年PHP4年でテストドリブンだぜ
>>567がイラっとくるのもわかるわ

570:デフォルトの名無しさん
08/06/14 13:59:29
これからプログラミングを勉強しようと思って調べたところ、
pythonが初心者向きだと聞きました。
C言語か、Pythonかで迷っているんですが、どちらがいいでしょうか

571:デフォルトの名無しさん
08/06/14 14:00:45
Pythonがいいです。Cはその後でも遅くありません

572:デフォルトの名無しさん
08/06/14 14:02:17
C言語でプログラミングを始める人は多いから
人や資料が多いという点でCの方がいいような
Pythonの対話モードはとっかかりはいいと思うけど

573:デフォルトの名無しさん
08/06/14 14:08:20
>>568
何か「やりたいけどわかりません。やってみたけど出来ません」みたいな質問ならわかるが、
情報欲しいだけの「ググレカス」で済む質問には冷たくてもいいんじゃないの?

574:デフォルトの名無しさん
08/06/14 14:16:03
>>571
>>572
わかりました。
まずPythonを触ってみることからはじめてみます。

やはり、プログラミング言語には自分に合う、合わないような相性はあるんでしょうか?

575:デフォルトの名無しさん
08/06/14 14:41:43
>>574
そのあたりは本当に人それぞれ

具体的な目標がなくただ漠然とプログラミングの勉強を
してみたいというのならPythonでまったく問題ない
教育用言語としても使われているぐらいだし

逆に具体的な動機があるのなら話は別
(掲示板CGIを作りたい、Windowsアプリを作りたい、etc.)
そういう動機があるのなら前もって言っておいたほうが
アドバイスする側もしやすいと思うよ

576:デフォルトの名無しさん
08/06/14 14:52:30
>>575
なるほど。
動機としては、Windowsアプリを作りたいが一番近いかもしれません。
ただ、今は漠然とそう考えてるだけで具体的にこういうのというのはないです。
Delphiという選択肢もあると聞いたんですが、こっちはPython以上に資料が少ないということらしいので・・・。

577:デフォルトの名無しさん
08/06/14 16:25:01
漠然と、ぐらいならPythonでOK
基本は他の言語でも通用するからやっといて無駄にはならないよ

578:デフォルトの名無しさん
08/06/14 16:25:02
WindowsのGUIならC#,Delphi,VBあたりの方が
とっつきやすいと思う

579:デフォルトの名無しさん
08/06/14 21:00:32
初学者のとっては言語そのものよりも周辺のライブラリや開発環境が
とっつきやすいかどうかが重要だよな。


580:デフォルトの名無しさん
08/06/15 09:22:50
ウィザードでなんでも出来てしまうと
初心者的にはすごいんだろうね

581:デフォルトの名無しさん
08/06/15 10:12:16
プログラミングってソースコードや環境を可能な限り把握する行為だと思うから
いきなりIDE使うのはあまりオススメしたくはない

582:デフォルトの名無しさん
08/06/15 10:36:25
楽なほうからやらせるほうがいいに決まってんだろ。
いきなり苦行を科してどうするんだよ。

583:デフォルトの名無しさん
08/06/15 10:41:45
これだからゆとりは...

584:デフォルトの名無しさん
08/06/15 10:44:24
近寄らないでください。老臭がします。

585:デフォルトの名無しさん
08/06/15 13:29:16
最近はExcelで仕様書書くだけで
コード吐いてプログラム完成するんですよね


586:デフォルトの名無しさん
08/06/15 16:38:14
これだからゆとりは...

587:デフォルトの名無しさん
08/06/15 17:49:14
IDE が進化して人間に敵対しはじめるとか


588:デフォルトの名無しさん
08/06/15 22:57:03
スカイネットですね、わかります

589:デフォルトの名無しさん
08/06/16 00:29:13
スカイフィッシュはどうしたんだろうね。

590:デフォルトの名無しさん
08/06/16 01:00:45
乱獲しすぎて……ごめん

591:デフォルトの名無しさん
08/06/16 15:29:19
とりあえずCでセグフォいっぱい出して、
なぜか考えるんだ。そしてメモリ管理って
なんて難しいんだろうって悩むんだ。

そうすれば最近のどんな言語であっても
ある機能がなぜ実装されているのか理解できるだろう。

592:デフォルトの名無しさん
08/06/16 16:48:22
そうかなあ・・・

593:デフォルトの名無しさん
08/06/16 22:07:31
「最初は楽しまくってプログラミングの楽しさを満喫しようよ」派
「コマンドラインで基礎からみっちりやれGUIデザイナとかIDEなんて十年早いんじゃ」派


594:デフォルトの名無しさん
08/06/16 22:42:35
python使うのに後者はないだろ・・

595:デフォルトの名無しさん
08/06/16 23:00:40
URLリンク(pyukiwiki.sourceforge.jp)

wktkしてリンク先を眺めたら
そこにはperlがありました・・・

日本人プロダクトなyukiwikiはどこにあるのでしょうか?

596:デフォルトの名無しさん
08/06/16 23:12:20
URLリンク(www.hyuki.com)

597:デフォルトの名無しさん
08/06/17 07:54:45
ここは低レベルな質問でもOKなんでしょうか?

Windows環境上で、Pythonを勉強中なのですが、エディタの選択で悩んでいます

a. emacs系のエディタに慣れ過ぎてしまったので、キー操作にemacs系のソレが用意されていること
b. eclipseに慣れてしまったので、予約語、変数名、メソッド名、ファイル内に出現した単語を補完してくれる機能があること
c. コメントを日本語で書きたいので、utf-8n でファイルを開いたり保存したりできるもの
d. 起動が重いと学習意欲が削がれるので、起動が比較的早いもの
e. 無料で使えること

こういった条件を満たせるものを探しているのですが、これがなかなか見つかりません
「emacs慣れてるならemacs使えや」と言われそうですが、Meadowの起動は遅いですし予約語補完もいま一つですし(ファイル内に出現した単語の補完は楽なんですが…)
「eclipse+PyDevはどや」と言ってもeclipseは起動が糞重くて辟易しますしそもそもPyDevって有償じゃないのでしょうか以前入れたら広告が頻繁に出てきて以下略
何かいいエディタはないでしょうか

598:デフォルトの名無しさん
08/06/17 10:51:14
Meadowを自動起動にして終了させなければいいんだ。

599:デフォルトの名無しさん
08/06/17 11:00:17
Komodoもいいかもね。

600:デフォルトの名無しさん
08/06/17 12:16:09
xyzzy

601:デフォルトの名無しさん
08/06/18 00:34:47
スクリプト組むのにeclipseって
鶏を割くのにナパーム弾を使うみたいだな

602:デフォルトの名無しさん
08/06/18 00:53:02
ナパーム弾で鶏は割けないと思います!><

603:デフォルトの名無しさん
08/06/18 00:54:21
>>597
何も考えずに付属の IDLE (Python GUI) を使う。

604:デフォルトの名無しさん
08/06/18 06:13:37
ちょっと前にIDLEをエディタとして使ってみたけど、ウインドウの分割が
できないのがキツかったな。

俺は次はPyPEを試してみる。
日本語の編集に難ありだけど、全体的には使いやすそう。

605:デフォルトの名無しさん
08/06/18 11:05:43
>>555-557
".com"のところがみそなんだろうなあ

606:デフォルトの名無しさん
08/06/18 11:24:07
>>570の便乗質問なんだけど
OSやPCの知識を深く得る意味でLinux環境でgccとpythonを勉強するのは、どうなんでしょうか?
C1本に絞ったほうがいいんですかね

勉強法のひとつとして
実装してみたい簡単なプログラムをPythonで書いて、Cでも実装してみる
こういうのってどうなんだろう

自分のイメージとしてはCはgdbとかを使いながら、ソースコードを読めるレベルになりたいですんよね

607:デフォルトの名無しさん
08/06/18 11:36:30
それならC一本でいい気もする

そういうアプローチ(OSやPCの知識を深く得る)から書かれている本として
『ふつうのLinuxプログラミング』『Unix/Linuxプログラミング 理論と実践』などが挙げられる
読んでみるといいんじゃないだろうか

まあ俺はHelloWorldしか書けないわけだが

608:デフォルトの名無しさん
08/06/18 13:31:48
>>598-600
アドバイス、㌧です

Meadowを起動したら最後、永遠に終了させない、という発想はありませんでした…
メール閲覧もWebサイト閲覧もすべてMeadow/NTEmacsでやるぜ!という人には十分アリな選択肢なのかもしれないですね…
しかしまさかPythonを勉強したいがためだけに、日常作業の全てをemacsに委ねるべく人体改造する羽目になるとは…

Komod Edit はいい感じですね。実は今現在、それで騙し騙しやってるところだったりします
emacs系のキーマップもありますし、使用中の動作も比較的軽いですし
ですが、起動がecipse並みに遅いのと、複数のファイルを共有した単語補完ができないのが厳しいところです
別ファイルのタブに移動してメソッド名をコピーして元タブに戻って貼り付け、が面倒くさい…

xyzzyは常用エディタだったりするんですが、py-mode がどうも非力な印象で…
また、新規ファイルを作成すると、SJISになってしまうあたりも、未だ自力で解決できなくてKomodoに逃げてる状態だったりします

emacs系のキーマップにこだわるから選択肢が少なくなるんですかね。XKeymacsの導入を前提にして範囲を広げたほうがいいのかな

609:デフォルトの名無しさん
08/06/18 13:35:26
>>603
IDLEはキーマップ?がWindowsのソレじゃないですか…?
Windowsアプリのキーマップでいいなら、PyScripterその他でええやんということにもなりそうな気がします

でもたしかに、「勉強用」と割り切るなら、最初から標準で入ってるIDLEを、というのは実に定番ですな…

610:デフォルトの名無しさん
08/06/18 13:38:48
>>601
非常に激しく、強く、熱く、胸を張って、声を高らかに、同意します

Lightweight Language といいながら全然Lightweightじゃねえ気がします>eclipseでLL

611:606
08/06/18 14:46:29
>>607
C一本か~
なんかやりたいくないなあ~w

612:デフォルトの名無しさん
08/06/18 14:48:50
Cの基本だけなら直ぐ終わるよ

613:デフォルトの名無しさん
08/06/18 14:52:12
そうだね、プロテインだね。

614:デフォルトの名無しさん
08/06/19 07:21:08
基本、コマンドラインからつかうツールを使っているんだけど、
たとえばオプションをGUIで指定したり実行結果のテキストを
スクロール可能な形で表示したいと思うこともある。

wxPython とか大げさ(というか使い方わかんね)だとおもうんだけど、
かといって curses みたいなのよりはちょっとGUIっぽくあってほしい。
やっぱりそういう用途だと Tkinter がベストな解?

1)コマンドラインオプションの代わりにGUIでオプション指定した
2)実行結果をスクロール可能な形で表示したい
3)できればオプションのデフォルト値とか保存したい
  (これはUIとは何の関係もない話か・・・)


615:デフォルトの名無しさん
08/06/19 13:30:11
集合型ってのはデータ交換ではあまり使われないんでしょうか?
たとえば JSON や YAML にも集合型というのは定義されてません。
所詮順序つきのものがあれば十分だからということなんでしょうか?

616:デフォルトの名無しさん
08/06/19 21:15:25
んなこと言ったら、リストで十分なのにタプルがあるわけだし・・・

617:デフォルトの名無しさん
08/06/19 21:53:54
でもタプルは変更不可なわけで

618:デフォルトの名無しさん
08/06/19 23:08:29
だがそれがいい

619:デフォルトの名無しさん
08/06/20 00:00:07
>>608
renpy 付属の Scite が F5 でスクリプト実行できて便利。

なんとなく『Perlをはじめよう』いうソフトと似てる
URLリンク(homepage3.nifty.com)

1. Scite で F5(go), Shift+F5(clear),
ん、Shift+F8(parameter)とかあるな…なんですかそれ…使い方不明…orz

620:619(レス番間違えた…orz)
08/06/20 00:01:27
>>614
2. Scintilla(Sciteのエンジン)をwrapしたwxpython製のPyAlamode
を拡張する(インテリセンス補完)
URLリンク(www.ibm.com) (作者ページ)

3. 男だったら補完も折り畳みも要りません(TT)
ベースはGAEで、SymPy-live や PyAMF を追いかける茨の道…
URLリンク(live.sympy.org)
URLリンク(pyamf.appspot.com)

4. Firefox + crunchy も楽しそげ
URLリンク(code.google.com)

5. pylons + 黒魔術
URLリンク(codepad.org)

621:デフォルトの名無しさん
08/06/20 07:26:04
>>620 THX いろいろあるもんだなぁ。

622:デフォルトの名無しさん
08/06/20 07:35:54
順番に見てたら結構ウェブのインターフェイスのものが多いなぁ。
ローカルのファイルシステム上で使うCUIツール群の
フロントエンドとして使えるものなのかなぁ。

623:デフォルトの名無しさん
08/06/20 07:41:14
1) 2) の SciTe がらみのやり方がローカル用途には何となくよさそう
な気もするけど,3) 4) 5) も気になるところ.

624:デフォルトの名無しさん
08/06/20 07:42:08
って,GAEベースって書いてあるじゃん・・・不勉強すぐる俺

625:デフォルトの名無しさん
08/06/20 07:49:55
しかしさぁ,ローカルのファイルシステム上で動くアプリケーションの
フロントエンド部分だけブラウザの描画エンジンを使えれば
便利だと思うのに,なかなかうまくいかないもんだね…

626:デフォルトの名無しさん
08/06/20 08:32:29
os.systemでコマンドプロンプトに出力される内容ををpythonで表示する方法は無いですか?
ご返答をよろしくお願い致します。

627:デフォルトの名無しさん
08/06/20 09:34:38
popen3かな


628:デフォルトの名無しさん
08/06/20 09:58:31
subprocess.Popen

629:614
08/06/20 10:12:24
いろいろ教えてもらったのに結局こんな感じのものに落ち着きそうな予感。
URLリンク(inforno.net)

630:614
08/06/20 15:05:22
あの、Tkinter で親のウィジェットが破壊されたとき
子のウィジェットにはイベントで通知されるんでしょうか?
そのイベントは bind でどうやって捕捉すればいいんでしょうか?

631:デフォルトの名無しさん
08/06/20 16:26:39
>>630
親は WM_DELETE_WINDOW を捕捉すればいいね。
子は destroy() を継承するしかない希ガス。
ただし※印の親の destroy() を明示的に呼ばないと子の destroy() も呼ばれないみたい。

import Tkinter as Tk
def callback():
    print "root window deleted"
    root.quit()
class MyLabel(Tk.Label):
    def destroy(self):
        Tk.Label.destroy(self)
        print "label destroyed"
root = Tk.Tk()
label = MyLabel(root, text="Test")
label.pack()
root.protocol("WM_DELETE_WINDOW", callback)
root.mainloop()
root.destroy() # ※

それにしても、子ウィジェットの破壊なんてどうでもいい気がするんだけど何ゆえ通知してほしいの?
アプリ自体の後始末は終了前にやればいいし・・・。

632:614
08/06/20 16:37:19
Tkinter.Entry への入力を別スレッドでの処理に
使ってるんだけど、ウィジェットがなくなっちゃうと
ず~っと待ちっぱなしでどうしようもなくなるなぁ、って

633:デフォルトの名無しさん
08/06/20 18:00:26
mod_pythonについて教えてください。自分なりに調べた結果
例えが悪いかもしれませんがC言語で言うと、
本体exe=mod_python
ダイナミックリンクライブラリdll=pythonスクリプト
という感じなのかなと思いました。
そこで、mod_python上で動かすpythonスクリプトにはエントリポイント的なモノ(関数)
を記述し、その中に処理させたい内容を記述すれば良いのでしょうか?

634:デフォルトの名無しさん
08/06/20 18:33:41
>>632
ああ、>>629のコードのことね。
それは子ウィジェットの破壊とは別の問題だと思うよ。
Entry を殺してもスレッドは死なないからね。

スレッドは別スレッドから殺すのではなく自ら終了するよう仕向けるのが基本です。
629のコードでいうと、例えば何も入力せずにエンターを押したら終了ということにして、
1. GUIConsole::readline() で result が空文字列だったら self.quit() してから return result する。
2. 別スレッド側で EOFError が起こるのでそれを捕まえてループを抜ける。
3. guiconsole.start() の終わりで別スレッドを join する(別スレッド終了を待つ)。
というようなことをするのが筋。
親スレッドが終了したとき子スレッドがどうなるかは環境依存だから、
面倒だけどキチンとやるのが無難です。

629のコードでは低レベルな thread モジュールを使ってるから join が無いね。
代わりに threading モジュールを使うように直すといいと思う。

635:デフォルトの名無しさん
08/06/21 08:09:58
>>633URLリンク(www.python.jp)

636:デフォルトの名無しさん
08/06/21 09:27:08
>>633 はもしかして mod_python の mod_ を python のモジュールと
勘違いしているのではないか? mod_python が apache のモジュール
のことだと認識した上での質問なんだろうか。

637:デフォルトの名無しさん
08/06/21 14:24:16
>>636
そのことは、わかっていると思います。いや、分かってないのか…
apacheのモジュールとしてmod_pythonを読み込むことで、
apache上にpythonインタプリタが常駐するようになる。
ということではないのですか?

638:デフォルトの名無しさん
08/06/21 14:59:38
>>626です。ご無沙汰しておりました。
>>627さん,>>628さんありがとうございます。
popenを用いても出来るということがわかったのですが、まだ結果の出力方法が
分かりません。恐縮ですが、もう一度助けてください。

たとえばos.popen("help help")もしくはsubprocess.Popen("help help")と入力した場合に、
以下のようなコマンドプロンプトの"help"についてのヘルプがpython上で出力されれば
望ましいと考えています。
---
Windows コマンドのヘルプ情報を提供します。

HELP [comand]

comamand - このコマンドのヘルプ情報を表示します
---
前回教えていただいた、方法で試してみたのですが表示させることができません。
何が足りないのか教えて頂ければ助かります。

639:デフォルトの名無しさん
08/06/21 15:38:47
>>637
いやすまん、失礼した、そのとおりです。

640:デフォルトの名無しさん
08/06/21 16:27:15
>>639
いや、俺もあまりドキュメントちゃんと読んでなかった。あとで読み直したら
何となくだけど使い方は分かってきた。努力不足でした。すみません



641:デフォルトの名無しさん
08/06/21 17:02:59
>>> import os
>>> print os.popen("help help").read()
Windows XP コマンドのヘルプ情報を提供します。

HELP [command]

    command - このコマンドのヘルプ情報を表示します。

>>> 

642:デフォルトの名無しさん
08/06/21 17:34:02
何かをPythonで計算してる時に現在どのくらいメモリを使ってるか、
正確な値をバイト単位で知りたいんですが知る方法はないですか?

643:デフォルトの名無しさん
08/06/21 18:36:45
環境依存だと思います。

644:デフォルトの名無しさん
08/06/22 01:01:33
タスク一覧見れば分かる環境が多い

645:デフォルトの名無しさん
08/06/22 01:03:32
明らかにメモリ喰うだろうと思って書いたプログラムが大してメモリ使ってなくて
単純なループだけで大丈夫だと思ってた方が数百MB使っててどんどん増えてて藁

646:デフォルトの名無しさん
08/06/22 17:57:34
>>645
それで、結論は?

647:デフォルトの名無しさん
08/06/22 23:40:16
はじめてみたんですが、日本語の情報が少なくて・・・
IDLEを使って色々試しているんですが、対話モードの時って日本語が出力できないのはどうにかできるんでしょうか?

648:デフォルトの名無しさん
08/06/23 00:07:58
できますよ

649:デフォルトの名無しさん
08/06/23 00:08:37
>>647
ここ行って見たら?
URLリンク(python.rdy.jp)


650:デフォルトの名無しさん
08/06/23 01:01:18
>>649
最初から墓場にご案内ですか?(wwwwwwwwwww

651:デフォルトの名無しさん
08/06/23 02:45:17
C:\cgi-bin>python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

URLリンク(localhost:8000) にアクセスしても
ソースコードが表示されるだけで実行できません。

#! c:\\Python25\\python.exe
import os

print 'Content-type: text/plain\n\n'
for key in os.environ:
print '%s: %s' % (key, os.environ[key])

どうして動かないのでしょうか?

652:デフォルトの名無しさん
08/06/23 02:51:21
C:\>python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

***-PC - - [23/Jun/2008 02:46:34] "GET / HTTP/1.1" 200 -
***-PC - - [23/Jun/2008 02:46:41] code 403, message CGI script is not a plain file ('/cgi-bin/')
***-PC - - [23/Jun/2008 02:46:41] "GET /cgi-bin/ HTTP/1.1" 403 -

2. cd c:\ して python -m CGIHTTPServer する
3. ブラウザで localhost:8000/cgi-bin/env.py にアクセス
  環境変数がずらっと表示されたら成功

コマンドプロンプトの起動パスを変更して立ち上げてみたところ
403 not found...とかなって何も表示されませんでした… orz

653:デフォルトの名無しさん
08/06/23 03:38:17
>>652
ログを見る限り、
URLリンク(localhost:8000)
にアクセスしたことになってるが?

654:デフォルトの名無しさん
08/06/23 08:27:50
おぉ、こんな機能があるのか。恐ろしく便利だな。

でもこれ、CGIが実行されたときのカレントディレクトリが、
pythonを起動したときのディレクトリのままだね。
カレントディレクトリを変更してから呼んで欲しいな。

655:デフォルトの名無しさん
08/06/23 11:34:10
>>653
URLリンク(localhost:8000) を直接叩いたら
うまくいきました ><

>>651でディレクトリ一覧が表示されていたのでそのノリで
そこから辿ってゆけるかなとか思ったのが敗因でした...orz

2. cd c:\ して python -m CGIHTTPServer
3. URLリンク(localhost:8000) に直接アクセスする
 
*拡張子は.pyでないと駄目。
*URLリンク(localhost:8000) にアクセスしても plain file ではないと言われ、403 error。

656:デフォルトの名無しさん
08/06/23 20:25:01
> *拡張子は.pyでないと駄目。
> *URLリンク(localhost:8000) にアクセスしても plain file ではないと言われ、403 error。

微笑ましいなw

657:デフォルトの名無しさん
08/06/24 04:35:18
>>650
墓場についてkwsk

658:デフォルトの名無しさん
08/06/24 09:46:10
650じゃないけど、あまり更新がないとか、あやしいリンク貼りまくられて荒らされるとかかな?

659:デフォルトの名無しさん
08/06/24 10:05:12
650じゃないけど、情報がいい加減とか、
以前サンプルコードにグローバル関数と同名の変数名が使ってあって
Python知らねえくせにまとめWikiかよお目出てえなとか、
リンク晒してるのはどう見ても関係者だろこれとか、
そんな暇があったら更新しろよハゲとかじゃないかな?

660:デフォルトの名無しさん
08/06/24 11:30:46
ぱいがめ翻訳サイトまだ?
だから廃れるんだよ
広めたいって人はいないのか

661:デフォルトの名無しさん
08/06/24 12:04:17
>>659
wikiなんだから間違いに気付いたら、みんなで編集していけば良いだけじゃないの?

662:デフォルトの名無しさん
08/06/24 13:37:42
墓場に大切なものを隠せば見つかりにくいというわけですね、分かります。

663:デフォルトの名無しさん
08/06/24 15:33:22
Python ではファイル=モジュールという単位になっていますが,
1ファイル=1クラスというコーディングスタイルは推奨
されていないのでしょうか?

a.py で class A を定義 → クラス a.A が定義される
b.py で class B を定義 → クラス b.B が定義される

名前空間まで別になってしまいます.
C++ でプログラムを組んでいてずっと1ファイル=1クラス
のスタイルでやってきたのですが・・・・

同じ名前空間に入れるすべてのクラスは同じファイルに
入れなくてはならないのでしょうか?

664:デフォルトの名無しさん
08/06/24 15:47:17
>>661
中立的な言葉で書かれていない文章をお前は編集する気になるか?

665:デフォルトの名無しさん
08/06/24 15:55:59
>>663
a.pyで from b import * とでもしておけばいい。
極端な例がmatplotlibのpylab.pyで、このファイルにはimportしか書いてない。

まぁ、細かいファイルは1つのファイルにまとめた方がいいと思うよ。
例外クラスまで1ファイル1クラスにしてるの?

666:デフォルトの名無しさん
08/06/24 15:58:54
>>663
1ファイル=1クラスは特に推奨はされていない。
Pythonコードはどのみちクラスからだけ成り立っているわけではないしな。

いくつかのモジュールをひとまとめにしたいときは、Pythonではパッケージを
使う。
パッケージの初期化ファイル__init__.pyでモジュールからエクスポートしたい
シンボルをimportしてやれば、あんたのやりたいことは実現できるはずだ。

667:デフォルトの名無しさん
08/06/24 16:30:44
若いのに中立ですか。

668:デフォルトの名無しさん
08/06/24 17:03:35
>>664
編集して普通の文章にするんだ
どうせ管理人すら放置してるんだから構わんだろ
どんどんやっちまえYO!!

669:デフォルトの名無しさん
08/06/24 17:32:26
翻訳は人任せとしても、wikiは自分の好きに書き換えればいいだろ

670:デフォルトの名無しさん
08/06/24 17:37:40
ゴミはゴミ箱に。
宝石は宝石箱に。

671:デフォルトの名無しさん
08/06/24 18:16:01
なんで翻訳の話がでてくるの?

672:デフォルトの名無しさん
08/06/24 19:53:21
__init__.py に import を書くというのは
なにかまずいことを引き起こすでしょうか?

673:デフォルトの名無しさん
08/06/24 20:01:24
>>672
全然。

674:デフォルトの名無しさん
08/06/24 20:13:10
>>672
ごく普通

675:デフォルトの名無しさん
08/06/24 21:33:48
>>672
アフガニスタンではよくあること

676:デフォルトの名無しさん
08/06/25 00:44:08
>>672
いっしょに__all__も定義すれば綺麗なPythonパッケージ

677:デフォルトの名無しさん
08/06/25 07:55:11
>>665
すっきりうんこでました
ありがとうございました


678:デフォルトの名無しさん
08/06/28 19:00:35
[1,2]の要素のそれぞれを2倍して[2,4]にする
っていうのはどうやればいいんでしょうか?

679:デフォルトの名無しさん
08/06/28 19:04:07
>>678
[i * 2 for i in [1, 2]]
もしくは
map(lambda x: x * 2, [1, 2])

680:デフォルトの名無しさん
08/06/28 19:06:20
ありがとうございます。
リスト内包表記ってそうやって使うんですね。

681:デフォルトの名無しさん
08/06/28 19:36:07
>>679
それは
> [1,2]の要素のそれぞれを2倍して[2,4]にする
ではなく、新しいリストを生成しているのでは。

x = [1,2]
for i in range(0,len(x)):
 x[i] *= 2


682:デフォルトの名無しさん
08/06/29 08:48:37
>>681
> ではなく、新しいリストを生成しているのでは。
だったら
x = [1, 2]
x = [i * 2 for i in x]
ってやれば同じ

683:デフォルトの名無しさん
08/06/29 09:23:29
>>681はインプレースで配列を変更していて
>>682は配列を新しく生成してその配列を参照しているように見える

これが勘違いでなければ
両者は返す結果こそ同じだが動作は別物じゃないか

684:デフォルトの名無しさん
08/06/29 10:04:37
>>683
それで合ってる。
inplaceにしたければ、スライス代入を使えばいい。

x[:] = (i * 2 for i in x)

685:683
08/06/29 10:55:58
>>684
なるほど。ジェネレータ式も勉強になったよ

686:デフォルトの名無しさん
08/06/29 11:41:39
from timeit import Timer

print Timer('x=[1,2]; x=[i*2 for i in x]').timeit()
# py3k: 2.0419500243746063
# py25: 1.5092940583230501

print Timer('x=[1,2]; x[:]=(i*2 for i in x)').timeit()
# py3k: 5.2120230364473699
# py25: 7.4014716954249735

スライス代入のほうがコストが高いんだろうか…
ベンチの取り方が間違ってるだけなのかもしれんけど (汗

687:デフォルトの名無しさん
08/06/29 11:44:13
>>684
それだ

ありがとう


688:デフォルトの名無しさん
08/06/29 11:46:37
>>686
最終的に代入になってても途中で余分にリスト作ってない?


689:デフォルトの名無しさん
08/06/29 12:03:13
>>686
普通の代入 x = よりはスライス代入のほうが遅いけど
それ以上にジェネレータの実行速度が遅いんだと思うよ
ジェネレータで節約できるのはメモリが主だろうし

690:デフォルトの名無しさん
08/06/29 13:05:03
Python って末尾再帰の最適化はサポートされていないのでしょうか?

691:デフォルトの名無しさん
08/06/29 13:17:51
されてますん。

692:デフォルトの名無しさん
08/06/29 13:42:00
>>691 どっちなんだ~

-------------
def rec(x = 0):
  if (x<1000000000):
    rec(x+1)
rec()
------------
RuntimeError: maximum recursion depth exceeded

693:デフォルトの名無しさん
08/06/29 13:52:29
うん、されてないと思う。

def fib(n):
    def fib_iter(a, b, m):
        return a if (m == n) else fib_iter(b, a + b, m + 1)
    return fib_iter(0, 1, 0)

おれの環境ではfib(1000)ぐらいでコケる。
ので、Pythonではiterative processは
素直にループやiteratorで書けということだと思った。

694:デフォルトの名無しさん
08/06/29 13:53:36
単にトレースが取れるようにするために何か制限しているだけなのかなぁ。
わからん、わからん、わからんちん。
しかし単純にループにするだけならトレースとかそもそもいらないのに。

sys.setrecursionlimit() を勝手にいじるのもどうかと思うし・・・

695:デフォルトの名無しさん
08/06/29 13:56:07
ううむ、つまり、「されてない」が結論だということっすね。

C++ + Boost Graph Library で大規模なグラフ処理してたんだけど、
Python + networkx でやってみようと思ってハマってます。

末尾再帰最適化を前提としたコードかいてたから、
移植のときにアタマをきりかえるのがなんとも・・・

696:デフォルトの名無しさん
08/06/29 13:57:05
Stackless Pythonというのを調べてみると良いかも。
ただ、Cのハードウェアスタックを使わないというだけなので、
末尾再帰をgotoに最適化してくれるかどうかは知らない。

697:デフォルトの名無しさん
08/06/29 13:57:49
URLリンク(mail.python.org)

698:デフォルトの名無しさん
08/06/29 13:58:28
>>697
さすがに2003年だからな
今でもだめなのか orz

699:デフォルトの名無しさん
08/06/29 14:05:28
sys.setrecursionlimit(10000)
でやってみたけど、7000ちょっとの再帰で今度は正真正銘の
MemoryError: stack overflow
が出た

Python赤玉。俺涙目。

700:デフォルトの名無しさん
08/06/29 15:21:59
Stackless Pythonなら、setrecursionlimit()で限界増やして、メモリの限り再帰しても大丈夫だよ。

701:デフォルトの名無しさん
08/06/29 16:23:18
メモリの限り再帰って・・・本質的な解決じゃない気がする。
そのうち末尾再帰の最適化が入ることを祈って、
とりあえずループに書き直した。

702:デフォルトの名無しさん
08/06/29 18:42:53
Pythonでは定数をどのように宣言(?)すればいいのでしょうか?
たとえば C++ において,クラス全体で使われる定数は
static const で宣言しますが,それと同じようなことは
でこれーたで可能なのでしょうか?

703:デフォルトの名無しさん
08/06/29 18:55:24
>>702
デコレータつかうと誤って更新すると例外が出るようのは作れるけど
クラスやパッケージ外からはアクセサつかって変数を更新するという
ルールにしとけば事故はおこんない。
そもそもPythonの変数は入れ物じゃなくて名前付けというか参照だから
そういう文化(というと大げさだけど)だと思うしかない。

まーCみたいに独自プリプロセッサとおすのはありかもね。

704:デフォルトの名無しさん
08/06/29 19:58:33
ここでもstackの話してるのかw

705:デフォルトの名無しさん
08/06/29 21:23:49
ゆとりちゃんは幼稚園からやりなおしてくだちゃいね

706:デフォルトの名無しさん
08/06/29 22:09:54
やりなおしても、またゆとり教育で永久ループか?

707:デフォルトの名無しさん
08/06/29 22:37:55
ゆとりはPython使うな。 以上。

708:デフォルトの名無しさん
08/06/30 00:25:22
Python3.0について質問です。
名前空間ってやつで悩んでます。

urllibモジュールについて、

import urllib.parse.urlparseとやるとimportに失敗します。
from urllib.parse import urlparseとやるとモジュールのimportに成功します。

なぜでしょうか??

なぜ下の方は成功し、上のほうは失敗するのでしょうか。

709:デフォルトの名無しさん
08/06/30 00:35:21
urlparseがモジュールじゃなくて関数だから (lib/urllib/parse.py)

710:デフォルトの名無しさん
08/06/30 00:43:14
>>708
URLリンク(www.python.jp)
単純なimport文やfromに指定できるのは「モジュール名」に限る。
パッケージがサブディレクトリを持っていて階層構造になっている場合は
モジュール名にドットが含まれることもある。

711:デフォルトの名無しさん
08/06/30 00:56:00
>>709,>>710
ありがとうございます。
疑問点について氷解しました。

712:デフォルトの名無しさん
08/07/02 09:12:25
PEPってPython Enhancement Proposals
のことだって始めて知った今日。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch