Python の宿題ここで答えます Part 1at TECH
Python の宿題ここで答えます Part 1 - 暇つぶし2ch2:デフォルトの名無しさん
06/07/23 01:49:48
            ζ
          _..―――.._          / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /                \     <私は磯野波平だ。
       /                    \    |緊急事態につき私がこのスレを指揮する!
    ||||||||||||||||||                \  |
    ||||||||||||||||||||||            _,、-''''` /リ  |
   ||||||||||_.._||||||||||| ,.--;==ミ 、 ___,.ノ /{.○-゙‐rV  |
   ||||||,/`ヽヽト、 ´  {,.○-`‐‐ 、,.-ト|    ,ノ   |>>3サザエどもには、ちょうどいい目くらましだ。
   ||||∧  ゙i,   `ヽ,r'´      ノ.  ゙、--‐''´|   |>>4・・・言葉をつつしみたまえ。
   ,,.く  ヽ   ゙i     ヽ、 __,,、-'"     〉   /   |    君は金正日の前にいるのだ。
ハ'´  |  ゙i   |        ||||||||||||||||||| iヽ'" ̄ |>>5タマのアホ面には、心底うんざりさせられる・・・。
゙、゙i,_r'シニZ`ー┬ト'i       _____ ,  |  \ |>>6ばかもーん!
   _゙V  ヽ,.レ''ヽヽ     `ー─''''"´   /    |>>7いたずらばかりしおって!!
 /./ ヽ/     ,」ヽ     __,,、-─‐-、j     |>>8よし3分間待ってやるの3本です。
  / r'´  --‐‐'''"´ ヽ \   (.r‐'''""゙゙`ヽ,`)    |>>9毛が、毛がぁ~!
  l .|     __,,、--`ヽ \ ___ヽ     /´|     |
 j |           ,⊥`ー 、 ゙!    レ' |     |
 |  |        -‐''"´   ヽ、⊥ヽ|    |彡'|

3:デフォルトの名無しさん
06/07/23 02:00:51
このスレは3年持つ。

4:デフォルトの名無しさん
06/07/23 03:30:37
selfという文字列が非常に打ちにくい件について

5:デフォルトの名無しさん
06/07/23 19:46:13
>4
そうか?

6:デフォルトの名無しさん
06/07/24 00:27:26
このままdat落ちに8000ペソ

7:デフォルトの名無しさん
06/07/24 00:32:26
Pythonの宿題を考えるスレで。

8:デフォルトの名無しさん
06/07/24 22:03:16
      ☆ チン     マチクタビレタ~
                        マチクタビレタ~
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < 宿題まだ~?
            \_/⊂ ⊂_ )   \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん  |/

