1 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 15:22:07.02 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その11 hibari.2ch.net/test/read.cgi/tech/1301383226/ 関連スレ Pythonのお勉強 Part45 hibari.2ch.net/test/read.cgi/tech/1321189773/ ◆関連リンク Python の Home Page ttp://www.python.org/ ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
348 名前:331 mailto:sage [2012/01/14(土) 23:22:57.11 ] >>346 重ね重ねありがとうございます。 >NANは不定値なのでこういう振る舞いをする。当然ソート結果はおかしくなる。 n!=n(NaN!=NaN)という条件を書いているのだから気付くべきでした。 文字列のinf、NaNは下記で回避 INF = float("inf") NAN = float("nan")←不要に気付いたので削除します。 if (n == INF) or (n == -INF) or (n!=n): raise TypeError 文字列の時に返す数値 float("inf") で、先に進める事にします。この後もキーがタプルの場合の処理。要素が日本語の時は 文字コードではなくその文字を表示。ネストしていたらどうするか等、問題山積みです。 デバック用自家製pprintの道は険しいです。 またお世話になる事は確実です。今後もよろしくお願いします。
349 名前:デフォルトの名無しさん [2012/01/14(土) 23:28:34.42 ] >>347 ありがとうございます。
350 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 04:49:14.94 ] >>345 datetime.fromtimestamp
351 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 08:38:28.51 ] floatで変換するのがダメならast.literal_eval使う手もある
352 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:20:52.01 ] VPythonって何?
353 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 19:19:12.34 ] UNIX系OSのシェルで実行するPythonスクリプトを作成しているのですが、 パイプを使った標準入力の受け取り方について良い方法を探しています echo "hoge" | ./test.py で、"hoge"を取得して処理をしたいという状況です sys.stdinを使用して取得まではできたつもりなのですが、 単純に ./test.py といったパイプ無しでの実行のときに一定時間後落ちます パイプでの標準入力が無い場合は別の処理をしたいのですが、良い方法がありますでしょうか よろしくお願いします
354 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 19:32:38.64 ] すみません、できたっぽいですorz 勘違いしてるといけないので一応、書いておきますと sys.stdin.isatty() を確認しました
355 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 02:28:29.56 ] >>351 他の単語で不都合が出そう Trueとか >>348 ソートに使う関数(1度のソートで複数回呼ばれる)ってことで、出来るだけシンプルにしようと思ったんだけど 他の型にも対応する&デバッグ専用であればパフォーマンスより拡張性優先にした方がいいかな。 try/except による判別では、対応する型が増えるとネストが深くなりそうなので 明示的に、型による分岐にした方が良さそうです。率直に記述するなら if isinstance の列挙。 ttp://codepad.org/E0PEyX7Q >自家製pprint 簡単な実装方法としては、pprint.PrettyPrenter や repr(reprlib).Repr のサブクラスを作って拡張する方法があるよ。
356 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 18:10:16.42 ] 突然だけど、このページの文字コードの解説が分かりやすかった lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
357 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:16:41.48 ] pc11.2ch.net/test/read.cgi/tech/1217836194/339 339 :デフォルトの名無しさん:2008/08/23(土) 08:36:00 PythonのUnicodeEncodeErrorを知る lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html よくまとまってた。あとで読む
358 名前:331(348) mailto:sage [2012/01/17(火) 21:13:41.51 ] >>355 コードサンプルありがとうございます。参考にさせて頂きます。
359 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:43:18.40 ] setdefaultencoding 禁止
360 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 21:46:40.56 ] elementtreeに読み込まれたxmlの任意のelementを取得し、 そのelementの親となっているelementを返すコードを書きたいのですが検討が付きません。 サンプル等教えて頂けないでしょうか?
361 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 23:19:16.66 ] ElementTreeの要素は親要素への参照を持たないので ひと手間かける必要がある effbot.org/zone/element.htm#accessing-parents でもlxmlなら直接書ける lxml.de/tutorial.html#the-element-class >>> root is root[0].getparent() # lxml.etree only! True
362 名前:360 mailto:sage [2012/01/18(水) 23:47:03.94 ] >361 ご回答有難うございます。 ElementTree以外のxmlライブラリ利用も考えてみましたが、 なるべく標準ライブラリで済ませたいため今回はlxmlは見送ろうと思います。
363 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:24:47.15 ] list = [apple1,apple3,apple4,apple2,banana2,banana1,banana5,banana3,banana4] こんな感じで末尾に数字つきの文字列のリストがあったとして これをapple1,apple2,apple3,apple4,banana1,banana2....という風に リスト内の順番を数字順に並び替えるにはどうするのが1番早く出来ますでしょうか?
364 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:27:57.70 ] L = ['apple1','apple3','apple4','apple2','banana2','banana1','banana5','banana3','banana4'] L.sort()
365 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:54:39.63 ] >>364 なんと1瞬・・・pyてょnすげーです ありがとうございます・・・
366 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 01:36:40.63 ] while 文の中で、かなり時間のかかる処理を行うのですが、キーボードから入力で、breakさせ たいと考えています。どんなやり方があるでしょうか。
367 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 01:45:09.69 ] Ctrl+C
368 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 04:09:42.80 ] ttp://d.hatena.ne.jp/kakurasan/20100208/p1 ttp://www.slideshare.net/atsuoishimoto/python-9707497
369 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 17:58:23.24 ] PYTHONとC++との組み込みと使い方に詳しいページってありますかね?
370 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 18:05:31.70 ] 特定のシステム上のpythonが使えるメモリの上限値を調べる事って出来ますか? 具体的にはandroid端末のsl4a上で使えるpythonのメモリの上限値を調べたいです
371 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 22:29:53.24 ] 住所の文字列を渡して、google mapがブラウザに表示されるスクリプトを探しているのですが どっかに無いでしょうか?
372 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 23:19:47.06 ] >>371 import webbrowser, urllib webbrowser.open('maps.google.co.jp/maps?q= ' + urllib.quote(u'東京都千代田区永田町1丁目7番1号'.encode('utf-8')))
373 名前:デフォルトの名無しさん [2012/01/31(火) 23:48:02.65 ] www.nslabs.jp/monkey-python-02.rhtml#s3 このサイトを見て次のようにプログラムを組んだのですが、うまくいきません。 # -*- coding:utf-8 -*- import Tkinter def on_clicked(): print "ボタンが押された!" window = Tkinter.Tk() button = Tkinter.Button(window, text = "押してください。", command = on_clicked) button.pack() window.mainloop() 本当だったら、端末からスクリプトを実行したら、ウィンドウが出て、ボタンを押すと”ボタンが押された!”と表示されるはずなのですが…
374 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:53:05.34 ] 失礼。どうなるか書くのを忘れてました。 実行したら何も出ずに終了してしまいます。 あまりにもくだらない質問かもしれませんが、ご教授おねがいします。
375 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:59:43.70 ] >>373 端末って本当に端末?アイコンをダブルクリックで実行とかしてない? とりあえずOSとPythonのバージョンを
376 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 00:05:07.20 ] >>375 あぁ…。ほんと色々書くの忘れてますね…。申し訳ない。 Ubuntu Linux 11.10 Python 2.7 です。 端末から実行してます。 対話モードで四則演算とか 簡単なスクリプト print "hoge" とかならできるので、端末の使い方を誤っているわけではないと思います。
377 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 00:22:10.65 ] ああ、そういうことか。インデントするのはprint文だけでいいよ >>373 だとon_clicked関数を定義するだけで呼びださないスクリプトになってる def on_clicked(): print "ボタンが押された!" window = Tkinter.Tk() button = Tkinter.Button(window, text = "押してください。", command = on_clicked) [...]
378 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 00:42:14.08 ] >>377 できました! ありがとうございます。 今回の失敗は、 def on_clicked(): print "ボタンが押された!" で関数を定義して、その続きもインデントしたままだと、その内容もon_clicked関数の中身として処理されてしまう。 という解釈でいいでしょうか。
379 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 00:55:18.69 ] >>378 です。 > 字下げするのを止めたところがその関数の終わりになります。
380 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:01:07.43 ] >>379 ありがとうございます。 少しかじった程度のC言語のノリで字下げしまくってたら、Pythonでそれは命取りでした。 字下げを使うというのがPythonの大きな特徴だと言うのに…。 助かりました。ありがとうございます。
381 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:42:02.28 ] >>380 できたならいいけど。 C言語のノリで字下げって、Cでも普通はそんな字下げはしないよ…… Cでは`}'を入力したらエディタが勝手に字下げを1段戻してくれたけど、 Pythonでは`}'を入力するかわりに字下げを戻すんだ。
382 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 16:44:39.87 ] Pythonの書きやすさは、エディタの能力によって大きく左右される。
383 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:02:38.15 ] >>373 の行頭からの連続した半角空白がインデントされて見えてる人いる? いたら環境教えてほしい
384 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:22:13.92 ] v2cだと半角spcすら見えない 2ch mateで1個分
385 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 17:34:17.52 ] >>383 dat を直接見ればよかろう。 Jane Style なら >>373 にカーソルを合わせれば見えるし。
386 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 18:18:10.45 ] >>384 > 2ch mateで1個分 ああやっぱりそういうブラウザあるのか。どうもありがとう 興味ある人向け www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/text.html#h-9.1
387 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 04:19:08.62 ] インデントなら navi2ch 最強。
388 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:15:56.95 ] Dive into Python を読んでいますが、 >>> by = b'd' をそのままコピペすると >>> >>> by = b'd' File "<stdin>", line 1 >>> by = b'd' ^ SyntaxError: invalid syntax というエラーが出てしまいます by = b'd' だけコピペするのが面倒なのですが何か良い方法はありませんか? >>> sys.ps2 '... ' >>> sys.ps1 '>>> ' というので設定すればいけるのかな?と思いましたがよく分かりませんでした。
389 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:32:01.75 ] www.diveintopython.net/download/diveintopython-examples-5.4.zip
390 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:33:04.82 ] そのくらいコピペじゃなくて自分で入力しよう
391 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:33:33.83 ] >>389 PCが物故割れた
392 名前:デフォルトの名無しさん [2012/02/02(木) 21:55:31.54 ] Tkinter の raise と lower の使い方がよくわかりません。 下のTcl/Tkスクリプトと同じ動作をTkinterで実現するにはどうしたら良いでしょうか? #!/bin/sh # the next line restarts using wish \ exec wish "$0" "$@" set flag 0 canvas .c0 -bg "white" canvas .c1 -bg "green" pack .c0 pack .c1 -in .c0 bind . <1> {if {$flag == 0} {lower .c1; set flag 1} else {lower .c0; set flag 0}}
393 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:34:33.48 ] 1/6000 * 1/3000 * ... ぐらいの桁の掛け算を何度も繰り返すのですが 桁落ち、アンダーフローなどが心配で、対数か何かを使ってどうにか出来ないでしょうか? ふざけた質問だと思いますがよろしくお願いします。
394 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:42:45.79 ] 有理数として表現できるなら、 fractions 一択 詳しくは、 diveintopython3-ja.rdy.jp/native-datatypes.html#fractions ネイティブデータ型 - Dive Into Python 3 日本語版 有理数の事で悩んでいたんなら、>>393 は少なくとも diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes に一通り目を通さなければならない。 時間に余裕があるなら、こっちも diveintopython3-ja.rdy.jp/index.html
395 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:48:41.45 ] >>394 fractions見てみましたが使えそうです。 早い回答ありがとうございました。 また一度Dive Into Python3も熟読してみます。
396 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:50:16.64 ] >>394 を修正 有理数として表現できるなら、fractions 一択 2.7でも3.0でも使えるよ。 有理数の事で悩んでいたんなら、>>393 は少なくとも diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes に一通り目を通さなければならない。 他の便利な型について詳しくは、 diveintopython3-ja.rdy.jp/native-datatypes.html#fractions ネイティブデータ型 - Dive Into Python 3 日本語版 時間に余裕があるなら、こっちも diveintopython3-ja.rdy.jp/index.html
397 名前:396 mailto:sage [2012/02/03(金) 19:55:53.94 ] >>395 実は私も最初から読んでいる所なんだ。 で、昨日ちょうど読んだ後だったから、こんなに速い回答が出来たんだ。 ああ、もうっ! 有理数として表現できるなら、fractions 一択 2.7でも3.0でも使えるよ。 有理数の事で悩んでいたんなら、>>393 は少なくとも diveintopython3-ja.rdy.jp/native-datatypes.html#fractions に一通り目を通さなければならない。 他の便利な型について詳しくは、 diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes ネイティブデータ型 - Dive Into Python 3 日本語版 時間に余裕があるなら、こっちも diveintopython3-ja.rdy.jp/index.html
398 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 20:07:13.56 ] どんだけーw
399 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:02:30.45 ] >>395 これも読もう ユニットテスト - Dive Into Python 3 日本語版: diveintopython3-ja.rdy.jp/unit-testing.html
400 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:22:29.16 ] 関数の定義の仕方によってはそうでない使い方も出来ますが、 デコレータは一般的にはクロージャみたいなものになるという解釈でいいでしょうか。 関数Aを関数Bで包んだ場合は、関数B内で定義した関数Cを返すようなので。
401 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 13:33:00.30 ] 以下のように、先頭に整数文字列の値を使って 25, 大阪府 2, 青森県 1, 北海道 47, 沖縄県 以下のようにソートしたいと考えています。 1, 北海道 2, 青森県 25, 大阪府 47, 沖縄県 python でスマートにソートするにはどんな方法が考えられますかね。
402 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 13:51:03.67 ] >>> L = ["25, 大阪府", "2, 青森県", "1, 北海道", "47, 沖縄県"] >>> L.sort(key=lambda e: int(e.split(',')[0].strip())) >>> print '\n'.join(L) 1, 北海道 2, 青森県 25, 大阪府 47, 沖縄県
403 名前:デフォルトの名無しさん [2012/02/05(日) 15:57:36.13 ] pythonの勉強をしようと思い coreblog.org/ats/minpy-web-is-now-free-to-read ここのみんなのPythonってのを呼んでサンプルを実行してるんですが 46ページの ドキュメントルートのcgiserver.py↓ import SimpleHTTPServer SimpleHTTPServer.test() を実行して cgi-bin/test.py↓ #!/usr/bin/env python print "Content-type: text/html\n" print "<html><body>Python is awesome !</body></html>" にブラウザでアクセス(127.0.0.1:8000/cgi-bin/test.py )しても test.pyの中身が表示されるだけ(つまりファイルは見えている)でpythonとして動いてくれないです。 cygwinでやってるのですが、それが駄目とかってありますか? OS:Windows7 pythonのバージョン2.6です。 cgiserver.pyを実行しているログには↓のようなものが出ます $ python server.py Serving HTTP on 0.0.0.0 port 8000 ... ********** - - [05/Feb/2012 15:52:51] "GET /cgi-bin/test.py HTTP/1.1" 200 - ********** - - [05/Feb/2012 15:52:51] code 404, message File not found ********** - - [05/Feb/2012 15:52:51] "GET /favicon.ico HTTP/1.1" 404 - 何か原因が分かりましたらお願いします
404 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 16:09:00.45 ] >>403 どこのページかくらい書けよ SimpleHTTPServerじゃなくてCGIHTTPServer
405 名前:403 mailto:sage [2012/02/05(日) 16:15:21.51 ] >>404 動きました。ありがとうございます。 前のページのプログラムと同じと思い込んでいました。 一応ページは書いておいたつもりでしたが↓ coreblog.org/ats/minpy-web-is-now-free-to-read ここのみんなのPythonってのを呼んでサンプルを実行してるんですが 46ページの
406 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 16:39:17.45 ] ローカル環境(ampps)でDjangoのお勉強したいんですがインストールの仕方がわかりません、誰かAMPPS使ってる方いませんか?
407 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 16:51:40.89 ] >>401 L = ['25, 大阪府', '2, 青森県', '1, 北海道', '47, 沖縄県'] L.sort()
408 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 17:29:19.42 ] >>401 import sys print '\n'.join([','.join(r) for r in sorted([s.split(',') for s in sys.stdin.read().splitlines()], key=lambda x: int(x[0]))])
409 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 17:45:20.26 ] repr(), str()って何が違うんでしょうか? str()だけあればいいと思いますが。
410 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:15:08.39 ] >>409 www.python.jp/doc/release/tutorial/inputoutput.html#tut-formatting str() 関数は、値を表現するときに人間にとって読みやすい形式の文字列を返します。 一方、 repr() は、インタプリタが読めるような (あるいは、等価な値を表現するための 構文がない場合には SyntaxError を送出させる) 表現にするためのものです。 人間が利用するための特別な表現をもたないオブジェクトでは、 str() は repr() と 同じ値を返します。数値や、リストや辞書などの構造体のような多くの値は、どちらの 関数でも同じ表現になります。文字列と浮動小数点は特別で、二つの別個の表現と なります。
411 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:57:56.35 ] >>409 かなりぶっちゃけた言い方をすると str()がユーザー向け、repr()がプログラマ向け の文字列を得るために使う
412 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:59:02.60 ] 理念的にはevalしたときに元通りになるのがrepr
413 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 19:41:49.36 ] >>412 おお、カッコいい
414 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:06:14.21 ] rep = repr(obj) ev = eval(rep) obj == ev さあ、結果や如何に!
415 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:08:19.37 ] >>> obj = 'abc' >>> rep = repr(obj) >>> ev = eval(rep) >>> obj == ev True >>> id(obj) 3075397632 >>> id(ev) 3075397632
416 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:15:41.41 ] >>> import datetime >>> obj = datetime.datetime.now() >>> rep = repr(obj) >>> ev = eval(rep) >>> obj == ev True
417 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:22:26.30 ] repr(float('inf')) がおかしいって誰が言ってた
418 名前:392 mailto:sage [2012/02/06(月) 06:54:34.43 ] どなたか分かる方はいらっしゃらないでしょうか?
419 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 07:21:08.82 ] c0 = tk.Canvas(...) c0.lower()
420 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 11:01:51.32 ] >>417 言ったのは多分以前の自分。 nanもダメ。
421 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 11:33:24.13 ] 理念的って書いてあるじゃない
422 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:56:47.83 ] 'float("inf")'を返せばいいんじゃね
423 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 14:17:54.28 ] そりゃ観念的だね
424 名前:デフォルトの名無しさん [2012/02/06(月) 14:58:32.30 ] >>419 下のようにしたのですがダメでした。 何が悪いのでしょうか? from Tkinter import * root = Tk() c0 = Canvas(root, bg = 'white') c1 = Canvas(root, bg = 'green') c0.pack() c1.pack(in_ = c0) c1.lower() root.mainloop()
425 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 15:39:43.14 ] お昼ごはんに理念のわかめスープ飲んだ >>424 from Tk import * Misc.lower(c1) Tkinter.pyのソースコードにそれっぽいことが書いてあるから 参照したらいいかも
426 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 15:40:29.24 ] あ、まちがえた。from Tkinter import *
427 名前:デフォルトの名無しさん [2012/02/06(月) 18:15:59.48 ] >>425 お陰様で無事動きました。 ありがとうございました! Tcl/Tkの経験があればTkinterも何となくわかるかと思っていたのですが、 かえって違いに戸惑ってしまってます。 そのうち慣れるでしょうけど、それまでは苦労しそうです。
428 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:32:31.34 ] 海外のアルゴリズムを教える題材にPythonを使うのが多いらしいのですがそういうサイトはあるのでしょうか C言語のアルゴリズムの本読んでるんすけど難しいです
429 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:48:52.35 ] 海外と国内のとひとつずつ greenteapress.com/thinkpython/thinkCSpy/html/ www.geocities.jp/m_hiroi/light/index.html
430 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:33:39.52 ] >>429 さっそくありがとうございます。 地道にやっていこうと思います。
431 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 07:24:23.27 ] MacでPythonをやるにはどういった開発環境が良いでしょうか? Ankiというソフトウェアをビルドしようとしています
432 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 07:52:26.26 ] Mac ならシステムに最初から Python がはいってるから、そのままで OK だけ ど、特定のバージョンが必要とかの場合は MacPorts から入れるのが簡単。 PyQt4 とか Beautiful Soup とかが必要のようだけど、MacPorts だとそれもま とめてインストールできる。
433 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:37:57.86 ] >>432 有難うございます 難しいですが少しずつ理解して行きたいです
434 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:54:45.89 ] 外部サイトのRSSから自動でスクレイピングして画像やテキストの一部を自分のサイトの指定の場所に表示したいんですが、どういう手順でやればよろしいのでしょうか ちなみについさっきローカルでDjangoインスコしたばかりのド素人です(^q^) はじめてのLL言語れす(*^o^*) 教えておにーちゃん!
435 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:12:10.51 ] そーいうの不愉快だから止めた方がいいよ
436 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:36:14.79 ] >>434 同じようなの作ってるけどbeautifulsoupとmechanizeでやってみてるよ
437 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:42:32.20 ] >>435 すいませんでした。反省します。 >>436 そしてありがとうございますおにーちゃん
438 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:50:57.39 ] >>> [[10]] [[10]] >>> ((10)) 10 なにこの違い 困るんですけどw
439 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:52:47.49 ] 釣り針でかすぎるけど、困る例を一つでも挙げれたら100万円やる
440 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:56:39.37 ] リストのリストから最大値&最小値を見つける関数があってですな 439のタプルのケースを食わせるとあきまへんねん
441 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:59:13.44 ] >>> ((10,),) ((10,),)
442 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:59:56.96 ] ((10,),)
443 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 21:03:53.06 ] >>440 www.python.jp/doc/release/tutorial/datastructures.html#tut-tuples
444 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 21:05:31.30 ] だよな、最初438がタプルを使おうとしてるとは思わなくて何がしたいのか理解不能だった
445 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 01:17:52.17 ] ((10,),)
446 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 15:50:27.48 ] ((((;゚Д゚))))
447 名前:デフォルトの名無しさん [2012/02/09(木) 16:58:22.47 ] 数字が1桁から2ケタへと移行する場合のsortがうまくいきません。 どうしたら直りますか #1〜2ケタの数字の場合 list=["apple2","apple10","apple11","apple1","apple4","apple5","apple6","apple3","apple15","apple7","apple8","apple12","apple13","apple9","apple14"] list.sort() print list >result >['apple1', 'apple10', 'apple11', 'apple12', 'apple13', 'apple14', 'apple15', 'apple2', 'apple3', 'apple4', 'apple5', 'apple6', 'apple7', 'apple8', 'apple9'] #1桁の数字のみの場合 list=["apple2","apple1","apple4","apple5","apple6","apple3","apple7","apple8","apple9"] list.sort() print list >result >['apple1', 'apple2', 'apple3', 'apple4', 'apple5', 'apple6', 'apple7', 'apple8', 'apple9'] #数字を全て2ケタにした場合 list=["apple02","apple10","apple11","apple01","apple04","apple05","apple06","apple03","apple15","apple07","apple08","apple12","apple13","apple09","apple14"] list.sort() print list >result >['apple01', 'apple02', 'apple03', 'apple04', 'apple05', 'apple06', 'apple07', 'apple08', 'apple09', 'apple10', 'apple11', 'apple12', 'apple13', 'apple14', 'apple15']
448 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 17:03:07.72 ] >>447 「python 自然順ソート」でググれ
449 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 17:07:27.02 ] >>447 L.sort(key=lambda x: int(x[5:])) x[5:]が手抜きっぽくて嫌なら import re L.sort(key=int(re.match(r'apple(\d+)', x).groups(1))) "apple01"を作るときに"apple%02d" % numとかでゼロパディングするのもいい
450 名前:449 mailto:sage [2012/02/09(木) 17:11:24.29 ] あれなんか二番目がおかしい。ごめん L.sort(key=lambda x: int(re.match(r'apple(\d+)', x).groups(1)))
451 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 19:16:07.76 ] apple限定かい! PHP の natsort って、おもしろいけど本当に役に立つのかねえ。 1.05 と 1.5 はバージョン番号なら同一視してほしいけど、 ふつうの小数では別に扱ってほしいし。
452 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 20:51:57.58 ] >>448 ググってみます。 >>451 apple限定じゃないほうが良いです。。
453 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 23:19:07.74 ] >>452 import re L.sort(key=int(re.match(r'[^\d]*(\d+)', x).groups(1)))
454 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 23:31:12.60 ] re.search(r'\d+\Z', ...)
455 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 01:13:25.90 ] >>454 iPhoneでみるとなんかモザイクみたいだ
456 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 12:14:21.84 ] test={ 'a':{'j':'1'}, 'b':{'i':'2'}, 'c':{'k':'3'}, } を数字の箇所の値で降順にソートしたいのです。 つまり c k 3 b i 2 a j 1 と表示されるようにしたいのですが、 どのようにすればいいのでしょうか?
457 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 13:03:48.26 ] >>456 sorted(test.items(), key=lambda item: item[1].items()[0][1], reverse=True)
458 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 13:16:58.83 ] >>457 はやっ! 。 。 / / ポーン! ( Д ) 辞書の辞書(辞書の入れ子)のsortってこうするんですね。 うまくいきました。ホントに助かりましたm(_ _)m
459 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:35:41.47 ] python3だと、items()はリストじゃなくてビューオブジェクトを返すから、items()[0]ができないけどね。
460 名前:デフォルトの名無しさん [2012/02/13(月) 02:10:48.93 ] IDLEは起動しないわ TkinterはDLLロードエラー出るわ 糞だな
461 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 02:41:49.89 ] >>460 これ入れたら直る www.microsoft.com/Downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=ja
462 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 03:21:26.47 ] えすぱぁ
463 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 16:26:12.19 ] Python3.2.2でvirtualenvで環境を作ろうとするとエラーになります。 Python3.2.2をインストールした後、distributeをインストール、easy_installでpipをインストール pipでvirtualenvをインストールして、エラーらしいエラーは出ないで終わりましたが、 virtualenvで環境を作ろうとするとエラーになります。 環境はwin7で、virtualenvを引数無しで実行するとヘルプメッセージが表示されるので、インストールは成功しているみたいです。 どなたか解決策をご存じの方はいらっしゃいませんでしょうか? E:\Data\Python>python -m virtualenv main New python executable in main\Scripts\python.exe Fatal Python error: Py_Initialize: unable to load the file system codec LookupError: no codec search functions registered: can't find encoding This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. ERROR: The executable main\Scripts\python.exe is not functioning ERROR: It thinks sys.prefix is 'e:\\data\\python' (should be 'e:\\data\\python\\ main') ERROR: virtualenv is not compatible with this system or executable Note: some Windows users have reported this error when they installed Python for "Only this user". The problem may be resolvable if you install Python "For all users". (See https://bugs.launchpad.net/virtualenv/+bug/352844)
464 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 16:30:40.83 ] よくこのエラーが出るけど、 「このユーザーだけ」 って選択した時なんだよね。 あなたが「全てのユーザ」を選択するとこの問題は解決するかもしれない。
465 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 16:32:25.35 ] >>464 に追加 インストール時の話です。 こっちもみてね。 https://bugs.launchpad.net/virtualenv/+bug/352844
466 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 21:22:59.58 ] 専用エディタ導入したけど使い難いな でも関数の説明が出るのは嬉しい
467 名前:デフォルトの名無しさん [2012/02/13(月) 23:27:25.06 ] >>466 何使ってますの?
468 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 00:51:14.93 ] カーソルを動かしたいのですが c言語のgotoxyに対応するような命令ってありますか?
469 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 01:44:46.17 ] >>468 curses
470 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 16:14:51.89 ] >>469 調べて見たけど結構複雑だな ubuntuで動作することを祈ろう
471 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 21:20:51.09 ] >>467 PyScripter 変数名にnとか割り当ててn = 1とかやろうとするとn<SPACE>の時に変換されてて気付いたらよく分からない文字になってたりする 今までIDE使ったことなかったから大変
472 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 23:30:20.19 ] x打つつもりが、いきなりxrangeになったりするのは、IDEオプションの Code CompletionのComplete as you typeのチェック外したら出なくなったよ。 俺も使い始めたばかりで、それが正しい対処かわからんけど。
473 名前:デフォルトの名無しさん [2012/02/14(火) 23:40:45.75 ] これでいい野田
474 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 00:39:53.16 ] 反対の産生ー
475 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:08:11.51 ] L = [1, 2] T = (1, 2) L == T >>> False となるのですが、一度どちらかをlist, tupleに変換しないといけないんでしょうか? それとも良い方法があったりしますか?
476 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:34:42.66 ] L === T
477 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:38:28.33 ] >>475 www.python.jp/doc/2.5/tut/node7.html#SECTION007800000000000000000
478 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:50:43.13 ] >>> reduce(lambda x, y: x and (y[0] == y[1]), zip([1,2,3], (1,2,3)), True) True >>> reduce(lambda x, y: x and (y[0] == y[1]), zip([1,2,3], (1,9,3)), True) False 順序気にしないなら >>> L = [1, 2] >>> T = (2, 1) >>> set(L) == set(T) True
479 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:54:15.43 ] >>476 死ね >>> L = [1, 2] >>> T = (1, 2) >>> L == T False >>> L === T File "<stdin>", line 1 L === T ^ SyntaxError: invalid syntax >478 そこまでするくらいなら素直に、 tuple(L), list(T)やってろって話ですかね・・・ set()はちょっと検討してみます。
480 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 18:20:22.41 ] ランバダってなんなの?
481 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:08:23.40 ] ひょっとして無名関数のことかな
482 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:20:09.50 ] λ...
483 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:50:26.76 ] λ人λ人λ人λ人λ人入人λ人λ人λ人入人λ人λ人λ
484 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:15:43.74 ] ランダバダバダバランダバダバダバ
485 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:21:25.72 ] λ って え と似てるな
486 名前:デフォルトの名無しさん [2012/02/15(水) 21:51:57.37 ] ええ
487 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:10:53.74 ] ソートするとき、以下のように"key=lambda"ってのが良くでてきますが、 検索しても意味がわかりません。どなたかヒントをお願いできないでしょうか。 sorted(a, key=lambda x:x[1], reverse=True)
488 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:15:59.43 ] 本当によく出てくるの?
489 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:19:04.28 ] >>487 公式のチュートリアルにちゃんと解説があるよ www.python.jp/doc/nightly/tutorial/controlflow.html#tut-lambda
490 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:20:24.17 ] >>487 wiki.python.org/moin/HowTo/Sorting
491 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:48:43.02 ] >>489 、490 ありがとうございます。なんとなくわかってきました!
492 名前:デフォルトの名無しさん [2012/02/16(木) 00:06:26.59 ] Matplotlibを使ってみたくて、fonnesbeck.github.com/ScipySuperpack/ から、 インストールしました。 動くかどうかのtestとして、 >>> import matplotlib.pyplot as plt を入力したところ No module named dateutil.rrule というエラーがでてきてしまいます。 解決方法がわかる方、教えてください。
493 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:09:01.75 ] >>492 マルチ
494 名前:デフォルトの名無しさん [2012/02/16(木) 00:11:03.46 ] >>492 マルチって何ですか?
495 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:12:13.60 ] >>494 www.ippo.ne.jp/g/70.html
496 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:13:33.76 ] 複数のスレで質問してるってこと 分からなければ googleにマルチってなんですか?って聞いてみて
497 名前:デフォルトの名無しさん [2012/02/16(木) 00:19:42.05 ] 申し訳ありません。 数週間このエラーから抜け出せずにいたので、 焦ってしまいました。 気を悪くした方、ごめんなさい。
498 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:21:44.27 ] すすすすすすすすすすす数週間!
499 名前:デフォルトの名無しさん [2012/02/16(木) 00:36:55.74 ] >>498 そうなんです。プログラミングをはじめようと思い、PythonでMatplotlibを使って グラフなど描いていろいろやろうと思ったのですが、全然うまく行かず… Google先生に聞いて、いろいろ試したのですが、うまく行かず今日に至った次第です。
500 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 04:33:51.52 ] 必要なモジュールが足りないんだろ 入れて来い
501 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 10:03:06.61 ] >>499 何だ、君マルチだったのか。 Mac使いだったらMacPortsであっさり インスコできるはずだから、一旦 Superpack消して入れ直してみなよ。
502 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:01:19.00 ] unicodeのテキストの文字列を 一行づつ画像化して出力したいのですが 文字列を画像化するにはどうしたらいいですか? PIL画像を作ったり編集したりは出来るのですが 文字を入れる方法が分かりません
503 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:21:34.23 ] ImageMagickを使うとか
504 名前:デフォルトの名無しさん [2012/02/17(金) 14:44:10.88 ] 超初歩的な質問で申し訳ないのですが、 テキストの読み込みに関してどう書いていいのかわかりません。 テキストには名前、打数、安打数、本塁打数、と1行毎に書いてありそれが9人分続いているとします。 最終的にoutputは名前、打率、本塁打数と1人1行ずつprintします。 txtの読み込みとループに関して簡単にでいいので解説お願いします。
505 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:50:06.34 ] >>503 なんか 以下のサイト見つけたけどPILのバージョンが宜しく無いみたいなんで インスコし直してきます ttp://www.geocities.jp/showa_yojyo/note/python-pil.html#id13
506 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 15:11:50.08 ] Python3.2 with open('tech504.txt') as f: for line in f.readlines(): line = line.rstrip() sp = line.split('、') out = sp[:2] + sp[3:] print('、'.join(out)) tech504.txt 名前1、打数1、安打数1、本塁打数1 名前2、打数2、安打数2、本塁打数2 名前3、打数3、安打数3、本塁打数3 名前4、打数4、安打数4、本塁打数4 名前5、打数5、安打数5、本塁打数5 名前6、打数6、安打数6、本塁打数6 名前7、打数7、安打数7、本塁打数7 名前8、打数8、安打数8、本塁打数8 名前9、打数9、安打数9、本塁打数9
507 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 15:14:26.17 ] >>506 以下の行は for line in f.readlines(): 以下の行に修正 for line in f:
508 名前:502 mailto:sage [2012/02/17(金) 16:29:13.54 ] すいません、どうも t.txtのunicodeの日本語の文字列が文字化けしてしまいます どうしたら文字化けせずに画像に出来るのでしょうか? import Image import ImageDraw import ImageFont # 大きめのキャンヴァスを用意しておく。 img = Image.new('RGB', (600, 400), 'white') dr = ImageDraw.Draw(img) # HG 明朝体を使ってみる。 fnt = ImageFont.truetype('hgrme.ttc', 24, encoding='utf-8') # 長めのテキストを用意する。 f = file("t.txt","r") text = f.read() f.close() width = 0 height = 0 for line in text.splitlines(): ext = dr.textsize(line, fnt) dr.text((100, height+(400/2)), line, font=fnt, fill='red') width = max(ext[0], width) height += ext[1] # 余白をトリムする。 #img = img.crop((0, 0, width, height)) img.save("test.png")
509 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:41:29.00 ] text = f.read().encode('utf-8')
510 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:41:29.23 ] hgrme.ttcは存在するのか?
511 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:43:37.54 ] 普通にunicodeでやったらうまくいったが
512 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:50:51.46 ] >>509 encodeじゃなくてdecodeだろ >>510 存在しないとIOErrorになる
513 名前:502 mailto:sage [2012/02/17(金) 16:57:45.39 ] >>509 駄目でしたOTL Message File Name Line Position Traceback <module> C:\Users\***\desktop\1.py 27 exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128) >>510 確認しましたがありました >>511 テキストファイルがおかしいのでしょうか? Upします。 パスはpです 出力画像 www.dotup.org/uploda/www.dotup.org2650080.png.html www.dotup.org/uploda/www.dotup.org2650085.txt.html
514 名前:502 mailto:sage [2012/02/17(金) 17:01:03.50 ] >>512 decodeにしてみたけど駄目でした Message File Name Line Position Traceback <module> C:\Users\***\desktop\1.py 27 decode C:\Python26\Lib\encodings\utf_8.py 16 exceptions.UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte
515 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:02:15.39 ] 'utf-16'
516 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:05:48.23 ] f.read().decode('utf-16')
517 名前:502 mailto:sage [2012/02/17(金) 17:06:27.46 ] >>515 うおおおおお できましたあああ!!! 有難うございます!!!
518 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:14:31.91 ] ユニコード色々有り過ぎでヤだお
519 名前:504 [2012/02/17(金) 17:26:40.15 ] >>506 素早い回答ありがとうございました。 ですが求めている物とは少し違いました。 fileが以下のように各行に1つずつのときに "名前 打率: .nnn 本塁打: aa"と表示されるようにしたいのです。 tech504.txt 長野 578 164 17 マートン 579 180 13 宮本 474 143 2 説明が悪く大変申し訳ありません。
520 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:38:24.07 ] '\n'.join(out)
521 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:10:46.33 ] この本読んだひといますか? 感想聞かせてください WSGIウェブプログラミング ttp://www.amazon.co.jp/dp/4877832882/ 書評悪すぎてわろす
522 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:15:51.52 ] じょ、情報を小出しにするなとあれほど。。。 単に興味で聞くだけなんだけど、これなんのために必要だったの? n = 4 with open('tech504.txt.1') as f: out = [] for i, line in enumerate(f): line = line.rstrip() if i % n == 2: continue out.append(line) if i % n == n - 1: print("名前: {}, 打率: .{} 本塁打: {}". format(out[0], out[1], out[2])) out = []
523 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:22:06.70 ] せめて回答する側はインデントしようよ
524 名前:デフォルトの名無しさん [2012/02/17(金) 18:39:44.52 ] datではインデントされてるよ
525 名前:デフォルトの名無しさん [2012/02/17(金) 18:48:18.29 ] >>522 申し訳ありません。 目的は課題です。求める打者数も項目もずっと多いですが。
526 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:23:38.99 ] for 名前, 打数, 安打数, 本塁打数 in zip(*[iter(open('tech504.txt'))]*4): print(名前, 打数/安打数, 本塁打数)
527 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:39:02.38 ] どっちもひどい
528 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 05:52:36.14 ] 酔った勢いでかいてみた # -*- coding: utf-8 -*- file = "tech504.txt" person = [] pgroup = [] cnt = 0 # こんなくそデータを処理する仕様はks # 出題者よデータの変更を求む! with open(file) as f: for line in f: line = line.rstrip() if cnt <= 3: person.append(line) cnt +=1 else: pgroup.append(person[:]) del person[:] person.append(line) cnt = 1 pgroup.append(person[:]) for line in pgroup: print line[0], " 打率:", float(int(line[1]) / int(line[2])), "本塁打:", line[3]
529 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 06:09:44.37 ] # coding: utf-8 rec = [] # 名前、打数、安打数、本塁打数 f = open('2ch.txt') while 1: line = f.readline().rstrip() if not line: break rec.append(line) if len(rec) == 4: name = rec[0].decode('utf-8') ba = round(float(rec[2]) / float(rec[1]), 3) ba = str(ba)[2:5] hr = int(rec[3]) print u"名前: %s 打率: .%s 本塁打数: %s" % (name, ba, hr) rec = [] f.close()
530 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:03:46.86 ] 文字列の2次元リストを、x[1]を昇順に、x[2]も昇順なら以下のソースでうまくいくのですが、 x[2]のみ降順ソートする方法がわかりません。 x:(x[1],-x[2])のように-をつけるエラーが出ます。 どうすれば良いでしょうか。 #!/usr/bin/python # coding: UTF-8 l = [['D', '100', '3000'], ['B', '100', '2000'], ['A', '500', '4000'], ['C', '200', '5000'], ['C', '200', '3000'], ['C', '200', '2000'], ['E', '400', '1000']] for e in sorted(l, key=lambda x:(x[1],x[2])): print e[0], e[1], e[2]
531 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:19:56.27 ] -int(x[2])
532 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:20:59.63 ] むやみやたらにキャストすると遅くなるけどね
533 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 20:03:07.97 ] >>531 ありがとうございました。うまくいきまいした。 もうひとつだけ質問させてほしいのですが、 以下のようなリストがあって、1番目の要素を固定して、2番目の要素だけでソートする ことは出来るでしょうか。 (元のとおりにきりん、ぞう、ぱんだの順番で並べたい) ソート前 ['きりん', '300', '3000'], ['きりん', '100', '2000'], ['きりん', '500', '4000'], ['ぞう', '400', '5000'], ['ぞう', '200', '3000'], ['ぱんだ', '400', '1000'] ['ぱんだ', '200', '2000'], ソート後 ['きりん', '100', '2000'], ['きりん', '300', '3000'], ['きりん', '500', '4000'], ['ぞう', '200', '3000'], ['ぞう', '400', '5000'], ['ぱんだ', '200', '2000'], ['ぱんだ', '400', '1000']
534 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:03:04.52 ] なんか松本引越センターを思い出したw
535 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:24:54.63 ] a0 = [x[0] for x in a] a.sort(key=lambda x: x[1]) for x0, x in zip(a0, a): x[0] = x0 自分の頭をひねらない人はプログラムやめたほうがいいよ。
536 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:27:56.12 ] 安定ソートの出番ですな
537 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:29:24.87 ] >>535 これは無知からくる悪い見本
538 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:33:06.05 ] >>533 というか、なんでそんなデータ構造にした?
539 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:57:46.97 ] 以下の2次元リストで都道府県に対してindexメソッドを使うことはできますか? その場合どうすればよいでしょうか。 [1,'東京',0] [2,大阪,0] [3,神奈川,0]
540 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:03:20.24 ] >>539 たまには自分の頭で考えてみればいいんじゃないかな?
541 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:06:11.72 ] 賛成の反対の反対
542 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:19:22.88 ] >>535 すいません、マジでこれ俺には理解不能です。 もうちょっとやさしく教えてもらえると助かります。 まず1行目からつまずきました。
543 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:27:09.27 ] numpyのarray型で特定の要素だけ加算したりすることは出来ますか? a = array([[1,2],[3,4]]) a = a[1,1] + 3 で [[1,2],[3,7] みたいにしたいのですが,これを行うには行列の大きさを同じにしないと無理でしょうか?
544 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:30:19.97 ] 最低でも一冊は、Pythonの入門書読め。 金無いなら、 diveintopython3-ja.rdy.jp/index.html これ一通り読め。 次からは diveintopythonも>>1 に入れてよ。 >>950 お願い。
545 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:31:20.79 ] >>544 は>>542 宛て
546 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:32:45.85 ] a[1][1] += 3
547 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:40:45.58 ] >>544 入門書はどれがいいの?
548 名前:950 mailto:sage [2012/02/19(日) 00:57:01.58 ] >>544 了解
549 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 02:49:46.64 ] マトリックスみたいなコンソールにバババっとコードみたいなのが流れる奴って何分で作れますか?
550 名前:Python不慣れだが30分くらいで書いてみた mailto:sage [2012/02/19(日) 03:44:16.69 ] from sys import stdout from random import shuffle chrs = 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 @ . < > $ # % _ , ' for i in range(1000): ls = [c for c in chrs] shuffle(ls) for c in ls: stdout.write(c)
551 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 06:02:48.43 ] >>550 を盛大にパクってrandomやstringのヘルプ見つつ10分ほど Windowsではこれしないと動かないかも support.microsoft.com/kb/101875/ja import sys from random import randint from string import ascii_letters, digits, punctuation chars = ascii_letters + digits + punctuation chars = chars + ' ' * len(chars) size = len(chars) try: sys.stdout.write('\033[1;32m') # green while 1: sys.stdout.write(chars[randint(0, size - 1)]) finally: print '\033[0m' # reset
552 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 06:16:53.64 ] >>534 ぱんだは同業他社だなw
553 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 06:19:40.32 ] きりんにも同業他社があるしww
554 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 07:13:28.42 ] >>551 を盛大にパクってWin32APIのヘルプ見つつ10分ほど cmd.exeで動くバージョン import sys from random import randint from string import ascii_letters, digits, punctuation from ctypes import * class CONSOLE_SCREEN_BUFFER_INFO(Structure): _fields_ = [('w', c_short), ('h', c_short), ('x', c_short), ('y', c_short), ('a', c_int), ('l', c_short), ('t', c_short), ('r', c_short), ('b', c_short), ('maxw', c_short), ('maxh', c_short)] b = CONSOLE_SCREEN_BUFFER_INFO() h = windll.kernel32.GetStdHandle(-11) c = windll.kernel32.GetConsoleScreenBufferInfo(h, byref(b)) windll.kernel32.SetConsoleTextAttribute(h, 10) # green chars = ascii_letters + digits + punctuation chars += ' ' * len(chars) size = len(chars) while True: sys.stdout.write(chars[randint(0, size - 1)]) windll.kernel32.SetConsoleTextAttribute(h, b.a) # reset
555 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 07:20:01.76 ] ああ最後の二行こっちで try: while True: sys.stdout.write(chrs[random.randint(0, sz - 1)]) finally: windll.kernel32.SetConsoleTextAttribute(h, b.a)
556 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 09:26:10.77 ] できました 回答して頂いた方ありがとうございました
557 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 10:13:36.10 ] 死ね,俺死ね 下らないことで詰まってた 俺死ね
558 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 11:24:27.01 ] では私は生きよう
559 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 11:50:29.86 ] ではプロセスは子を含めて殺しておこう
560 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:43:41.44 ] 浮動小数の比較で a=1.0 b=1.0 if a <= b : みたいにするのは、やめたほうがいいですか? a=1.0 とすると実際は a=1.00000000001 みたいになってて <= の評価が うまくいかない可能性を危惧しています。とりあえず今のところ問題なさそうなんですが。 Fortranやってたときは、よくこんなふうにやってました。 eps=1e-30 a=1.0-eps b=1.0 if( a <= b) then
561 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:19:40.00 ] >>> 1/10. 0.10000000000000001 >>> 1/10. == 0.1 True >>> 1/10. > 0.1 False
562 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:36:56.87 ] >>> 0.1 0.10000000000000001 >>> 0.2 0.20000000000000001 >>> 0.3 0.29999999999999999
563 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:40:51.45 ] >>560 Pythonでも後者のようにしたほうがいいと思う 比較する値の差をとって、それが十分小さいか調べる decimalモジュールやNumPyが使えるのかもしれないけどよく知らない
564 名前:560 mailto:sage [2012/02/21(火) 00:46:19.34 ] >>561 確かにそうなりますね。 結局、気にしないでOKということでいいですか?
565 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:51:11.32 ] 気にしないのはダメ
566 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 01:18:42.28 ] 比較対象を有効桁で丸めて比較すれば?
567 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 01:25:35.45 ] >>560 Python3.2では、i, jはdouble型として扱われていて、 以下のような比較をしていたので、 比較に関する問題で、Cで起き得る問題はPythonでも起き得ると考えていいと思う。 float_richcompare() { Compare: PyFPE_START_PROTECT("richcompare", return NULL) switch (op) { case Py_EQ: r = i == j; break; case Py_NE: r = i != j; break; case Py_LE: r = i <= j; break; case Py_GE: r = i >= j; break; case Py_LT: r = i < j; break; case Py_GT: r = i > j; break; } PyFPE_END_PROTECT(r) return PyBool_FromLong(r); }
568 名前:560 mailto:sage [2012/02/21(火) 01:36:48.21 ] ありがとうございます。 やっぱり気にすることにします。
569 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 02:01:12.54 ] 実行速度より、誤差が怖いのならdecimal使った方がいいとおも。 とりあえず、1万桁ぐらいの値でも正確に判別できているみたいだから、 decimal使えば? d1 = Decimal('0.111') >>> d1._int, d1._exp ('111', -3) >>> d00 = decimal.Decimal('0.' + '0' * 10000) >>> d01 = decimal.Decimal('0.' + '0' * 9999 + '1') >>> d00 < d01 True >>> d00 > d01 False >>> d00 == d01 False >>> d88 = decimal.Decimal('0.' + '8' * 10000) >>> d89 = decimal.Decimal('0.' + '8' * 9999 + '9') >>> d89 - d88 Decimal('1E-10000') >>> d89 > d88 True >>> d89 == d88 False >>> d89 < d88 False
570 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 02:20:23.44 ] なんか、引き算すると28桁までしか精度保証してくれないみたい >>> d1 = decimal.Decimal('1') >>> d9 = decimal.Decimal('9') >>> d1.as_tuple() DecimalTuple(sign=0, digits=(1,), exponent=0) >>> d19 = d1 / d9 >>> d19 Decimal('0.1111111111111111111111111111') >>> d19.as_tuple() DecimalTuple(sign=0, digits=(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), exponent=-28) なので、こんな風にしてprecを設定しましょうって書いてあったよ。 >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429')
571 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 02:56:45.20 ] >>566 正解
572 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 03:40:43.66 ] a=1.0 b=1.0 if round(a,1) <= round(b,1) :
573 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 04:16:43.30 ] >>> f = 0.0 >>> for i in xrange(100): ... f += 0.001 ... >>> f 0.10000000000000007 >>> f = 0.0 >>> for i in xrange(10): ... f += 0.01 ... >>> f 0.099999999999999992 if a <= b : これじゃだめだな
574 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 04:20:39.34 ] >>560 Fortranならうまくいくのか?バグ増産してたんじゃね? >>> f = 0.0 >>> for i in xrange(10): ... f += 0.01 ... >>> f 0.099999999999999992 >>> f - (1e-30) 0.099999999999999992 >>> f = 0.0 >>> for i in xrange(100): ... f += 0.001 ... >>> f 0.10000000000000007 >>> f - (1e-30) 0.10000000000000007
575 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 07:44:05.77 ] eps=1e-30 とかじゃなく、その言語が提供している定数使おうぜ Fortranはしらんけど、Pythonはこう、 >>> sys.float_info sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1) >>> sys.float_info.epsilon 2.220446049250313e-16 >>> a = 1.0 - sys.float_info.epsilon >>> b = 1.0 >>> a <= b True >>> a == b False
576 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 11:39:34.94 ] 比較の不等号を反転させて、その結果のnotをとればいいじゃない
577 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 14:00:29.66 ] はあ? ,,,..-‐‐‐-..,,, /::::::::::::::::::::::::ヽ _,..-‐‐-..,,, l::;;-‐‐-:;;::::::::::::ヽ//-‐,,__ /:::::::::::::::::::::ヽ l:l ヽ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ ヽ / :::::::::::::::::::::::::::::::::::::;-'^~~^'‐;;:l ~ヽ/ ::::::::::::::::::::::::::U::ヽミ .ll / / ̄^ヽ ::::::::::::::::::::::U:::ヽ ,.ノ ∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧ / | ・ .| :/ ̄^ヽ:::::::l'^~ .< ‐/-,, ヽ,_,,ノ | ・ |:::::::l < l ~^'' `‐' ヽ.,_,,ノ :l < | ヽ / ̄ ̄\ '''l^^~~~ / ̄ ̄ヽ -‐‐‐--l- < | ヽ __ | ヽ、 ,,,, | |||!|||i||!| | ~^'‐..,,_/ < / \ |ノ ―――― / / (:::::} | | |ll ll !!.| | ,,,, イ~''' < / \ 丿 アアァァ | l: ~~ | |!! ||ll| || | {:::::) ::l .< ● l: | | ! | l ~~ l < l、 ヽ`ニニ'ノ ,l> V V V V V V V V V V V V V V V V VV V V V V /^‐-,,____,,,,,,,,..................,,,,,,,__,,,.--ヽ ~‐‐'~ ^'‐‐~
578 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 15:19:08.35 ] >>> float(numpy.finfo(numpy.float32).tiny) 1.1754943508222875e-038 >>> float(numpy.finfo(numpy.float64).tiny) 2.2250738585072014e-308 >>> float(numpy.finfo(numpy.double).tiny) 2.2250738585072014e-308
579 名前:デフォルトの名無しさん [2012/02/22(水) 01:27:16.78 ] これで machine epsilon は求まりますか? f = 1.0 while f != f / 2.0: f /= 2.0 print f
580 名前:デフォルトの名無しさん [2012/02/22(水) 01:28:35.01 ] 訂正 f = 1.0 while f != f / 2.0: f /= 2.0 print f
581 名前:デフォルトの名無しさん [2012/02/22(水) 05:13:48.78 ] 正規表現である文字を大文字にするとき、どう書けばいいんでしょうか 文字列'foobar'の'o'を'O'に変換 ※perl my $s = 'foobar'; $s =~ s/(o)/\u$1/g; print $s; #=>'fOObar' ※python s = 'foobar' × s = re.sub(r'(o)', r'\u\1', s) × s = re.sub(r'(o)', '\\1'.upper(), s)
582 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 05:30:31.59 ] re.sub('o', lambda m: m.group().upper(), s)
583 名前:581 [2012/02/22(水) 05:58:51.72 ] >>582 マッチオブジェクトを受け取る関数をsubの第2引数にできるんですね。 マニュアルを見るとsubの第2引数は文字列または関数となっていますが、実感してませんでした。 メタシンボルの\uは無理としても、式の戻り値が入らないのが不思議でならず、そこで止まってしまってたんですが やっとクリアになりました。ありがとうございます!
584 名前:デフォルトの名無しさん [2012/02/22(水) 08:59:17.97 ] BeautifulSoup 4.0Betaを、Python3.1にインストールしようとして、tar.gzを展開した後 $sudo python3.1 setup.py install を実行すると次のエラーで失敗します ------------- (略) running install_lib byte-compiling /usr/local/lib/python3.1/dist-packages/bs4/doc/source/conf.py to conf.pyc File "/usr/local/lib/python3.1/dist-packages/bs4/doc/source/conf.py", line 43 project = u'Beautiful Soup' ^ SyntaxError: invalid syntax ------------- なにか対策はあるでしょうか? pythonはDebian Squeeze標準のpython3.1です
585 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:13:54.32 ] 2to3
586 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:38:35.52 ] >>585 tar.gzを展開した場所で $ find ./ -name *.py -exec 2to3 -w {} \; のあと $ sudo python3.1 setup.py install を実行したら問題なくインストールできました! このツールをすぐ使おうとしてpythonを始めたもので…… ありがとうございました
587 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:56:49.02 ] 2.7も入れて使い分けたらいいんじゃねーの
588 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 06:50:22.36 ] Udacityに参加してる人いる? 俺はプログラミング自体初心者に近いからCS101に挑戦中でふ。
589 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 11:40:58.23 ] コマンド呼び出しと関数呼び出しの両方ができるスクリプトはできないのでしょうか? test_disp.pyは引数を表示する機能があります。 import sys def main(argv='default'): import sys if len(sys.argv) == 2: argv = sys.argv[1] print 'called by command ', argv else: print 'called by module ', argv if __name__ == '__main__': main() これを下記のtest_caller.pyから呼び出して、 import test_disp test_disp.main('./test_disp.py') called by module test_disp.py と表示させたいのですが、'argv' is not definedとなります。 どうすればいいのでしょうか?
590 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 13:03:25.37 ] 馬鹿には無理
591 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 13:31:22.87 ] 普通にデバッグしてね
592 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 14:06:23.08 ] import sys def main(argv='default'): if __name__ == '__main__': # ''' # if len(sys.argv) == 2: # ''' argv = sys.argv print('called by command', argv) else: print('called by module', argv) # if __name__ == '__main__': # print('__main__') main()
593 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 14:38:05.56 ] >>589 インデントがおかしい def main(): if len(sys.argv) > 1: print ... else: print ... if __name__ == '__main__': main() とかしなきゃだめ
594 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 15:47:05.07 ] >>593 ,592 ありがとうございました。うまくいきました。 インデントエラーが出てないので、てっきり意図通りになっていると 勘違いしてました。 それにしてもここは、本当にまともな掲示板ですね。 私がよく訪れる仕事関係の板は、ソマリアみたいなところなんで、 びっくりしました。 この板とpythonと回答者に幸あれ。
595 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 15:54:11.13 ] >>594 うっさい市ね!
596 名前:デフォルトの名無しさん [2012/02/23(木) 16:52:12.56 ] ここまで全部自演
597 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 16:57:16.12 ] むかしはアンチスレが一番まともだったんだが いまはここなのか
598 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 17:26:49.11 ] なんか殺伐として来たな。
599 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 20:27:11.59 ] 対象をよく知ってるアンチほど怖いものはない
600 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 21:27:42.66 ] ソマリアの比喩がなんなのか分からん 悪い意味で言ってるんだろうなーくらいは検討つくけど
601 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 23:06:39.95 ] >>600 ソマリアつったら海賊問題だろ 海賊仕事関係の板 つまり594は海賊
602 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 23:47:59.69 ] 糞詰まらんし
603 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 23:52:14.18 ] ストッパおすすめ
604 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 16:14:26.19 ] 糞が詰まった
605 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 10:31:02.95 ] すみません。 質問させてください。 あるメソッドのテストを行っています。 そのメソッドは引数として整数を一個取り、その整数の範囲は1~100とします。 そのため、テストとして0や101を入れると例外が返ってくることを期待するテストを作ることを考えています。 しかし、そのときふと思ったのですが、引数の型が整数に限定されている場合、引数の型チェックも行うべきなのでしょうか? 今までJava、C#しか経験していないため、変数に型が無い言語でどのようにすべきなのか良くわかりません。 初心者丸出しの質問かもしれませんが、よろしくお願いいたします。
606 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 10:36:27.55 ] >>605 isinstanceを使うんだが、テストについてはこのリンクが極めておすすめ Python3だけど 第9章. ユニットテスト diveintopython3-ja.rdy.jp/unit-testing.html
607 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:08:47.13 ] その程度だったら、 assert isinstance(a, int) and 1 <= a <= 100 って一番最初に書いといて、以降はその仕様は忘失の彼方だな・・・
608 名前:デフォルトの名無しさん [2012/02/25(土) 13:17:07.38 ] >>606 情報ありがとうございます。 リンク先を読ませていただきましたが、一般的なTDDの説明かと思いました。 いまいち、変数に型がないことによるメリットがわかりませんでした。 その辺をわかりやすく解説してあるサイトなどありましたら、教えていただけると助かります。 よろしくお願いいたします。
609 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:27:16.06 ] 30 30 28カ所 約28カ所 約28箇所 不明 のような文字が1行づつに入力されたテキストファイルがあるのですが、 これから数字のみを抜き出したいと考えているのですが、どのようにすればよいでしょうか? 数字だけであれば全角文字をifで半角数値に置換すればいいかと思うのですが、 それ以外の文字を削除する方法が思いつきません。
610 名前:609 mailto:sage [2012/02/25(土) 13:28:55.66 ] すみません 書き漏れがありました 40箇所か39カ所 のような2つ数字が現れる文字もあるかもしれません。 その場合は最初に出てきた数次だけ抜き出したいです
611 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 14:04:53.49 ] 正規表現を使って最初に出てきた数字だけをリストに放り込んでいくのはダメなん?
612 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:05:45.24 ] import re with open('tech509.txt') as f: for l in f: l = l.rstrip() print('l =', l) # num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l) # or num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)', l) if num_str: print('num_str =', num_str.group()) print() tech509.txt aaaaa30お前のカーチャンでーべそw あいうえお30お前のカーチャンでーべそw かきくけこ28カ所お前のカーチャンでーべそw mmmmmm約28カ所お前のカーチャンでーべそw fed@@@@約28箇所お前のカーチャンでーべそw mふぃfじゃいえいえいふぉえ不明お前のカーチャンでーべそw ffieie40箇所か39カ所お前のカーチャンでーべそw
613 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:06:37.24 ] 609でしたーざんねーん 無念、無念の誤読〜
614 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:14:07.22 ] ちゃんと仕様を確認していませんでした。 はいはい、どうもすいませんっした。 import re with open('tech609.txt') as f: for l in f: l = l.rstrip() print('l =', l) # num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l) # or num_str = re.findall(r'((約|か)?([0-90-9]+)(箇所|カ所)?|不明)', l) if num_str: print('num_str[2] =', num_str[0][2]) # print('num_str =', num_str) print()
615 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:20:54.26 ] はいはい、これで完璧っすかね 何回もやり直してすいませんっした import re with open('tech609.txt') as f: for l in f: l = l.rstrip() print('l =', l) # num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?|不明)+', l) # or num_str = re.search(r'(約|か)?([0-90-9]+)(箇所|カ所)?|不明', l) if num_str.groups()[1]: print('num_str.groups()[1] =', num_str.groups()[1]) # print('num_str =', num_str) print()
616 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:31:23.89 ] なんで最初の一個だけでいいの? 別に言わなくてもいいんだけどさ。 私の感覚的にはnumsが正解なんだけど。 import re with open('tech609.txt') as f: for l in f: l = l.rstrip() print('l =', l) num_str = re.search(r'((約|か)?[0-90-9]+(箇所|カ所)?)|不明', l) # or if num_str.groups()[1] or 1: print('num_str.groups()[1] =', num_str.groups()) # print('num_str =', num_str) num_str = re.findall(r'(約|か)?([0-90-9]+)(箇所|カ所)?|不明', l) if num_str: print('num_str =', num_str) nums = [tup[1] for tup in num_str] print('nums =', nums) print()
617 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 18:38:10.70 ] ここだけ nums = [tup[1] for tup in num_str if tup[1]] ↑に修正だわ
618 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 19:36:47.47 ] 「数字だけを抜き出す」のが要望としか読めないんだけど、他の文字をマッチングさせてるのはなぜだろう
619 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 19:41:57.51 ] 〜カ所という形式でなく、 一、関係ない場所で20日、98度などといった形式での数値があると予想できる 二、仕様変更に対する耐性をつけておくため 三、自分でも必要とする時があるかもしれないので自分の感覚通りのものを拵えておいた
620 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 20:07:07.43 ] #Python 2.7 import re, codecs r = re.compile(u'[01234567890123456789]+') f = codecs.open('test.txt', 'r', 'utf-8') l = f.readlines() f.close() n = [re.search(r, s).group(0) if re.search(r, s) else '' for s in l] for s in n: print s
621 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 20:22:35.78 ] そういえば、スタックとヒープを可視化しながらPythonコードを1行ずつ実行してくれる、初心者向け素敵Web実行環境は既出ですか? ttp://people.csail.mit.edu/pgbovine/python/tutor.html#mode=edit
622 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 20:42:50.00 ] pdb使ったらいいんちゃうん? あと、>>621 のいうスタックは、localsのことだろうと思う。
623 名前:デフォルトの名無しさん [2012/02/25(土) 21:36:24.88 ] pythonでクラス作っていますが、インスタンス変数、クラス変数へのアクセス制御(private,publicなど)はどうすればいいのですか?
624 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 22:16:26.99 ] property _underscore_name
625 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 23:02:08.02 ] >>624 ありがとうございます。 命名規則で対処できたんですね
626 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 01:12:10.81 ] そういうお約束にしましょうよって話。 まあ、これくらいは読んでおいてね。 Python のコーディングガイド PEP8 - 日本語訳 www.oldriver.org/python/pep-0008j.html メソッド名とインスタンス変数 関数の場合と同じルールを使う。lowercase 方式で命名し、可読性を上げ るためにアンダースコアで単語を区切る。 非公開なメソッドとインスタンス変数にのみ、先頭にアンダースコアを1 つ使って命名する。 ....省略されました。続きを読むにはワッフルワッフルと入力して下さい。 継承のための設計 クラスのメソッドやインスタンス変数(つまり「属性」)を公開すること の是非を、常に考慮する。どちらがいいか分からないときには、非公開に する。公開属性を非公開にするよりも、非公開属性を公開にするほうが容 易である。 公開属性にするということは、あなたのクラスを他人が使うことを想定し、 将来の非互換性を避けることを約束したということだ。非公開属性にする ということは、他人が使うことを想定しておらず、変更したり削除したり するかも知れないということだ。 ....省略されました。続きを読むにはワッフルワッフルと入力して下さい。 あと、最低でもこれ一通り読め。 diveintopython3-ja.rdy.jp/index.html
627 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 01:57:11.94 ] >>622 グローバルなのも表示されとるよ。 デバッガ使えば似たようなことできるのは知ってるが、 初心者でも手軽に使えそうだし、特にmutable, immutable関連での頻出の質問に対する かなり明確な答えになると思われるし、初心者向きスレには需要あるかと思って貼ってみた。
628 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 03:21:30.42 ] >>623 アクセス制御なんてない
629 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 09:58:23.94 ] >>626 了解。 まずは、勉強させてもらいます。 >>628 pythonにカプセル化とかの概念はないのですか?
630 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 10:02:01.50 ] 概念はあるでしょ。 言語仕様で縛るか、お約束でやるかの違い。
631 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 13:10:45.72 ] 透明どころか手を中に突っ込めるカプセル
632 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 13:55:27.36 ] こういうシンプルな書き方ってできないのですか? for x in a_list if a_condition(x): do_something(x) こう書けるのはわかりますが、filter とか lambda とか面倒で気に入らない for x in filter(lambda x: a_condition(x), a_list): do_something(x) こう書けるのもわかりますが、無駄に冗長でウンコ臭い for x in [x for x in a_list if a_condition(x)]: do_something(x)
633 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:03:43.20 ] for x in a_list: if a_condition(x): do_something(x)
634 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:06:25.76 ] def is_odd(n): return n % 2 a_list = [i for i in range(10)] for x in filter(is_odd, a_list): print(x, 'is odd.')
635 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:14:31.83 ] >>633-634 やっぱりそういう書き方しかないですか? >>633 それ do_something(x) が複数の文になるとインデント2段になりますよね >>634 a_condition(x) をいちいち関数定義するのは面倒ですね
636 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:30:07.95 ] >>632 の一番上は分かりにくくないかい? continue使えば?ってなりそうな気がした。 def is_odd(n): return n % 2 a_list = [i for i in range(10)] for x in a_list: if not is_odd(x): continue print(x, 'is odd.')
637 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:35:54.48 ] >>636 うーん。もし書けるなら、これの方が for x in a_list if is_odd(x): print(x, 'is odd.') これより簡潔で分かりやすいと思うんだけど for x in a_list: if not is_odd(x): continue print(x, 'is odd.')
638 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 15:12:04.71 ] そうかもなあって思っちゃってる。 continueがない分いいってか。 うーん、、、 for x in a_list if is_odd(x): for x in filter(is_odd, a_list): 上2つは等価なfor文だけど、 修正が大変とかで上の文法は採用されなかったんだろか。 上の方を満たすためにfilter()用意したんじゃないかな? って思ってる。 ここは我慢してPythonに合わせるしかないんじゃないの? 話を元に戻して、 > こういうシンプルな書き方ってできないのですか? > for x in a_list if a_condition(x): > do_something(x) ↓って言われちゃう。できないっぽいねぇ for x in a_list if is_odd(x): ^ SyntaxError: invalid syntax
639 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 15:21:18.40 ] >>638 >修正が大変とかで上の文法は採用されなかったんだろか。 SyntaxError: invalid syntax ってなることからわかるように、 文法を変えないといけないからでしょ。 特定の場合に便利だからといって、どんどん文法を増やすと それ以外の場合に却って使いにくくなったりするからねぇ。
640 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 15:51:17.81 ] 書ける for x in a_list: if is_odd(x): print x 書ける for x in a_list: if is_odd(x): print x 書けない for x in a_list: if is_odd(x): print x
641 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 17:15:20.82 ] もうpythonじゃなくていいんじゃないの? 自分の好きな書き方が出来る言語を探せばいい 無ければ作ろう
642 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 17:55:55.38 ] お断りします お断りします お断りします ハ,,ハ ハ,,ハ ハ,,ハ ハ,,ハ ( ゚ω゚ )゚ω゚ )゚ω゚ )゚ω゚ ) お断りします / \ \ \ \ お断りします ((⊂ ) ノ\つノ\つノ\つノ\つ)) お断りします (_⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ お断りします ヽ ヘ } ヘ } ヘ } ヘ } ε≡Ξ ノノ `Jノ `J ノ `J ノ `J
643 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 18:46:27.49 ] なくなるなら宝石が先
644 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 19:03:06.98 ] >>643 いや 641は632に対してね
645 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:15:44.71 ] いろいろ考えたけど 内包表記やラムダなどを駆使して関数的に美しく書くなんてのは Python では目指さない方が良さそうだというところに落ち着いた やって出来ない事はないけど、やっぱり関数型言語ではないので 関数的なスタイルで読みやすいコードを書くのは難しい。 凝ったことはせずに 素直に手続き的に書いて関数も一つ一つ def する というのが Python のコツっぽいかな?
646 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:39:15.16 ] >>626 リンクのdive into python3はまとまっていてわかりやすそうかと思いました python3を対象としていますが、今からpython勉強する場合は3がいいでしょうか? なんか、ネット徘徊していると、2を勉強すべしとの意見も多いので困っています よろしくお願いいたします
647 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:57:21.03 ] どっちかで迷うくらいなら、3系がいいと思うよ。 私は3系のみ勉強している。 2系を折角勉強したのに、3系では邪魔知識になるとか嫌でしょ。 既存のPythonの資産を使いたいとかなら、 2系の勉強も考えた方がいいかも知れないけど、 そうじゃないなら3系からの勉強でいいと思う。 >>646 が、Pythonをなぜ使いたいのかが一番大きい。
648 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 06:28:08.91 ] Python3の現時点のデメリットは対応ライブラリが少ないくらいで至急何か作る必要がなければ困らないと思うよ Python2は文字コードべったりなんでunicodeの暗黙の変換とかかなり分かりにくい
649 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 08:06:32.98 ] 勉強するだけなら Python 3 でも構わないかもね。 現実に使うのは厳しいが。
650 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 08:12:40.46 ] どうしても、本人がどうしたいかになるんだよね。
651 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 11:53:03.88 ] u"3だと日本語書くためにいちいちuつけなくていいから楽"
652 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 12:08:34.16 ] 全角だし
653 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 19:57:44.25 ] つ[from __future__ import unicode_literals]
654 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 22:12:03.40 ] >>649 目的が勉強だけって… それはプログラミングやる意味ないんじゃ…
655 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:00:49.73 ] 勉強の意味が 数学や英語の学業としての勉強じゃなくて、 学んでいるという意味の勉強じゃないのかな?
656 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:04:47.16 ] プログラム言語なんてその言語特有のお約束を覚えればいいだけじゃん 制御構文や変数はどの言語だって共通してるし つまり
657 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:06:42.91 ] >>647 単純に、Linuxのソフトウェア調べる仕事していて、pythonのコードに出くわすことが多かったからです 今現在のLinuxで動いているpythonとすると2系が多いですかね 個人的には3が勉強したいですけど
658 名前:デフォルトの名無しさん [2012/02/27(月) 23:24:21.45 ] Python製のフレームワークって今何がHOTなの?
659 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:28:07.90 ] >>657 両方勉強するのはだめなの?
660 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:41:16.90 ] ライブラリの多さがpythonの利点なんだし Python3なんて選択肢に入らない
661 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:47:18.01 ] 最初はどっちかに絞った方がいいと思ます。 二兎追うものは一兎も得ず っていうじゃないですか。 どちらも理解できれば一番いいけど、そう上手くいくかな? > Linuxのソフトウェア調べる仕事していて、pythonのコードに出くわすことが多かったからです 今度は、どんな目的で調べているかによる。なんつって。 範囲が広いんだよねー。 中身を読んでるってことですよね。 ふむ。 改良や開発目的で調べてるの? そのソフトウェアの開発者達が、 後継の開発を2で行うって言ってるんなら、2の勉強だろうし、 3で行うってのが多勢なら3だろうし。
662 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:07:28.87 ] smtplibについて質問させてください。 会社のメールサーバーに対して > telnet XXX.XXX.XXX.XXX 25 を実行するとうまくつながるのですが、 以下のように実行するとエラーが発生します。 原因が何かヒントをいただけないでしょうか。 import smtplib s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) c:\test\python Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> import smtplib >>> s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python27\lib\smtplib.py", line 242, in __init__ (code, msg) = self.connect(host, port) File "c:\python27\lib\smtplib.py", line 302, in connect self.sock = self._get_socket(host, port, self.timeout) File "c:\python27\lib\smtplib.py", line 277, in _get_socket return socket.create_connection((port, host), timeout) File "c:\python27\lib\socket.py", line 571, in create_connection raise err socket.error: [Errno 10061] 対象のコンピュータによって拒否されたため、接続できま せんでした。 >>>
663 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:09:29.04 ] >>661 中身は読んでいますけど、ほとんど趣味ですね 会社から要求されているのは単純な使い方と性能のみ でも、個人的に興味持って色々と調べています ま、趣味なんで、3勉強してみます
664 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:28:07.37 ] こちらからもちょっと質問させて下さい。 > telnet >>> import smtplib って同一PCかつ同一OSでの実行結果? それぞれの環境でpingがとおることは確認済? まあ、これが答えのような気もするけど。 socket.error: [Errno 10061] 対象のコンピュータによって拒 否されたため、接続できませんでした。
665 名前:デフォルトの名無しさん [2012/02/28(火) 01:20:53.58 ] scipyとmatplotlibが移植されたんで、自分的には3でも結構逝ける。
666 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 01:46:09.75 ] 俺はいつも逝ってる むしろ吊ってるし詰んでる
667 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 05:58:14.65 ] >605 >今までJava、C#しか経験していないため、変数に型が無い言語でどのようにすべきなのか良くわかりません。 >608 >いまいち、変数に型がないことによるメリットがわかりませんでした。 型はある 型宣言が無いだけ
668 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:05:53.88 ] >632 for x in filter(a_condition, a_list): do_something(x)
669 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:14:14.91 ] ワッフル ワッフル
670 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:31:08.22 ] >>662 telnetでサーバからのリプライは確認した? 220 <ホスト名> ESMTP Sendmail ... とか返ってくるはずだけど
671 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:43:35.75 ] >>670 はい、返ってきました。 これがうまくいっているので、どうしてエラーが起こるのかわからないんです…
672 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:13:17.56 ] >>671 となるとちょっとわからない。ごめん wiresharkでも使ってtelnetとsmtplibの通信内容を比べてみては
673 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:17:43.69 ] wiresharkじゃなくてdebug設定では
674 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:30:31.34 ] -v -vvv
675 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:37:01.98 ] >>667 メリット教えてやれよ
676 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 09:38:41.68 ] >>675 ダックタイピングができる
677 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 16:14:31.80 ] >>667 値に型があるんであって、変数に型はないでしょ
678 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 16:31:13.65 ] 変数はオブジェクト型またはプリミティブ型もしくはNoneです
679 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 17:53:02.28 ] Pythonにはプリミティブ型なんて無い。 Noneもただのオブジェクト。
680 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 18:15:00.11 ] pythonにはオブジェクトしかない お前もオブジェクトにしてやろうか
681 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:05:46.33 ] ひぃいぃ
682 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:27:45.80 ] ジェクジェクにしてやろう
683 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:29:29.76 ] 壊れてすっかり職場のオブジェ
684 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:04:10.42 ] >>671 [Errno 10061] は、WSAECONNREFUSED のことだろうから、 接続先のサーバーで smtp サーバーが動作していない (正確には、 該当のポートをリッスンしている奴がいない) ことを示している。 本当に、telnet と同じサーバーに繋ぎにいこうとしてる? もしくは、s = smtplib.SMTP('XXX.XXX.XXX.XXX', 025) なんてしてないよね?
685 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:16:28.49 ] >>684 > もしくは、s = smtplib.SMTP('XXX.XXX.XXX.XXX', 025) なんてしてないよね? これはどうしてダメなんですか? 025のゼロがダメなんでしょうか。すいません。
686 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:57:53.76 ] >>685 8進数だから
687 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 00:25:20.84 ] >>> s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) Traceback (most recent call last): ... から見るにそんなことはしていなそうでしたが。 同一PCかつ同一OSでの実行結果? それぞれの環境でpingがとおることは確認済? とりあえず、pingは通りましたが送信できずに困ってますとかって言って欲しい。
688 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 03:55:30.51 ] 良心的に見て >>> s = smtplib.SMTP('192.168.080.025', 25) とかがアウトっていう意味か ping が通ったからと言って telnet (IP) 25 が通る保障はどこにもない
689 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 03:58:36.06 ] そしてpingが通らなくてもSMTP接続出来ることなんていくらでもある
690 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 05:48:42.36 ] そして>662を読めといいたい
691 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 07:00:15.35 ] こういう話だったらいいなあ ja.wikipedia.org/wiki/Outbound_Port_25_Blocking 以下smtplib.SMTPでもdebuglevelが使えるようなので 今回の件には役に立ちそうにないけど一応 import smtplib smtplib.SMTP.debuglevel = 1 con = smtplib.SMTP(hostname, 25) ... debug情報がずらずら ...
692 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 14:21:38.30 ] クライアントの PC は同じ環境からアクセスしてんのかな あと telnet するときの IP と smtplib.SMTP するときの IP ( XXX.XXX.XXX.XXX の部分 ) は本当に同じなのかな
693 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 22:21:00.17 ] pythonでインスタンスのアドレスを知る方法ってないんでしょうか? ずっと勘違いしてて id でアドレス表示してるのかと思ったら 全然そんなことないですよね id の仕様を見ても「識別子」としか明言してなくてアドレスだとは一言も言ってないし
694 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 22:38:44.02 ] help(id)
695 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 23:35:05.47 ] あってるよ Python/bltinmodule.c [926/2392行][38%] static PyObject * builtin_id(PyObject *self, PyObject *v) { return PyLong_FromVoidPtr(v); } PyDoc_STRVAR(id_doc, "id(object) -> integer\n\ \n\ Return the identity of an object. This is guaranteed to be unique among\n\ simultaneously existing objects. (Hint: it's the object's memory address.)");
696 名前:デフォルトの名無しさん [2012/03/01(木) 15:22:17.92 ] あってるね
697 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:48:39.27 ] (1) (2) (3) を同じPC(Windows XP)で実行しました。 スクリプトからの接続を拒否する仕組みってあるのでしょうか? ----------------------------------------------- (1) pingを実行した場合、以下のように成功します。 c:\test>ping 100.100.100.100 Pinging 100.100.100.100 with 32 bytes of data: Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Ping statistics for 100.100.100.100: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
698 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:49:08.93 ] ----------------------------------------------- (2) telnet を実行した場合、以下のように成功します。 c:\test>telnet 100.100.100.100 25 220 xxx.xxx.co.jp ESMTP Postfix
699 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:50:13.53 ] ----------------------------------------------- (3) pythonを以下のように実行するとエラーが出ます。 c:\test>python Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> import smtplib >>> smtplib.SMTP.debuglevel=1 >>> con = smtplib.SMTP('100.100.100.100', 25) connect: ('100.100.100.100', 25) connect: (25, '100.100.100.100') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python27\lib\smtplib.py", line 242, in __init__ (code, msg) = self.connect(host, port) File "c:\python27\lib\smtplib.py", line 302, in connect self.sock = self._get_socket(host, port, self.timeout) File "c:\python27\lib\smtplib.py", line 277, in _get_socket return socket.create_connection((port, host), timeout) File "c:\python27\lib\socket.py", line 571, in create_connection raise err socket.error: [Errno 10061] 対象のコンピュータによって拒否されたため、接続できま せんでした。 >>>
700 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:52:26.58 ] 単にファイアウォールにひっかかってるだけじゃないの?
701 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:54:28.83 ] >>698 この先に進もうとしようとすると同じように失敗しない? telnetでどうやってメール送れたの? 受信確認はどうやったの?
702 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:42:02.63 ] >>700 例えばノートンなんかに (telnet.exeの通信は止められていないけど) python.exeの通信が止められてる可能性があるってことか
703 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 02:22:05.12 ] ファイアウォールというかセキュリティソフトのチェックかもな telnet.exe は既に許可ソフトに登録済みなのを自分で忘れてるだけだろ
704 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 19:39:38.90 ] かもとだろって、両立するの?
705 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 19:54:24.88 ] 自然言語では両立するでしょ。
706 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:24:24.48 ] 嘉本さんのこと言うなー
707 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:31:16.20 ] (馬)鹿本だろう
708 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:36:14.76 ] ぶるるるぁ
709 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:51:13.63 ] webページをダウンロードして内容をファイルに書くところで詰まってるんだけど、 Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> open('D:\P/output.txt', 'w').write(mainline) TypeError: expected a character buffer object と出るんだけどどうしたらいいの書き込もうとする文字列が一定以上の量だとエラー出る感じだけど
710 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 21:21:04.13 ] type(mainline) 確認してみたら? 文字数が変わると内部でmainlineのtype変えてるんじゃないの?
711 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 21:40:50.14 ] import StringIO open('D:\P/output.txt', 'w').write(StringIO.StringIO(mainline).getvalue())
712 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 23:37:00.57 ] >>699 >connect: ('100.100.100.100', 25) >connect: (25, '100.100.100.100') なんで二行でるんだ? とりあえず、con = smtplib.SMTP('100.100.100.100') で試してみて。 >>700 多分、それはない。 もし、そうなら、10060 (WSAETIMEOUT) になるはず。
713 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:34:59.65 ] >>701 今日試しました。 telnetでメールが送信できました。 以下のサイトを参考にました。 www.nurs.or.jp/~telnet/smtp.html 受信はメールソフトを使いました。 なんでだめなのか、さっぱりわかりません。
714 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:38:30.40 ] >>712 何度かためしましたが、確かに二行が表示されます。 > とりあえず、con = smtplib.SMTP('100.100.100.100') で試してみて。 やりましたが、結果は全く同じです。 ひとつわかったことがあります。 IPアドレスを100.100.100.100じゃなくて、でたらめな値に変えても全く同じエラーが発生します。 telnetを使って100.100.100.100 でメール送信できたので、ipアドレスが間違っていることはありません。 smtplib のソースにデバッグコードを埋め込んでどこまでうまく動いているか、切り分けするしかないんでしょうか。
715 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:44:54.17 ] ファイアウォールというかセキュリティソフトのチェック telnet.exe は既に許可ソフトに登録済みなのを自分で忘れてるだけ
716 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:54:29.66 ] 多分PCから出れてないわ みんながいうようにファイア・ウォールが原因だと思うぞなもし 一度ファイア・ウォール、セキュリティ関係諸々を停止させてから試してみなよ そしたら上手くいくと思う
717 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:57:53.99 ] localhost, 127.0.0.1だったらうまくいくんだっけか?
718 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:58:29.82 ] 職業別の人気順位 (an・an調べ) xbrand.yahoo.co.jp/category/lifestyle/7380/1.html 1位 システムエンジニア 2位 公務員 3位 銀行&商社マン 4位 警察・消防・自衛官 5位 マスコミ・営業マン・広告マン 6位 企業経営者 7位 医師 8位 弁護士、公認会計士
719 名前:デフォルトの名無しさん [2012/03/03(土) 00:59:02.50 ] 馬鹿には無理