[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 23:01 / Filesize : 195 KB / Number-of Response : 712
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Python の宿題ここで答えます Part 1



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 名前: [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 名前: [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 名前: [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);






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<195KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef