Pythonのお勉強 Part3 ..
[2ch|▼Menu]
237:デフォルトの名無しさん
09/02/28 04:00:27
>>236
どういたしまして

238:デフォルトの名無しさん
09/02/28 07:30:36
>>235
Python関係ないだろ

239:デフォルトの名無しさん
09/02/28 09:29:57
>>238
はあ?
言語自体はPythonだろ

240:デフォルトの名無しさん
09/02/28 09:39:32
つか、Jythonってジャイソンって読むのか。ジェイソンだと思ってたw

241:デフォルトの名無しさん
09/02/28 09:48:20
爺さんって読むんだよ

242:デフォルトの名無しさん
09/02/28 09:48:25
>218-219
thx
パズル感覚でやってみます

243:デフォルトの名無しさん
09/02/28 11:55:31
>>239
Jthon本に対するコメントだよ
言語自体はPythonだけどその本に
Python的内容を期待してたら外れ

244:デフォルトの名無しさん
09/02/28 11:59:56
>>243
どっちかっつーとありゃJavaの本だ
ターゲット読者の絞込みが中途半端なんだよ
Java使いにとってはJavaのインストールとかEclipseとか
わざわざ説明してるのは馬鹿じゃないかと思う訳で
Python使いにとっては何が嬉しくてわざわざ
Javaインストールしてまで(ry


245:デフォルトの名無しさん
09/02/28 12:11:42
CPython から Java を呼び出して使えますか?

246:デフォルトの名無しさん
09/02/28 12:30:08
これから槍始める人は3.0かそれ以前をやるべきなのか・・・

247:デフォルトの名無しさん
09/02/28 12:40:18
2.5の日本語ドキュメントを利用できて、3.0の雰囲気も味わえる2.6

248:デフォルトの名無しさん
09/02/28 13:00:38
Guidoによると2.2の頃に書かれて改訂されたクソ本は買わない方がよいらしいよ。

249:デフォルトの名無しさん
09/02/28 13:06:40
クイックリファレンス一冊でオケ
ただし古すぎみたいな

250:デフォルトの名無しさん
09/02/28 13:19:37
Jython本をいつも推薦してくれるjava-jaの非モテ君ありがとう。

251:デフォルトの名無しさん
09/02/28 13:23:38
ジャイソン以外の良本はないのか

252:デフォルトの名無しさん
09/02/28 13:30:13
>>249の2.6/3.0対応版がもうすぐ出るよ
ピアソンがんばってくれないかね

253:デフォルトの名無しさん
09/02/28 13:49:19
すいませんアドバイスください m__m

コマンドプロンプト上でPythonを実行して
待機秒数を表示させたりする場合、
待機するループ内でprintやsys.stdoutの出力を行うと
データがどんどん流れていってしまうのですが、
それを防ぐ方法はありませんか?

254:デフォルトの名無しさん
09/02/28 13:54:03
import sys, time
for i in range(10):
    sys.stderr.write("%d\r" % i)
    time.sleep(1)

255:デフォルトの名無しさん
09/02/28 14:00:45
なるほど!!
どうもありがとうございます。

256:デフォルトの名無しさん
09/02/28 14:11:28
西尾さんのブログを読むべきだと思うけどな

257:デフォルトの名無しさん
09/02/28 14:12:14
>>254
すみません、ピコ秒単位で制御したいのですがどうすればいいんでしょうか

258:スルー力が足りない!
09/02/28 14:20:02
本人装った荒らし乙。

259:スルー力が足りない!
09/02/28 14:28:27
>>257
本人装った荒らし乙。

260:258 (!= 259)
09/02/28 14:38:09
図星だったwww


261:デフォルトの名無しさん
09/02/28 15:03:29
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

262:デフォルトの名無しさん
09/02/28 16:24:57
pass

263:デフォルトの名無しさん
09/02/28 18:15:08
ぬるぽ

264:デフォルトの名無しさん
09/02/28 19:28:41
try:
    ガッ

265:スルー力が足りない!
09/02/28 23:07:40
except ちんぽ as e:

266:デフォルトの名無しさん
09/02/28 23:37:00
俺の息子がexceptionalにepsironってことですね

267:デフォルトの名無しさん
09/03/01 15:15:27
SHA-1を計算するのに

f = open(target,'rb)
b = f.read()
f.close()
hashlib.sha1(b)

で計算はできたのですが
これをループを使って複数のファイルに対して行うと
途中でメモリエラーが出てしまいます(OutOfMemoryException)。
強制的にメモリを開放させるようなことはできないでしょうか?

b = ''
というようなこともしてみましたが無駄でした。
環境はIronPython 2.0.0.1、Windows Vista SP1です。


268:デフォルトの名無しさん
09/03/01 16:52:43
URLリンク(d.hatena.ne.jp)

269:デフォルトの名無しさん
09/03/01 17:04:45
入力されたフォームデータをsqliteでデータベースに溜め込むCGIをPythonで実現しようとしてるんですが
同時アクセスが有った場合にコリジョンを回避するにはどうしたらいいでしょうか?キューにしたいんですが。

270:デフォルトの名無しさん
09/03/01 17:07:42
import Queue

271:デフォルトの名無しさん
09/03/01 17:16:06
CGIじゃプロセスがそれぞれ異なるから無理でしょ。

あと、SQLiteに書き込むならロックされるはずだから
同時アクセスは気にしなくてもいいと思うよ。

272:デフォルトの名無しさん
09/03/01 17:26:26
aritayaki

273:269
09/03/01 17:26:54
下げ忘れてた。失礼。
ということは、例外を捕まえてtime.sleep(1)とかやった方がスマートですかね。
アクセスが集中したときは順番ゴチャゴチャになるかもしれないけれど。
マヌケな話で申し訳ないんですがコリジョンを意図的に発生させる方法を教えて貰えますか?
実際に例外出して見ないと不安で。

274:デフォルトの名無しさん
09/03/01 18:11:59
sqlite コマンド側からテーブルにロックかけたままにしておいて
CGI実行してみればどう?
タイムアウトはconnect時に指定できる。

あと、タイムアウトが発生してるような状態なら
時間をおいて再実行とかは、あまり意味がないだろう。
すぐにエラーにしてしまったほうがいいと思うけど。


275:デフォルトの名無しさん
09/03/01 18:44:49
ちょっと聞いてみたいことがある。

ある辞書の中から、いくつかのキーを持つ要素だけを取り出した部分辞書を作
りたい。

>>> request = {'hoge':1, 'fuga':2, 'piyo':3, ...}
>>> a = {}
>>> for key in ('hoge', 'fuga'):
...   a[key] = request[key]
...
>>> a
{'fuga': 2, 'hoge': 1}

これをもっと簡潔に書く方法は無いだろうか?


276:デフォルトの名無しさん
09/03/01 18:58:39
簡潔か微妙な気もするけど

dict([(key, request[key]) for key in ('hoge', 'fuga')])

277:デフォルトの名無しさん
09/03/01 19:15:26
リスト内包表記を map にしてみた。

dict(map(lambda x: (x, request[x]), ('hoge', 'fuga')))
なんだこの微妙さは。


278:デフォルトの名無しさん
09/03/01 19:37:35
dict([(x,request[x]) for x in request if x in ('hoge', 'fuga')])

279:デフォルトの名無しさん
09/03/01 19:41:54
英語的な連中には
コレが構文的に分かりやすいのかね?


280:デフォルトの名無しさん
09/03/01 20:28:58
内包表記って便利といえば便利だけど
python の魅力・長所である、
「記述内容が形(インデント)で見える」って
ところを完全に無視しているのが何と言うか…

281:デフォルトの名無しさん
09/03/01 21:16:08
え?内包表記、読みやすいじゃん・・・
トリッキーなことやりすぎるとあれだけど。


282:デフォルトの名無しさん
09/03/01 21:17:53
forの左に書けるのが文だけで式が書けないから色々微妙なことをしないといけなくなる

283:デフォルトの名無しさん
09/03/01 21:24:04
>>280
個人的には内包表記は「記述内容が形で見える」ものの最たるものだと思うなあ。

Z = [(x / y if y != 0 else None) for x, y in zip(X, Y)]

となっていたら Z はリストで要素は x / y か None だということが一目で分かるから。

たぶん問題なのは内包表記を入れ子にすると一気に難読化するということかと。
個人的には入れ子にして読みにくくなるぐらいならバラして for 文なりにするかな。

284:デフォルトの名無しさん
09/03/01 22:10:34
276と277の比較なら276のが読みやすい。

285:デフォルトの名無しさん
09/03/01 22:24:53
>>276-278共通して
('hoge', 'fuga')
なんだけど
['hoge', 'fuga']
じゃだめなの?


286:デフォルトの名無しさん
09/03/01 22:34:59
偏向する必要がないならタプルを使う。

287:269
09/03/01 23:05:54
じゃ俺はちょっと違った切り口で。
>>276とほぼ一緒だけどfilter使えばコメント無くても何やってるか分かりやすい。
あとrequestに無いキー持ってこようとしてもエラー吐かない。

request = {'hoge':1, 'fuga':2, 'piyo':3}
def f(x): return x in ('fuga','hoge')
dict([k,request[k]] for k in filter(f,request))

288:デフォルトの名無しさん
09/03/01 23:44:01
遅くね?

289:デフォルトの名無しさん
09/03/01 23:46:22
dict([k,request[k] if k in request else None] for k in ('fuga','hage'))

290:デフォルトの名無しさん
09/03/01 23:54:14
dict{[(k, v) for k, v in request.items() if k in ('fuga','hoge')]}

3.xであれば

{(k, v) for k, v in request.items() if k in ('fuga','hoge')}

291:デフォルトの名無しさん
09/03/01 23:57:35
ごめん、↑のdict{}はdict()だ

292:デフォルトの名無しさん
09/03/02 00:10:11
見つからないkeyは結果からは無くなった方が良いのかな

293:デフォルトの名無しさん
09/03/02 00:14:25
部分辞書だからな

294:デフォルトの名無しさん
09/03/02 09:44:29
URLリンク(blog.livedoor.jp)

>本書を見てびびった人は、以前紹介した「実践Python」を薦めておく。

勧めるなよ(wwwwWwwWwwwWWwwww


295:デフォルトの名無しさん
09/03/02 09:56:50
この本が一番いいんだけどな
URLリンク(www.amazon.co.jp)

296:デフォルトの名無しさん
09/03/02 10:00:33
URLリンク(blog.livedoor.jp)

子飼が紹介するとクソ本認定?

297:デフォルトの名無しさん
09/03/02 15:22:57
Windowsにpythonインストールしたら
付属でついてるpython editorのデバック環境が充実してておどろき
しかしemacs key-bindになれてるからemacs ぽく使える環境で便利なのないでしょうか?
emacsのpython.elはbreak pointの設定が右クリック一発でできなくて使いにくい

298:デフォルトの名無しさん
09/03/02 15:50:51
>>294
その本出版社が潰れて買えなくなってるよ。

299:デフォルトの名無しさん
09/03/02 16:08:32
>>297
じゃぁ右クリック一発でできるように改造すれば?


300:デフォルトの名無しさん
09/03/02 17:00:12
どうみてもクソ本認定です
本当にありが(ry

301:デフォルトの名無しさん
09/03/02 17:06:56
age

302:デフォルトの名無しさん
09/03/02 17:08:06
>>297
xkeymacs入れてしまえ

303:デフォルトの名無しさん
09/03/02 21:22:48
hoge.__setitem__(key, value)

無理やりreduceで書くなら例えば
reduce(lambda d, x: d.__setitem__(x, request[x]) or d, ['hoge','fuga'],{})
こんな書き方になると思うけど、Python使いはこの例を普通こんな風には書かない

dict((k, request[k]) for k in ['hoge','fuga'])
のほうがずっと素直で短く読みやすいからね

304:デフォルトの名無しさん
09/03/02 23:26:46
はぁ?

305:デフォルトの名無しさん
09/03/02 23:35:41
複素演算の構文調べてたら、とあるSEの書いたブログが引っかかったが
そこのサンプルはNameErrorとTypeErrorの出力ばっか張ってあって役に立たなかった

306:デフォルトの名無しさん
09/03/03 00:07:05
reduce とか lambda とかそのうちなくなるだろ。

307:デフォルトの名無しさん
09/03/03 00:34:39
それはそうかもしれないけど、3.0を生き残ったことで想定寿命は激延びな希ガス

308:デフォルトの名無しさん
09/03/03 00:51:03
lambdaって無くなるのかな

309:デフォルトの名無しさん
09/03/03 01:08:45
>>297
IDLEのこと?
OptionsのConfigure IDLEを開いて、KeysでClassic Unixにすれば
C-aで行頭とかになるよ。
C-x C-s みたいなキーシーケンスもできる。

310:デフォルトの名無しさん
09/03/03 01:29:17
lambdaの中で代入とか複数の文とか出来るようになるのはいつ?

311:デフォルトの名無しさん
09/03/03 01:52:36
mapとfilterは最悪消えてもリスト内包表記で書けるけど
reduceって代用あるっけ?

312:デフォルトの名無しさん
09/03/03 01:54:42
どっちみちreduceはfold_left相当でfold_rightはないし
unfoldもないけどな

313:デフォルトの名無しさん
09/03/03 01:56:01
>>310
つーか全部式にしてほしいという発想にはならんのか
文が存在する関数型言語ってあるっけ

314:デフォルトの名無しさん
09/03/03 04:53:23
Haskellのwhereって式?

315:デフォルトの名無しさん
09/03/03 08:02:01
⊂二二二( ^ω^)二⊃

316:デフォルトの名無しさん
09/03/03 09:02:51
>314-315
ナ、ナンダッテー>ΩΩΩ

317:デフォルトの名無しさん
09/03/03 09:53:35
Haskellのwhereはcase式の一部
URLリンク(www.haskell.org)

318:デフォルトの名無しさん
09/03/03 12:15:02
URLリンク(www.atmarkit.co.jp)

319:デフォルトの名無しさん
09/03/03 12:54:49
URLリンク(www.oreilly.com)
この本の日本語版ってありますか?

320:デフォルトの名無しさん
09/03/03 13:34:23
>>245
JCC

321:デフォルトの名無しさん
09/03/03 14:53:57
>>319
この表紙は人を選ぶな…

322:デフォルトの名無しさん
09/03/03 16:16:11
>>321
俺も初めて見たときはこれはさすがにどうかと思ったよ

323:デフォルトの名無しさん
09/03/03 16:23:05
>>319
> URLリンク(www.oreilly.com)

グロ
閲覧注意


324:デフォルトの名無しさん
09/03/03 17:39:28
ただの模様じゃん
なんも樹に成らん

325:デフォルトの名無しさん
09/03/03 23:36:22
俺は樹になる

326:デフォルトの名無しさん
09/03/04 01:06:21
カバーをひっくり返して、好きな絵を描くといいよ。

327:デフォルトの名無しさん
09/03/04 07:15:06
へび(そのものあるいはその絵)を嫌うひとは心理的に

328:デフォルトの名無しさん
09/03/04 09:21:27
そもそも蛇嫌いはpythonでアウトな気がする。

329:デフォルトの名無しさん
09/03/04 12:36:48
Python の由来は Monty Python であって、ヘビは関係ないと Guido は言って
たんだがなー。まあ O'Reilly の表紙にパイソンズ出すわけに行かないか。


330:デフォルトの名無しさん
09/03/04 17:52:34
>>329
Guido的には、元ネタ的にはそうなんだが
オライリーのPython本の絵が蛇になっちゃうのはそりゃ仕方ないよなーってことで
諦めた(受け入れた)、みたいな感じだったかと

331:デフォルトの名無しさん
09/03/04 18:34:07
日本語版はおっぱいでおk

332:デフォルトの名無しさん
09/03/04 20:03:47
>>331
エロ本コーナーに並びそうだな。

333:デフォルトの名無しさん
09/03/04 21:15:19
ジャイソンかサイソン
   どっち?

334:デフォルトの名無しさん
09/03/05 15:44:46
get 333

335:デフォルトの名無しさん
09/03/05 17:29:58
URLリンク(www.python.com)

336:デフォルトの名無しさん
09/03/05 18:16:01
Firefoxでアドレスバーにpythonと打つとpython.jpにつながるのでそれを期待して古いMozillaでやったら
大学のワークステーションでpython.comにアクセスしてしまったでござる

337:デフォルトの名無しさん
09/03/06 02:04:38
アイコンの蛇って名前とか付いてないの?

338:デフォルトの名無しさん
09/03/06 02:11:47
やっぱ時代はRubyだよな

339:デフォルトの名無しさん
09/03/06 02:33:09
ぱいちんこ

340:デフォルトの名無しさん
09/03/06 14:43:06
>>336
俺も間違えたことあるw
.comのほうは海外のエロサイトなんだよな

341:デフォルトの名無しさん
09/03/06 15:47:07
間違えてwww.goo.co.jpを開いちゃったみたいな感じか

342:デフォルトの名無しさん
09/03/06 18:31:59
Webポータルのハズがクルマ、はまだ良いだろ
python〜の場合、技術資料のハズがエロサイトだぜ?
自宅で誰も居ないなら別に良いが、会社や学校、家族の目の前で間違えた時は…

343:デフォルトの名無しさん
09/03/06 18:38:36
>>342
いや、goo.co.jpもエロサイトだったんだが(今は無いが)

344:デフォルトの名無しさん
09/03/06 23:17:06
>>335
我が家でBフレッツ導入した時に、「セキュリティ対策ツール」という名前で
マイクロトレンドのOEMでウイルスバスター相当のセキュリティソフトが
1ユーザ分ついてくるのだが、このサイト、しっかりと、プロックしてくれました。
めんどくさいので、プロック解除してまでみたいとは思わん。

345:デフォルトの名無しさん
09/03/07 00:24:10
こういうアドレスを買収しようとしたら
いくらぐらいかかるんかね


346:デフォルトの名無しさん
09/03/07 01:37:51
2万円

347:デフォルトの名無しさん
09/03/07 11:26:51
既に取られてるドメインは2万じゃキツかろう
逆にまだ取られてないドメインならもっと安いが

348:デフォルトの名無しさん
09/03/07 21:48:43
3万円

349:デフォルトの名無しさん
09/03/07 22:37:25
逆にまだ取られてないドメインなら買収とは言わん罠

350:デフォルトの名無しさん
09/03/08 10:16:38
def f(hoge=3, fuga=7):
print (hoge, fuga)
または
f = lambda hoge=3, fuga=7: print (hoge, fuga)
という関数に対して
d1 = {'fuga': 8, 'hoge': 4}
という辞書で
f(**d1)
を実行すると期待通りになるのですが
d2 = {'kane': 1, 'fuga': 8, 'hoge': 4}
という辞書で
f(**d2)
を実行すると'kane'が無いと怒られます
どうすればうまくいくのでしょう

351:デフォルトの名無しさん
09/03/08 10:19:53
訂正します

誤 f = lambda hoge=3, fuga=7: print (hoge, fuga)
正 f = lambda hoge=3, fuga=7: (hoge, fuga)

352:デフォルトの名無しさん
09/03/08 15:09:33
def f(hoge=3, fuga=7, **kwargs):
  print (hoge, fuga)

353:デフォルトの名無しさん
09/03/08 15:49:40
eval("foo(param)")
はうまく動くのに
eval("bar.foo(param)")
が動いたりうごかなかったり
特に

#file a.py
def f():
eval("bar.foo(param)")

#file b.py
a.f()

としたときに動いてくれない

354:デフォルトの名無しさん
09/03/08 16:59:02
質問してるのか、
問題を喚起しているのか、
ツンデレなのか、
はっきりしなさい!

355:デフォルトの名無しさん
09/03/08 17:39:14
eval関係無く動くまい

356:デフォルトの名無しさん
09/03/08 18:00:41
ツンデレです

357:デフォルトの名無しさん
09/03/08 20:43:28
適切に sys.path.append していないと予想

358:デフォルトの名無しさん
09/03/09 01:13:08
通常の仕事にevalなんて使う事ないなぁ。
皆どんな高度なことやってるの?

359:デフォルトの名無しさん
09/03/09 01:32:46
アプリのコマンドライン。
emacsだとM-xに相当か。
制作中はアプリ自身のデバッグにも使える。

360:デフォルトの名無しさん
09/03/09 14:10:34
>>353
#a.py
class Handletest:
def handle(self, methodstr):
result=eval(methodstr,globals(),locals())
return result

if __name__ == "__main__":
import numpy
handletest=Handletest()
print handletest.handle("numpy.linalg.norm([1,2])")#動く




#b.py
import numpy
import a
if __name__ == "__main__":
h= a.Handletest()
print h.handle("numpy.linalg.norm([1,2])")#動かない
-------------
golbals localsに違うものいれないといけないみたいなのだけど
どう入れればいいのかわからない

361:デフォルトの名無しさん
09/03/09 17:10:33
print h.handle("import numpy; numpy.linalg.norm([1,2])")

362:デフォルトの名無しさん
09/03/09 18:39:03
h.handle("numpy.linalg.norm([1,2])", globals(),locals())
h.handle("numpy.linalg.norm([1,2])", {"numpy":numpy}, {})

363:デフォルトの名無しさん
09/03/09 19:35:25
>>360
bでimport numpyしただけだと
bからはnumpyという名前が見えるが
aからは見えないのさ

importはインタプリタにモジュールをロードするだけでなく、
カレントのモジュールにシンボルをインポートするという意味を持っている

364:363
09/03/09 19:47:41
こんだけじゃ説明足りんかな
Pythonのグローバル変数(グローバル環境フレーム)ってのは
インタプリタグローバルじゃなくて、モジュールスコープで別れてるんだよ

モジュールのトップレベルの束縛=グローバル変数
だと思っていい
globals()関数が返すのも、あくまで「そのモジュールの」グローバル変数

365:デフォルトの名無しさん
09/03/09 20:55:55
>>353
#a.py
class Handletest:
def handle(self, methodstr):
import numpy
result=eval(methodstr,globals(),locals())
return result

if __name__ == "__main__":
handletest=Handletest()
print handletest.handle("numpy.linalg.norm([1,2])")

366:デフォルトの名無しさん
09/03/09 21:40:14
import sys
class Handletest:
    def handle(self, methodstr):
        frame = sys._getframe(1)
        return eval(methodstr, frame.f_globals, frame.f_locals)

367:デフォルトの名無しさん
09/03/09 22:01:48
sys._getframeを呼び出してるメソッドは継承すると酷いことになる

368:デフォルトの名無しさん
09/03/10 10:49:07
ウーパールーパーって食えるんだな
URLリンク(www.fnn-news.com)

369:デフォルトの名無しさん
09/03/10 23:18:16
おまえら、金融系とか経済系の
ゲーム作るプロジェクトやりたい?

370:デフォルトの名無しさん
09/03/10 23:33:20
>>369
自分で勉強しろ

371:デフォルトの名無しさん
09/03/10 23:51:17
やりたい

372:デフォルトの名無しさん
09/03/10 23:56:48
プロジェクトというからにはキッチリドキュメントがそろってるんだろうな?

373:デフォルトの名無しさん
09/03/11 00:01:34
>>370
どっちの意味?

プログラムを勉強しろっていみ?
それとも、金融知識を勉強しろっていみ?

374:デフォルトの名無しさん
09/03/11 00:04:55
>>371
金融系のプロジェクトでプログラマー募集したら、
なぜか応募してきたのがpythonのプログラマーなんだよね。

他にも自分が見聞きしてる範囲内で、
「学校を作ろう」とかいう、ふざけたプロジェクトに応募
してたのもpythonのプログラマーだったし、ひょっとして
pythonって、せっかく学んでも、いじるアプリがないから
参加するプロジェクトを探してる状態なんじゃないかなーって
思ったわけだ。

もしこれがPHPだったら、wordpressはあるし、joomlaはあるし、
phpbbはあるし、mediawikiはあるし、で、いくらでもアプリも
プロジェクトもあるし、いじり倒すおもちゃは豊富にあるしで、
プルグラマー募集してもきてくんないんだよね。

でもpythonだったら、いじるおもちゃがない状態だから、
プログラマーが余っていて、わりかし捕獲しやすい
状態なのかなと。

375:デフォルトの名無しさん
09/03/11 00:08:59
>>374
学校を作ろうを馬鹿にするな!!

376:デフォルトの名無しさん
09/03/11 01:13:02
すまんが、真面目な話してるんだ、馬鹿は黙ってくれないか

377:デフォルトの名無しさん
09/03/11 01:20:54
そりゃphpなんかと比べてしまえば
pythonを存分に使わせてもらえるところは少ないだろうね

378:デフォルトの名無しさん
09/03/11 01:36:52
そもそもPythonはRubyより劣るからな。利用価値がまったくない。

379:デフォルトの名無しさん
09/03/11 01:41:20
仕事でゲーム作る人募集って事?

380:デフォルトの名無しさん
09/03/11 02:25:34
>>379
Rubyは優秀だからな。

381:デフォルトの名無しさん
09/03/11 02:49:52
面白そうならなんでもやるぜ

382:デフォルトの名無しさん
09/03/11 03:00:21
ドモホルンリンクルの計測なんてどうだ

383:デフォルトの名無しさん
09/03/11 06:49:10
>>377
phpは優秀だからな。

384:デフォルトの名無しさん
09/03/11 17:52:44
Uncyclopedia項目リンク
わろた

385:デフォルトの名無しさん
09/03/12 08:31:02
日本語のプロジェクトじゃなければ結構あるんじゃね

386:デフォルトの名無しさん
09/03/12 13:19:39
はじパイの第2版が中古で売ってたんだけど今のバージョンって3.0なの?
第2版は2.3までだからもうちょっと新しいのかったほうがいい?

387:デフォルトの名無しさん
09/03/12 13:57:08
>>386
個人的には2.4以降じゃないと嫌だなw
generatorなくてなんのPythonよ

388:デフォルトの名無しさん
09/03/13 01:55:16
UNICODEの扱いがちゃんと載ってるのにしなよ

389:デフォルトの名無しさん
09/03/13 02:56:44
JapaneseCodecsがあれば10年は戦える

390:デフォルトの名無しさん
09/03/13 13:40:57
Windowsで、2.5.2使ってるんだが、code(codeop)の動きがどうもおかしいんだ。

普通にコンソールでは、u''が使えるんだ。

>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\u3042'

だけど、InteractiveConsoleを使うと、

>>> import code
>>> code.InteractiveConsole().interact()
Python 2.5.2 (r252:60911, Mar 27 2008, 17:57:18) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\x82\xa0'

と、u''を正しくdecodeしてくれない。

どうもcodeop.compile_CommandCompilerがこういう動作をしているようで、
IPythonでu''が化けるのも同じ原因のようだ。
Windows版のコンソールは、何か特別なパッチが当たってるんだろうか。
どこか設定をいじってやればコンソールと同じ動きするんだろうか。

まぁunicode('あ')とか書けばいいんだけどなんかくやしい。


391:デフォルトの名無しさん
09/03/13 13:54:02
>>390
2.6.1 amd64 で、 code.InteractiveConsole() では上手く動いたよ。
それでもIPythonはダメ。

392:デフォルトの名無しさん
09/03/13 14:49:33
>>391
2.6.1でやってみた。

>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\u3042'
>>> import code
>>> code.InteractiveConsole().interact()
Python 2.6.1 (r261:67517, Dec 4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 'あ'
'\xe3\x81\x82'
>>> u'あ'
u'\u3042'
>>> unicode('あ')
Traceback (most recent call last):
File "<console>", line 1, in <module>
UnicodeDecodeError: 'cp932' codec can't decode byte 0x82 in position 2: incomplete multibyte sequence
>>> unicode('あ', 'utf8')
u'\u3042'

なぜUTF-8www

2.5でも、codeop.CommandCompilerにunicode渡すとこんな動きになるんで、
ようするに2.6ではraw_inputがunicodeを返すようになっただけでCommandCompilerの挙動は変わってないみたいだ。
IPythonは、渡す前にsys.stdin.encodingでencodeしてるので、2.5と同じ動きになる。

コンソールで使ってるCommandCompilerの正体はいったいどこにあるんだ!?
ソースを読めばいいんだろうが、どこを読めばいいのかすら分からん。

393:デフォルトの名無しさん
09/03/13 15:00:15
【Python】Pylons Web Frameworkスレ
スレリンク(php板)

394:デフォルトの名無しさん
09/03/13 15:03:12
組み込みのcompileを使うと問題がよく分かる。

>>> exec compile("'あ'", '<input>', 'single')
'\x82\xa0'
>>> exec compile("u'あ'", '<input>', 'single')
u'\x82\xa0'
>>> exec compile(unicode("'あ'"), '<input>', 'single')
'\xe3\x81\x82'
>>> exec compile(unicode("u'あ'"), '<input>', 'single')
u'\u3042'
>>>

どうしろってんだ・・・

395:デフォルトの名無しさん
09/03/13 15:57:47
あんまりいい方法ではないと思うけど

import code
import sys

class MyInteractiveConsole(code.InteractiveConsole):
  def __init__(self, *args, **kw):
    code.InteractiveConsole.__init__(self, *args, **kw)
    self.__compile = self.compile
    self.compile = self.mycompile
  def mycompile(self, source, *args, **kw):
    if sys.stdin.encoding:
      if isinstance(source, unicode):
        source = source.encode(sys.stdin.encoding)
      source = "# coding: %s\n%s" % (sys.stdin.encoding, source)
    return self.__compile(source, *args, **kw)

if __name__ == "__main__":
  MyInteractiveConsole().interact()

396:デフォルトの名無しさん
09/03/13 16:15:11
>>395
それだと、結局最初の(2.5の)

>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\x82\xa0'

って挙動になるだけだよね。



397:391
09/03/13 16:23:50
なおした
URLリンク(dsas.blog.klab.org)

398:395
09/03/13 16:33:49
>>396
自分の環境(Windows)では2.5, 2.6でも↓のようになるのを確認したけど、ならない?
(MyInteractiveConsole)
>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\u3042'

399:デフォルトの名無しさん
09/03/13 18:55:32
ならない
sys.stdin.encoding

どこでも同じとは限らない

400:デフォルトの名無しさん
09/03/13 19:57:05
>>397
うん、それでsys.setdfaultencoding("utf-8")すれば使えるようにはなるんだ。
でもそれだとWindows環境でpysh使ったとき、にほんごファイル名が通らなくなる。(UTF-8に変換されるため。)

UTF-8Cygwin使う、ってのも一長一短だしなあ…

401:デフォルトの名無しさん
09/03/13 19:58:11
>>398
ならないなあ…
環境設定でなんとかなるのなら是非教えてほしい

402:デフォルトの名無しさん
09/03/13 20:42:48
>>400
sys.setdefaultencoding('utf-8') するのは何故?
>>397 の修正だけで、全く問題ないよ?
/open u"ソ.txt"
こんなのも余裕。

403:デフォルトの名無しさん
09/03/13 21:01:23
>>397の修正だとcp932の環境でstrの'あ'が'\x82\xa0'になって欲しいところ
utf8の'\xe3\x81\x82'になっちゃう

404:デフォルトの名無しさん
09/03/13 21:12:13
>>403
なるほど。日本語をcp932でstrで使うなんて発想が無かった。
from __future__ import unicode_literals
して、strと決別しちゃえ。

405:デフォルトの名無しさん
09/03/14 10:25:26
>>402
>sys.setdefaultencoding('utf-8') するのは何故?
cp932だとunicode('あ')でエラーになるからじゃないか?

406:デフォルトの名無しさん
09/03/14 11:20:45
>>405
もともとの defaultencoding は ascii
インタラクティブシェルじゃなくて普通のスクリプトでも unicode('あ') はエラー。

Python3.0からは utf-8 になるから、from __future__ import ??? でやってることと
同じといえるかもしれないけど。

407:デフォルトの名無しさん
09/03/14 12:17:23
>インタラクティブシェルじゃなくて普通のスクリプトでも unicode('あ') はエラー。

馬鹿ですねわかります

408:デフォルトの名無しさん
09/03/14 12:17:35
普段はmbcs,cp932あたりをsys.setdefaultencodingしてるんでしょ、きっと

409:デフォルトの名無しさん
09/03/14 12:31:56
URLリンク(fettig.net)
この本の日本語版っていつ頃出ますか?

410:デフォルトの名無しさん
09/03/14 12:53:32
>>409
このイラストはスパゲティコードの暗示なのか…?

411:デフォルトの名無しさん
09/03/14 13:22:22
MLで翻訳の需要あるか聞かれてたやつだっけ?
とても微妙な反応だったなw

412:406
09/03/14 15:17:31
>>407
何が? u'あ' はOKだけど、 unicode('あ') は
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

>>408
それをさせないように、普通は del sys.setdefaultencoding してあって、
reload(sys)
sys.setdefaultencoding('utf-8')
とかしないと初期値のasciiから変更できないのに、、、

みんなUnicodeはきちんと使おうぜ。外部とのやり取りは encode/decode して、リテラルで使うときは
unicode('ほげ', 'utf-8') じゃなくて u'ほげ' が正解だ。

413:デフォルトの名無しさん
09/03/14 18:10:21
あまりreload(sys)は流行らせるなよ

>>409
twistedは処理がボコボコ切られて正直使いにくいからこれ以上流行って欲しくないなあ

414:デフォルトの名無しさん
09/03/14 18:16:10
>>413
eventletマンセーですねわかります

415:デフォルトの名無しさん
09/03/14 20:16:32
>>408
pyshを長いこと使ってるから
sitecustomize.pyにsys.setdefaultencoding('cp932')と書いて
リテラルはunicode('あ')と書くスタイルが染みついてるw

utf-8にするとマジック関係が動かないからなあ・・・

[C:Documents and Settings/Administrator]|2> cd デスクトップ
[Error 2] 指定されたファイルが見つかりません。: '\xe3\x83\x87\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\x88\xe3\x83\x83\xe3\x83\x97'

IPythonのソースに手を入れたついでに、マジック関係のユニコード化もするか。

とまで考えたところで、なんというか進む方向が酷く間違っている気がしてきたが目をつぶってがんばる

416:デフォルトの名無しさん
09/03/14 20:50:36
つーわけでユニコード化マジックコマンド。

--- C:/Python25/Lib/site-packages/IPython/iplib.py.bak Sat Mar 14 20:41:18 2009
+++ C:/Python25/Lib/site-packages/IPython/iplib.py Sat Mar 14 20:36:39 2009
@@ -936,6 +936,8 @@
valid Python code you can type at the interpreter, including loops and
compound statements. It is added by IPython to the Python builtin
namespace upon initialization."""
+
+ arg_s = unicode(arg_s, 'utf-8')

args = arg_s.split(' ',1)
magic_name = args[0]
@@ -2019,7 +2021,7 @@
# this allows execution of indented pasted code. It is tempting
# to add '\n' at the end of source to run commands like ' a=1'
# directly, but this fails for more complicated scenarios
- source=source.encode(self.stdin_encoding)
+# source=source.encode(self.stdin_encoding)
if source[:1] in [' ', '\t']:
source = 'if 1:\n%s' % source

デフォルトエンコーディングをutf-8にする必要はない(compilerにユニコードを食わせたときにutf-8化するのはデフォルトエンコーディングとは関係がない)。

[C:Documents and Settings/Administrator]|1> cd デスクトップ/
[C:Administrator/デスクトップ]|2>


417:デフォルトの名無しさん
09/03/15 05:39:24
あかん・・・ユニコードリテラルをちゃんと扱えるようになったところで、

print 'あ'

が普通に化けるんじゃ本末転倒だなあ。

418:デフォルトの名無しさん
09/03/15 10:37:01
>>417
from __future__ import unicode_literals
これで全部解決

419:デフォルトの名無しさん
09/03/15 10:51:01
「,」と「%」の記号を16進数にエスケープしたいのですが
re.subを使って置換する方法はありますか?


(1) 'A is 20%, B is 80%'
(2) 'A is 20%25%2c B is 80%25'
(1)を(2)に変換したい。

次のコードでは「\1」は通常の文字列ではないのでうまく動作しない。
import re
txt = 'A is 20%, B is 80%'
print re.sub('([,%])', '%02x' % (ord(r'\1')), txt)

420:デフォルトの名無しさん
09/03/15 11:11:14
>>419
re.sub('([,%])', lambda m: '%02x' % ord(m.group(1)), txt)

421:デフォルトの名無しさん
09/03/15 11:18:06
>>419
urllib.quote(txt)

422:デフォルトの名無しさん
09/03/15 11:46:15
>>418
んだな。~/_ipython/ipy_user_conf.pyのmain関数の最後に、
o.autoexec.append('from __future__ import unicode_literals')
を追加。

2> 'あ'
<2> u'\u3042'
3> u'あ'
<3> u'\u3042'
4> print 'あ'
-------------->print('あ')





423:デフォルトの名無しさん
09/03/15 12:06:10
416のarg_sのユニコード化がエラーになるので削除。
unicode()にユニコード食わせるとユニコードのままにならなかったっけ・・・?
で、デフォルトエンコーディングはcp932かmbcsにしとく必要があるようだ

424:デフォルトの名無しさん
09/03/15 12:25:42
>>423
unicode() の第一引数が unicode オブジェクトの場合は、第二引数があると
エラーになる。
if not isinstance(arg_s, unicode):
    unicode(arg_s, 'utf-8')

425:デフォルトの名無しさん
09/03/15 13:21:20
>>424
なるほど。isinstance()しとくしかないようだなぁ。

というかunicode_literalsのためだけに2.6にあげたよ!あげたよ!

426:デフォルトの名無しさん
09/03/15 13:27:29
>>420,421
ありがとう。

re.sub('([,%])', lambda m: '%%%02x' % ord(m.group(1)), txt)
第二項目が関数だと、Matchオブジェクトを引数にして呼び出されるのか。

urllib.quote(txt)
確かにこの方が簡単ですね。
ただ今回はファイルの後方互換性が必要で、
エスケープするのは記号2種類だけにしたいので
とりあえず文字列置換を使うつもりです。

427:デフォルトの名無しさん
09/03/15 13:45:03
txt.replace('%', '%25').replace(',', '%2c')
じゃいかんの?

428:デフォルトの名無しさん
09/03/15 15:48:38
>>427
Ruby使う事にしたので問題ないです。

429:デフォルトの名無しさん
09/03/15 21:33:17
>>427
今回の場合はそれで十分ですね。
実はPerlのコードを参考に作っているんだけど
Pythonでもコンパイルとかなしで出来るのか知りたかったので
「re.sub」で聞いてみました。

430:デフォルトの名無しさん
09/03/15 21:47:25
パイソンのRadツールって何があります?

431:デフォルトの名無しさん
09/03/15 23:12:03
Rubyですかね。

432:デフォルトの名無しさん
09/03/16 01:08:07
よくわからんが、エンコーディングの設定が間違ってるでFA?

433:430
09/03/16 01:24:58
Rubyにしてみます。

434:デフォルトの名無しさん
09/03/16 02:31:18
あるある

435:デフォルトの名無しさん
09/03/16 02:42:22
こうしたRuby厨の工作によりまともな人はRubyを嫌うのであった

436:デフォルトの名無しさん
09/03/16 03:30:38
てかruby厨ってrubyしか使ったことないかあるいは使えないんでひたすら布教するんだろうな
複数の言語を使いこなせないとは哀れな

437:デフォルトの名無しさん
09/03/16 03:31:47
どこの世界に>>431みたいな布教をする奴がいるんだw

438:デフォルトの名無しさん
09/03/16 04:34:45
もともとはそういう奴らがいたから、現在そういうネタになってるんだよw

439:デフォルトの名無しさん
09/03/16 04:41:44
パールときてルビーときて。
次はどんな宝石だい?

440:デフォルトの名無しさん
09/03/16 05:00:24
満を持してダイヤモ

441:デフォルトの名無しさん
09/03/16 05:08:34
・・・花崗岩とか?

442:デフォルトの名無しさん
09/03/16 10:53:24
トルコ石まで続くかもなw

443:デフォルトの名無しさん
09/03/16 14:34:47
URLリンク(sankei.jp.msn.com)
URLリンク(sankei.jp.msn.com)
URLリンク(sankei.jp.msn.com)
宝石の条件の一つには硬度が高いことも重要である。
これは、硬度が低い鉱物の場合、経年による砂埃(環境に遍在する石英など)による風化・劣化のために、
観賞価値が失われてしまうためである。
例としてダイヤモンドはモース硬度10、ルビー・サファイアはモース硬度9である。
石英のモース硬度は7であり、これらの宝石の硬度は石英のそれより高いことに注意されたい
(オパールなどは例外的に硬度が低い)。
硬度以外の条件として色彩、透明度、希少性など鑑賞的価値・財産的価値・所有の欲求を満たす性質が重要である。

444:デフォルトの名無しさん
09/03/17 12:11:42
>>411
2年前なら確実に買っただろうけどな。

445:デフォルトの名無しさん
09/03/17 14:29:19
reprって何て読むのでしょうか?
また、名前の由来は何でしょうか?

446:デフォルトの名無しさん
09/03/17 14:39:50
representかな?

447:デフォルトの名無しさん
09/03/17 14:41:24
れぷると読んでいる
representだと思っている

俺はな

448:デフォルトの名無しさん
09/03/17 15:13:35
representation、表現

マニュアルを嫁

repr(object)
Return a string containing a printable representation of an object. (...)

449:デフォルトの名無しさん
09/03/17 17:46:09
>446-448
ありがとうございます
マニュアルは和訳しか呼んだことがなくて気付きませんでした…

450:デフォルトの名無しさん
09/03/18 01:31:58
マニュアル読まないと分からない言語って糞じゃないですか?

451:デフォルトの名無しさん
09/03/18 01:39:19
そりゃマニュアル読まずとも理解できればそれにこしたことはないけど、
開発言語くらいの規模だとマニュアルなしでは非常に厳しい。
マニュアル読まずとも習得できる言語ってHQ9+とかのジョーク言語くらいじゃない?

452:デフォルトの名無しさん
09/03/18 02:19:35
IPython使ってるなら ? 付けるだけ。

In [10]: repr?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function repr>
Namespace: Python builtin
Docstring:
repr(object) -> string

Return the canonical string representation of the object.
For most object types, eval(repr(object)) == object.

453:デフォルトの名無しさん
09/03/18 03:01:26
>>> help(repr)
Help on built-in function repr in module __builtin__:

repr(...)
repr(object) -> string

Return the canonical string representation of the object.
For most object types, eval(repr(object)) == object.

454:デフォルトの名無しさん
09/03/18 23:20:58
わかるよ、習うより慣れろってことね。わかります。
だけど、マニュアル見た方が良い場合もある。

バージョンによる文法の違いとか、
他の言語を使ったことがあるけど、pythonに移行したい場合。

help方式は、そもそも、索引する単語が分かっている場合にしか使えない。


455:デフォルトの名無しさん
09/03/19 00:41:47
scipyのバイナリは
SSEがサポートされて無いと使えないんですか?

456:デフォルトの名無しさん
09/03/19 00:55:06
そういう質問してる時点で駄目だと思う

457:デフォルトの名無しさん
09/03/19 01:06:30
んー
CPUがSSE3をサポートして無いといって中断するんだよな。
WinでのbuildについてはOfficialにマニュアルもないし…

ATLASとBLAS入れてMinGWでeasy_installか?

458:デフォルトの名無しさん
09/03/19 09:14:01
Rubyしかないな

459:デフォルトの名無しさん
09/03/19 18:08:57
Cythonって既にpython3に対応してるんだな。
lxmlがpython3に対応したというのを見て初めて知った。

460:デフォルトの名無しさん
09/03/20 02:04:44
パイソン学び始めて1日目ですが
数当てゲームの作り方を
ヒントだけでいいので教えてください。

461:デフォルトの名無しさん
09/03/20 02:34:33
数当てゲームでググる

462:デフォルトの名無しさん
09/03/20 02:55:17
そのぐらい自分で考えてフローチャートでも書いてみれ

463:デフォルトの名無しさん
09/03/20 03:41:11
うおお
頭がパンクしそうだ

464:デフォルトの名無しさん
09/03/20 04:20:42
>>460
import random
while(True):
  print '0-9? ',
  print 'ok' if int(raw_input()) == int(random.random() * 10) else 'bad'


465:デフォルトの名無しさん
09/03/20 04:23:25
>>464
なんか見たこと無い構文がいっぱいorz
プログラミングって難しいですね・・・

466:デフォルトの名無しさん
09/03/20 04:48:52
int(random.random()*10)
よりは
random.choice(range(0, 10))
のほうがよくね?

467:デフォルトの名無しさん
09/03/20 05:04:26
random.randint(0, 9)

468:デフォルトの名無しさん
09/03/20 05:53:35
>>466-467
ありがとうございます
勉強になります

469:デフォルトの名無しさん
09/03/20 05:55:10
毎回乱数発行してたら0〜9まで10回入力しても当たらんケースがあるのかw

470:デフォルトの名無しさん
09/03/20 06:01:14
分かってるとは思うけど各回の期待値は1/10だから
10回連続で外れる確率は0.9**9で35%くらいある
逆に乱数一回だけ発行だと10回以内で確実に当たる

471:デフォルトの名無しさん
09/03/20 08:44:10
35%もあるのか

472:デフォルトの名無しさん
09/03/20 10:12:05
そんなことよりエロゲつくってくださいよぉ

473:デフォルトの名無しさん
09/03/20 10:16:37
了解

474:デフォルトの名無しさん
09/03/20 10:39:39
音ゲー作ろうかと思ったけどMIDIわかんえ

475:デフォルトの名無しさん
09/03/20 12:33:21
URLリンク(www13.plala.or.jp)
URLリンク(www13.plala.or.jp)
URLリンク(www13.plala.or.jp)

476:デフォルトの名無しさん
09/03/20 17:05:58
2.6 と 2.5 の共存はどうやるのがいいんでしょうか?
窓環境で ctypes で dll にアクセスする用途で 2.6を
入れたはいいものの、環境変数の設定を 2.5 -> 2.6と
設定し直す手間がとても面倒なんです…

477:デフォルトの名無しさん
09/03/20 17:39:23
そうだね

478:デフォルトの名無しさん
09/03/21 19:58:48
3もでてるのに何で今更2.6が使いたいの?
モジュールの対応状況ならまだ2.5が最良だろ?


479:デフォルトの名無しさん
09/03/21 20:01:37
>>478
3はまだ先行者による地雷発掘中だから一般人は使っちゃダメ。
2.6 に移行して from __future__ しまくるのがベスト。

480:デフォルトの名無しさん
09/03/21 23:37:35
とか言ってる割には
今から使い始めるには3からが良いよ
ってのを良く見るんだが…

まぁ、バグ出しの問題と
仕様変更による混乱回避の問題は別物だけど
使っちゃ駄目ってのもおかしな話だ

だったらリリースすんなよって言われても仕方ない

481:デフォルトの名無しさん
09/03/21 23:53:31
>>今から使い始めるには3からが良いよ
言ってねーよ。少なくとも2chでは…

482:デフォルトの名無しさん
09/03/22 00:10:39
ruby1.9のがはるかに先をすすんでいる。

483:デフォルトの名無しさん
09/03/22 00:12:09
>>482
それは絶対にないwww


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

5400日前に更新/114 KB
担当:undef