[表示 : 全て 最新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


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)

332 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 21:46:12 ]
>>330
import time
while True:
    foo()
    time.sleep(3)

fooが重い処理なら、例えばスレッドなんかを作る。

import time, thread
while True:
    thread.start_new_thread(foo, ())
    time.sleep(3)

www.python.jp/doc/2.4/lib/module-time.html
www.python.jp/doc/2.4/lib/module-thread.html

333 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:36:07 ]
youtube-dlをjp.youtube.comとwww.youtube.com
の両対応にしてください。
おながいします。

334 名前:timer [2007/06/25(月) 01:38:28 ]
>>331>>332
ありがとうございました!無事解決しました!!


335 名前:デフォルトの名無しさん [2007/06/26(火) 02:06:18 ]
age



336 名前:デフォルトの名無しさん [2007/07/13(金) 18:44:07 ]
保守あげ

337 名前:デフォルトの名無しさん [2007/07/23(月) 20:13:20 ]
[1, 1, 2, 2, 2, 3, 3, 4, 4, 1, 2]という数値のリストがあって、
それはリストのネストのレベルを表してます。

このリストをそのレベルどおりにネストさせるには、どうすればいいですか?
[1, 1, [2, 2, 2, [3, 3, [4, 4]]], 1, [2]]


338 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:46:10 ]
最小値より大きいものを1つのリストにまとめたリストを返す関数を作って再帰
ただサイズが大きいと計算時間が厳しいと思う

339 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:02:26 ]
>>337
ミもフタもない解答
def f(lst):
  lvl=lst[0]
  ans = '['*lvl + '%d'%lvl
  for i in lst[1:]:
    if i==lvl:
      ans += ',%d' % i
    elif i>lvl:
      ans += ',' + '['*(i-lvl) + '%d'%i
    else:
      ans += ']'*(lvl-i) + ',%d'%i
    lvl = i
  return eval(ans+']'*lvl)

340 名前:デフォルトの名無しさん [2007/07/24(火) 00:36:15 ]
【 課題 】
次の要求を満たすフィルタプログラムを作れ。
1.標準入力から行を読み込み、空白をカンマに変換し、標準出力に出力する
2.連続した複数の空白はひとつの空白と同じと見なす
3.タブ文字も空白と見なす
4.オプション等は設けない
5.フィルタとして動作するので余分なメッセージ類は一切出力しない

例として「1 Bill  1955 Oct 28」と入力したら「1,Bill,1955,Oct,28」と出力されるようにします。

オブジェクトの名前は次のように定義する
line      標準入力から入力した行
termList   lineにsplitメソッドを適用して生成したリスト
term      リストの各要素
ouputString 標準出力に出力する文字列


outputString = ’’
for term in termList[:-1]:
outputString += term + ’,’
outputString += termList[-1] + ’\n’
sys.stdout.write(outputString)

上記のコーディング例を参考に作成せよ。

【 期限 】7月30日(月)まで。

何方かよろしくお願いします。

341 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:40:10 ]
# -*- coding: Shift_JIS -*-

def nest(L, level=1):
    L = list(L) # pop で破壊してよいようにコピーを作る
    results = []
    while L:
        # 想定外の要素が見つかったらエラー
        assert not L[0] < level
        # 現在のレベルと等しい要素をそのまま results に追加
        if L[0] == level:
            results.append(L.pop(0))
            continue
        # 現在のレベル以上の要素を集める
        nested_items = []
        while L:
            # 想定外の要素が見つかったらエラー
            assert not L[0] < level
            if L[0] == level:
                break
            nested_items.append(L.pop(0))

342 名前:デフォルトの名無しさん [2007/07/24(火) 00:42:48 ]
        # 集めた要素をネストする(再帰)
        results.append(nest(nested_items, level+1))
    return results

assert nest([1, 1, 2, 2, 2, 3, 3, 4, 4, 1, 2]) == [1, 1, [2, 2, 2, [3, 3, [4, 4]]], 1, [2]]

343 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:53:54 ]
>>340
import sys
for line in sys.stdin.readlines():
    termList = line.split()
    outputString = ''
    for term in termList[:-1]: 
        outputString += term + ', '
    outputString += termList[-1] + '\n'
    sys.stdout.write(outputString) 

344 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:07:35 ]
oxtu.py

345 名前:デフォルトの名無しさん [2007/08/02(木) 19:06:37 ]
oxtu.py age



346 名前:デフォルトの名無しさん [2007/08/12(日) 17:58:39 ]
【 課題 】
宿題じゃないが、アルゴリズム考えててこんがらかったので質問。

lst = [dataX, ..., data2, data1, data0]
newlst = [dataM, ..., dataN+1, dataN]
# len(lst) == 任意, len(newlst) <= 4, M >= X