9:デフォルトの名無しさん
06/07/24 22:48:09
´ー`) とりあえず某大学の Python の宿題を置いておきますね。

第4回:差分法による一次元拡散方程式の求解
URLリンク(www.maths.uq.edu.au)
第4回の課題
URLリンク(www.maths.uq.edu.au)


上の課題を見てオモタんだけど、自分の学生時代を振り返っても
この手の課題って、ちゃんと講義を聞いていれば自明というか
考えるまでもない問題が多かったなあ。

10:デフォルトの名無しさん
06/07/25 22:33:07
>>9
う~ん、pythonで出されてるだけでほとんど数学(か物理?)
の課題のような・・・
スクリプト部分も代入と関数定義とfor文が一回使われてるだけで、
そのままcでもええやん、っていうスクリプトだし・・・

課題一行目の訳
>この宿題は、1次元と2次元の拡散現象の初期値、境界値問題を
>解くためのpythonスクリプトを実装して、数理モデルの安定極限を
>調査し、その解を数値的に研究することです。
なんかもう数学がきついし、
ていうか自分暇だなぁ・・・

11:デフォルトの名無しさん
06/07/26 11:38:41
理科です!わかるやつだけでもいいのでお願いします。

(1) 1Vの電圧で1Aの電流が流れているときの電力は何Wか。
(2) 1Wの電力で1秒間に発生する熱量は何Jか。
(3) 60Wの電球に100Vの電圧をかけたときに流れる電流は何Aか。
(4) 電熱線に5Vの電圧をかけたところ4Aの電流が流れた。
 この状態で1分間たつと何Jの熱量が発生するか。
(5) 抵抗が2Ωの電熱線に5Aの電流を流した。
 この状態で2分間立つと何Jの熱量が発生するか。
(6) 抵抗が3Ωの電熱線に10Vの電圧をかけた。
 この状態で5分間立つと何calの熱量が発生するか。(ただし1J=0.24cal)
(7) 有る電熱線に100Vの電圧をかけたら2Aの電流が流れた。
 このとき消費する電力は何Wか。
(8) 消費電力が1200Wの電気ポットを5分間使った。
 このとき発生した熱量は何Jか。

12:デフォルトの名無しさん
06/07/26 13:02:20
釣りなのか誤爆なのかマルチなのか、もう、何がなんだか

13:デフォルトの名無しさん
06/07/26 13:13:22
それを計算するプログラムをPythonで書け、という課題
にはとても見えない・・・

14:デフォルトの名無しさん
06/07/28 10:46:41
5)と6)に回答するには、まず>>11が立ってるだけで何カロリー/秒くらい暑苦しいのかを知らないと無理。

15:デフォルトの名無しさん
06/07/28 12:16:25
4)は平仮名なのかw

16:デフォルトの名無しさん
06/07/28 13:31:08
立ってるだけじゃ仕事量0だと物理の先生が言ってました

17:デフォルトの名無しさん
06/07/28 17:07:31
実際の人体では代謝率が向上するね

18:デフォルトの名無しさん
06/07/28 20:40:16
何故この時期に宿題スレが立つのか分からん。
釣りか?俺は餓鬼に釣られた哀れなお魚サンなのか?

19:デフォルトの名無しさん
06/07/29 19:04:29
ゴキブリホイホイスレ!

20:デフォルトの名無しさん
06/07/30 13:19:26
【 課題 】任意の板にたった新スレに、誰よりも早く2ゲット文字列を書き込むプログラムをつくれ
【 用語 】新スレ、2ゲットの意味については、各自ググれ
【 期限 】提出期限は設けません。
【 Ver  】Python2.3から2.5いずれにおいても動作することが望ましい。
【 補足 】


21:デフォルトの名無しさん
06/07/30 13:38:32
import re
import urllib

for a, b in re.findall('(.*)\.dat\<\>(.*)\(1\)', urllib.urlopen('URLリンク(pc8.2ch.net)').read()): 2get(a)


22:デフォルトの名無しさん
06/07/30 13:39:51
書き込みのcgiパラメータ調べるのと
クッキー処理したりするのが面倒なんだけど


23:デフォルトの名無しさん
06/08/02 13:09:58
>>22
もっとくわしく

24:デフォルトの名無しさん
06/08/02 15:46:42
パラメータもクッキーも自分で調べれば分かるだろうけど
いたずら防止を潜り抜ける必要があるってこと

25:デフォルトの名無しさん
06/08/02 16:16:31
なるほどね。
だけど、いたずら防止とかのテクニックはPython固有の問題じゃないよね。

26:デフォルトの名無しさん
06/08/02 16:20:18
それがどうかしましたか?

27:デフォルトの名無しさん
06/08/04 00:01:16
cgi.FieldStorage()が使いづらいみたいなこと?

28:デフォルトの名無しさん
06/08/04 00:07:33
「CGIとPythonの区別がつかない人もWEBプログラミング板に行ってください」
みたいな注意書きが必要になるのかねぇ・・・

29:デフォルトの名無しさん
06/08/04 01:40:06
純粋にpythonの宿題だけじゃ話題無い気が・・・

30:デフォルトの名無しさん
06/08/04 10:07:03

【 課題 】
2chの任意のスレを複数登録・管理し、有益な情報が投稿されたときのみ通知、
所定のレスを指定して 2ch viewer 等を起動するプログラムをつくれ。

【 用語 】
各自ググってください。

【 期限 】
特にありませんが、なるはやでお願いします。

【 Ver  】
Python2.3から2.5いずれにおいても動作することが望ましい。

【 補足 】
スレの登録・管理についてはDBを使用しても構いませんし、
単純なテキストファイルでも問題ありません。
viewer のお気に入りと連動出来ると得点うpされます。

「有益な情報」の判定には、コテハン、あぽ~んリストはもちろん、
自動文脈解析の手法等を用いて流れを嫁れば得点うpされます。



31:デフォルトの名無しさん
06/08/08 01:01:33
このままdat落ち

32:デフォルトの名無しさん
06/08/08 02:38:13
そもそもひとにやってもらおうという態度が(ry


33:デフォルトの名無しさん
06/08/08 04:40:02
その前にpythonで宿題なんか出ない

34:デフォルトの名無しさん
06/08/08 12:30:34
じゃあ、他の宿題答えますスレに出てきた宿題を無理やりPythonで答えるスレに

35:デフォルトの名無しさん
06/08/08 13:11:13
>>34
じゃあ、お前がその解答つくってやれ

36:デフォルトの名無しさん
06/08/08 16:16:15
大学でPython教えてるところは結構あるみたいだよ(グーグル調べ)。
宿題があるかどうかはしらんけど。

37:デフォルトの名無しさん
06/08/08 18:24:55
>>35
宿題が出てきたらな

38:デフォルトの名無しさん
06/08/08 21:14:25
スレリンク(tech板:215番)

【 課題 】キーボードから10個の数字を入力する。
      隣同士の足し算をし、以下の例のように1の位の数字を次の行に出力し、
      最後に残った数字を出力する。

      (例)
      数字を入力してください。
      2359318473

      2 3 5 9 3 1 8 4 7 3
       5 8 4 2 4 9 2 1 0
       3 2 6 6 3 1 3 1 (以下略

      最後に残った数字は 2 です。

39:デフォルトの名無しさん
06/08/08 21:58:03
>>Python2.3から2.5いずれにおいても動作することが望ましい。

この条件ってかなりきついな。
問題と無関係なところで苦労が多そうだ。

40:デフォルトの名無しさん
06/08/08 22:45:03
>>38

def answer():
 print "数字を入力してください。"
 numstr = raw_input()
 width = len(numstr)*2-1
 nums = map(int,numstr)
 while nums:
  sp = " " * ((width - (len(nums)*2-1))/2)
  print sp + " ".join(map(str,nums)) + sp
  nums = map(lambda x,y:(x+y)%10, nums[:-1], nums[1:])


41:デフォルトの名無しさん
06/08/08 22:49:18
#!/usr/bin/python
# -*- coding: utf-8 -*-
def solv(ls, indent=0):
    print ' ' * indent,
    print ' '.join(str(x) for x in ls)
    if len(ls)==1:
        return ls[0]
    else:
        next_ls = []
        prev = ls[0]
        for n in ls[1:]:
            next_ls.append((n+prev)%10)
            prev = n
        return solv(next_ls, indent+1)

if __name__ == '__main__':
    # for windows
    #import codecs, sys
    #sys.stdout = codecs.getwriter('shiftjis')(sys.stdout)
    print u'数字を入力してください。'
    data = raw_input()
    print
    ret = solv([int(n) for n in data])
    print u'最後に残った数字は %d です。' % ret

42:41
06/08/08 23:02:12
ところで、この部分を自動判別させることはできますか?

# for windows
#import codecs, sys
#sys.stdout = codecs.getwriter('shiftjis')(sys.stdout)

ちなみにうちの環境は、cygwin python, ActivePython, Linux(ja_JP.UTF-8)。
Cygwinが鬼門になりそうだけど。

43:デフォルトの名無しさん
06/08/08 23:09:54
>>42
手許のActivePython 2.4.2 on Windows XPではコメントアウトのままで大丈夫だよ
もちろんソースはUTF-8で記述
Cygwinは駄目だね

44:41
06/08/08 23:19:22
>>43
本当だ。ActivePythonはいけますね。
cugwinはpythonに限らず、localeがちゃんと設定できないのが問題になる。

通常は locale.getdefaultlocale() で情報取れるんだけど、cygwinはNoneでした。
platform.platform() でCYGWINだとわかるから、これでcygwinかどうか判定して、cugwinなら決めうちにするしかないかな?

あと、codecs使わずにデフォルトのままでユニコード文字列が標準出力(変換)されるかどうかは、何を見ればいいんだろう?
もうすこし調べる・・・。

45:デフォルトの名無しさん
06/08/08 23:23:30
>>39
ふつうに作ったら、そうならない?

46:41
06/08/08 23:28:39
cygwinが特殊なだけで、普通はutf-8で書いとけば問題ないようだな。
macとかはわからんけど。

47:デフォルトの名無しさん
06/08/08 23:33:27
えっ?普通utf-8なの?
全然しらんかった。

48:41
06/08/08 23:41:40
>>47
windows上で動かすと決まっているなら、sjisで書いたほうが余計なこと考えずに済むようですね。(cygwin含む)

49:デフォルトの名無しさん
06/08/09 00:06:37
>>47
普通はソースの最初の # -*- coding: ×× とソースのコードが一致すれば大丈夫

50:デフォルトの名無しさん
06/08/09 00:37:16
# -*- coding: euc-jp -*-
import sys,string,traceback
import curses
stdscr = curses.initscr()
curses.nocbreak()
stdscr.keypad(0)
curses.echo()

stdscr.addstr(0, 0, "数字を入力してください。",curses.A_REVERSE)
numstr = stdscr.getstr(1,0, 10)

try:
  try:num = map(int,numstr)
  finally:curses.endwin()
except:
  traceback.print_exc()
  sys.exit(0)


51:デフォルトの名無しさん
06/08/09 00:38:53
x=10
y=3
while len(num) is not 1:
  for n in range( len(num) ):
    stdscr.addstr( y , y+x+n*2 , str(num[n]) )
  for n in range( len(num)-1 ):
    num[n] =( num[n] + num[n+1] ) % 10
  del num[-1]
  y += 1
stdscr.addstr( y , y+x+n*2 , str(num[0]))
stdscr.addstr(14,0, "最後に残った数字は %d です。" % num[0] )
stdscr.addstr(16,0, "\'q\' to Exit this program.",curses.A_UNDERLINE)
stdscr.refresh()
 
while True:
  stdscr.nodelay(1)
  c = stdscr.getch()
  if c == ord('q'):
    curses.endwin()
    break


52:デフォルトの名無しさん
06/08/09 01:00:35
>>49
あ、そうなんだ。安心したよ。サンキュ

53:デフォルトの名無しさん
06/08/09 08:18:03
step = lambda x: len(x[-1])==1 and x or step(x+[[(i+j)%10 for i, j in zip(x[-1][1:], x[-1][:-1])]])
print '¥n'.join([__import__('string').center(' '.join([str(s) for s in l]), 20) for l in step([[int(c) for c in raw_input('数字を入力してください: ').strip().split(' ')]])]+['最後に残った数字は%sです' %(s)])


54:デフォルトの名無しさん
06/08/09 08:22:38
まいなーりびじょん。
step = lambda x: len(x[-1])==1 and x or step(x+[[(i+j)%10 for i, j in zip(x[-1][1:], x[-1][:-1])]])
print '¥n'.join([__import__('string').center(' '.join([str(s) for s in l]), 20) for l in step([[int(c) for c in list(raw_input('数字を入力してください: ').strip())]])]+['最後に残った数字は%sです' %(s)])


55:デフォルトの名無しさん
06/08/09 11:01:45
ワンライナーもできたよ!
print '¥n'.join([' '*(len(s)-len(p))+' '.join([str(c) for c in p])
for p in [[reduce(lambda x, y: [(i+j)%10 for i, j in zip(x[:-1], x[1:])], range(r), range(len(s))) for r in range(len(s))]
for s in [list(raw_input('数字を入力してください: ').strip())]][0]]+['最後に残った数字は %s です' %c])

56:デフォルトの名無しさん
06/08/09 11:13:36
もはや検証してみる気にもならん

57:デフォルトの名無しさん
06/08/09 12:38:32
こういうスレ好き♥

58:デフォルトの名無しさん
06/08/09 12:57:34
sedでホワイトスペース2個を全角スペースにしたら
見やすいのか。。

59:デフォルトの名無しさん
06/08/12 13:42:05
こんな課題はどうだろう。
moe.homelinux.netの任意のスレッドに投稿されている絵を
ダウンロードするプログラムを作れ。


60:デフォルトの名無しさん
06/08/12 15:05:20
それは課題じゃなくてオマエがつくってほしいプログラムだろ。

61:デフォルトの名無しさん
06/08/12 15:38:13
もう作ってあるので心配しないで。

62:デフォルトの名無しさん
06/08/12 22:53:36
>>59
>moe.homelinux.net
なんだかわかんないけど同意させられそうになったんでヤメタ。

63:デフォルトの名無しさん
06/08/12 22:59:17
クッキー食べないとアクセスできなくなってるので
課題にはいいかなと。

64:デフォルトの名無しさん
06/08/12 23:03:11
PythonChallengeの10-20レベルあたりにCookieがあったな。

65:デフォルトの名無しさん
06/08/13 05:00:18
画像掲示板から物故抜くのを作ったよ。
よくあるネタだと思うけど、俺みたいな初心者にはほどよい難易度ですた。
流量によってアクセス頻度を調整しているので鯖にも優しいよ( ´ー`)

