1 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 01:18:15 ] 【Pythonスレッド基本ルール】 1:問題文は自己省略せずに、直接全部貼り付けてください。 2:課題の「丸投げ」が最も好ましい提示法です。なるべく丸投げしてください。 3:数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。 4:課題&宿題関連の質問はOKですが、それ以外の一般的な質問は禁止です。 5:もし回答プログラムがアップされたら、その返答と動作報告をお願いします。 【課題提示用テンプレ】 【 課題 】与えられた課題文をそのまま書きます 《必須》 【 用語 】数学用語、専門用語の意味、説明を書きます 《あれば必須》 【 期限 】提出期限、解答希望日があれば書きます 【 Ver 】希望するPythonバージョンがあれば書きます 【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。 丸投げでない場合は、途中までのソースとその経過報告、 質問点、疑問点を書きます(なるべく丸投げにしてください) 【回答プログラムの掲載場所】 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
231 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:58:08 ] IQ180くらいあればPerlでも読みやすいのかもしれんな
232 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 03:08:12 ] IQ180なのになんで中卒なんだろう・・・本と謎な人物だ・・・
233 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 03:12:43 ] オカマで天才だから一般人の下種な社会に適合できなかったのでは? 進学の必要性も感じなかったのかもね。
234 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 11:25:20 ] ttp://www.google.co.jp/search?hl=ja&q=%E9%B3%B3%E3%81%9F%E3%82%93&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja 鳳たんって愛称で親しまれてるのね…
235 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 11:48:48 ] ttp://video.google.com/videoplay?docid=-3876155376103839772&q=yapc+asia+2007 すぐ動画が見れるとか便利な時代になったよなぁ…
236 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 12:11:51 ] ttp://pugs.blogs.com/talks/yapcasia2007-pugs.pdf 動画のお共に pdf (文字がつぶれてても大丈夫)
237 名前:デフォルトの名無しさん [2007/05/04(金) 14:40:52 ] >>212 レイパー、人殺しやコソ泥が使う言語Ruby. 女囚たちに Ruby を教えて Web アプリを作らせるのだぞ
238 名前:1 [2007/05/05(土) 00:39:57 ] 【 課題 】 未完成部分を完成し、適当な入力を与えて実行せよ。(検算も忘れない こと。) 規格 ◇引数は2 つの整数a, b. ◇関数の返り値は3つの要素を持つ配列[d; x; y] で、d = gcd(a; b) はa と b の最大公約数、x, y はd = ax + by を満たす整数。
239 名前:2 [2007/05/05(土) 00:45:03 ] from math import # d = gcd(a,b) = ax+by となる d,x,y を求め、 # 3つの要素を持つ配列 [d,x,y] を返り値にする # 返り値の使い方は main routine の5行目以降を参照 def euclid(a,b): if b == 0: if a >= 0: return [a,1,0] else: return [-a,-1,0] else: r0 = a r1 = b x0 = 1 x1 = 0 y0 = 0 y1 = 1 while r1 != 0: q = r0/r1 ##### ここを埋めよ ##### r0 = r1 r1 = r2 x0 = x1 x1 = x2 y0 = y1 y1 = y2 if r0 < 0: r0 = -r0 x0 = -x0 y0 = -y0 return [r0,x0,y0]
240 名前:3 [2007/05/05(土) 00:46:12 ] # ここから main routine print print 'Euclid のアルゴリズム拡張版のテストプログラムです。' a = input('a = ') b = input('b = ') ls = euclid(a,b) d = ls[0] x = ls[1] y = ls[2] print print 'd = ',d print 'x = ',x print 'y = ',y print '検算 :' print '(',a,') * (',x,') + (',b,') * (',y,') = ',a*x + b*y # 実行例 # # Euclid のアルゴリズム拡張版のテストプログラムです。 # a = 5**30 # b = 3**50 # # d = 1 # x = -89115256441822303775825 # y = 115608417198323432874 # 検算 : # ( 931322574615478515625 ) * ( -89115256441822303775825 ) # + ( 717897987691852588770249 ) * ( 115608417198323432874 ) = 1 何方かお願いします.
241 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:31:36 ] PythonスレにはRubyへの劣等感で嫉妬が激しい人がいるのですね。
242 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:37:29 ] どんな言語のユーザにも変な人はいるでしょ
243 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:44:52 ] 241みたいに日本語が不自由な人もいるんだね
244 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:21:11 ] >>226 へー、凄い人がいるもんだな。5年で100のプロジェクトってw Chen, Chun-ming. "別叫我「先生」! 電腦怪傑唐宗漢變性 改名唐鳳 (Don't call me "Mister"! Tang Zonghan changes sex, name now Tang Feng)", Eastern Television, 2006-02-08. Retrieved on 2007-03-22. なんかかっこいい。
245 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:24:01 ] 立派なオカマだな
246 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:28:42 ] 彼女こそオカマの中のオカマだ
247 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:31:49 ] >>244 Pythonを使えばもっと生産的になれるのに! 彼はバカなんだよきっと!
248 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:43:45 ] ×彼 ○彼女
249 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 02:46:29 ] >>247 頭が良すぎてパズルみたいな言語でないと楽しめないのかも
250 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 06:00:21 ] >>239
251 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 06:05:40 ] >>238-240 ソース見ても全くインデントされて無いんだけど?何がしたいのか不明なので無理 通常のgcdなら def gcd(n, m): return n if m==0 else gcd(m, n%m)
252 名前:未完成部分を完成し、適当な入力を与えて実行せよ。 mailto:sage [2007/05/05(土) 16:39:37 ] >>238-240 r2=r0-q*r1 x2=x0-q*x1 y2=y0-q*y1
253 名前:デフォルトの名無しさん [2007/05/06(日) 12:03:16 ] >>251-252 ありがとうございましたm(_ _)m
254 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:58:42 ] ここのページを参考にしてScipy と Numpy をインストールしました。 ttp://procrast.blog82.fc2.com/blog-entry-8.html それで次にここのページの sample を動かしてみようとしたのですが ttp://scipy.dip.jp/index.php?F2PY コンパイルオプション -c を付けてコンパイルすると、 C:\Python25\Lib\site-packages\f2py2e>f2py -c -m sample1 sample1.f Traceback (most recent call last): File "C:\Python25\Lib\site-packages\f2py2e\f2py.py", line 4, in <module> f2py2e.main() File "C:\Python25\Lib\site-packages\f2py2e\f2py2e.py", line 677, in main run_compile() File "C:\Python25\Lib\site-packages\f2py2e\f2py2e.py", line 605, in run_compile from scipy_distutils.system_info import get_info ImportError: No module named scipy_distutils.system_info となり うまく scipy_distutils が見つけられないようでした そこで オプションの -c をはずしてもう一度挑戦してみたところ(…続きます)
255 名前:254 mailto:sage [2007/05/07(月) 12:01:12 ] C:\Python25\Lib\site-packages\f2py2e>f2py -m sample1 sample1.f Reading fortran codes... Reading file 'sample1.f' Post-processing... Block: sample1 Block: func1 Block: func2 Post-processing (stage 2)... Building modules... Building module "sample1"... Constructing wrapper function "func1"... func1(x,y) Constructing wrapper function "func2"... func2(x,y,[n]) Wrote C/API module "sample1" to file "./sample1module.c" となり sample1module.c というファイルを作成されているのを 確認することをできたのですが、これを python側 でどうやって import して使用すれば良いのか、わかりません。 使用環境は、windows xp + python2.5 です どうぞよろしくお願い致します m(_ _)m
256 名前:254 mailto:sage [2007/05/07(月) 14:28:11 ] f2py2e.py に 以下のように書かれていました。 Description: This program generates a Python C/API file (<modulename>module.c) that contains wrappers for given fortran functions so that they can be called from Python. With the -c option the corresponding extension modules are built. どうやら -c option を付けないと駄目なようなので >ImportError: No module named scipy_distutils.system_info 上のエラー出力をヒントにして Windows users might be interested in Win32 installer for F2PY and Scipy_distutils (these installers are built using Python 2.3): 2.x/F2PY-2-latest.win32.exe 2.x/scipy_distutils-latest.win32.exe <- これをインストールするのを忘れていました…orz インストールすると上手く処理が動き始めました(…続きます)
257 名前:254 mailto:sage [2007/05/07(月) 14:46:59 ] running build_ext No module named msvccompiler in numpy.distutils, trying from distutils.. customize MSVCCompiler customize MSVCCompiler using build_ext 0 Could not locate executable g77 Could not locate executable f77 Could not locate executable gfortran Could not locate executable f95 customize GnuFCompiler Could not locate executable f77 Executable f77 does not exist Could not locate executable f77 Executable f77 does not exist Could not locate executable f77 Executable f77 does not exist Could not locate executable ifort … このようなエラーが出力されているのが確認できました。 windows で f2py をコンパイルするには f77 (Macだと gfortran?, Linux だと g77? ) などの fortranのコンパイラも必要なのでしょうか?
258 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 14:54:40 ] 必要だろうねえ。MinGW でもインスコすれば?
259 名前:254 mailto:sage [2007/05/07(月) 15:05:05 ] ------------------------------------------------------------------- f2py2e.py Description: This program generates a Python C/API file (<modulename>module.c) that contains wrappers for given fortran functions so that they can be called from Python. With the -c option the corresponding extension modules are built. ------------------------------------------------------------------- F2PY: Fortran to Python interface generator cens.ioc.ee/projects/f2py2e/ Of course, to build extension modules, you'll need also working C and/or Fortran compilers installed 必要なようでした orz [SciPy-user] Building scipy without fortran compiler on Windows using MSVC C++ Toolkit compiler projects.scipy.org/pipermail/scipy-user/2005-October/005339.html >IIRC, you can't link C++ code compiled with mingw with C++ code that was >compiled with MSVC. The C++ ABIs are different. However, it should be >possible to have both mingw-compiled C and FORTRAN extension modules and >MSVC-compiled C++ extension modules in the same process. mingw というので sample1module.c のほうコンパイルしないと駄目なのでしょうか? C言語に関する知識が豊富でないと上手くやるのは難しいでしょうか?
260 名前:254 mailto:sage [2007/05/07(月) 15:20:22 ] 利用可能な環境 spdg1.sci.shizuoka.ac.jp/grwinlib/platforms.html MinGW-2.0 MinGW g77 gcc / g++ × ○ gcc-2.95.2-mingw32 (MSVCRT) mingw32m g77 gcc / g++ × ○ *3 gcc-2.95.2-mingw32 (CRTDLL) mingw32 g77 gcc / g++ × ○ *3 *3 Mumit Khan による MinGW の旧版 似たようなのが幾つかあることを確認できました。 f2py を動かすには、どれをインストールすれば良いのでしょうか?
261 名前:254 mailto:sage [2007/05/07(月) 15:34:36 ] C-Compiler Wiki - MinGW/インストール www2.atwiki.jp/ccw/pages/5.html すみません。もう少し調べてから書き込むべきでした orz mingw というのは visual studioみたいな統合開発環境みたいなものなのでしょうか? gcc-2.95.2-mingw32 (MSVCRT) mingw32m g77 gcc / g++ gcc は gnu c comliler の略ですよね…Cのコンパイラなのに fortran もコンパイルできる… よくわからないです…
262 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 15:42:34 ] >>261 > gcc は gnu c comliler の略ですよね 違います。もっと落ち着いてちゃんと調べましょう。
263 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 16:03:31 ] あのさ、よく分からんのだけど、Fortran コンパイラを使ったこともないような人が 何ゆえ F2PY を使おうとしているの? SciPy や NumPy を使いたいだけなら Fortran コンパイラの出る幕などないと思うのだが。 禿しく間違った方向に進んでいる希ガス。
264 名前:254 mailto:sage [2007/05/07(月) 16:08:56 ] >>262 GNUコンパイラコレクション - Wikipedia ja.wikipedia.org/wiki/GNU%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3 >当初はCコンパイラとして開発され、GCCは GNU C Compiler を意味していた。しかし、 >もともと多言語を想定して設計されており、 GNU C Compiler と呼ばれていたときでも >多くの言語をサポートしていた。現在でも GNU C Compiler の意味で「GCC」と呼ぶ >ことも多い(ちなみに GNU C Compiler の実行ファイルの名称もgccである)。 >なお、GNU C++コンパイラをG++、GNU JavaコンパイラをGCJ、GNU AdaコンパイラをGNATと呼ぶ。 gnu compiler collection (広義のgcc) - gnu c compiler (狭義のgcc) - gnu c++ compiler (g++) - gnu java compiler (gcj) - gnu ada compiler (gNAT) - gnu fortran compiler (g77) コレクションだったのですね orz ------------------------------------------------------------------------- MinGW - Wikipedia ja.wikipedia.org/wiki/MinGW >MinGW(Minimalistic GNU for Windows) >または、Mingw32 は GNU ツールチェーン(GCCなど)の Windows 移植版である。 ------------------------------------------------------------------------ つまるところ gnu compiler collection (not gnu c compiler) の windows移植版が MinGW なのですね. 勉強になりまた。ありがとです ><
265 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 19:55:47 ] ttp://d.hatena.ne.jp/odz/20060903 実行しても doctest の結果が表示されないのですが どうしてでしょうか? # a.py import doctest def foo(a, b): '''return a+b >>> foo(10, 1) 12''' return a+b doctest.testmod() は、うまく実行できていました…
266 名前:265 mailto:sage [2007/05/09(水) 20:33:56 ] すみません。doctestって成功したときは何も 表示されないんですね orz 自己解決スマソ。
267 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:13:11 ] 例外処理についての質問です。 # -- coding: cp932 -- import urllib2 url='www.yahoo.co.jp/ '; print url try: print 'try try try' f=urllib2.urlopen(url) ##urlをオープン except IOError, (errno, strerror): ##オープンできないときは out= 'web error' print out else: ##オープンできたら txt=f.read() ##htmlファイルを読み込む print txt > except IOError, (errno, strerror): ##オープンできないときは >ValueError: need more than 1 value to unpack というエラーが出てしまい上手くゆきませんでした。 環境は、winxp, python2.5 です。どうぞよろしくお願い致します。
268 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:56:17 ] exceptの書式が違う。 except IOError, e: # eはIOErrorオブジェクト print e
269 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 22:04:40 ] >>267 urllib2.urlopen の失敗時に発生している例外が IOError なら > except IOError, (errno, strerror): ##オープンできないときは のようにタプルとみなしてアンパック代入できるんだけど、 実際に発生しているのは IOError のサブクラスである URLError のインスタンス。 これはなぜか IOError のサブクラスのくせにタプルとみなせない。 ただ URLError の reason 属性を使えばこう書ける: except urllib2.URLError, urlerror: errno, strerror = urlerror.reason
270 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 00:42:07 ] URLError 以外にも WindowsError やら ValueError やら起こるみたいだから except Exception, e: みたいに一般的に書いとくのがいいんジャマイカ。
271 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 01:53:29 ] except IOError, e: # eはIOErrorオブジェクト print e >>> <urlopen error (11001, 'getaddrinfo failed')> と書くか、 from urllib2 import URLError して except URLError, urlerror: # urlerrorはURLErrorオブジェクト errno, strerror = urlerror.reason print errno, strerror >>> 11001 getaddrinfo failed と書けば大丈夫。 # URLError is a sub-type of IOError, but it doesn't share any of # the implementation. need to override __init__ and __str__ www.koders.com/python/fidB6D47AFC04CE4977066FF7A79FC593FBBB9562C6.aspx#L139 >>269 このことですよね…。何となく例外の引数は一つ以上付けないほうが 無難そうな気がしました。というかあまり他の言語でも例外の引数 を一つ以上持ってるのを見たことがないですし。 どうもありがとうございました!
272 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 01:54:41 ] >>270 よくわからないときは、Exceptionでやってしまうのもありでしょうか? 何か、それはそれで問題が生じそうな気もするようなしないような…(^^;)
273 名前:デフォルトの名無しさん [2007/05/14(月) 03:03:16 ] >>272 複数の例外が起こる状況で、例外毎に処理を変えたいときは except 節を複数書く必要があるけど、 一律にキャッチしたいだけなら except Exception, e: または except: だけで十分かと。
274 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 13:47:43 ] ほしゅ
275 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 14:58:43 ] 【 課題 】数当てゲームを作ってみよう。一桁の数を入力してもらう。 その数が、秘密の数と一致していたら、「上がり」と表示して終了する。 もし、秘密の数よりも大きければ、「大きすぎ」と表示して、再度入力をしてもらう。 逆に小さければ、「小さすぎ」と表示して、再度入力をしてもらう。 秘密の数は、プログラムの最初で変数に代入しておく。 【 補足 】某大学サイトでpythonを学習しているのですが(当方、大学生ではありません)、 下のどこがいけないのかわかりません・・・ 文末の「;」はつけないと何となく不安なのでつけてあります。 # 数当てゲーム print "数当てゲーム\n"; question = "半角で一桁の数字を入力して下さい。"; answer = '8'; a = answer; input = raw_input(question); while input != '': if input == a: print '上がり。'; break; elif input < 9; print '小さすぎ。/n'; input = raw_input(question); else: print '大きすぎ。\n'; input = raw_input(question);
276 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 15:05:16 ] elif input < 9; じゃなくて elif input < a: だろ
277 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 15:07:54 ] お! 動いた! >>276 ありがとうございます。
278 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 15:12:34 ] >>> input = raw_input('Enter: ') Enter: 8 >>> input '8' >>> input == 8 False >>> int(input) == 8 True がんばれー
279 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:00:24 ] セミコロンなんて付ける癖にしているからへんてこな間違いをやってしまうのだ
280 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:40:17 ] inputというのはビルトイン関数名でもあるので、それを変数名に使うのは行儀が良くない、 で、この場合raw_inputよりもinputを使った方が簡単。
281 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 06:24:50 ] >>> def myfunc(): print input() ... >>> myfunc() __import__('os').unlink(<漏れの大事なファイル>) None 便利なファイルシェルだな。
282 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 07:02:25 ] 公式ドキュメントより > input( [prompt]) > eval(raw_input(prompt)) と同じです 兄貴と呼ばせてくれ >>281
283 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:48:47 ] ファイル(バイナリ)から4byteづつ読んで実数表示する のはどう書きますか?
284 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:13:44 ] import array ary = array.array('f') fo = file('test.bin', 'rb') while True: try: ary.fromfile(fo, 1) except EOFError: break print ary.pop() fo.close()
285 名前:383 mailto:sage [2007/06/11(月) 18:27:37 ] d>>284 しかし何も起こりませんでした。 インストしたpythonは python-2.5.msi pywin32-210.win32-py2.5.exe
286 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 19:44:33 ] はい、次
287 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 21:07:35 ] >>285 その4バイトのフォーマットが何なのか書かないとどうにもならないよ ところで1バイトずつ読み込んでそれを表示するのなら書けるんだよね?
288 名前:285 mailto:sage [2007/06/12(火) 08:20:09 ] >>287 想定は3Dモデルですが、公開されてるフォーマットでは 無い為とりあえず頂点のみ収めたファイルを指定しました。 バイナリの読み込み自体わかりません。スミマセン
289 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 11:06:26 ] 何も起こりませんでした… ってどんな呪文だよ
290 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 12:03:39 ] >>288 単純にCのfloat型をファイルに書き出したものなら>>284 のでいけるはず まず>>284 のがちゃんと動くようにするのが先決だね ・時下げ部分の全角空白を半角空白に置き換える ・その3Dデータを test.bin の名前でいっしょに置く をしている? それをして動かないなら動かないなりにエラーメッセージが出ているはずなので そのエラーメッセージを書いてください
291 名前:288 mailto:sage [2007/06/12(火) 14:52:16 ] >>290 丁寧にありがとう御座います。<(_ _)> > except EOFError: ここで止まっているようでした。 ファイルはtest.binでC:\(あれ? \打った時に確定されてIMEがオフになる〜) に置きました。 これか? 取り急ぎお礼だけ。
292 名前:291 mailto:sage [2007/06/12(火) 15:18:16 ] 全角空白はエディタ読み込み時に文字化けしていたんで 半角空白にしてたんですが、位置が悪かったようです。 >>284 と同じインデント? で動くようになりました。(PythonWin上) 実はPOSERで遊びたい3Dモデルがあるんですが、対応プラグイン もプラグイン書くにしてもC言語は難しそう。 そこでインタプリタなら出来るんじゃないかと思い……。 4MBのファイル読み込ませたんだけど20分経っても終わらないや……。
293 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 03:24:29 ] とりあえず何形式かいうてみそ。
294 名前:292 mailto:sage [2007/06/13(水) 20:02:46 ] >>293 えーと……ILUUSIONってとこのゲームのデータです。 今現在有志の手によりMetasequoiaのmqo形式での 読み書きは出来ます。 Metasequoiaがモーション対応してない為頂点カラー にエンベロープデータを保持させるという特殊な手法 なので頂点の削除追加が困難になっています。 手持ちのPoserとXSI fndがPython対応しているんで ちょっと夢見てしまったのでした。
295 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 20:59:13 ] しかし何も起こりませんでした。
296 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 21:00:51 ] そんなような台詞を多用するRPGが昔ありました
297 名前:デフォルトの名無しさん [2007/06/16(土) 18:20:53 ] 某大学でPYTHONの授業を取っているのですが、先生が全く何も教えてくれず放置 なのと、自分が他の課題で常に手一杯なので、PYTHONの知識については皆無に等しいです。 ですが、期限がとうとう来週までに迫ってしまいました。。。 課題は自由なのですが、「自分又は他者にとって有用性のあるもの」 とのことなので、以下のような課題を設定しました。どなたか分かる方 がいらっしゃれば、丸投げですが是非よろしくお願いしますm(..)m □課題 「ホームページ(自分が作りました)の掲示板に書き込みがされたら、 自動的にメーリングリストのアドレス宛に更新通知を送り、ついでにその掲示板のアドレスもそのメールに記す。」 というものです。 出来ればわかり易く「ここにHPのアドレスを入れる」とか「ここにメーリングリストのアドレスを入れる」 等のコメントを加えていただければと思いますm()m。 □提出期限 6月25日(月) です。よろしくお願いします。
298 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:23:38 ] ネットワークじゃなきゃならんのか? 自分のレベルを考えたらもっと楽なものにしないとボロが出るぞ。
299 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:25:15 ] >PYTHONの知識については皆無に等しいです じゃあ、何ならできるんだ? Perlなら、WebProgバリバリか?
300 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:38:16 ] >>297 掲示板プログラムはすでにあるの? それを改造しないでPythonで定期的にチェックしてメール飛ばすの?
301 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:15:36 ] →諦める 諦めない
302 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:17:52 ] >>297 を読む限りpython知識だけでなく、webとかcgi知識も皆無に見えるんだが?
303 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:47:37 ] まあがんばれ
304 名前:updatechecker.py [2007/06/16(土) 20:01:59 ] >>297 どぞ。 # -*- coding: Shift_JIS -*- import urllib, smtplib from email.MIMEText import MIMEText from email.Charset import Charset def main(): # 掲示板の URL bbs = "pc11.2ch.net/test/read.cgi/tech/1153585095/l50" # 通知メールの宛て先 mail = "****@****.****.ne.jp" # SMTP サーバのホスト名 smtp = "mail.****.****.ne.jp" if updated(bbs): print "updated" notify(mail, smtp, bbs) else: print "not updated" def updated(URL): CACHE_FILE = "updatechecker.dat" # キャッシュファイルに保存したページ内容を取り出す try: file = open(CACHE_FILE, "rb") cached_contents = file.read() file.close() except IOError: cached_contents = None
305 名前:304の続き [2007/06/16(土) 20:04:38 ] # 現在のページ内容を得る file = urllib.urlopen(URL) contents = file.read() file.close() # 現在のページ内容をキャッシュファイルに保存する file = open(CACHE_FILE, "wb") file.write(contents) file.close() # ページ内容が変わっていたら更新アリと判定 (真偽値を返す) return contents != cached_contents def notify(address, server, URL): text = u"掲示板が更新されました。\n" + unicode(URL, "ascii") charset = Charset("ISO-2022-JP") msg = MIMEText(text.encode(charset.input_codec, "replace")) msg.set_charset(charset) msg["Subject"] = "Update notification from updatechecker.py" msg["From"] = '"updatechecker.py" <%s>' % address msg["To"] = address smtp = smtplib.SMTP() smtp.connect(server) smtp.sendmail(msg['From'], msg['To'].split(), msg.as_string()) smtp.quit() if __name__ == "__main__": main()
306 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 20:48:06 ] 傍から見てたんだけど、HTMLを丸ごとGETして キャッシュと比べるっていうのは思いつかなかった。 (掲示板がどんなHTMLを吐くかも不明なのに 更新チェックなんて無理とか思ってた) 勉強になったよ、ありがとー>>304
307 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 20:59:56 ] 大学生にもなって先生が教えてくれないって泣き言なんて馬鹿じゃね? 正直今の甘ったれた根性で社会に出るとお前個人じゃなくて同僚の迷惑になるのでそのまま留年してな
308 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 23:52:11 ] 何も教えてくれないなんてあるのか。 >297 が講義に出席してなかったとかじゃなくて?
309 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:01:00 ] 単にurllibの名前だけしか教えてくれなかったから使い方わからなーい! とかそういう感じじゃないかなぁ・・・
310 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:23:45 ] 月曜日が楽しみですね
311 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 07:47:19 ] >>306 掲示板の内容以外のものが、動的に生成されてるとだめじゃない? テキスト広告とか、参照元とか表示してるところあるじゃん。 2chなら、おすすめ2chとか。
312 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 08:42:32 ] 自分のHPならそれくらい把握できるだろ。 そのぶぶんだけ比較対象からはずせばいいだけジャン。
313 名前:306 mailto:sage [2007/06/17(日) 09:53:57 ] >>311 もちろん広告などが入ったらアウトだけど、 それは出題者が示して無いから仕方ない。 大抵の掲示板にはLast-ModifiedやETagは使えないから >>304 のアプローチがベストじゃないかな。 実際の利用時には、>>312 が書いてくれたように 余分な箇所を削るフィルタを掲示板ごとに書くことになると思う。 あと、おすすめ2chは、datのLast-Modifiedを比較すればOK。
314 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 12:31:28 ] そういう問題があるからRSSとかが発明されたわけだ
315 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:05:09 ] illusionってエロゲメーカーか。
316 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:15:03 ] >>314 いやRSSは最初はサイトサマリー blog のエントリーの更新を通知する、程度まで援用されてはいるけど bbs の書き込みをRSSで配信している例なんてほとんど見ないよ
317 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:32:02 ] フリー・レンタルBBS業界の一般的な話は知らないけど teacupはRSS配信してるみたいね
318 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:07:16 ] >>316 BBSというシステムがあまり最近の流行ではないから、古いシステムをそのまま使ってることが 多いというだけだと思う。いまどき新規に開発するBBSでRSSに対応しないというのはあり得ない。
319 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:16:36 ] >>318 blog のコメント欄なんかは RSS 配信しない事が多いね まあどこまでを BBS と言うかによるわけだけど
320 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 20:25:19 ] さて月曜日ですよ。 >297 はどこの課題だったのかなー。
321 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 20:28:01 ] ?
322 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 06:20:26 ] シカト来たーーー
323 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 15:13:28 ] >>319 それは確かにそうだ。 たまには、コメントやトラックバックのRSSを配信できるシステムもあるが、主流ではないか
324 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:16:36 ] 後で考えたら結局要らなかったのですが一応。 配列の配列を引数にとって、行列を入れ替える関数って どう書けばいいでしょうか? 具体的には [ [ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9,10,11,12], ] を渡すと [ [ 1, 5, 9], [ 2, 6,10], [ 3, 7,11], [ 4, 8,12], ] を返すようなものです。
325 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:36:25 ] zip関数を使う
326 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 11:48:26 ] >325 zip(*lst) でほぼ理想通りの結果が出ました!感謝!
327 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 13:22:53 ] 2階層は zip で結構イケルんですけど 3階層以上の配列(テンソル?)だと あまりいい手はないですよね numpy の類を使うしかないかな
328 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 19:58:32 ] 25日は来週の月y・・・
329 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:08:10 ] まだ猶予があったのか。ギリギリになってあわてる奴よりはなんぼかましですね。
330 名前:timer [2007/06/22(金) 21:34:32 ] 具体的な例ではなくて申し訳ないのですが、実行したい関数を数秒毎に繰り返し実行させる方法(ライブラリでもいいです) が教えていただきたいのですが。。。お願いします!!
331 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 21:46:04 ] import time def hoge(): print 'hoge' while(True): hoge() time.sleep(1)