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
175 名前:174 mailto:sage [2007/03/30(金) 10:38:10 ] ごめんなさい。 #!/usr/bin/env python がないだけでしたorz
176 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:38:45 ] ナ ゝ ナ ゝ / 十_" ー;=‐ |! |! cト cト /^、_ノ | 、.__ つ (.__  ̄ ̄ ̄ ̄ ・ ・ ,. -─- 、._ ,. -─v─- 、._ _ ,. ‐'´ `‐、 __, ‐'´ ヽ, ‐''´~ `´ ̄`‐、 / ヽ、_/)ノ ≦ ヽ‐'´ `‐、 / / ̄~`'''‐- 、.._ ノ ≦ ≦ ヽ i. /  ̄l 7 1 イ/l/|ヘ ヽヘ ≦ , ,ヘ 、 i ,!ヘ. / ‐- 、._ u |/ l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、 │ . |〃、!ミ: -─ゝ、 __ .l レ二ヽ、 、__∠´_ |/ | ! | | ヾ ヾヘト、 l !_ヒ; L(.:)_ `ー'"〈:)_,` / riヽ_(:)_i '_(:)_/ ! ‐;-、 、__,._-─‐ヽ. ,.-'、 /`゙i u ´ ヽ ! !{ ,! ` ( } ' (:)〉 ´(.:)`i |//ニ ! _/:::::::! ,,..ゝ! ゙! ヽ ' .゙! 7  ̄ | トy'/ _,,. -‐ヘ::::::::::::::ヽ、 r'´~`''‐、 / !、 ‐=ニ⊃ /! `ヽ" u ;-‐i´ ! \::::::::::::::ヽ `ー─ ' / ヽ ‐- / ヽ ` ̄二) /ヽト、 i、 \:::::::::::::::..、 ~" / ヽ.___,./ //ヽ、 ー
177 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 12:19:54 ] ワロた
178 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 00:24:27 ] エラーすら出ないはずじゃないのかなぁ・・・ その中途半端なエラーはなんなんだろう・・・
179 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 00:49:38 ] /bin/shをキックしたんでしょ
180 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 01:13:06 ] こんなことも分からない178に幸あれ...。
181 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 17:42:39 ] 【 課題 】テキストファイル(ttp://uproda11.2ch-library.com/src/112115.txt.shtml)に含まれる IPアドレス、時間、User-Agent、URLといったデータをそれぞれコンマで区切りファイルに出力せよ。 (URLの場合はディレクトリもコンマで区切る。) 【 補足 】テキストファイルは中国語で書かれたHTTPによるmp3ダウンロードのログファイルです。 Pythonのお勉強スレでみなさまのお力を借りながら自分で四苦八苦してコーディング しましたが、URLに含まれるエスケープ文字を処理する段階で壁にぶち当たりました。 私が途中まで書いたプログラムは(ttp://uproda11.2ch-library.com/src/112116.py.shtml) です。非常に見難く恐縮ですがどうかよろしくお願いします。
182 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 19:56:25 ] >>181 import re import urllib rexp1 = re.compile(r"[ ][-][ ][-][ ][[]|[]][ ]\"|\"[ ]\"|\"[ ]|[ ]\"|\"|[ ]") def convert(linein): record = rexp1.sub(",", linein, 9).rstrip("\"").split(",") urlpaths = record.pop(4).split("/") def decode(x): bin = urllib.unquote(x) try: return unicode(bin, "gbk") except UnicodeDecodeError: return unicode(bin, "utf-8") record += map(decode, urlpaths) out = u",".join([x.rstrip() for x in record]) + u"\n" return out.encode("utf-8") converted = (convert(x) for x in file("112115.txt", "r")) file("112115.csv", "w").writelines(converted)
183 名前:181 mailto:sage [2007/04/03(火) 11:54:15 ] すみません、下から4行目のreturn out.encode("utf-8")はdecode関数の中にあるのでしょうか・・・ インデント構造も教えていただけませんか?
184 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 11:57:03 ] 関数の中でない場所から return してどうしようというのだ
185 名前:181 mailto:sage [2007/04/03(火) 12:03:27 ] すみません、decode関数をconvert関数の内部にすると通りました。 【結果】文字化けしてしまう行が出てしまいました。 (変換後1行目は問題なく表示されているが、2行目は変換してしまった為に文字化け(澶栨枃鐢靛奖鍘熷)してしまった。) もともとのログファイルがグチャグチャに保存しているのが元凶ですが、そこをうまく分別できないものでしょうか?
186 名前:181 mailto:sage [2007/04/03(火) 12:13:17 ] 文字化けした文字列は以下の通りです。もとのエスケープ文字をunquoteすれば正常な文字列を得られるのですが、そこからunicodeで変換すると文字化けしてしまいます。 澶栨枃鐢靛奖鍘熷 姊︿腑鐨勪綘 缁忓吀鑻辨枃閲戞洸 璁稿穽 瀹岀編鐢熸椿 鏃跺厜 鍒濋洩缁濅笘鍚嶄级
187 名前:181 mailto:sage [2007/04/03(火) 15:28:16 ] ありがとうございます、自分のプログラムの無駄な部分が見えてきました。 もう一点、>>182 のプログラムではUser-Agentの後ろのダブルクォーテーションが取れませんでした。 record = rexp1.sub(",", linein, 9).rstrip("\"").split(",") のrstrip("\"")が機能していないようなのですが、私もなぜなのか分かりません。
188 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 20:13:14 ] すまん、専ブラだから空白消えるの忘れてた。 これで化けないと思うが、gbkでもutf-8でも解釈できる文字しかない部分があったら面倒だな。 import sys, re, urllib # 適当 line_re = re.compile(r'^([\d.]+) - - \[(.*?)\] "(\w+) (.*?) (.+?)" (.+?) (.+?) "(.*?)" "(.*?)"$') def convert(i, linein): try: record = list(line_re.match(linein.strip()).groups()) except AttributeError: print "parse failed at line", i + 1 sys.exit(1) url = record.pop(3).replace("/", "\n\n") def decode(x): bin = urllib.unquote(x) try: return unicode(bin, "utf-8") except UnicodeDecodeError: return unicode(bin, "gbk") record += decode(url).split(u"\n\n") out = u",".join([x.rstrip() for x in record]) + u"\n" return out.encode("utf-8") converted = (convert(i, x) for i, x in enumerate(file("112115.txt", "r"))) f = file("112115.csv.html", "w") f.write("<pre lang='zh'>") f.writelines(converted) f.write("</pre>")
189 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 23:33:46 ] 専ブラ使ってなくても 先頭の連続した空白は消えます
190 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:18:00 ] htmlだもん
191 名前:181 mailto:sage [2007/04/04(水) 00:41:54 ] >>188 すごい・・・文字化けが全部解消されました。 私自身プログラムも文字列処理もズブの素人のため、今からコードを参考に勉強していこうと思います。ありがとうございます。 後学のために教えていただきたいのですが、タグをつけてまで出力をhtmlにするのには何か利点があるからなのでしょうか?
192 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:45:07 ] ふふふ、良いところに気がつきましたね
193 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 00:50:58 ] ふふふ ふふふふふふ ふふふふふふふふふふふふふふふふふふふ ふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふ
194 名前:181 mailto:sage [2007/04/04(水) 02:27:44 ] >>188 正規表現を「分割場所でコンマに変換(sub)する」のではなく、「データ自身をマッチさせてリストにする」に変えたんですね。 正規表現の部分は自分も自分のプログラムの中で一番美しくないと思っていたのでとても参考になりました。 ですがその次の url = record.pop(3).replace("/", "\n\n") の部分からが理解できません。 URLをディレクトリごとに二回の改行を入れるとdecode関数に値を渡す際に何か変化があるのでしょうか? >>182 のプログラムでunquote後のtryの中のgbkとutf-8を逆にすると>>188 と同じ結果が得られるようなのですが・・・? enumerate関数を使ったエラー箇所の表示も大変興味深いです。多謝多謝。 もう一つ>>182 のプログラムから気になってはいたのですが、 converted = (convert(i, x) for i, x in enumerate(file("112115.txt", "r"))) といったforの特殊な使い方について解説されているサイトを教えていただけないでしょうか? 「はじめてのPython」やドキュメントを漁ってみたのですがどうもそれらしい記述が無いようなのです。
195 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 02:37:11 ] 漁ってないに3000ペリカ
196 名前:181 mailto:sage [2007/04/04(水) 02:40:20 ] >>195 orz もう一度漁ってきますッ
197 名前:181 mailto:sage [2007/04/04(水) 03:24:20 ] 漁れました。orz ttp://docs.python.org/tut/node7.html#SECTION007140000000000000000 しかし入力するログファイルがあまりにも膨大だった場合、メモリの容量によっては>>188 のconvertedに入りきらない可能性もあるのでは。それは杞憂なのでしょうか?
198 名前:181 mailto:sage [2007/04/04(水) 04:22:39 ] >>188 で二回改行を入れてからunquoteする理由は、unquoteによって"/"がデコードされる可能性があるからですか? 各ディレクトリに分割する際、本来ディレクトリ名の一部であるはずの"/"でぶった切ってしまうのを二回改行で回避している、と理解すればよいのでしょうか。 なるほど そろそろ寝ます。みなさんお忙しい中付き合っていただきありがとうございます。本当に有意義な一日でした。
199 名前:182=188 mailto:sage [2007/04/04(水) 10:39:30 ] >タグをつけてまで出力をhtml 単にブラウザで表示確認してただけ。俺が使ってるのはSJISエディタだから。 >url = record.pop(3).replace("/", "\n\n") >二回改行を入れてからunquoteする理由は、unquoteによって"/"がデコードされる可能性が そう。分割しないでデコードするのは、一度にデコードする量を増やして エラーを出しやすくする(正しくないデコードをされる可能性を減らす)ため。 まあ予防的措置。完璧じゃないが、完璧にやるのは手間に見合わないので。 >unquote後のtryの中のgbkとutf-8を逆にすると>>188 と同じ結果 >>182 で化けたのは、utf-8でデコードすべきところをgbkでデコードしてエラーが出なかったから。 だから試す順を逆にした。他は前述の通り。 >converted = (convert(i, x) for i, x in enumerate(file("112115.txt", "r"))) これはリストの内包表記ではなくて、ジェネレータ式。 www.python.jp/doc/release/tut/node11.html#SECTION00111000000000000000000 ジェネレータだから、convertedの時点ではまだfileは読まれていない。 enumerateもイテレータに対応しているから、writelinesがconverted.next()した時点で readlineされ、convertされ、writeされる。メモリは一行分あればよい。 ジェネレータ関数の方が解りやすかったとは思うけど、行数が勿体無かったので。
200 名前:デフォルトの名無しさん [2007/04/07(土) 20:49:24 ] 良い生徒&酔い先生age
201 名前:181 mailto:sage [2007/04/08(日) 03:27:22 ] すみません、教授から新しい任務を与えられてしまい、やはりエンコードで躓いています・・・ テンプレにあるように丸投げ、ということではなくなってしまうのですが 【 課題 】gzipでそれぞれ圧縮された4つのログファイルに含まれるURLを読み込み、 ディレクトリの種類毎にそれぞれナンバリングして対応表のファイル及び そのナンバーが記載されたログファイルを出力せよ。 4つのログファイルのうちの一つは(ttp://uproda11.2ch-library.com/src/112376.gz.shtml) 【 補足 】>>181 のログファイルはこの圧縮されたログファイルの一部です。 (このログファイルは展開すると一つが75Mほどになります。) URLの頭は全て「music」になっているので無視し、 その下の「Songs」を「1」、「Musics」を「2」とします。 さらにその下の階層では「Chinese」、「English」となっているので、 「/Songs/Chinese」が「11」、 「/Songs/English」が「12」 ・・・という風になります。 URLが「/Songs」から開始する(つまり一桁目が「1」になる)ファイルを 時間順に上記のナンバーに変換し、新たなログファイルとして出力します。 またこのログファイルとは他に、ディレクトリ名及びファイル名の対応表 (Songs:1、Chinese:1、English:2)を出力します。
202 名前:181 mailto:sage [2007/04/08(日) 03:39:07 ] 【 試した事1 】まず>>188 のプログラムのファイル入力の部分を今回のログファイルに置き換えて実行。 【 結果 】UnicodeDecodeErrorが発生。 【 試した事2 】1585行目から文字化けを確認。decode関数内部における例外処理を以下のように変更して実行。 try: return unicode(bin,"gb18030") except UnicodeDecodeError: try: return unicode(bin,"utf-8") except UnicodeDecodeError: return unicode(bin,"gbk") 【 結果 】20677行目で正規表現とマッチせず終了。 "GET (URL) (Protocol)"の形ではなく"-"となっていることを確認。 1585行目からの文字化けも解消されず。
203 名前:181 mailto:sage [2007/04/08(日) 03:54:44 ] 【 言い訳 】前回に引き続き無理難題を持ち込んでしまい、本当に頭が上がりません・・・ あまりにもログファイルがデタラメ(エンコードが統一しておらずサーバのディレクトリ構造も不明) なので教授に取り次いでもらって、このログファイルを出力したプログラムを書いた中国人と喧嘩してきます。 素人目にもこのログファイルの解析は非効率であると思いますので、 1.ログファイルのエンコードの統一について 2.ディレクトリ構造 3.ログファイルの仕様 をそれぞれ聞いてこようと思います。プログラムを組む上でそれ以外に必要な項目があれば教えていただけますか?
204 名前:181 mailto:sage [2007/04/08(日) 04:01:36 ] すみません、アップロードに失敗しているようです・・・もう一度してきます・・・
205 名前:181 mailto:sage [2007/04/08(日) 04:34:55 ] 4つのログファイルです。 ttp://skeeterhawk.googlepages.com/access_log.1.gz ttp://skeeterhawk.googlepages.com/access_log.2.gz ttp://skeeterhawk.googlepages.com/access_log.3.gz ttp://skeeterhawk.googlepages.com/access_log.4.gz
206 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 05:38:59 ] pythonで宿題を出すような阿呆な教育機関って日本にあるの?
207 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 07:35:47 ] perlよりはいいんじゃね?
208 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 09:36:21 ] Rubyの学習が囚人の苦役になる時代だからなぁ
209 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:38:32 ] >206 むしろ大学とかは妙に使用率の低い言語好むから Pythonくらいならまだマシなほうでわ
210 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:39:53 ] 素人囚人の人たちの作ったスクリプトは使い物にならないんだろうなぁ。w
211 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:13:36 ] 刑務所には娯楽もあまり無いだろうしむしろ上達するかも
212 名前:デフォルトの名無しさん [2007/05/03(木) 13:48:10 ] レイパー、人殺しやコソ泥が使う言語Ruby.
213 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:59:39 ] 出所後の就職対策でもあるらしいが、刑期が長いと出所する頃には廃れてたりしないだろうか
214 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:34:22 ] Rubyをちょっといじっただけの前科持ちを雇うとか信じられないな
215 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:49:46 ] 中で開発するんじゃなかったっけ? 何をかはしらんが・・・
216 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:52:21 ] Perlはアニオタやオカマが作ってる言語。
217 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:00:14 ] >>215 出所後に雇うって明言しているところがあるんだよ
218 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:00:56 ] >>217 そうなのか・・・
219 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:32:27 ] やさぐれソフトウェア商会だなw
220 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 16:34:43 ] おまいらどんな宿題だよ(www
221 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:15:38 ] >>216 それは事実だから無問題
222 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:43:08 ] >>221 アニオタは分かるけどオカマは分からない
223 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:36:10 ] >>222 Audrey Tang(Pugs開発者)
224 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:44:36 ] そういえばRandal氏(ソートで有名な人)の有罪って取り消しになったんだってね というかここはPythonスレ(ry
225 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:01:19 ] >>214 やー様経営のアダルトサイトとかフィッシングサイト構築とか需要あるかも・・・、って更生できないじゃんw
226 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:18:54 ] >>223 ttp://en.wikipedia.org/wiki/Audrey_Tang これか? 山下達郎に似てね?(www
227 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:27:39 ] これは男か?
228 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:30:02 ] IQ180のオカマだ
229 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:50:21 ] IQ180って正規分布表に載ってない・・・と思って自分で計算したら 世界に1727人もいるんすね。
230 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:54:46 ] >>229 そのうちオカマのパーラーは何人だろ
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);