66:デフォルトの名無しさん
06/08/15 22:21:31
ファイル名にハイフンが入ったファイルをimportしたいんだが、
こんな感じで問題ないかな?

----------------
import imp

f = file('dame-file.txt', 'r')

try:
    dame = imp.load_module('dame', f, 'dame-file.txt', ('', 'r', imp.PY_SOURCE))
finally:
    f.close()
----------------

dame-file.txtというファイルをdameという名前でimportしてます。
一応実行してみたらちゃんと動いてるっぽいですが、見真似で書いたので不安です。

67:66
06/08/16 09:55:26
朝になってよく見たらこれだけでOKだった。

import imp
dame = imp.load_source("dame", "dame-file.txt")

68:デフォルトの名無しさん
06/08/16 09:58:41
>>67
load_sourceは、obsoleteだけどね。



69:デフォルトの名無しさん
06/08/23 08:51:57
【課題】みんPy読書感想文を書け。
【補足】提灯記事はいらない。是非問わず忌憚のない意見を臨む。mojix語禁止。

70:デフォルトの名無しさん
06/08/23 17:12:52
感想文書くからZIPでくれ

71:デフォルトの名無しさん
06/08/23 19:55:05
>>69
まず最初に、公式ドキュメントで十分な人は買わなくても良い。
そうでない人は、はじPyより安くて軽いからおすすめ。
よく使うであろう標準モジュールの解説はもちろん、SQLiteとの接続モジュールや、
ElementTreeの解説もあって2.5以降も意識されている。
Web関連では、昔ながらのCGIだけでなく、Web2.0なことにも触れている。
Zopeまで含めているのはやり過ぎな気もするが、あって困るものじゃない。
その他、日本語関連の話題も抑えてあり総じて良い本といえる。
ただし、帯の「Google言語。」というコピーはいただけない。

72:デフォルトの名無しさん
06/08/23 21:54:49
>>69
> 69 名前:デフォルトの名無しさん :2006/08/23(水) 08:51:57
> 【課題】みんPy読書感想文を書け。
> 【補足】提灯記事はいらない。是非問わず忌憚のない意見を臨む。mojix語禁止。

宣伝乙


73:デフォルトの名無しさん
06/08/25 00:38:03
実況中継見てPythonにそそられて、PDF版のチュートリアルから入門して
自称中級者になりました。
もう入門なんてレベルじゃないけど みんPy は「お布施」として購入しました。


74:デフォルトの名無しさん
06/08/25 00:53:58
>>73
> 73 名前:デフォルトの名無しさん :2006/08/25(金) 00:38:03
> 実況中継見てPythonにそそられて、PDF版のチュートリアルから入門して
> 自称中級者になりました。
> もう入門なんてレベルじゃないけど みんPy は「お布施」として購入しました。
>
宣伝乙

75:デフォルトの名無しさん
06/08/25 01:24:35
その「お布施」で何かご利益があるのかよ?

76:デフォルトの名無しさん
06/08/25 01:27:03
お布施は、車とかプラズマテレビになる予定。


77:デフォルトの名無しさん
06/08/25 08:59:08
抽選で当たるの?いまざっと見たけど、応募ハガキは入ってなかった。

78:デフォルトの名無しさん
06/08/25 12:25:09
> もう入門なんてレベルじゃないけど みんPy は「お布施」として購入しました。

著者さん、Pythonに貢献してる人?

79:デフォルトの名無しさん
06/08/25 12:36:50
>>77
もれなく著者の自宅に届きます。


80:デフォルトの名無しさん
06/08/25 12:37:38
>>78
タダノリしてるだけじゃない。

81:デフォルトの名無しさん
06/08/25 19:17:30
>80
mojixさんってただ乗りしているの?

82:デフォルトの名無しさん
06/08/25 20:19:36
>>81
みんPyはmojix??

83:デフォルトの名無しさん
06/08/25 20:28:42
もう、みpは飽きた

84:デフォルトの名無しさん
06/08/25 21:36:22
>>78
本を書くこと自体が非常に大きな貢献。こればかりは誰にでもできることではない。

85:デフォルトの名無しさん
06/08/25 22:08:30
だれか二匹目のどじょうをあてこんで中級向けの本だしてくんないかなぁ。

86:デフォルトの名無しさん
06/08/26 02:35:36
Pythonでお宝動画を根こそぎゲット系の本とか

87:デフォルトの名無しさん
06/08/26 02:41:52
そこで256倍本

88:デフォルトの名無しさん
06/08/26 18:34:35
Pythonって、日本語の文章を処理するスクリプトを書こうとしたら途端にボロが出るんだな。
今まで便利に使わせてもらってただけにがっかりだ。

89:デフォルトの名無しさん
06/08/26 19:06:48
>>88
おまえの頭がボロ

90:デフォルトの名無しさん
06/08/26 19:12:18
>>89
激しく同意

>>88
どんな難しいスクリプト or 勘違いスクリプトなんだ?

91:デフォルトの名無しさん
06/08/26 19:31:13
>>88
勉強しろよ

92:デフォルトの名無しさん
06/08/26 19:43:00
日本語の使えなさはPerlレベルw

93:デフォルトの名無しさん
06/08/26 19:45:26
>>92
おまえの頭がPerlレベル

94:デフォルトの名無しさん
06/08/26 19:49:12
煽るだけのやつ、早くいなくならないかな・・・

95:デフォルトの名無しさん
06/08/26 20:29:37
perlで日本語処理かけないなんて
そうとうダメだぽ

96:デフォルトの名無しさん
06/08/26 20:31:25
そもそも日本語に限らずパイソンの文字列操作はダメだろ。
これがpythonicねぇとため息が出る。

97:デフォルトの名無しさん
06/08/26 20:33:51
Python至上主義者は、そんなことは些細なこととして、記憶から消し去ります。

98:88
06/08/26 21:05:27
>>91
まさにそれなんだけどさw
一般的にPythonって、直感的に使えるし、難しいことはライブラリをimprot
すれば共通のインターフェイスで使える。
なのになんで日本語操作には勉強が必要なんだ、という叫びだな。
この変なトリックはパイ然としねーw
何、文字列型をユニコード型に変換ってw

99:デフォルトの名無しさん
06/08/26 21:06:54
Perlレベルw

100:デフォルトの名無しさん
06/08/26 21:27:07
なんだ勉強嫌いの子か

101:デフォルトの名無しさん
06/08/26 21:52:08
>>100
そんくらい面倒がらずにやるし、ましてや解かりませんとも言ってない。
「がっかり」だ、と言っているw
この仕様は、だせーよw

102:デフォルトの名無しさん
06/08/26 22:11:12
>>101
具体的に要望を書いたほうが建設的だと思う

103:デフォルトの名無しさん
06/08/27 01:43:33
Perl レベルなのは確かだと思う.
でもそれを言ったら Ruby 以外の外国産言語はどれも大差ない.

内部コードはユニコード、入出力時に変換します.
変換しなければ基本はASCII扱いで、SJISとかは危険よ.

問題なのは各言語のコーデックの機能を使いこなせないやつの能力.

104:デフォルトの名無しさん
06/08/27 02:33:29
> 問題なのは各言語のコーデックの機能を使いこなせないやつの能力.

いや、むしろ使いこなしのノウハウが誰にでも分かるように
まとまった形で広く公開されていないところが問題。

初心者に「とりあえずチュートリアル嫁」と言うのと同じぐらい簡単な
definitive なリソースが必要。