このようなリストがあった時、newlstをlstに重複なくマージするにはどうしたらよい?

つまり、
lst = [data3, data2, data1, data0]
newlst = [data4, data3, data2]
assert merge(lst, newlst) == [data4, data3, data2, data1, data0]

このときのmergeをどう作ればよいのか知りたい。
なおインデックスに飛びは無く、dataは等価比較可能。

347 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 18:17:13 ]
list(set(lst + newlst))

348 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 18:33:50 ]
>>347
すまん、忘れてたが順序関係は維持したままで。
ただしdata同士の順序比較は出来ない。
インデックスは順序のために便宜的につけただけで、実際には通し番号などは無い。

349 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:24:18 ]
> data同士の順序比較は出来ない
> 実際には通し番号などは無い

ちょっ、そうしたら、
lst = [a, b, c]
newlst = [b,x,y]
のとき、c, x, y, の順序はどうやって決めるんだ?

350 名前:デフォルトの名無しさん [2007/08/12(日) 22:25:04 ]
ふつうに
for item in newlst:
    if item not in lst:
        lst.insert(0, item)
ではダメなの?


351 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:28:39 ]
あれ、>>346見たら
> インデックスに飛びは無く

って書いてあるな。順序あるのか無いのか、はっきりしてくれ。

352 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:29:08 ]
lst[:lst.index(newlst[0])] + newlst

353 名前:346 mailto:sage [2007/08/13(月) 04:15:28 ]
質問しといて何だが自己解決した。
色々前提条件説明しきれてなくてスマン。付き合ってくれた人有り難う。
dpaste.com/16708/

要はネットからエントリ型の更新情報をダウンロードしてローカルデータに追加するため、
lstとnewlstに重複した情報があるかもしれないが、そこだけstripしたかったというお話。
エントリに日時情報があればもっと簡単だったんだけどね。

354 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 08:34:13 ]
>>353
エントリ型って何?

355 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 08:35:28 ]
>353 を読む限り順序なんてなくて set で要素抽出をすればいいだけじゃん

元の list 保存しておいて orig_list.index( some_data ) で
個別 index はでるんだし



356 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 15:37:39 ]
最後lstとnewlstの足し算逆じゃね?
ていうか明らかにfor文必要ないから

357 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 11:32:42 ]
下のような2つのリストがあるとき
a = ["A","B","C","D"]
b = [5, 3, 8, 2]
aのリストをbの値の大きい順にソートしたい、この場合、a = ["C","A","B","D"] b = [8,5,3,2]を求めたいのですがどのように書けばよろしいでしょうか。
アドバイスお掩蓋します。

358 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 12:00:11 ]
>>> zip(b, a)
[(5, 'A'), (3, 'B'), (8, 'C'), (2, 'D')]
>>> sorted(zip(b, a))
[(2, 'D'), (3, 'B'), (5, 'A'), (8, 'C')]
>>> sorted(zip(b, a), reverse=True)
[(8, 'C'), (5, 'A'), (3, 'B'), (2, 'D')]
>>> [x[1] for x in sorted(zip(b, a), reverse=True)]
['C', 'A', 'B', 'D']
>>> 

359 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 12:12:37 ]
>>358
zipでこんな簡単にできると思いませんでした。
ありがとうございました。

360 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 02:27:14 ]
質問です。
外のwebサーバ(自分はドキュメントやCGIスクリプトの設置はできるユーザ権限)にJythonって設置できますか?
やっぱサーバの管理者権限いりますよね?

361 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 03:40:39 ]
自分でJavaとJythonインスコすればおk。

362 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 14:19:06 ]
telnet、ssh禁止とかだったらたぶん無理

363 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 15:37:04 ]
>>362
それがOKならいけるってことですね。
いっちょあやしまれないように暗躍してみます。

364 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:17:55 ]
Jythonについて質問した者です。
ローカル環境でいじくり、無事jythonのインストール方法を理解できました。
これで、python ver 1.5.2からアップデートしない大学のサーバを
出し抜いてやるぜと思ったら、javaすら入っていませんでした。

365 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 23:51:18 ]
無けりゃ入れるだけよ



366 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:24:08 ]
java設置失敗。
そして良く考えたらJythonとCPythonとの互換性も追い付いているのかどうか良く知らない・・・。

ファイルの実行や一般的なUNIXコマンドを使う権限があるので、リモートでPython2.5をコンパイルしてみた。
が、ソケットのヘッダファイルを読み込めなかった。
くそっくそっ。
かっこいいCGI置きたいよぅ。

367 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 00:26:15 ]
いまどきCGIである時点であまりかっこいいとは言えない






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

前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