って言うのは簡単だけどな(苦笑

105:デフォルトの名無しさん
06/08/27 02:55:30
ぶっちゃけ日本語のテキスト処理は難しい。
文字とバイトが一致してない。
多数の文字コードが混在している。
互換性のない文字集合がいくつもある。
あっちを立てるとこっちが立たない。
あるアプリでうまくいく方法が別のアプリでは通用しない。
簡単かつ明瞭に誰にでも分かるように仕様を設計することは不可能、もしくは非常に困難。
簡単かつ明瞭に誰にでも分かるように説明することはさらに困難。
理解できない人がいても不思議ではない。
理解できないことに罪はない。
根本的に難しい。
終わっている。

Imagine there's no encodings,
it isn't hard to do,
nothing to encode or decode,
no charset too,
imagine all the people
living with Unicode...

You may say I'm a dreamer,
but I'm not the only one,
I hope some day you'll join us,
and the world will be as one.

106:デフォルトの名無しさん
06/08/27 05:05:25
>>103
まともな評価が出来る人がいると分かって、安心したよ。

107:デフォルトの名無しさん
06/08/27 09:48:54
Ruby房が湧いた

108:デフォルトの名無しさん
06/08/27 11:07:57
>>105
自分が理解できないからって(w

109:デフォルトの名無しさん
06/08/27 11:10:35
わかるのだけでも(間違ってても)良いのでお願いします(>_<)

①地球の内部から地形を形成する力をなんと言うか
②地球の外部から地形を形成する力をなんと言うか
③ウェゲナーの大陸はパンゲアという1つの大陸から分かれたとする説を何というか
④地球の外周は約何kmか
⑤地球の表面は厚さ100kmほどのプレートに覆われ、これが移動するため、
現在のような大陸分布や山脈の形成が見られたとする説を何というか
⑥先カンブリア代の地層がむき出しになっている地形を何というか
⑦先カンブリア代の地層の上に古・中生代の地層が重なっているものを何というか
⑧新期造山帯と古期造山帯と安定陸塊で最も古い地形はどれか
⑨新期造山帯・古期造山帯・安定陸塊からでる地下資源をそれぞれ答よ
⑩新期造山帯は大きく2つに分けられる。2つの造山帯(山系)の名称を答えよ

110:デフォルトの名無しさん
06/08/27 11:23:04
>>109
スレ違い

111:デフォルトの名無しさん
06/08/27 11:35:04
''' 受験に備えて復習する 正誤は知らん

内的営力 外的営力 大陸移動説 40k プレートテクトニクス
楯状地 卓状地 安定陸塊 石油、石炭、鉄鉱石
アルプス・ヒマラヤ造山帯、環太平洋造山帯

'''

112:デフォルトの名無しさん
06/08/27 12:09:27
最近Pyスレを荒らしているのは高校生なのかなぁ

113:デフォルトの名無しさん
06/08/27 12:36:16
高校生にしてはレベル低いね

114:デフォルトの名無しさん
06/08/27 22:36:36
           Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
 ナカチャン…   /:彡ミ゛ヽ;)ー、 . . .: : : :::::: :::::::::::::::::::::::::::::::::
         / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
         / :::/;;:   ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
    ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ
          ,,,,,
        / ,' 3  `ヽーっ
        l   ⊃ ⌒_つ
        `'ー---‐'''''

115:デフォルトの名無しさん
06/08/27 22:49:33
>>112
そのうち飽きるさ。

116:デフォルトの名無しさん
06/08/28 18:23:41
40kkmちょっと和んだ

117:デフォルトの名無しさん
06/08/28 20:46:57
おっpy

118:デフォルトの名無しさん
06/08/30 23:55:41
やっとおだやかになってきたねー

119:デフォルトの名無しさん
06/08/31 00:45:21
スレが立って一ヶ月以上。未だに宿題が出てこない件について。

つか、このスレいらんね。

120:デフォルトの名無しさん
06/08/31 07:09:29
夏休みの真っ最中にPythonの宿題が出るとは思えない。

121:デフォルトの名無しさん
06/08/31 21:39:21
さー、明日からしまっていこうかー

122:デフォルトの名無しさん
06/08/31 23:18:27
大学の夏休みはまだまだ続きます


123:デフォルトの名無しさん
06/08/31 23:38:58
もしかすると、平常日と夏休みとがはっきり区別されない人間が一番やばいのでは

124:デフォルトの名無しさん
06/09/01 00:25:10
8月で夏休みが終わる大学もあるんだがな

125:デフォルトの名無しさん
06/09/01 08:44:33
ま、今はどこの大学も中身は小学校レベルだしな。卒論も昆虫採集以下だし。

126:デフォルトの名無しさん
06/09/04 12:15:34
卒論大変だったなぁ…
>>125
は大学の先生ですね。それ以外はこういうこと書けないし。
大学の先生もPythonスレ見てるなんて、すごいぜpython

127:デフォルトの名無しさん
06/09/04 12:51:19
大学の先生も小学校レベルなんですよ

128:デフォルトの名無しさん
06/09/04 15:14:54
それは当たってる。

129:デフォルトの名無しさん
06/09/05 00:36:59
宿題ではないんですが誰も相談できる人がいないのでここで質問してもいいんでしょうか?


130:デフォルトの名無しさん
06/09/05 09:07:09
内容によるんでね?

131:デフォルトの名無しさん
06/09/05 11:28:20
やる前にふさわしいかどうか考えない
やってみてダメだったら例外処理する
それがPython流

132:デフォルトの名無しさん
06/09/05 15:52:00
突然の書き込みすみません。>< 集計とってます。
ベストなバストはなにサイズ? 協力してちょ
スレリンク(honobono板)l50

133:デフォルトの名無しさん
06/09/08 00:35:11
>>129 の質問てのは >>132 のことだったのか?

134:デフォルトの名無しさん
06/09/08 23:21:14
ひさしぶりにMLを見たよー。
ムネオたんへの皆のレスがなんとなくちくちくしてるよー。

135:デフォルトの名無しさん
06/10/10 23:24:09
ムネオたんって誰?
鈴木宗男?

136:デフォルトの名無しさん
06/10/11 00:06:07
┐(゚~゚)┌

137:デフォルトの名無しさん
06/10/11 00:06:48
そう

138:デフォルトの名無しさん
06/10/20 12:39:34
【 課題 】
■1 ファイルの読み込み
テキスト・ファイルは、改行で区切られた行のリストである。
Pythonでテキスト・ファイルを扱うときも、リストとして処理されるので、for構文を使う。

for line in open(ファイル名, "r"):
一行ごとの処理内容
......
"r"は、read、すなわち「読み込み」の意味である。処理結果は何らかの仕方で書き出す必要があるが、今回は単にprint文で画面に書き出すだけにする。
ファイル名は、
python file_read.py ファイル名1 ファイル名2 ファイル名3 ...
というように引数に指定し、それを前回のプログラムのようにfor構文で一つ一つファイル名を読み取り、それを一つごとオープンし、それを再びfor構文で一行ずつ読み込み、その一行のデータを処理して書き出す。これを繰り返していく。
■1.1 課題:単純なコピー
まず、単純にテキスト・ファイルをそのまま書き出すプログラムcat.pyを作ろう。

sysプログラムをインポートする
for ファイル名用変数 in 引数のリスト:
for 一行を代入する変数 in open(ファイル名用変数、"r"):
一行を書き出す
単純なプログラムのようだが、実はUnixでよく使われる基本コマンドcat、MS-DOSでは typeが、まさにこれと同じ働きをする。使い方としては、
python cat.py ファイル名1 ファイル名2 ... > 新規ファイル名 として、複数のファイルの書き出した結果を一つのファイルに合体する。
python cat.py ファイル名 \ more|(Unixの場合はless)として、一画面毎、表示を止める。

という二つの場合がある。
【 期限 】とくにないっす。
【 補足 】
なんか大谷大学っていうとこのここ→URLリンク(tibet.que.ne.jp)
から見付けてきたやつです。
お暇な方お願いしますm(_ _)m


139:デフォルトの名無しさん
06/10/20 19:54:49
最近の宿題ってのはそこまで手取り足取り教えてくれるのな

>Pythonでテキスト・ファイルを扱うときも、リストとして処理される
これはどうかと思う

140:デフォルトの名無しさん
06/10/20 20:35:50
for-in使うとリストのように、処理されるってだけだよな。
enumrator?


141:デフォルトの名無しさん
06/10/22 00:39:47
pythonからexcelを起動して、表に上からa = 1, a = 2・・・・a = 100と
表示させよ。
という問題です。宜しくお願いします。

142:デフォルトの名無しさん
06/10/22 11:57:38
print "pythonからexcelを起動して、表に上からa = 1, a = 2・・・・a = 100と"

143:デフォルトの名無しさん
06/10/22 12:47:31
>>142
おい!
"と"、はいらなんじゃないかと

144:デフォルトの名無しさん
06/10/22 13:08:09
些細なバグだな

145:デフォルトの名無しさん
06/10/22 13:52:50
>>141
どうみても自分のやりたいことを問題のふりして聞こうとしてるよな。
素直に聞いてりゃ誰か教えてくれただろうにねぇ。

146:デフォルトの名無しさん
06/10/22 14:56:04
でも戸がねぇと埃が入ってきちゃうから

147:デフォルトの名無しさん
06/10/22 15:40:18
できたぞ

XList = []
for i in range(100):
 XList.append("a = %d" % (i+1))
XText = "\n".join(XList)

XFile = file("PyExcel.xls", "w")
XFile.write(XText)
XFile.close()

import os
os.system("open /Applications/Microsoft\\ Office\\ X/Microsoft\\ Excel PyExcel.xls")

148:デフォルトの名無しさん
06/10/22 22:37:30
>>147
動きました。どうもありがとうございます。

149:デフォルトの名無しさん
06/10/27 02:56:48
適当に文字を打ち込んで、その数をカウントする。

150:デフォルトの名無しさん
06/10/27 03:10:48
print len(raw_input('enter something'))

151:デフォルトの名無しさん
06/11/04 02:21:15
行列の足し算
map(lambda x: map(lambda y: y[0]+y[1],x),[zip(*x) for x in zip(a,b)])

152:デフォルトの名無しさん
06/11/04 16:14:33
>>151 行列はNumPy使おうよ。

153:デフォルトの名無しさん
06/11/04 17:33:14
標準に入ってないし


154:デフォルトの名無しさん
06/11/04 22:47:45
こっちが正解だった
[[sum(y) for y in zip(*x)] for x in zip(a,b,c)]

155:デフォルトの名無しさん
06/11/09 10:12:32
xの転置行列
zip(*x)

ベクトルu,vの内積
sum(s*t for s,t in zip(u,v))

行列x,yの行列積
[[sum(s*t for s,t in zip(u,v)) for v in zip(*y)] for u in x]

156:デフォルトの名無しさん
06/11/11 02:08:14
zipは99%parallel iterationにしか使われてない -- guido

ジード分かってねーーーーーーーーーーー!!!
転置行列だよ転置行列!!

izipって何語???キモーーーーーーーーーーー!!!ヤメレーーー!

157:デフォルトの名無しさん
06/11/11 02:40:01
行列はリストですが、リストは行列ではありません

158:デフォルトの名無しさん
06/11/11 22:31:37
誘導されてきました

1Gぐらいあるテキストファイルから適当な行をランダムサンプリングしたい
中身はこんな感じ
1 10 120 1.0
2 11 110 2.0
3 11 110 2.0
4 9 90 3.0
5...

1000000 .....

こここから1000行だけ
ランダムな行をとりだしたいのですがおねがいできないでしょうか?


10 ..
12 ..
100 ..
119...

1Gあるので一度にとりこめない


159:デフォルトの名無しさん
06/11/11 22:37:26
>>158
まずファイルの行数を数える。

次にサンプリングする行数を決める。

import random
lines = random.sample(xrange(line_of_file),1000)

あとはファイルを1行づつ読んでいって,inesにある行だけ取り込む。


160:デフォルトの名無しさん
06/11/12 02:00:42
チョイ変化球として・・・
その1Gのファイルの一行一行にそれほど意味が無いんだったら、
その一行ごとの各項目の平均とか標準偏差とかを出しておいて、
その数値に基づいて1000回ランダム処理することで、
1000行取り出してるように見せかけるとか・・・

161:デフォルトの名無しさん
06/11/12 06:00:13
> その数値に基づいて1000回ランダム処理することで、
> 1000行取り出してるように見せかけるとか・・・

kwsk

162:デフォルトの名無しさん
06/11/12 16:28:17
ある範囲内にある頻度でランダムに値をとる数値の組が欲しい
だけだったら、そのとおりに数値を生成してあげれば十分でしょうという
こと。ただし、1行が1人を表してて、数値がその人の属性を表してる
ような場合だと通用しないけど・・・

163:デフォルトの名無しさん
07/01/11 14:44:01
(゚∀゚≡゚∀゚) ?

164:デフォルトの名無しさん
07/01/23 00:05:57
静かだね。



165:デフォルトの名無しさん
07/01/27 04:38:54
アーヴェー、マリ~~~~ィアー♪

166:デフォルトの名無しさん
07/02/13 11:46:13
POPfileなどの迷惑メール検出ソフトを使って、
2chの工作員の発言を学習させて検出したいのですが
2chのインターフェイスをメールソフトにする方法ないのでしょうか?
futasukeみたいな感じで2chのアクセス方法にインターフェイスかませば
POPfileを経由して2chを診れるとおもうのですが

167:デフォルトの名無しさん
07/02/13 11:58:28
>>166
それpla(ry

168:デフォルトの名無しさん
07/02/13 16:26:56
2chブラウザの方に実装した方がスマートじゃない?

169:デフォルトの名無しさん
07/02/13 20:05:23
メーラー側で迷惑メール判定できるなら、dat を eml とか mbox とかに変換するのもありだね

170:デフォルトの名無しさん
07/02/13 20:16:31
gmailの迷惑メール分類機能とか使いたい場合は
本当に一度フォワードする必要がある

171:デフォルトの名無しさん
07/03/22 02:32:50
>>167
pyagger とかないの?

172:デフォルトの名無しさん
07/03/22 02:36:27
>>171
任せた

173:デフォルトの名無しさん
07/03/22 21:20:31
それplaggerでできるんでしょ?

174:デフォルトの名無しさん
07/03/30 10:35:19
宿題じゃないんですが、
初心者質問スレがないんで、お邪魔します。

ここのスクリプトなんですけど、
URLリンク(home.cfl.rr.com)

FIELD_TYPES=(
(0, 'X', 'Proprietary'), # no such type
(1, 'B', 'Byte'),
(1, 'A', 'ASCII'),
(2, 'S', 'Short'),
(4, 'L', 'Long'),
(8, 'R', 'Ratio'),
(1, 'SB', 'Signed Byte'),
(1, 'U', 'Undefined'),
(2, 'SS', 'Signed Short'),
(4, 'SL', 'Signed Long'),
(8, 'SR', 'Signed Ratio')
)

の部分で、
./EXIF.py: array assign: line 105: syntax error near unexpected token `(0'
./EXIF.py: array assign: line 105: ` (0, 'X', 'Proprietary'), # no such type'
と出やがります。

タブの使い方は問題なさそうなんですが、
これって文法的にどっか間違ってますか?

175:174
07/03/30 10:38:10
ごめんなさい。
#!/usr/bin/env python
がないだけでしたorz

176:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/03/30 12:19:54
ワロた

178:デフォルトの名無しさん
07/04/01 00:24:27
エラーすら出ないはずじゃないのかなぁ・・・
その中途半端なエラーはなんなんだろう・・・

179:デフォルトの名無しさん
07/04/01 00:49:38
/bin/shをキックしたんでしょ

180:デフォルトの名無しさん
07/04/01 01:13:06
こんなことも分からない178に幸あれ...。

181:デフォルトの名無しさん
07/04/02 17:42:39
【 課題 】テキストファイル(URLリンク(uproda11.2ch-library.com))に含まれる
      IPアドレス、時間、User-Agent、URLといったデータをそれぞれコンマで区切りファイルに出力せよ。
      (URLの場合はディレクトリもコンマで区切る。)

【 補足 】テキストファイルは中国語で書かれたHTTPによるmp3ダウンロードのログファイルです。
      Pythonのお勉強スレでみなさまのお力を借りながら自分で四苦八苦してコーディング
      しましたが、URLに含まれるエスケープ文字を処理する段階で壁にぶち当たりました。
      私が途中まで書いたプログラムは(URLリンク(uproda11.2ch-library.com)
      です。非常に見難く恐縮ですがどうかよろしくお願いします。

182:デフォルトの名無しさん
07/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
07/04/03 11:54:15
すみません、下から4行目のreturn out.encode("utf-8")はdecode関数の中にあるのでしょうか・・・
インデント構造も教えていただけませんか?

184:デフォルトの名無しさん
07/04/03 11:57:03
関数の中でない場所から return してどうしようというのだ

185:181
07/04/03 12:03:27
すみません、decode関数をconvert関数の内部にすると通りました。

【結果】文字化けしてしまう行が出てしまいました。
    (変換後1行目は問題なく表示されているが、2行目は変換してしまった為に文字化け(澶栨枃鐢靛奖鍘熷)してしまった。)
    もともとのログファイルがグチャグチャに保存しているのが元凶ですが、そこをうまく分別できないものでしょうか?

186:181
07/04/03 12:13:17
文字化けした文字列は以下の通りです。もとのエスケープ文字をunquoteすれば正常な文字列を得られるのですが、そこからunicodeで変換すると文字化けしてしまいます。

澶栨枃鐢靛奖鍘熷
姊︿腑鐨勪綘
缁忓吀鑻辨枃閲戞洸
璁稿穽
瀹岀編鐢熸椿
鏃跺厜
鍒濋洩缁濅笘鍚嶄级

187:181
07/04/03 15:28:16
ありがとうございます、自分のプログラムの無駄な部分が見えてきました。
もう一点、>>182のプログラムではUser-Agentの後ろのダブルクォーテーションが取れませんでした。

record = rexp1.sub(",", linein, 9).rstrip("\"").split(",")

のrstrip("\"")が機能していないようなのですが、私もなぜなのか分かりません。

188:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/04/03 23:33:46
専ブラ使ってなくても
先頭の連続した空白は消えます

190:デフォルトの名無しさん
07/04/04 00:18:00
htmlだもん

191:181
07/04/04 00:41:54
>>188
すごい・・・文字化けが全部解消されました。
私自身プログラムも文字列処理もズブの素人のため、今からコードを参考に勉強していこうと思います。ありがとうございます。
後学のために教えていただきたいのですが、タグをつけてまで出力をhtmlにするのには何か利点があるからなのでしょうか?

192:デフォルトの名無しさん
07/04/04 00:45:07
ふふふ、良いところに気がつきましたね

193:デフォルトの名無しさん
07/04/04 00:50:58
ふふふ
ふふふふふふ
ふふふふふふふふふふふふふふふふふふふ
ふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふふ

194:181
07/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:デフォルトの名無しさん
07/04/04 02:37:11
漁ってないに3000ペリカ

196:181
07/04/04 02:40:20
>>195
orz
もう一度漁ってきますッ

197:181
07/04/04 03:24:20
漁れました。orz
URLリンク(docs.python.org)

しかし入力するログファイルがあまりにも膨大だった場合、メモリの容量によっては>>188のconvertedに入りきらない可能性もあるのでは。それは杞憂なのでしょうか?

198:181
07/04/04 04:22:39
>>188で二回改行を入れてからunquoteする理由は、unquoteによって"/"がデコードされる可能性があるからですか?
各ディレクトリに分割する際、本来ディレクトリ名の一部であるはずの"/"でぶった切ってしまうのを二回改行で回避している、と理解すればよいのでしょうか。


なるほど

そろそろ寝ます。みなさんお忙しい中付き合っていただきありがとうございます。本当に有意義な一日でした。

199:182=188
07/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")))
これはリストの内包表記ではなくて、ジェネレータ式。
URLリンク(www.python.jp)
ジェネレータだから、convertedの時点ではまだfileは読まれていない。
enumerateもイテレータに対応しているから、writelinesがconverted.next()した時点で
readlineされ、convertされ、writeされる。メモリは一行分あればよい。
ジェネレータ関数の方が解りやすかったとは思うけど、行数が勿体無かったので。

200:デフォルトの名無しさん
07/04/07 20:49:24
良い生徒&酔い先生age

201:181
07/04/08 03:27:22
すみません、教授から新しい任務を与えられてしまい、やはりエンコードで躓いています・・・
テンプレにあるように丸投げ、ということではなくなってしまうのですが

【 課題 】gzipでそれぞれ圧縮された4つのログファイルに含まれるURLを読み込み、
      ディレクトリの種類毎にそれぞれナンバリングして対応表のファイル及び
      そのナンバーが記載されたログファイルを出力せよ。
      4つのログファイルのうちの一つは(URLリンク(uproda11.2ch-library.com)

【 補足 】>>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
07/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
07/04/08 03:54:44
【 言い訳 】前回に引き続き無理難題を持ち込んでしまい、本当に頭が上がりません・・・
       あまりにもログファイルがデタラメ(エンコードが統一しておらずサーバのディレクトリ構造も不明)
       なので教授に取り次いでもらって、このログファイルを出力したプログラムを書いた中国人と喧嘩してきます。

       素人目にもこのログファイルの解析は非効率であると思いますので、

       1.ログファイルのエンコードの統一について
       2.ディレクトリ構造
       3.ログファイルの仕様

       をそれぞれ聞いてこようと思います。プログラムを組む上でそれ以外に必要な項目があれば教えていただけますか?

204:181
07/04/08 04:01:36
すみません、アップロードに失敗しているようです・・・もう一度してきます・・・

205:181
07/04/08 04:34:55
4つのログファイルです。
URLリンク(skeeterhawk.googlepages.com)
URLリンク(skeeterhawk.googlepages.com)
URLリンク(skeeterhawk.googlepages.com)
URLリンク(skeeterhawk.googlepages.com)

206:デフォルトの名無しさん
07/05/03 05:38:59
pythonで宿題を出すような阿呆な教育機関って日本にあるの?

207:デフォルトの名無しさん
07/05/03 07:35:47
perlよりはいいんじゃね?

208:デフォルトの名無しさん
07/05/03 09:36:21
Rubyの学習が囚人の苦役になる時代だからなぁ

209:デフォルトの名無しさん
07/05/03 12:38:32
>206
むしろ大学とかは妙に使用率の低い言語好むから
Pythonくらいならまだマシなほうでわ

210:デフォルトの名無しさん
07/05/03 12:39:53
素人囚人の人たちの作ったスクリプトは使い物にならないんだろうなぁ。w

211:デフォルトの名無しさん
07/05/03 13:13:36
刑務所には娯楽もあまり無いだろうしむしろ上達するかも

212:デフォルトの名無しさん
07/05/03 13:48:10
レイパー、人殺しやコソ泥が使う言語Ruby.

213:デフォルトの名無しさん
07/05/03 13:59:39
出所後の就職対策でもあるらしいが、刑期が長いと出所する頃には廃れてたりしないだろうか

214:デフォルトの名無しさん
07/05/03 14:34:22
Rubyをちょっといじっただけの前科持ちを雇うとか信じられないな

215:デフォルトの名無しさん
07/05/03 14:49:46
中で開発するんじゃなかったっけ?
何をかはしらんが・・・

216:デフォルトの名無しさん
07/05/03 14:52:21
Perlはアニオタやオカマが作ってる言語。

217:デフォルトの名無しさん
07/05/03 15:00:14
>>215
出所後に雇うって明言しているところがあるんだよ

218:デフォルトの名無しさん
07/05/03 15:00:56
>>217
そうなのか・・・

219:デフォルトの名無しさん
07/05/03 15:32:27
やさぐれソフトウェア商会だなw

220:デフォルトの名無しさん
07/05/03 16:34:43
おまいらどんな宿題だよ(www

221:デフォルトの名無しさん
07/05/03 19:15:38
>>216
それは事実だから無問題

222:デフォルトの名無しさん
07/05/03 19:43:08
>>221
アニオタは分かるけどオカマは分からない

223:デフォルトの名無しさん
07/05/04 00:36:10
>>222
Audrey Tang(Pugs開発者)


224:デフォルトの名無しさん
07/05/04 00:44:36
そういえばRandal氏(ソートで有名な人)の有罪って取り消しになったんだってね

というかここはPythonスレ(ry

225:デフォルトの名無しさん
07/05/04 01:01:19
>>214
やー様経営のアダルトサイトとかフィッシングサイト構築とか需要あるかも・・・、って更生できないじゃんw

226:デフォルトの名無しさん
07/05/04 01:18:54
>>223
URLリンク(en.wikipedia.org)

これか?
山下達郎に似てね?(www

227:デフォルトの名無しさん
07/05/04 01:27:39
これは男か?

228:デフォルトの名無しさん
07/05/04 01:30:02
IQ180のオカマだ

229:デフォルトの名無しさん
07/05/04 01:50:21
IQ180って正規分布表に載ってない・・・と思って自分で計算したら
世界に1727人もいるんすね。

230:デフォルトの名無しさん
07/05/04 01:54:46
>>229
そのうちオカマのパーラーは何人だろ

231:デフォルトの名無しさん
07/05/04 01:58:08
IQ180くらいあればPerlでも読みやすいのかもしれんな

232:デフォルトの名無しさん
07/05/04 03:08:12
IQ180なのになんで中卒なんだろう・・・本と謎な人物だ・・・

233:デフォルトの名無しさん
07/05/04 03:12:43
オカマで天才だから一般人の下種な社会に適合できなかったのでは?
進学の必要性も感じなかったのかもね。

234:デフォルトの名無しさん
07/05/04 11:25:20
URLリンク(www.google.co.jp)

鳳たんって愛称で親しまれてるのね…

235:デフォルトの名無しさん
07/05/04 11:48:48
URLリンク(video.google.com)

すぐ動画が見れるとか便利な時代になったよなぁ…

236:デフォルトの名無しさん
07/05/04 12:11:51
URLリンク(pugs.blogs.com)

動画のお共に pdf (文字がつぶれてても大丈夫)

237:デフォルトの名無しさん
07/05/04 14:40:52
>>212 レイパー、人殺しやコソ泥が使う言語Ruby.

女囚たちに Ruby を教えて Web アプリを作らせるのだぞ


238:1
07/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
07/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
07/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:デフォルトの名無しさん
07/05/05 01:31:36
PythonスレにはRubyへの劣等感で嫉妬が激しい人がいるのですね。

242:デフォルトの名無しさん
07/05/05 01:37:29
どんな言語のユーザにも変な人はいるでしょ

243:デフォルトの名無しさん
07/05/05 01:44:52
241みたいに日本語が不自由な人もいるんだね

244:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/05 02:24:01
立派なオカマだな

246:デフォルトの名無しさん
07/05/05 02:28:42
彼女こそオカマの中のオカマだ

247:デフォルトの名無しさん
07/05/05 02:31:49
>>244
Pythonを使えばもっと生産的になれるのに!
彼はバカなんだよきっと!

248:デフォルトの名無しさん
07/05/05 02:43:45
×彼
○彼女

249:デフォルトの名無しさん
07/05/05 02:46:29
>>247
頭が良すぎてパズルみたいな言語でないと楽しめないのかも

250:デフォルトの名無しさん
07/05/05 06:00:21
>>239

251:デフォルトの名無しさん
07/05/05 06:05:40
>>238-240 ソース見ても全くインデントされて無いんだけど?何がしたいのか不明なので無理

通常のgcdなら
def gcd(n, m): return n if m==0 else gcd(m, n%m)

252:未完成部分を完成し、適当な入力を与えて実行せよ。
07/05/05 16:39:37
>>238-240
r2=r0-q*r1
x2=x0-q*x1
y2=y0-q*y1

253:デフォルトの名無しさん
07/05/06 12:03:16
>>251-252
ありがとうございましたm(_ _)m

254:デフォルトの名無しさん
07/05/07 11:58:42
ここのページを参考にしてScipy と Numpy をインストールしました。
URLリンク(procrast.blog82.fc2.com)

それで次にここのページの sample を動かしてみようとしたのですが
URLリンク(scipy.dip.jp)

コンパイルオプション -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
07/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
07/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
07/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:デフォルトの名無しさん
07/05/07 14:54:40
必要だろうねえ。MinGW でもインスコすれば?

259:254
07/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
URLリンク(cens.ioc.ee)

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
URLリンク(projects.scipy.org)
>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
07/05/07 15:20:22
利用可能な環境
URLリンク(spdg1.sci.shizuoka.ac.jp)

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
07/05/07 15:34:36
C-Compiler Wiki - MinGW/インストール
URLリンク(www2.atwiki.jp)

すみません。もう少し調べてから書き込むべきでした orz
mingw というのは visual studioみたいな統合開発環境みたいなものなのでしょうか?

gcc-2.95.2-mingw32 (MSVCRT) mingw32m g77 gcc / g++

gcc は gnu c comliler の略ですよね…Cのコンパイラなのに
fortran もコンパイルできる… よくわからないです…

262:デフォルトの名無しさん
07/05/07 15:42:34
>>261
> gcc は gnu c comliler の略ですよね

違います。もっと落ち着いてちゃんと調べましょう。

263:デフォルトの名無しさん
07/05/07 16:03:31
あのさ、よく分からんのだけど、Fortran コンパイラを使ったこともないような人が
何ゆえ F2PY を使おうとしているの?

SciPy や NumPy を使いたいだけなら Fortran コンパイラの出る幕などないと思うのだが。
禿しく間違った方向に進んでいる希ガス。

264:254
07/05/07 16:08:56
>>262
GNUコンパイラコレクション - Wikipedia
URLリンク(ja.wikipedia.org)
>当初は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
URLリンク(ja.wikipedia.org)

>MinGW(Minimalistic GNU for Windows)
>または、Mingw32 は GNU ツールチェーン(GCCなど)の Windows 移植版である。
------------------------------------------------------------------------

つまるところ gnu compiler collection (not gnu c compiler) の
windows移植版が MinGW なのですね. 勉強になりまた。ありがとです ><

265:デフォルトの名無しさん
07/05/09 19:55:47
URLリンク(d.hatena.ne.jp)

実行しても doctest の結果が表示されないのですが
どうしてでしょうか?

# a.py
import doctest

def foo(a, b):
'''return a+b
>>> foo(10, 1)
12'''
return a+b

doctest.testmod()

は、うまく実行できていました…

266:265
07/05/09 20:33:56
すみません。doctestって成功したときは何も
表示されないんですね orz 自己解決スマソ。

267:デフォルトの名無しさん
07/05/13 18:13:11
例外処理についての質問です。

# -- coding: cp932 --
import urllib2

url='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:デフォルトの名無しさん
07/05/13 20:56:17
exceptの書式が違う。

except IOError, e: # eはIOErrorオブジェクト
print e

269:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/14 00:42:07
URLError 以外にも WindowsError やら ValueError やら起こるみたいだから
except Exception, e:
みたいに一般的に書いとくのがいいんジャマイカ。

271:デフォルトの名無しさん
07/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__
URLリンク(www.koders.com)
>>269
このことですよね…。何となく例外の引数は一つ以上付けないほうが
無難そうな気がしました。というかあまり他の言語でも例外の引数
を一つ以上持ってるのを見たことがないですし。

どうもありがとうございました!

272:デフォルトの名無しさん
07/05/14 01:54:41
>>270
よくわからないときは、Exceptionでやってしまうのもありでしょうか?
何か、それはそれで問題が生じそうな気もするようなしないような…(^^;)

273:デフォルトの名無しさん
07/05/14 03:03:16
>>272
複数の例外が起こる状況で、例外毎に処理を変えたいときは except 節を複数書く必要があるけど、
一律にキャッチしたいだけなら except Exception, e: または except: だけで十分かと。

274:デフォルトの名無しさん
07/06/01 13:47:43
ほしゅ

275:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/01 15:05:16
elif input < 9;
じゃなくて
elif input < a:
だろ

277:デフォルトの名無しさん
07/06/01 15:07:54
お! 動いた!

>>276
ありがとうございます。

278:デフォルトの名無しさん
07/06/01 15:12:34
>>> input = raw_input('Enter: ')
Enter: 8
>>> input
'8'
>>> input == 8
False
>>> int(input) == 8
True

がんばれー

279:デフォルトの名無しさん
07/06/01 17:00:24
セミコロンなんて付ける癖にしているからへんてこな間違いをやってしまうのだ

280:デフォルトの名無しさん
07/06/01 19:40:17
inputというのはビルトイン関数名でもあるので、それを変数名に使うのは行儀が良くない、
で、この場合raw_inputよりもinputを使った方が簡単。

281:デフォルトの名無しさん
07/06/03 06:24:50
>>> def myfunc(): print input()
...
>>> myfunc()
__import__('os').unlink(<漏れの大事なファイル>)
None

便利なファイルシェルだな。

282:デフォルトの名無しさん
07/06/03 07:02:25
公式ドキュメントより
> input( [prompt])
> eval(raw_input(prompt)) と同じです

兄貴と呼ばせてくれ >>281

283:デフォルトの名無しさん
07/06/10 13:48:47
ファイル(バイナリ)から4byteづつ読んで実数表示する
のはどう書きますか?

284:デフォルトの名無しさん
07/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
07/06/11 18:27:37
>>284
しかし何も起こりませんでした。
インストしたpythonは
python-2.5.msi
pywin32-210.win32-py2.5.exe

286:デフォルトの名無しさん
07/06/11 19:44:33
はい、次

287:デフォルトの名無しさん
07/06/11 21:07:35
>>285
その4バイトのフォーマットが何なのか書かないとどうにもならないよ
ところで1バイトずつ読み込んでそれを表示するのなら書けるんだよね?

288:285
07/06/12 08:20:09
>>287

想定は3Dモデルですが、公開されてるフォーマットでは
無い為とりあえず頂点のみ収めたファイルを指定しました。

バイナリの読み込み自体わかりません。スミマセン

289:デフォルトの名無しさん
07/06/12 11:06:26
何も起こりませんでした… ってどんな呪文だよ

290:デフォルトの名無しさん
07/06/12 12:03:39
>>288
単純にCのfloat型をファイルに書き出したものなら>>284のでいけるはず
まず>>284のがちゃんと動くようにするのが先決だね

・時下げ部分の全角空白を半角空白に置き換える
・その3Dデータを test.bin の名前でいっしょに置く

をしている?
それをして動かないなら動かないなりにエラーメッセージが出ているはずなので
そのエラーメッセージを書いてください

291:288
07/06/12 14:52:16
>>290

丁寧にありがとう御座います。<(_ _)>

> except EOFError:
ここで止まっているようでした。
ファイルはtest.binでC:\(あれ? \打った時に確定されてIMEがオフになる~)
に置きました。 これか?
取り急ぎお礼だけ。

292:291
07/06/12 15:18:16
全角空白はエディタ読み込み時に文字化けしていたんで
半角空白にしてたんですが、位置が悪かったようです。
>>284と同じインデント? で動くようになりました。(PythonWin上)

実はPOSERで遊びたい3Dモデルがあるんですが、対応プラグイン
もプラグイン書くにしてもC言語は難しそう。
そこでインタプリタなら出来るんじゃないかと思い……。


4MBのファイル読み込ませたんだけど20分経っても終わらないや……。

293:デフォルトの名無しさん
07/06/13 03:24:29
とりあえず何形式かいうてみそ。

294:292
07/06/13 20:02:46
>>293

えーと……ILUUSIONってとこのゲームのデータです。
今現在有志の手によりMetasequoiaのmqo形式での
読み書きは出来ます。
Metasequoiaがモーション対応してない為頂点カラー
にエンベロープデータを保持させるという特殊な手法
なので頂点の削除追加が困難になっています。

手持ちのPoserとXSI fndがPython対応しているんで
ちょっと夢見てしまったのでした。

295:デフォルトの名無しさん
07/06/13 20:59:13
しかし何も起こりませんでした。

296:デフォルトの名無しさん
07/06/13 21:00:51
そんなような台詞を多用するRPGが昔ありました

297:デフォルトの名無しさん
07/06/16 18:20:53
某大学でPYTHONの授業を取っているのですが、先生が全く何も教えてくれず放置
なのと、自分が他の課題で常に手一杯なので、PYTHONの知識については皆無に等しいです。
ですが、期限がとうとう来週までに迫ってしまいました。。。
課題は自由なのですが、「自分又は他者にとって有用性のあるもの」
とのことなので、以下のような課題を設定しました。どなたか分かる方
がいらっしゃれば、丸投げですが是非よろしくお願いしますm(..)m
□課題
「ホームページ(自分が作りました)の掲示板に書き込みがされたら、
 自動的にメーリングリストのアドレス宛に更新通知を送り、ついでにその掲示板のアドレスもそのメールに記す。」
というものです。
出来ればわかり易く「ここにHPのアドレスを入れる」とか「ここにメーリングリストのアドレスを入れる」
等のコメントを加えていただければと思いますm()m。
□提出期限
6月25日(月)
です。よろしくお願いします。


298:デフォルトの名無しさん
07/06/16 18:23:38
ネットワークじゃなきゃならんのか?
自分のレベルを考えたらもっと楽なものにしないとボロが出るぞ。

299:デフォルトの名無しさん
07/06/16 18:25:15
>PYTHONの知識については皆無に等しいです

じゃあ、何ならできるんだ?
Perlなら、WebProgバリバリか?


300:デフォルトの名無しさん
07/06/16 18:38:16
>>297
掲示板プログラムはすでにあるの?
それを改造しないでPythonで定期的にチェックしてメール飛ばすの?

301:デフォルトの名無しさん
07/06/16 19:15:36
  →諦める   諦めない

302:デフォルトの名無しさん
07/06/16 19:17:52
>>297を読む限りpython知識だけでなく、webとかcgi知識も皆無に見えるんだが?

303:デフォルトの名無しさん
07/06/16 19:47:37
まあがんばれ

304:updatechecker.py
07/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 = "スレリンク(tech板)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の続き
07/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:デフォルトの名無しさん
07/06/16 20:48:06
傍から見てたんだけど、HTMLを丸ごとGETして
キャッシュと比べるっていうのは思いつかなかった。
(掲示板がどんなHTMLを吐くかも不明なのに
 更新チェックなんて無理とか思ってた)
勉強になったよ、ありがとー>>304

307:デフォルトの名無しさん
07/06/16 20:59:56
大学生にもなって先生が教えてくれないって泣き言なんて馬鹿じゃね?
正直今の甘ったれた根性で社会に出るとお前個人じゃなくて同僚の迷惑になるのでそのまま留年してな

308:デフォルトの名無しさん
07/06/16 23:52:11
何も教えてくれないなんてあるのか。
>297 が講義に出席してなかったとかじゃなくて?

309:デフォルトの名無しさん
07/06/17 00:01:00
単にurllibの名前だけしか教えてくれなかったから使い方わからなーい!
とかそういう感じじゃないかなぁ・・・

310:デフォルトの名無しさん
07/06/17 00:23:45
月曜日が楽しみですね

311:デフォルトの名無しさん
07/06/17 07:47:19
>>306
掲示板の内容以外のものが、動的に生成されてるとだめじゃない?
テキスト広告とか、参照元とか表示してるところあるじゃん。
2chなら、おすすめ2chとか。

312:デフォルトの名無しさん
07/06/17 08:42:32
自分のHPならそれくらい把握できるだろ。
そのぶぶんだけ比較対象からはずせばいいだけジャン。

313:306
07/06/17 09:53:57
>>311
もちろん広告などが入ったらアウトだけど、
それは出題者が示して無いから仕方ない。
大抵の掲示板にはLast-ModifiedやETagは使えないから
>>304のアプローチがベストじゃないかな。
実際の利用時には、>>312が書いてくれたように
余分な箇所を削るフィルタを掲示板ごとに書くことになると思う。
あと、おすすめ2chは、datのLast-Modifiedを比較すればOK。

314:デフォルトの名無しさん
07/06/17 12:31:28
そういう問題があるからRSSとかが発明されたわけだ

315:デフォルトの名無しさん
07/06/17 15:05:09
illusionってエロゲメーカーか。

316:デフォルトの名無しさん
07/06/17 16:15:03
>>314
いやRSSは最初はサイトサマリー
blog のエントリーの更新を通知する、程度まで援用されてはいるけど
bbs の書き込みをRSSで配信している例なんてほとんど見ないよ

317:デフォルトの名無しさん
07/06/17 16:32:02
フリー・レンタルBBS業界の一般的な話は知らないけど
teacupはRSS配信してるみたいね

318:デフォルトの名無しさん
07/06/17 19:07:16
>>316
BBSというシステムがあまり最近の流行ではないから、古いシステムをそのまま使ってることが
多いというだけだと思う。いまどき新規に開発するBBSでRSSに対応しないというのはあり得ない。

319:デフォルトの名無しさん
07/06/18 01:16:36
>>318
blog のコメント欄なんかは RSS 配信しない事が多いね
まあどこまでを BBS と言うかによるわけだけど

320:デフォルトの名無しさん
07/06/18 20:25:19
さて月曜日ですよ。 >297 はどこの課題だったのかなー。

321:デフォルトの名無しさん
07/06/18 20:28:01


322:デフォルトの名無しさん
07/06/19 06:20:26
シカト来たーーー

323:デフォルトの名無しさん
07/06/19 15:13:28
>>319
それは確かにそうだ。
たまには、コメントやトラックバックのRSSを配信できるシステムもあるが、主流ではないか

324:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/20 11:36:25
zip関数を使う

326:デフォルトの名無しさん
07/06/20 11:48:26
>325
zip(*lst) でほぼ理想通りの結果が出ました!感謝!

327:デフォルトの名無しさん
07/06/20 13:22:53
2階層は zip で結構イケルんですけど
3階層以上の配列(テンソル?)だと
あまりいい手はないですよね

numpy の類を使うしかないかな

328:デフォルトの名無しさん
07/06/20 19:58:32
25日は来週の月y・・・

329:デフォルトの名無しさん
07/06/20 23:08:10
まだ猶予があったのか。ギリギリになってあわてる奴よりはなんぼかましですね。

330:timer
07/06/22 21:34:32
具体的な例ではなくて申し訳ないのですが、実行したい関数を数秒毎に繰り返し実行させる方法(ライブラリでもいいです)
が教えていただきたいのですが。。。お願いします!!


331:デフォルトの名無しさん
07/06/22 21:46:04
import time

def hoge():
 print 'hoge'

while(True):
 hoge()
 time.sleep(1)

332:デフォルトの名無しさん
07/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)

URLリンク(www.python.jp)
URLリンク(www.python.jp)

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

334:timer
07/06/25 01:38:28
>>331>>332
ありがとうございました!無事解決しました!!


335:デフォルトの名無しさん
07/06/26 02:06:18
age

336:デフォルトの名無しさん
07/07/13 18:44:07
保守あげ

337:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/23 20:46:10
最小値より大きいものを1つのリストにまとめたリストを返す関数を作って再帰
ただサイズが大きいと計算時間が厳しいと思う

339:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/02 18:07:35
oxtu.py

345:デフォルトの名無しさん
07/08/02 19:06:37
oxtu.py age

346:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/12 18:17:13
list(set(lst + newlst))

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

349:デフォルトの名無しさん
07/08/12 22:24:18
> data同士の順序比較は出来ない
> 実際には通し番号などは無い

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

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


351:デフォルトの名無しさん
07/08/12 22:28:39
あれ、>>346見たら
> インデックスに飛びは無く

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

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

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

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

354:デフォルトの名無しさん
07/08/13 08:34:13
>>353
エントリ型って何?

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

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

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

357:デフォルトの名無しさん
07/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]を求めたいのですがどのように書けばよろしいでしょうか。
アドバイスお掩蓋します。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch