1 :
デフォルトの名無しさん :
2007/04/09(月) 04:14:41
♪基本的には
>>1 乙だけど
♪時と場合で移り気なの
おっ、Pythonスレ。
おっPython
ところで、まとめwikiなんだけど、htmlとかtxtとかファイルそのものをアップできるようにしてほしい。 昔のログとか既に繋がってないので。
♪
>>1 にはニコニコして
♪そうでない人もそれなりに
なんだ、新キャラの登場か?
10 :
デフォルトの名無しさん :2007/04/09(月) 23:50:43
こんな過疎板にこんなキャラ立ちした奴ぁ突然こねぇよ 前スレ荒らしてた彼が 「ボク、心入れ換えるから、 これからも仲良くしてね?」 って泣き入れてるんだろうよ アイツ友達居ない奴だから(w
なんだ豆腐か。
13 :
3 :2007/04/10(火) 01:06:35
>>7 古いやつは誰かがアップしてあるみたいだけど
docutilsをライブラリとして使う方法を探しています。
s = """
* foo
* bar
* baz
"""
html = rst2html(s)
print html,
としたら
<ul>
<li>foo</li>
<li>bar</li>
<li>baz</li>
</ul>
に変換されるようにしたいんです。
http://docutils.sourceforge.net/ をみてもいまいち分からないのですが、アドバイスお願いします。
import docutils.core src = """\ * foo * bar * baz """ settings = { "stylesheet": "", "stylesheet_path": None, } print docutils.core.publish_string(src, writer_name='html', settings_overrides=settings)
1. docutilsをライブラリとして使う、ねえ。まず rst2html.py が何してるか見てみますか。
2. docutils.core.publish_cmdline() とゆー関数を呼んでるなあ。どういう関数かな。(site-packages/docutils/core.py を見る)
3. publish_なんちゃら という関数がいっぱいあるなあ。お、publish_string とゆー関数もあるなあ。
4. 使い方がよく分からないから docutils.core.publish_string でググってみよう。(用例が見つかる)
5. publish_string にはたくさん引数があるなあ。writer_name は rst2html.py で指定されてるのと同じ値を渡してみよう。
6. スタイルシートファイルが無いって怒られるなあ。デフォルトの値だとマズいんだろうなあ。
7. settings_overrides とゆー引数の値にテキトーな辞書を指定すればデフォルトを上書き指定できるんだろうなあ。
8. rst2html.py のコマンドラインオプションに --stylesheet-path とゆーのがあるから "stylesheet_path" を辞書のキーにしてみよう。(ビンゴ!)
9. とりあえずスタイルシートファイルは要らないなあ。値は None にしてみよう。
というような調子で試行錯誤した結果が
>>17 のコード。
要約すると「ソース嫁」「ググれ」。
> 要約すると「ソース嫁」「ググれ」。 それは、教える能力がないということの証明ですよね。 馬鹿も休み休みお願いします。
シャケ━━━━Σ゜lllllE━━━━━!!
馬鹿の相手をしてると馬鹿が感染ることがあるので注意しなければなりませんね
ま、俺様の教育能力をみたかったら金払ってもらわないとな
お金なら払いますからそれだけは勘弁してください
学習方法を教わった方が応用が効くのだよ。 基本的なことすら出来ないのは問題外。
どっかのブラウザスレにも前いたよな…
pythonをシェアウェアに組み込みたい場合って、LISENCE.TXT とか添付しないといけないの? 標準ライブラリの構成とか変えてもいいの?ライブラリから使わないファイルを削除して、***.py を全部 ***.pyc にして配布とか。
2.5.1 age
RC1じゃん。
33 :
デフォルトの名無しさん :2007/04/12(木) 01:04:46
普通の変数と辞書ってスコープに関するルール何か違います? 具体的には、以下のような動作をする理由というか、 どういう仕様なのだと理解すればよいのか、どなたか教えてください。 Python 2.4.1 (#1, May 27 2005, 18:02:40) [GCC 3.3.3 (cygwin special)] on cygwin Type "help", "copyright", "credits" or "license" for more information. >>> v = None >>> d = {} >>> def func_v(): ... v = "var" ... >>> def func_d(): ... d['key'] = 'dict' ... >>> func_v() >>> func_d() >>> print v None ← 関数内で設定した値は反映されない。 >>> print d {'key': 'dict'} ← 関数内で設定した値が参照できる。 >>>
>>33 辞書だからとかではなく、変数自体への代入があるかどうかでスコープが決まる。
func_v の中で v は代入の対象になっているから v はローカル
func_d の中で d は代入の対象になっていない(*1)から d はグローバル
(*1) 代入の対象になっているのは d ではなく d に入っている辞書の中身
>>15 普通に出来ましたね。あと、wikiのソースに{{attach}}というのを書くとうぷ用フォームが出来るので
そこからも投稿可能だった、・・
そんなにたくさん養えない。
なんだか怖い...
下柳...
>>> def a(a): x=float(a) print(x) >>> a(5/3) 1.0 floatつかっても整数になってしまいます、 これはどうやれば解決しますか教えてください。
お前アホやろ才能ないなあ
>>> def foo(a): ... print a ... >>> foo(5/3) 1 >>> 5/3 1 >>> float(5/3) 1.0 >>> float(5) / 3 1.6666666666666667
>42 a(5/3.0) あるいは from __future__ import division def a(a): a(5/3)
46 :
45 :2007/04/12(木) 22:54:56
途中書き込みしてしまった def a(a): の所は別に重要でないので適当に補完してくれ
from __future__ import divisionが求めていたものです ありがとうございました
とりあえず
>>42 に教えるべきことは5/3==1ってことだけだろ。
あと、1.0は整数ではなくfloat
個人的には3/3==1なきがする
In [1]: 5/3 Out[1]: 1 In [2]: 5//3 Out[2]: 1 In [3]: 5.0/3 Out[3]: 1.6666666666666667 In [4]: 5/3.0 Out[4]: 1.6666666666666667 In [5]: 5.0//3 Out[5]: 1.0 In [6]: 5//3.0 Out[6]: 1.0
なんだ豆腐の自演か。
>>50 整数は環だから割り算など定義されていない、ということなんじゃないかと、
54 :
33 :2007/04/13(金) 01:52:27
float(5)/float(3) ということか
かっこの中を先に計算する決まり、って学校で習うだろ
57 :
デフォルトの名無しさん :2007/04/13(金) 10:42:25
何が悪いのかまったくわかりません>.<b ボタン押したらラベルを変化させたいと思いますが, なにかアドバイスください from Tkinter import * class App(Frame) : def __init__(self, master = None) : Frame.__init__(self, master) self.init() self.pack() self.labelStr = "hi!" def btn1func(self) : self.labelStr = "btn1" def btn2func(self) : self.labelStr = "btn2" def init(self) : btn1 = Button(self, text = "btn1", command=self.btn1func()) btn2 = Button(self, text = "btn2", command=self.btn2func()) lbl = Label(self, text = self.labelStr) btn1.pack() btn2.pack() lbl.pack() btn3 = Button(self, text = "click here for exit", command=sys.exit) btn3.pack() app = App() app.mainloop()
だから才能ないんだって。 出来るヤツは聞くまでもなくいろいろ試すし、 自己解決しながら力を付けてゆくものなんだよ。
本当に才能あったらプログラミングなんてしてないよ
と,豆腐が言ってます.
理想や仮定の話ばっかりで、目の前の現実の問題に対応できないヤツらだな
豆腐はなぜ2ちゃんに執着するか?
豆腐だから。
豆腐、いちいちリンクするなよ.
豆腐が変なコテつけて暴れているアフォスレを紹介しただけだ
スレ違いだから 変なのはすべてスルーな
Tkってやってる人少ないのかな
Pythonスレ認定キチガイ (1) ZOPE関係者 (2) 豆腐
Pythonスレ認定キチガイ
(1) ZOPE関係者
(2) 豆腐
(3)
>>71
listやarrayを作成するときに、サイズを指定することはできますか。 画像処理で大きなarrayを使いたいのですが、サイズが分かっているときは 生成時に指定した方が実行効率がいいと思うので。
画像処理とかだったら array より Numeric とか numpy じゃないの? Numeric.zeros( (100,100), typecode=Numeric.Float ) list は論外ということで
>>74 使っているライブラリがarrayを使っているので。
キチガイには常人がキチガイに見えるらしいよね.
2chの世界ではガイキチが常人ですw
と、キチガイが言っています。
>>73 import itertools, array
print array.array('i', itertools.repeat(0, 5))
大人だとタイピングが厳しそうだ・・・
デモというか、誰かが持ってきたOLPCを廊下でちょっと触ってる図のような気が・・・
Python以前に教育用言語ABCの開発をやっていたし、 興味がある分野なんじゃない?
85 :
73 :2007/04/14(土) 08:34:16
>>80 ありがとうございます。
でもこれって初期値を指定しているのであって、arrayのサイズを指定しているわけではないですよね。
求めているものとはちょっと違うようです。
>85 節穴?
>73 arrayのサイズを指定すれば効率がいいってのは勘違いだから気にするな。
>>57 StringVar() を使うとほぼ希望通りのことができる。
もちろん
>>70 さんの指摘した方法でもOK。
あと、書き方も俺の好みに合わせてちょっと変えてみた。参考までに。
from Tkinter import *
class App(Frame) :
def __init__(self, master = None) :
Frame.__init__(self, master)
self.init()
self.pack()
self.labelStr.set("hi!")
def btn1func(self) :
self.labelStr.set("btn1")
def btn2func(self) :
self.labelStr.set("btn2")
def init(self) :
Button(self, text="btn1", command=self.btn1func).pack()
Button(self, text="btn2", command=self.btn2func).pack()
self.labelStr = StringVar()
Label(self, textvariable = self.labelStr).pack()
Button(self, text = "click here for exit", command=self.quit).pack()
App().mainloop()
>>82 guido は sugar のメーリングリストにも以前から何回か登場してるよ。
sugar: olpc の gui シェル
16進数の文字列をパースして10進数のintに変換するライブラリがあったら紹介してください。
質問者のレベルに合わせてやれよ。 >>> int('ABCDEF', 16) 11259375
>>93 ありがとうございました。int()に第2引数を渡せるんですね。
初心者質問への対応は得意なんですね。
dictにはget(key, value)という大変便利なメソッドがあります。 dct = { 'foo':1, 'bar':2 } dct.get('baz', None) #=> None 同じものがlistにないでしょうか。 lst = [1,2,3] i = 4 lst.get(i, None) #=> None 今は def getvalue(lst, i, value): if 0 <= i < len(lst): return lst[i] else: return value という関数を定義しているのですが、標準でそういう関数があれば教えてください。
『みんなのPython』 という本を持っている人にお聞きしたいのですが、 (1) p.266 下から 4 行目の「インスタンスを呼び出すとき」は、 「メソッドを呼び出すとき」のまちがいだと思うのですが、どう思われますか? (2) p.306-307 リスト1:strdict.py の 18 行目はインデントがないと エラーになりませんか? パソコン始めたばかりでプログラムの経験が無いため、 見当違いなことを言ってるかもしれませんが、 間違ってたらどうぞ叩いてください m(_ _)m
99 :
97 :2007/04/16(月) 14:06:44
すいません、初版第1刷です。 正誤表に載ってなかったもので…。
>>97 初版第2刷
(1)は多分そう。俺のでも直ってない
(2)は少なくとも俺のでは書いてある通りで正しく動いた気がする。if not〜〜〜と同じ深さ
正誤表に載ってないとこでも結構間違いあった気がするからそんなに気にしないでもいいんじゃね?
そんな間違い多いのか 買おうと思ったけど止めた
>>97 初版1刷。
(1)はご指摘の通り。
(2)はもし
if not isinstance(key, str):
raise ValueError('Key must be str or unicode.')
dict.__setitem__(sekf, key, value)
だったらどういうことになるか考えてみるといいよ。
みんPyは間違いや正確さに欠ける記述も多いから
読み捨てぐらいの気分で取り組むのが吉かと。
ああtypo。 dict.__setitem__(self, key, value)
プログラミングの本ってどうして誤植多いんだろうね
編集者がわかってないからチェックできないんじゃないか?w
誤植は移植のときに間違える場合だから 初めから間違ってたときは誤植じゃないだろ
誤植というのは植字(死語に近いけど)のときに間違えるという意味。 移植のときってなんだよ。w
>>96 >>> 4 in lst
>>> False
とかじゃ駄目なの?
>>108 i = 4
i in lst
は意味違いませんか?
欲しいのは
if 0 <= i < len(lst): return lst[i]
else: return value
または
lst[i] if 0 <= i < len(lst) else value
です。
>>96 > 標準でそういう関数があれば教えてください。
ない。
>103 「しっぱい」だな(w
>>111-112 どうもありがとうございます。標準では存在しないことがわかったので、安心して自作の関数を使うことにします。
["foo","bar",foo"]というリストがあったとして {1:'foo', 2,:'bar'}というようにそのリスト内の重複を考慮した上で、重複しない辞書を作成したい場合はどうすればよいのでしょうか?
>>> from sets import Set >>> dict(enumerate(Set(["foo", "bar", "foo"]))) {0: 'foo', 1: 'bar'} >>>
組み込み型のset使ったほうが
>>117-118 ありがとうございます。
集合型を入れ子にするにはどうすればよいのでしょう?
集合型の要素に集合型をもってきて木構造を作成したいのです。
120 :
97 :2007/04/17(火) 07:19:39
>>102 ありがとうございました。やっぱりインデントが必要なんですね。
辞書型を継承した、文字列だけをキーに取るクラスが作れました。
今のところこの本だけしか読んでないので、ちょっと不安になりました…。
読み終わったら、次は動物が表紙のシリーズの本も探して読んでみます。
121 :
102 :2007/04/17(火) 09:47:57
ええと、みんPy初版1刷に書いてある通りでOKです。 勘違いさせちゃってすいません。 仮にインデントありだと、 >>> d = StrDict() >>> d[1] = 'hoge' # ValueError例外発生 >>> d['1'] = 'piyo' # 例外発生せず 一見するとうまくいってますが、 >>> d['1'] でKeyError例外が発生します。 文字列以外をキーとして受け取ったときにはValueError例外を発生させ、 文字列をキーとして受け取ったときにはキーの文字列と値を受け取り 何もしないで捨てちゃってますから。 あと、インデントにタブと半角スペースを混用すると挙動がおかしくなるかもです。
>>102 キチガイには常人がキチガイに見えるらしいよ。
なんだか雰囲気の悪いスレになったなおい
近くのスレが荒れてるとそこから人が流れてくるからね・・・ 放置するしかない
放っておきゃそのうち直る。 こういうのは景気変動みたいに波があるんだよ。
そうだね.キチガイがぜんぶ悪いよね.
setup.pyやeasy_installを使ってインストールしたライブラリを アンインストールするには、site-packagesの中のファイルや ディレクトリを手動で削除するしかないのでしょうか?
>>128 setup.py について:
Windows の場合は setup.py bdist_wininst
RPM 系の Linux の場合は setup.py bdist_rpm
でインストーラ(バイナリパッケージ)を作れば
それぞれ OS 固有のインストール・アンインストール機能が利用できる。
フツーに setup.py install しちゃったものについては
手動で消すしかないと思われ。
>>119 集合を入れ子にするためには、普通のsetは使えなくて、frozensetというものを使わないと
できない。
>>>s=frozenset
>>>s()
frozenset([])
>>>s([s()])
frozenset([frozenset([])])
>>>s([s(),s([s()]))
frozenset([frozenset([frozenset()]), frozenset([])])
そうだね。 そもそも誰も見ていなさそうなソース集は必要なのだろうか?
おまえには必要ないだけ。
{ 'kitty guy' : '猫男' }
>>132 あの分類(初心者〜上級者とか)だと使い物にならないと思う。
もっと、何がしたい時みたいなレシピ集的な編集にしていけば良くなってくと思う・・
>>131 >#generator式を使う
>print sum(x for x in range(1,51))
無駄に冗長なコード書く必要なくね?
おまえ「generator式」言いたかっただけちゃうんかと
おまけにsumとかいう変数定義してグローバル汚染してるぢゃん(www ナニコレ、バカジャネエノ(wwwwwww >>> sum = 1 >>> sum(range(1, 51)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not callable
139 :
136 :2007/04/18(水) 17:39:42
>>137 いや、それ俺だわw
個人的に数列の和の一番普通な求め方はgenerator式じゃないかと思うので、・・
sumの指摘サンクスw
wikiなんだから直せばいいんじゃね?
>>136 あれはレシピじゃなくて、初心者〜中級者がPythonテクニックを磨くための問題を
出し合おうって話から始まったはず。
138は何を言っているの? 説明きぼんぬ。
(wwwwwww ってのはどの辺で使われてるんだ?
145 :
136 :2007/04/18(水) 17:49:19
>>141 なんスレぐらい前の話?
もう、最終更新がいつか分からないくらい前っぽい感じなので、方針転換してもいいんじゃないかなと、・・・
146 :
136 :2007/04/18(水) 17:51:55
>>143 履歴参照、(sumに代入するようなコードになってた
>>143 考えるんじゃない、感じるんだ!
海馬の1cm奥に意識を集中しろ。。。!!!
>>> sum(range(1, 51))
1275
>>> sum=1
>>> sum(range(1, 51))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>>
148 :
136 :2007/04/18(水) 17:54:15
あ、そうか、sum(range(1,51))でええやんていうクレームか
>>137 、・・俺超天然w
つーか、ここで文句言わないで、直接wikiに反映させてくれw
>>145 雑談ページに
問題集とか難易度順とかに分かる人が分けて欲しい - nanasisan (2005年11月28日 15時18分44秒)
難易度は分からんが適当に分けてみた。問題も追加した(一部の表記変更) - 名無しさん (2005年11月29日 00時32分09秒)
ってあるから、それ以前だな。
wikiだから分類分けは勝手にやり直していいんじゃね?
150 :
131 :2007/04/18(水) 18:02:50
おお、回答が更新されてる!すごい。 最大公約数の、再帰関数っていうのは思いつかなかった…。 (たぶん常識なんだろうなぁ。数学系は苦手だぁ…。) パスワードとかトリップ作るのはおもしろそう!
151 :
136 :2007/04/18(水) 18:03:50
>>149 まあ、かといってぱっと新たな分類に分けられるわけじゃないので、まあ、おいおい
思いつき次第・・
このレベルではかえって迷惑という気も(w
なんか初心者臭い流れになってきたな。みんpy野郎のせいか? 頼むから宿題レベルはどこかよそでやってくれ。スレ汚すな。
初心者質問スレがないんだから レベルはどうしようもないだろ
Wikiなんかに書かないでブログに書けば、だれか添削してくれるんじゃね?
159 :
136 :2007/04/18(水) 18:29:47
>>152 とりあえずあなたの使えるライブラリの紹介ページplz
たしかにすげー
そういや、どこか組み込み関数か、リストか辞書のメソッドあたりのサンプルスクリプトで そのままコピペして使ったらちょっとしたtypoでエラーが出た所あったぞ・・・
>>162 報告しろ
それか、お前が中の人になって直せ
ドキュメント翻訳は勉強になるぞ
>>163 ちゃんとしたドキュメントが無い分野のハウツーを開拓するのでせいいっぱいだ
いつも命令口調のコイツって、やっぱアイツ?
>>165 そう、君の頭の中に住むアイツだよ(wwww
キチガイはスルー
165の頭の中。 1) オレ 2) アイツ 3) 脳内妹 4) 時々オカン
明日使えるトリビアをありがとう
関数の引数リストが間違ってる部分があった気がするが思い出せない
おまいら細かいこと気にしすぎ。見りゃ分かるだろ。 コピペするだけのゆとりか。
>>172 見るだけでスペルミスや引数間違いを発見するスーパーハカー登場!!
>>173 他人の間違いを指摘しながら自分が間違っている低脳よりマシなのだから騒ぐな
いや、まじめな話 labmda が lambda の typo だってのは明らかじゃね?
そう そして,細かいことばかり気になる奴に限って 現場で役に立たないことも明らかかつ一般的なな事実
typo厨うぜえ
あんまり細かいこと気にしないプログラマも困るけどな。w バランスが肝心だね。
「チマっと」
>>160 2.5対応はまだまだですかね?
それとも必要無い?
>179 DB関係は特定DB用じゃなくORマッパーなるものを介して ある程度汎用につくってそれを PostgreSQLなりMySQLなりに つなぐものらしい SQLobject とかいろいろあるらしい 詳しくは次の人↓
2.5.1 ktkr
日本語変換ライブラリにはいくつかあるけど、 pykfのsplitを便利に使ってたから再度公開してください
わかりました。公開します。
どんなやりとりだよw
windows ユーザですが python 2.5 と 2.5.1 を共存させつつ、 easy_install でインストールしたやつを共有する方法ってありますか?
今からPython始めようと思って探したら
ttp://www.python.jp/Zope/download ってページ見つけたんだけど、
・Python標準リリース
・日本語環境用インストーラ(Win32)
ってどっちがオススメ?(ちなみにWinXP SP2に入れる)
上はバージョン2.5みたいだし
下はバージョン2.3って書いてあるけど日本語ドキュメント添付でSJIS・日本語ファイル名対応って書いてあるし。
それとも、もっといいトコがあるのかしら。
ふつうに2.5
最新は2.51 2.5には対応してないのもあったりするけど 普通にpythonの勉強してみようってことならとりあえず最新でいいんじゃね?
$python -c の使い方教えてくれ。
解決した
よかったね
>>python -c これってワンライナーしか無理?
200 :
191 :2007/04/22(日) 01:37:15
>192-193 日本語環境の方が安心なんじゃ…?と思って訊きました。 とりあえず2.5入れてみます。 ありがとうございました。
ツーライナーでもスリーライナーでもいけるよ。
おーなるほど、単にクオートを閉じなければいいのか・・・
2.5にしたらある特定のpythonのpyファイルからファイル名が使われてる みたいなエラーがでて読み取れなくなるような 状態になったから2.4にもどしたよ
pythonで動画(mpgに変換可能)を再生しつつ、その上で簡単なアニメーションを動かすには どんなライブラリが良いでしょうか? 開発はwindows上です。 アニメは単に動画上の物体をトレースするマーキングみたいなもので出来れば、動画のランダム再生で シンクロできるようにしたいと思っています。
そんなことも自分で調べられない奴はやめた方がいいよ
>>204 動画関連でこのスレが盛り上がったためしがないので、多分知ってる人は誰も見てない希ガス
次のようなテーブル table1 があったとして、 key val ---------- A 1 A 2 B 1 B 3 B 4 C 1 C 3 これから { 'A': [1, 2], 'B': [1, 3, 4], 'C': [1, 3] } というdictをつくりたいんですが、一番スマートな方法はどのようになりますか。 今は次のようにしていますが、なんかもっといい方法がないかと思っています。 import MySQLdb conn = MySQLdb.connect() curosr = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) cursor.execute("select key, val from table1") lst = cursor.fetchall() table = {} for dct in lst: key, val = dct['key'], dct['val'] values = table.get(key) if values is None: table[key] = values = [] values.append(val)
>>199 事実上1行のみ。;使えば多少は回避できるけど。
PyOneなんて半ばジョークのラッパースクリプトがあるが、
これ使うレベルのものになったら素直にファイルに書いた方がいいと思う。
file()とopen()って何が違うん
名前
>>207 少し短くはした。
>>> lst = ({'val': 1, 'key': 'A'}, {'val': 3, 'key': 'A'}, {'val': 2, 'key': 'B'})
>>> table = {}
>>> for dct in lst:
... key,val = dct['key'],dct['val']
... if not key in table.keys():
... table[key] = []
... table[key].append(val)
...
>>> table
{'A': [1, 3], 'B': [2]}
インデント修正。 >>> for dct in lst: ... key,val = dct['key'],dct['val'] ... if not key in table.keys(): ... table[key] = [] ... table[key].append(val)
>>207 おれはこんなユーティリティ関数でどうにかしてる
self 使うのは癖
>>> def frompairs(sequence, multicast = False):
... self = {}
... for k, v in sequence:
... if multicast:
... self[k] = self.get(k, []) + [v, ]
... else:
... self[k] = v
... return self
>>> file == open False
python2.5だか3000だかでは、 hogedict[k].append(v) if k in hogedict else hogedict[k] = [v] って書けるようになるの?
217 :
デフォルトの名無しさん :2007/04/22(日) 18:26:04
以下のhgというスクリプトをコマンドプロンプトで単に「hg」と入力するだけで起動させるにはどうすればいいですか? hg --------- #!C:\applications\Python25\python.exe from mercurial import commands commands.run() ---------
>>213 ∀key∀table∈dict((key in table.keys()) == (key in table))
>>207 table = {}
cur1 = conn.cursor()
cur1.execute("SELECT key FROM table1")
for key, in cur1.fetchall():
cur2 = conn.cursor()
cur2.execute("SELECT val FROM table1 WHERE key = '%s'" % key)
table[key] = [x for x, in cur2.fetchall()]
sqliteでしか試してないんで、動かなかったらごめん
>>216 ... else hogedict.__setitem__(k,[v])なら可能だけど明らかにspaghetti
ラムダとかコンプリヘンションって何のためにあるの? 読みにくくなってメリットないと思うけど。
つ 夢
>>223 読みにくくなるときは使わなければいいんですよ
コンプリヘンションていうのは数学で言う、関数の像になってて、それが分かると読みやすいことこの上ない。
要は単なるリテラル表現でしょ。別に特別な物じゃない。
wikiの問題集をみて思った事、問題と答えが一緒に書いてあるのって変 問題と答えを別けた方がいいような気がする。
問いを小項目にして、outlineを付けてみた。こんな感じでどう?
女がでているからとかいう理由じゃないが 表紙で選ぶなら 実践Python〜文字列操作からWebアプリケーション開発まで を買うな
表紙で選ぶなよw
鼠や蛇や馬に比べれば女のほうが確かにマシだな
俺はヘビの方が萌える
メガネという点も+だな
235 :
デフォルトの名無しさん :2007/04/22(日) 20:13:06
おしえてください! python -m CGIHTTPServe を実行したら止まらなくなっちゃいました>< 止め方を教えてください
>>207 setdefault は?
>>> lst = [("A", 1),("A", 2),("B", 1),("B", 3),("B", 4),("C", 1),("C", 3),]
>>> table = {}
>>> for k, v in lst:
... table.setdefault(k, []).append(v)
>>> table
{'A': [1, 2], 'C': [1, 3], 'B': [1, 3, 4]}
>235 コマンドプロンプト閉じる
現場で役に立たなそうな奴ばっかりだな
239 :
238 :2007/04/22(日) 22:03:38
みんなごめんね☆ 何か寂しくなっちゃって全然関係ないこと書き込みしちゃいました。 反省したので明日ボウズにしてきます。 (;_;)
証拠写真うpれよ?w
なりすましや騙りはキチガイへの第一歩だから気をつけろ。 ゴールデンウィーク前だからって気を抜かず仕事しろよ。
242 :
241 :2007/04/22(日) 23:09:30
みんなごめんね☆ 何か寂しくなっちゃって全然関係ないこと書き込みしちゃいました。 自分の精神状態が不安なので、明日キチガイ病院に入院します。 (;_;)
>>204 pygameが良い気がする。
mpegを読めるはず(試したことは無いです)。
つまり hogedict[k] = hogedict[k]+[v] if k in hogedict else [v] とかなら書けるのかな。 なんか裏の処理(リストがappendではなく再生成?)で無駄が発生しそうな気がするけど。
>236 それイイ(・∀・)ね。
>>235 それ、結構最初はどきっとするんだけど
実はCtrl + Breakか何かで止められる。
…正確なキーを忘れてしまったがorz
248 :
デフォルトの名無しさん :2007/04/23(月) 02:10:33
ドキッ!!PythonだらけのCtrl+Alt+Del大会
>>207 >>> import itertools
>>> records
({'val': '1', 'key': 'A'}, {'val': '2', 'key': 'A'}, {'val': '1', 'key': 'B'}, {'val': '3', 'key': 'B'}, {'val': '4', 'key': 'B'}, {'val': '1', 'key': 'C'}, {'val': '3', 'key': 'C'})
>>> dict([(key, [v[1] for v in vals]) for key, vals in (itertools.groupby(sorted([(r['key'],r['val']) for r in records]),lambda x: x[0]))])
{'A': ['1', '2'], 'C': ['1', '3'], 'B': ['1', '3', '4']}
>>>
スマートかどうかの判断は任せるよ。
sortedが不要、itertools.groupbyの前の括弧が不要
もとのSQLでORDERED BYしない限りsortedは要るだろ。sortedなしでもうまくいくのは単なる幸運じゃないの?
reStructuredTextを使ってみたのですが、日本語文章で強調(strong)する方法がわかりません。 「あい **うえ** お」だと「あい <strong>うえ</strong> お」となることは確認したのですが、 これだと半角空白が必要なため、日本語文章では使えません。 みなさんどうしていますか。
>>252 あ、ごめ、そうだね。groupbyが思ってたのと違った(ぉぃ
255 :
207 :2007/04/23(月) 18:22:52
遅れましたが回答いただいた方ありがとうございます。
>>236 のsetdefaultがよさげなのでこれを使うことにします。
ありがとうございました。
257 :
253 :2007/04/23(月) 21:40:36
まじで?!
アッー!
月曜日なのに徹夜モード、どうするよ〜♪
>260 もってけ!! ぱいそん とんこつも忘れるなw
ぶっちゃけそれ系のブログからpythonの新ネタが∂とは思えない
>>261 ( =ω=.) ぅぅぅぅぅぅぅうぅぅぅぅぅぅううぅぅぅぅうううぅぅぅううううううぅぅうううぅうううううぅ
劇中でPythonネタやってくれないかなあw
ないだろ、常識的に考えて…… OPのあれがバカ歩きになってるくらいは期待したいが
それいいな。MADムービー作ってw
オタはRubyとかPerlとか使えって. キモいからPython使わなくていいよ.
何でプログラム書きってこういうヘンな人が多いんだろう。 ヘンだからなるのか、なったからヘンになったのか…。 どっちにしてもキモいキモい。頼むから机の上に人形とか置かないで。
Perlは作者がアニオタ。 Rubyは会長がオタ。
ていへんだていへんだ
なんでアニメの話だってわかるんだ?
仕事しろよアニオタ ヒキコモリなら深夜のアニメに備えて寝ろや(wwwww
なんでアニメの話だってわかるんだ? なんでアニメの話だってわかるんだ?
推理力
初心者相手に鍛えられたエスパー能力を こんなところで発揮しなくても
わからない方もいらっしゃるようなので
larry wallがアニオタだったらちょっと怖いんだけど・・・? autrijusのことかなぁ・・・
Larry WallはプログラミングPerlの日本語版の序文かなんかで アニメやら日本好きをアピールしてた気が・・・ って、とてもスレ違いだが
Larryがアニメ好きなのはよく知られた話 ラクダ本ではウテナとかるろうに剣心がお気に入りって言ってた 最近じゃあずまんがのちよちゃんかわいいとか言って小飼氏に黙殺されて(ry というわけでGuidoに親近感沸くようなエピソードないですか
いつになったらvs2005build版になるんだ どうせだったらvs6のままにしとけばいいのに。 extension作るのめんどくせー
>>281 いつだったか、「うる星やつら」のラムちゃんのTシャツ着て現れたこともあるって聞いたけど。
284 :
283 :2007/04/24(火) 20:33:30
ああすまん、残念ながらGuidoの話じゃなくて、俺のもLarryの話ねw
285 :
デフォルトの名無しさん :2007/04/24(火) 20:34:28
ソフトウェアの世界じゃアニオタなんて日常茶飯事 何いちいち驚いてるの?お前らだってアニオタなんだろ?
Guidoちゃんの面白エピソードまだ〜?
てか世間的には、プログラミングに耽溺する人生自体が、 アニメに耽溺するのと同じくらいヤヴァイからなぁ。 アニメは「誰だって観たことはある」ぶんだけまだフィーリングは理解されるが、 プログラミングは多くの人間にとって、根っこのところから正体不明だし、マッドな雰囲気あるからな。
浮いてるぞお前
ヲタは総力を挙げてGuido氏をアニメに染めてくれ
>>288 プログラマは浮いてるんだよ。俺は楽しいからいいけど。
こんな馬鹿ばっかのスレだったっけ?
高校生かなんかだろ
昭和生まれとかカッコ悪いしwww
・・・
気付けば平成19年か 宿題スレの質問者が全部平成生まれって時代がすぐに来るな
TKinterのライセンスってどこに書いてあるの? このモジュールを有償ソフトに組み込んでもいいかどうか知りたいんだけど。。。 Pythionに標準でついてくる以上、Pythonのライセンスが適用されるから、有償配布でもOKて考えていいのかな
from random import sample def bubblesort(data,datalength): SOEJI = datalength - 1 low = 1 high = SOEJI while low != (SOEJI-1): while high != (low+1): if data[high-1] > data[high]: w = data[high-1] data[high-1] = data[high] data[high] = w high -= 1 low += 1 return data datalength = 10 datarange = 99 data = sample(xrange(0,datarange),datalength) print "範囲0-",datarange,"の",datalength,"語を生成:\n",data,"ソート前" bubblesort(data,datalength) print data,"ソート後" ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 範囲0- 99 の 10 語を生成: [91, 8, 69, 78, 66, 16, 24, 0, 57, 60] ソート前 Traceback (most recent call last): File "python/04_bubblesort", line 25, in <module> bubblesort(data,datalength) File "python/04_bubblesort", line 13, in bubblesort if data[high-1] > data[high]: IndexError: list index out of range ↑もうのーみそスパークしそうですどうしてアウトオブレンジなのかヒントをくださいおねがいします!!!!パイソンは2.5.1です
取りあえず空白いれろや
とりあえず、highの値を追うと 9から単純にひとつづ減って -10になってエラーになる。
こういうつもりらしい。これはヒドイw from random import sample def bubblesort(data,datalength): SOEJI = datalength - 1 low = 1 high = SOEJI while low != (SOEJI-1): while high != (low+1): if data[high-1] > data[high]: w = data[high-1] data[high-1] = data[high] data[high] = w high -= 1 low += 1 return data datalength = 10 datarange = 99 data = sample(xrange(0,datarange),datalength) print "範囲0-",datarange,"の",datalength,"語を生成:\n",data,"ソート前" bubblesort(data,datalength) print data,"ソート後"
これは宿題か何かかなぁ
整理してみた。 def bubblesort(data): high = data.size()-1 for low in range(data.size()-2): while high > (low+1): if data[high-1] > data[high]: data[high], data[high-1] = data[high-1], data[high] high -= 1 return data 。。。。。。。。。。まあ、がんばれ
ポイントはhighを代入する場所が間違ってることなんだが、ところどころlow highの値の判定条件もズレてるっぽい。
def bubblesort(data):
n = len(data)
for low in range(n-1):
high = n - 1
while high > low:
if data[high-1] > data[high]:
data[high], data[high-1] = data[high-1], data[high]
high -= 1
return data
オリジナルのコードで言うとlow += 1の次の行にhigh = SOEJIを入れて、highの値を元に戻せば、たぶんoutofrangeは
起こらなくなるが、添え字がなんか怪しいので、多分端の辺りがソートできないと思う。
ところで、
>>304 のruby使いにはだまされた
>>303 宿題でもなきゃバブルソートなんてやらんわな
307 :
304 :2007/04/25(水) 02:57:48
あ、そういや配列サイズは array.size() じゃなくて len(array) か。失礼
添字が怪しい以前に、そもそも一回しかスキャンしてないから 雀の涙ぐらいの部分しかソートされない。。。。 バブルソートなら、スキャン中に一度でも入れ替えが発生したら もう一度最初からスキャンしなきゃ。 def sort(data): n = len(data) f = True while f==True: f = False for i in range(n-1): if data[i] > data[i+1]: data[i], data[i+1] = data[i+1], data[i] f = True return data
>>282 俺はもっぱら MinGW (GCC) で拡張モジュールを作ってる。
どの Python のバージョンでも MinGW は同じバージョンでいいから楽だよ。
ご存知の方がいたら教えてください。 CherryPyや、Colubridを使って、簡単なWebアプリケーションを作っています。 その中で、テンプレートファイルを格納したディレクトリの所在をうまく隠すにはどうすればいいか 考えていたら知恵熱がでてしまいました。とりあえず、今は、↓のように書いています。 <hoge.py> (略) lookup = TemplateLookup( directories=[os.path.join(os.path.join(os.path.dirname(__file__)), "template")], input_encoding='utf-8', output_encoding='utf-8') これを、「hoge.pyと同じディレクトリのtemplateという名前のディレクトリにテンプレート ファイルを格納する」という前提を設けた上で、例えば、以下のように書ければいいなと思っています。 <hoge.py> from template_loader import lookup (略) template = lookup.get_template("index.html") importしたモジュールの__file__の値がとれれば簡単にできそうなんですが、 そのようなロジックはどうすればできるのでしょうか? #perlのcallerのようなものがあればできるかなあと思って探してみたんですが、 #辿り着けませんでした。
313 :
311 :2007/04/25(水) 14:04:10
>>312 sys._getframe(1).f_globals["__file__"]でできました。
ありがとうございました。
>>313 そのコードがあるクラスからサブクラスを導出すると悲しくなるから気をつけて
当然フレームの位置が変わる
print u"\u306c\u308b\u307d"
これはすごいハッカーがあらわれましたよ。
print u"\uff1e\uff1e\uff13\uff11\uff15\u3000\u30ac\u30c3"
誰が買うんだろう。
だんだんVBっぽくなってきたな。w あれも入門書ばかりでちゃんとした本がない。
金目的でコペピしたような本ばっかりだからなぁ。
金目当てじゃなかったらPDFで配るだろwwwwwwwww
入門より上のレベルの本にどの程度需要があるのか掴み難いってのもあるのかな?
324 :
318 :2007/04/25(水) 21:16:09
あ、Pythonプログラミング入門も2.5に対応してるのかな? まあどっちでもいいか・・・
日本では、Java, C++ から逃亡し、Ruby でもついて行けず、Python に流れ着いた、という人が 99% だろう、という見込みがあるから、似たような入門書ばかりを出すのだと思うよ。あなたたちは残りの 1% だとしても、現実にはこの通りだから。
日本語でおk
TurboGearやら携帯関係じゃないスタンダードな和書なら 結局みんpy実pyローカスの、それとこれのどれがいいんだか
結局は初めてのPythonじゃね?
>>329 本で済ますならあのくらいのボリュームは読まないと駄目だね。
もちろんオンラインで済むという人もいるだろうけど、薄っぺらい入門書読んだ程度の
人は信用できないよ。(俺が信用しなくても特にどうということは無いだろうけどw)
俺は本より実際に動かして覚える だから python と打つだけで インタラクティブな環境が上がるのは嬉しい
くだらん本とか読むより、自分で頭ひねって手を動かして いろいろ作って公開して叩かれたほうがスキル上がると思う。
ライブラリのコードとドキュメントがあれば、もうおなかいっぱいです。 ‥‥‥新しい言語機能についてけなかったりするけど。
おれはPythonのコードを読むからドキュメントすら必要ありませんが何か?
入門の話題はつまらねーよー
スレタイが「お勉強」だからなあ かといって別スレ立てて閑古鳥だったらカナシス
「Python?ああ、海外で人気の、日本語に難のある…」 ↑まだこんなイメージ?
入門書もいいけど もっと実用的な問題を解く本もあっていいと思う あとPython Cookbook早く出して欲しい
でねえよバカ(ww
いい加減紙媒体じゃないと勉強できない癖を直した方がいいと思う
まあぶっちゃけこのスレで高評価を得るような本は一般的には無用だよな(wwwww
この期に及んで 「Pythonやるなら英語くらいできなくっちゃね」とか「おら英語は読めんずら」とか 誰か言うのを期待してますか
>>344 >Pythonやるなら英語くらいできなくっちゃね
これは真実だよな.
義務教育で教えてるんだから英語読めない日本人なんて少ないだろ
kuma-
>>346 話せないのはともかくとして、読めないってのはあり得ないよな。
てか、Pythonの公式ドキュメントの充実っぷりは異常。
Pythonの宿題スレはありますか?
あります
VC++でC++にPython2.5を組み込んでるんだけど、 pythonは標準インストーラでインストールしたままの状態なんだけどPyMarshal_系の関数の挙動があやしくない? PyMarshal_GetLongとか使うと 実行時にメモリ参照エラーが発生するんだど、 pythonのソースからmarshal.c を持って来て、 プロジェクトに直接取り込むとうまく動くんだよね
>> 353 Visual Studio 2005 でつ てゆかね、 いくつかの pyc ファイルを独自形式で1つのファイルに固めておいて、実行時にメモリ上に pyc を展開して、それをインポートさせたいのさ。 で、手順としては 1. とりあえず(自前のライブラリを用いて)バッファ (unsigned char 配列)上にpycバイナリを展開する 2. FILE* fp=tmpfile() で一時ファイルをつくり、そこにバッファをコピーする 3. 上記 fp を PyMarshal_ReadLongFromFile に食わせてマジックナンバーを読み取る 4. 残りのバイト列を PyMarshal_ReadLastObjectFromFile で読み取り、得られた PyObject を PyImport_ExecCodeModule でインポートしてやる (手順 2: ここで、メモリ上のバッファを直接 FILE ポインタに関連づけられたら一時ファイルをつくらなくてもいいんだけど。。。) (手順 3, 4: Pythonソースコードの run_pyc ナントカって関数からパクってきた) って感じでやってるんだけど、もちっと単純に処理できないだろうか。
PEP 302 - New Import Hooks を使った方が簡単なのではと想像。
python25.dll が msvcr71.dll、 exe 側が msvcr80.dll を使っている。 で exe で作った fp は msvcr80.dll が管理してるので msvcr71.dll (PyMarshal_ReadLongFromFile を通して) に渡すことは出来ない。
ああああああああああああああ
言われてみればその通りだああああ
情報サンクスorz
>>356
そういえば
>>355 みて思ったんだけど、
python25.msi とか python251.msi とかフルインストールしても
Tools/Freeze なんてフォルダできないよね?
ソースにはあったけど。
pyQtとwxPythonってどっちのがかんたん?
まったくおまえらと来たら。 pyQtとwxPythonの利点と欠点を3行以内でお願い。
wxPython: 使いやすい 分かりやすい 覚えやすい pyQt: 使いにくい 分かりにくい 覚えにくい
Tkinterが最強だよな。
pyQtの存在理由は?
同じように開発できる≠同じことができる
wxPython 関数名が大文字からはじまる pyQt 互換性 ライセンス 共通 WindowsとXで表示したときで微妙に違う マニュアルがPython用じゃなくC++ベース 気になる点
なんだ Flex の宣伝屋か
SilverLightの動向にも注目したいね。
俺は余計なデーモン上げるの嫌だからスタンドアローンアプリを作り続けるよ。 あと Python スレな。
んなこたない。 Webアプリは一般のWebブラウザのウィンドウ内でしか実行できないというだけでも限界があるだろ。 例えば、 ・フォルダ内の画像ファイルアイコンを複数選択してウィンドウにドラッグ&ドロップすれば画像データベースが作成される。 ・そのデータの一覧リストの各行をドラッグ&ドロップすることで簡単に順番が変更できる。 ・任意の大きさに拡大・縮小された画像が、スライダーの動きに合わせてリアルタイムに表示される。 こういうアプリがWebベースで簡単に作れるか?
>>378 20年くらい前は,マルチウインドウエンジンが
「余計なデーモン」以上の大物だったわけだが。
>>380 時代は変わったって事だね。
ウェブアプリがデスクトップアプリを駆逐する様な時代は
やってこないと思うけどね。
>>379 フォルダからのドラドロは無理だけど、それ以外はWebアプリでもできる.
「Webアプリがデスクトップアプリを駆逐する前に381が駆逐される」に100万タプル
そうかもしれないね。そんな事になったら目でピーナッツ噛むよ。
まあ、まともな形で実現したらいいなぁとは思う。
適当なアプリケーション作ったので公開して叩かれたいんだけど、 宣伝するのに適当なとこ教えてください。
>>388 ここで宣伝して叩かれればいいんでは。
メーリングリストなら python-ml-jp とか。
PyJUG のホームページに掲載されるニュースとして投稿するとか。
>>388 チラシの裏に書いて家の前にでも貼っとけ。
>>390 自分が作れないからってひがむなよwww
自分で「適当なアプリケーション」なんて言ってるものを宣伝されてもうざいだけだろ。 それとも謙遜なのか?
そんなことより早くコードを見せてくれ。野次馬根性が疼いて仕方がない。
>392 本人は「叩かれたい」らしいから仕方ないだろ。
fj.sources
ゴチャゴチャ言ってないでさっさと貼れ
Programming Pythonの洋書読んだひとっていいる?
はい
普通原書を読むだろ
ActivePythonって何ですか?
>>191 のサイトには載ってないようですが。
>>401 日本語とかあり得ないよな。糞訳ばっかだし。
Python.NET
>>405 かろうじてwshに喰わせられるってトコだけは分かりました。
追加質問で申し訳ないのですが、過去ログも含めほとんど話題に出ないという事は、
皆さんwshからは利用されていないという事なんでしょうか?
うんそうだね
違うよ、ウソはいけないよ
wshのスレでは結構話題に(ry
Pythonで.htaを使ってアプリ作ったことある人いる? JavaScriptのせいでopenが使えなくて、何にも出来ないんだけど... 回避するテクニックってある?
あると思う?
延々調べ中・・・ Win32 Extensions2.5(pywin32-210.win32-py2.5.exe)を入れたらwshで使えるって事ですよね? コマンドラインで"cscript hoge.pys"とやると、PythonCOM Server policyがロードされてない とか何とかエラーになるんですが。
>>414 # test.pys
import os
WScript.Echo(os.name)
これを foobar.pys とでもして cscript foobar.pys してもエラーになる?
考えられるのはWSHのスクリプトエンジンとして
Python(+PyWin32)が登録されていないとか。
(ActivePythonの場合はインストール時に登録してくれる模様)
登録する方法についてはドキュメントを探すか、pyscript.py のソースを参照。
あと、IEのスクリプトエンジンとしてPythonを使う場合は(HTAも同様)
ttp://www.python.jp/Zope/whatsnew/Win32Problem という脆弱性があるので覚悟の上で使用すること。
(最新版のデフォルトでは使えないようになっているはず)
win32allとPyWin32って同じモノだよなぁ。でもビルドNoがえらく離れてるし・・・うーん
運用に覚悟が必要とまでなると、シロートの手に余るし、流石に少し腰が引けてきた。
>>415 仰るとおり何か登録作業が必要なんだと思います。もう少し悩んでみます。
| C:\Python25>cscript foobar.pys
| Microsoft (R) Windows Script Host Version 5.6
| Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
|
| pythoncom error: PythonCOM Server - The 'win32com.server.policy' module could no
| t be loaded.
| <type 'exceptions.ImportError'>: No module named win32com.server.policy
| pythoncom error: CPyFactory::CreateInstance failed to create instance. (80004005
| )
| CScript エラー: スクリプト "C:\Python25\foobar.pys" のスクリプト エンジン "Pytho
| n" が見つかりません。
そして敗北 orz おとなしくVBScriptかJScriptの資料を探してこよう。
python で統計処理(& 線形回帰)をしてて
http://www.nmr.mgh.harvard.edu/Neural_Systems_Group/gary/python/ を使ってます。
だいたいうまく動いているんですが、あるデータを処理するときに
File "./my-script.py", line 176, in calc
regress = stats.linregress( self.minx, self.miny )
File "/hoge/lib/python/stats.py", line 247, in __call__
return apply(self._dispatch[type(arg1)], (arg1,) + args, kw)
File "/hoge/lib/python/stats.py", line 935, in llinregress
z = 0.5*math.log((1.0+r+TINY)/(1.0-r+TINY))
ValueError: math domain error
というのを食らいます。
これってコードのバグっていうより多分 r が小さすぎるとか
そういうデータの性質に起因してるんですよね...きっと.
(大量のデータを食わせて数時間計算したあとの特定の場所で
食らっているので,どのようなデータが原因なのかは分かってません)
負の数の対数を取ったとかじゃね?
だいたいうまく計算して、だいたいこんな結論。
>>418 出る例外がわかってるんだから捕捉して
どのデータで発生したか表示すりゃいいんじゃないの?
import math
math.log(-1)で
>>418 と同じエラーがでたので、たぶん
>>419 が原因ぽ域がする・・・
rのオーダーがなにかでずれて1.0を超えたとかでは?
ところで、math.log(0)だとべつなエラーが出るのが奇妙
こういう注意書きがあった。
http://www.python.jp/doc/2.4/lib/module-math.html#foot20345 > 注意: math モジュールは、ほとんどが実行プラットフォームにおける C 言語の数学ライブラリ関数に
> 対する薄いラッパでできています。例外的な場合での挙動は、 C 言語標準ではおおさっぱにしか定義
> されておらず、さらに Python は数学関数におけるエラー報告機能の挙動をプラットフォームの C 実装
> から受け継いでいます。その結果として、エラーの際 (およびなんらかの引数がとにかく例外的であると
> 考えられる場合) に送出される特定の例外については、プラットフォーム間やリリースバージョン間を
> 通じて有意なものとなっていません。例えば、 math.log(0) が -Inf を返すか ValueError または
> OverflowError を送出するかは不定であり、 math.log(0) が OverflowError を送出する場合において
> math.log(0L) が ValueError を送出するときもあります。
話が変わるけど
>>423 の訳文、下の原文に対応する部分がちょっとおかしいね。
原文:As a result, the specific exceptions raised in error cases (and even whether some
arguments are considered to be exceptional at all) are not defined in any useful cross-platform
or cross-release way.
「そのため、エラーの際に具体的にどの例外が起きるか、さらにはある引数がそもそもエラーと
みなされるか否かという点さえも、プラットフォーム間やバージョン間で有用な形では定義されて
いません。」ぐらいに意訳するのがいいんジャマイカ。
>>422 log 0は-∞と定義できないこともないが、log -1はマジで定義されてないから
>421 try: でひっかけて print してみました。 特に変なデータではないのですが(len 100 の float 列2つ), とても直線度が高く,自乗回帰すると残渣とかが 非常に小さくなるようなデータでして 当該最小自乗回帰ルーチンの中では(結果として) log の中が負になっていました。 うーむ... 計算誤差のせいかな... あとで計算式を追ってみます...
>>>from cmath import log >>>log(-1) 3.1415926535897931j >>>from math import e >>>log(-e) (1+3.1415926535897931j)
虚数単位が j なところが工学っぽい
pythonスクリプトでKidを使いたいのですが、Shift_JISのxhtmlテンプレートが読み込めなくて困っています。(python2.5, Kid 0.9.2)
--- hoge.kid ---
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="ja" lang="ja"
xmlns:py="
http://purl.org/kid/ns# ">
<body>
<h1>日本語</h1>
</body>
</html>
--- hoge.py ---
import kid
kid.assume_encoding = 'shift-jis'
t = kid.Template(file='hoge.kid', encoding="shift-jis")
#=> xml.parsers.expat.ExpatError: not well-formed (invalid token)
s = open('hoge.kid').read().decode('shift-jis')
t = kid.Template(source=s, encoding="shift-jis")
#=> UnicodeEncodeError: 'ascii' codec can't encode characters in position 295-297: ordinal not in range(128)
s = open('hoge.kid').read().decode('shift-jis').encode('utf-8')
t = kid.Template(source=s, encoding="shift-jis")
#=> xml.parsers.expat.ExpatError: not well-formed (invalid token)
テンプレートである hoge.kid が shift-jis になっていることは確認しています。
どなたかお助けを。
最後の例の encoding は shift-jis ではなくて utf-8 でしょ。
それは「UTF-8で書けばちゃんと読むのに」という事だよね そもそもXMLでの必須はUTF-8とUTF-16だけで他はオプションだから実装が対応していないだけでは? encoding="Shift_JIS" の記述のままのファイルをutf-8に変換するだけではwell-formedになりようもないし
日本語でおk
クラス変数をクラス内部から参照するときは、self.__class__.hogeみたいな感じで見なきゃみられないの? class hoge(object): l=[] def printl(self): print l ##lにアクセスできない print self.__class__.l ##lにアクセスできる もう少し手軽にアクセスしたいが、どうしたらよい?
hoge.l
self.l
437 :
デフォルトの名無しさん :2007/05/05(土) 14:26:58
Tkinterのウィンドウの生成についてなのですが、 だいたいのサイトで「定石」として紹介されているコンストラクタの処理が今ひとつ釈然としません。Tkinterはまだ知ってから数週間なので、それもあるかもですけど... class App(Frame): def __init__(self, master = None): Frame.__init__(self, master) self.init() self.pack() def init(): #以下省略 app = App() app.mainloop() これで、なんでウィンドウをTk()などで生成していないのに窓が開くのでしょうか・・・ こちらの方は、なんとかこうにかどうにか、理解に至る、な感じがしないでもないのですが・・・ 何かしらのご教授をお願いします。
438 :
デフォルトの名無しさん :2007/05/05(土) 14:27:50
おねがいします 数学ライブラリーを全種類あげてください
math
scipy
2つでました あと何個見つかるでしょうか
numpy
>>437 ルートウィジェット(Tkインスタンス)の存在しないときに
Frameウィジェットを生成しようとすると、
それじゃ困るというのでTkinterが勝手にTk()を呼んでくれます。
明示的に root = Tk() としたほうが行儀がいいことは確かです。
447 :
デフォルトの名無しさん :2007/05/05(土) 22:55:41
>> 439 数学ライブラリーを全種類あげてください Enthought distribution を入れておけ。御前には使い切れない science 関係の package/module がインストールされる。 python 2.4 になってしまうが、大した問題ではないだろう。
許可も取らずにO'REILLYのロゴ使うわけもないだろうけど
キャッチアンドリリース
>>448 あのワシはLearning PHP5、
喰われてるヘビはProgramming Python
要するに合成
>>453 これはO'REILLYは許可してるのか?
そこのサイトで合成された画像を個人のサイトで勝手に使うのは許可されてるのか?
パロディに許可ってアホじゃね?
パロディか? 内容は真面目なプログラミングの話でネタやお笑いじゃないし 一見、そういう本が実在してる印象をうけるぞ。
まんまとだまされた
>>450 氏は必死のようだが、実際に販売して利益を上げなければ
商標法で訴えるのは難しいだろうな。せいぜいで不正競争防止法あたり。
そこまでORAは野暮じゃなかろう。
>458 ORAって書くとオラクルっぽいな
ORAORAですかー??
PythonでWindowsで動くGUIのアプリケーションを作るには ざっとどんな知識が必要ですか?
>>461 ざっとGUIツールキットの知識が必要。ぶっちゃけ、それ以外要らん。
とりあえずTkinterでもかじってみりん。
winのGUIアプリを作る方法を一から学ぶなら、Pythonは無いなーと思う
pythonでメガデモつくるとしたら、使えるライブラリー ありますか、映像と音楽と効果音などが必要と思いますが
>>469 日本におけるGoogleでの検索回数。
ちなみにカンマで区切ってキーワードを並べると比較できる。
ところで All Regions にすると 2005年10月あたりにグラフが一瞬跳ね上がってるだけど
なにかあったの?
でも haskel はちょっと違うかもしんない
pythonもrubyも普通の英単語と区別つかんからなぁ・・・
大船渡に何があるというのか
python programming,ruby programming でグーグルトレンドで検索するとアメリカ以外だと do not have enough search volume to show graphs. ってなって結果が表示できないっぽい どうもこんなかんじにトレンド先生は解釈されてるみたいぽ "python programming" "ruby programming"
JavaやPerlやPHPとの勝負を避けたいという気持ちは分かった。
いいかげんに Java を貶めるのはやめにしないか?
意味がわからん・・・
そこで我々は大船渡に調査に向うことにした
いつから java がscript言語になったん?
勝負厨、馬鹿っぽい
すいません、またみんpyなんですが、 初版第1刷 p.379-380 のリスト5の 15、18 行目の、 15: <th colspan="7">%d, %d</td> 18: <th>%s</td> は、 15: <th colspan="7">%d, %d</th> 18: <th>%s</th> ではありませんか?また、25 行目と 26 行目の間にも </tr> を出力する記述ががないと、<tr> との対応がとれ ないと思うのですが…。(HTML というものをよく知らない ので間違ってたらごめんなさい)
直接著者に教えてあげれば良いのではないか?
>>486 ></tr> を出力する記述ががないと、<tr> との対応がとれ
>ないと思うのですが…。(HTML というものをよく知らない
>ので間違ってたらごめんなさい)
XHTML ではなく HTML であるなら tr 要素の終了タグは省略可能
でも教科書なのにそんな非推奨な例文を出すやつはそれだけでダメ本確定だと思う
>>486 てか、 ど う で も よ く ね?
そのくらい空気読めば分かるだろ。HTMLも知らん
厨房が、鬼の首取ったようにいちいち指摘すんなヴォケ
普通に errata として出版者等に連絡してあげればいいじゃん
かわいそうなZope関係者が袋だたきにあっている件
どうでもいいことにこだわる人って、たいてい現場で役にたたないよね。 上司になったら最悪。誰からも慕われない、みんなに嫌われる。
>472 俺はPythonは緑のイメージがある
キモい、ウザい
Zope関係者は本当にウザいな(wwww
みんPyの著者としっPyの著者が熱い火花を散らすスレはここですか
>>469 著者がきてるのかどうかは知らないけど
たいていのばあい、みんPyたたきから始まるね〜
他の書籍もたたけば著者タソくるんじゃね?(w
>>489 どうでもよくはないと思う。確かに、表示上は問題ないし、単なるサンプルでpythonの本質とも
関係ないかもしれないけど、いまどきHTMLのタグ省略とかあり得ない。確信犯ならセンスを疑う。
キモーーーい!
>>499 単なるサンプルでpythonの本質とも関係ないならどうでも良いのでは?
HTMLの教科書じゃないんだし。
502 :
486 :2007/05/09(水) 15:55:52
なんかごめんなさい。出版社のページで問い合わせてみます。 ほんとう、どうでもいいこと書いてすいませんでした…。
俺は編集者もタコだと思うがな〜、校正ちゃんとやれよって感じだ。 でもタグの対応をいきなり間違えるなんて、校正しても直らない気もするwww プログラムでもドキュメントでも、初手からきちんとかけないやつは、ほんとダメだ。
「みんPy」の問題点はそんな些細な点にあるのではない
そうねえ、クラスをdefで定義するとか?
つうか本なんか買わんでえぇよ。 教科書はネットにあるだけで読みきれない。
IronPython 本もスグに分かる誤記は結構あるね 別に今のところハマるような問題はないけど (といってもまだ積んであるだけだからだけど...)
Pythonコンパイラってありますか?
そこで藤岡隊長が
インタプリンタ:interpreter × インタプリタ:interpreter ○ 逝ってくるしか orz
>511 普通は、pythonは言語であって、同時に pythonインタプリタ処理系がたまたま pythonと呼ばれているわけで。 JITコンパイラならpsycoとかあるけど、 多分求めているものはちょっと違うよね‥‥‥。
コンパイラがないのなら、Perlの代わりぐらいの用途にしか使えませんね
>>514 そうだね
JavaやC#の代わりくらいにしか使えないね
複数のプリンタを直接繋いで1ページのドキュメントを1/4ページづつ印字したりするわけだね。
>>471 大船渡におけるrubyとpythonの違いが圧倒的すぎてワロタwww
pythonistaにとって大船渡は完全にホームだなw
大船渡って何があるんだよ!?
>>497 そうそう.
んで,個人攻撃なんかを延々繰り返した上で
>>504 みたいに半端に投げ出していなくなる.
これの繰り返し.
キチガイとしか思えない.
一部の奴には正体がバレているみたいだけどこういう奴とはリアル世界でぜったいに関わりたくないよな〜.
一度インポートしたモジュールをプログラムを落とすことなく 再度インポートする方法ってありますか?
reload
>>332 プログラミングテクニックはそれで身に付くけどね。
でもそんなテクニックばかり上げても計算機科学の基礎ぐらいは知ってないとね。
パイソンは使う道具だから 道具は包丁と同じで料理を作っていくうちに 上手くなっていく理論だろ?
料理だって本買って頭から作って覚える人もいるが
>>332 みたいな奴に限って基本がおろそかで駄目コードを書いたりするわけだよ。
まあ、くだらん本を読まずにきっちりとした本を読めばOK
WRITE GREAT CODEでも読め
vol.2が出るとはおもわなんだ…
l = [1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz', 16, 17, 'Fizz', 19, 'Buzz', 'Fizz', 22, 23, 'Fizz', 'Buzz', 26, 'Fizz', 28, 29, 'FizzBuzz', 31, 32, 'Fizz', 34, 'Buzz', 'Fizz', 37, 38, 'Fizz', 'Buzz', 41, 'Fizz', 43, 44, 'FizzBuzz', 46, 47, 'Fizz', 49, 'Buzz', 'Fizz', 52, 53, 'Fizz', 'Buzz', 56, 'Fizz', 58, 59, 'FizzBuzz', 61, 62, 'Fizz', 64, 'Buzz', 'Fizz', 67, 68, 'Fizz', 'Buzz', 71, 'Fizz', 73, 74, 'FizzBuzz', 76, 77, 'Fizz', 79, 'Buzz', 'Fizz', 82, 83, 'Fizz', 'Buzz', 86, 'Fizz', 88, 89, 'FizzBuzz', 91, 92, 'Fizz', 94, 'Buzz', 'Fizz', 97, 98, 'Fizz', 'Buzz'] for i in l: print i
空気読めない奴が来たよコレ
整数のトリックは感心した。おれはああいうの全然考えられない。
>534 整数のトリックって何?
なんのことかサパーリorz
python -c "gen = lambda: range(1,101); print ' '.join(filter(lambda s: s, eval(str([(str(i),str(f).replace('True', 'Fizz'),str(b).replace('True', 'Buzz')) for i,f,b in zip(gen(), map(lambda x: x%3 == 0, (gen())),map(lambda x: x%5 == 0, gen()))]).replace('False', '').replace(')', '').replace('(', '')))).replace('Fizz Buzz', 'FizzBuzz')"
>>535 なんとなくカッコイイ言葉に踊らされているだけ
まともなPython使いなら5秒で思いつくようなトリックだよ
>>537 obfuscated認定
evalのダメな使い方の見本認定
俺もやってみた。122バイト。どうしたら半分以下になるのか見当もつかんw print"\n".join(p&q and"FizzBuzz"or p and"Fizz"or q and"Buzz"or r for p,q,r in[(n%3==2,n%5==4,`n+1`)for n in range(100)])
p&q�and"FizzBuzz"or�p�and"Fizz"or�q�and"Buzz"or�r を p*"Fizz"+q*Buzz" or r にすると大分減るな。
543 :
541 :2007/05/12(土) 01:59:31
>>> True*"Fizz" 'Fizz' >>> False*"Fizz" '' へぇー、知らんかった。1行野郎のためにあるような機能だなw
544 :
541 :2007/05/12(土) 02:04:04
あ、真理値を0と1で表していた頃の名残か。
こんなこと知らない奴もいるんだな。 Pythonはもうおしまいかもな。
>>>['Fizz','Buzz'][True] 'Buzz' >>>['Fizz','Buzz'][False] 'Fizz' おまえらのようなカボチャ頭にはこんなことも思いつかんのだろうアホどもめ.
・・・
役に立たないことばかり思いつく人っているよね
**そんなことを「思いつく」必要があるレベルの文化にショックを受けている**
それやったことあるわ・・ if 条件: X = 'Buzz' elif: X = 'Fizz' って書くのを短くしようと思ったんだよ
思考の範囲が広いのはいいことだよ 駄目な開発者ほど引き出しが少ない 逆ギレするような奴は人間としても最悪だ
>>550 elif:
invalid syntax
>>549 ただの「遊び」に「思いつく**必要がある**」なんて勝手に解釈する人がいるのはびっくりだ
典型的ないじめられっ子体質だな(wwww
>>555 あんまりいじめるなよ(w
また脳内の「アイツ」が出てきちゃうぞ(wwwww
>>546 残念ながらそれだと、'FizzBuzz'の場合にうまく対応できないので、余計長くなる。
>>542 のやり方をまじめにやれば、60前後ぐらいまではいくけど、そこから先が不明・・・
理解はできるが「思いつく」かどうかは微妙だな。 そもそも特に利点の無いことを思いつこうという発想が俺には無い。
俺の場合は、利点があるかどうかは思いついた後で考えるけどな
なんでこのスレは変な人が多いの?
人気言語だからさ!
563 :
デフォルトの名無しさん :2007/05/12(土) 03:43:15
for i in range(100):print i%3/2*"Fizz"+i%5/4*"Buzz"or-~i
564 :
541 :2007/05/12(土) 03:56:43
>>563 スゲー
or i+1 を or-~i として1バイト短くしてるわけだ。
こんな2の補数の使い方、初めて見た。
条件判定の書き換え方もスゴイ。
まさに奇想天外。
>>563 なるほど、そういう風に剰余判定すると括弧がいらなくなるんですね。
しかも、0-99で話が済むので、for文の方が早くなるというレア問題、・・・すごい盲点だ・・・w
d
Pythonなんか使ってる時点で負け組ってことに早く気付けよ。
そういう貴方は何言語を?
HSP
なでしこ
D言語
Mind
Don't mind
N88 DISK BASIC
タガログ語
ポルトガル語
むかし、PC98のROMにN88-BASICが入っていることを知らずに2万円でN88-BASIC買ってもらった覚えがある 損した
O.py
>>576 ROM-BASICじゃフロッピーが扱えないから、別に損でもないだろ。
セーブしようとしたら実はROM立ち上げだったときなんか泣く
>576 買ってもらったなら、損したわけでもないだろ。
>>581 別の物を買ってもらえる余地もあったわけだ
もしこの2万円の支出がなければ食卓がもっと潤ったかもしれないんだ
あー損した BASICと名の付く言語なんかもう一生つかうもんか
>582 月曜からVB.netの案件だからよろしく♪
>>583 マでもSEでもねーよ。
しがない大学教員だよ
楽そうでいいよな。
パイソンてゆとり言語かと思ってたけど、 高齢者向けボケ防止言語なんだね・・・ どうりで活気が無くて全く普及してないわけだ
Ruby!
20年非常勤やってます
Perl! Ruby! Python! dango dango dango dango...
何をやってるか全くわかってないが割り込み。 print open('answer.txt').read()
美味しいカレーの作り方を議論しているときに 「ココイチで買ってくれば一瞬じゃん」 とか言っているみたいものだな。
じゃんけんで人差し指だけ出して「バクダン」とか言うやつ。
>>591 管理人がそういう不正行為の名人みたいな人なので、
多分ちゃんと封じられてると思う
ところで、最近変な頭おかしそうな粘着書き込みがすっかりなくなってちょっとさみしい・・・
>563 はデザインパターンというものを理解していない! とか言えばいいでつか
いまいちだな
>595 そういうときは待ってちゃ駄目だ、探しにいくんだ。 けして引き寄せようと思っちゃいけない。
バッチコイに見えた
601 :
デフォルトの名無しさん :2007/05/17(木) 21:39:52
そろそろメタク(ry
いくら寂しいからってそんなもんに活気を求めるのはどうなの
Rubyなんて知らんから張っても読めん
pythonicに行くなら、こんな感じ? def fizzbuzz(n): for i in range(1, n+1): if i % 15 == 0: yield 'FizzBuzz' elif i % 5 == 0: yield 'Buzz' elif i % 3 == 0: yield 'Fizz' else: yield i for x in fizzbuzz(100): print x
606 :
603 :2007/05/18(金) 02:40:24
>>605 継続を使うと、ループ処理が、普通に関数を呼び出すようなかんじで
まとめることが出来て、とてもシンプルに書けるようになるんですね。。。
勉強になりますた。ありがd。
イテレータ
>>603 RubyはPerlからの仕様をひきずっていて、あるメソッドで実行時に最後に評価された値が
そのメソッドの戻り値になるのよん。
なもんで、return を書かないで済むケースは書かないことが多いみたい。
609 :
603 :2007/05/18(金) 03:44:28
>>608 なるほろーreturn省略できるのですね。φ(..)メモメモ
610 :
603 :2007/05/18(金) 03:53:19
イテレータとジェネレータの違いが、よく分らない俺ですよ?
おれおれも
ループの一番内側で2回yieldするようなのを想像するといいかも。
外部イテレータ=ジェネレータ
itertools
ジェネレータはyieldでもってイテレータをつくる関数のこと。 下の例だとgeneratorって関数がジェネレータで、実行して帰ってくるのが イテレータ。 def generator(): yield 1 yield 2 iterator = generator() for i in iterator: print i
ますます分からなくなった><
なんでやねんw
なんでだがー
イテレータ:仮想的なリスト ジェネレータ:イテレータを返す(yieldを使った特別な)関数
ガンダムに例えてくれないと分からないよ。 ファースト限定でよろしく。
イテレータ : ジェネレータの「いんすたんす」 みたいな理解でよいですか?
いいよ
駄目に決まってるだろうがボケカス死ね
昔は、ちゃんと __iter__ とか next といったメソッドをもったクラスを作らないと、 イタレータを作れなかった。 が、今は、yield文一つで、イタレータが作れるようになった。 これがジェネレータ…でいい?
いいよ
>>624 >昔は、ちゃんと __iter__ とか next といったメソッドをもったクラスを作らないと、
>イタレータを作れなかった。
この部分が大間違いチンカスもう来んな
>>627 itertoolsのチンゲでも煎じて飲んでおけこのホーケイ野郎
Pythonのジェネレータも理解できないゴミがいるんだな。 意味わからなくても使えるから、使っているうちに理解できるようになるだろうよ。
629みたいなやつは逆立ちしても無理じゃね?
いろんなげんご @ 人工言語世界
http://www.kmonos.net/alang/etc/ ここのICON言語とかの説明がわかりやすいかも、とか思ったり。
ところで
このICON言語、使ったことのある方、いらっしゃいますか?
テキスト処理用途の言語として Perl と 競合する部分もあった
ようなのですけれども。
× あったようなのですけれども ○ あったように思えるのですけれども 日本語は正確に orz
その前にスレはあってるのか
Pythonは入門用だからアメリカじゃ小学生でも使いこなしてるってのに、 おまいらときたら…。
間違ってんなら、「正しくはこうだ」と訂正も出せないレベルの低さに絶望 ののしってるだけじゃねーか
>>636 言語の壁はそれほどにも厚いって事ですかね。
母国語で入門しようとしたら、オライリー級に耐える支払能力が必要な訳で。
これが永久凍土の問題というやつですか?
日本Pythonユーザ会にあるPython 日本語環境用インストーラ(Win32)-2.3.4って9x系専用でいい? 2.4以降はunicode対応でオリジナルのままでもNT系Windowsなら問題ない?
>>633 スレ違いだがここにいるぞ。
Iconは中間言語で実行するように
なってたので、#! なスクリプトで使えなかったのが
大きいんじゃないかな。
あとPerlと違ってJIcon作る人がいなかった。
>#! なスクリプトで使えなかったのが 空気読めてない仕様だな、
>>640 イマイチわかんないんだけど、2.3.4Jは2kでも使えたから専用って事は無いと思う。
2.4以降はJ改造なしでも良いってだけで、OSは関係ないんじゃないかなー?
たぶん問題なく動くよ。
644 :
デフォルトの名無しさん :2007/05/21(月) 14:53:03
たぶん...としか答えられない人たちが集まるスレはここですか。
たぶん・・・
_、_ ( ,_ノ` ) r ヽ. __/ ┃)) __i | キュッキュッ / /ヽ,,⌒)___(,,ノ\ _、_ ( ,_ノ` ) | ̄ ̄ ̄ ̄ ̄ ̄| トン _(,,) メイビー (,,) / | |\
maybe means DO IT YOURSELF !!!
No Starch Pressのカバーっておもろいなw
>>648 >なんか表紙とかいいかんじだ
どういうセンスしてんだよ(www
No Starch Pressのカバーはどれも最高
中身もよかったりする。Write Great Codeとか
>>648 この本、一年ぐらい発売が伸び伸びになってるので
また延期になるかもしれない
あと同じところから出るRuby by Exampleは
本来Python by ... として出るはずだったいわくつきの本
>あと同じところから出るRuby by Exampleは >本来Python by ... として出るはずだったいわくつきの本 どんな大胆な変更だよ
たーけー
>>653 なんか、他に応用ができない中途半端な知識を覚えるだけのような気がする・・
普通にCGIとかTkinterとかでいいんじゃないかな
>>654 つーか内容古くね?
こういうのを高い金出して聞きに行く奴とかSIerは間違いなくクソだと思うので
地雷一覧として聴講者のリストを公開して欲しい
参加者は会社に行かされる人だけでしょ
>>660 リストラされたオヤジが補助金かなんかもらって受けるんじゃないかと想像
それだとほんとに悲しい講習会だな・・・
この手の講習会として特に高いとは思わないけど 「python 入門」というお題では内容も集まる人もイマイチだと思う... (python に絡んでやる気があったら逆に行かないだろ)
まとめ: モジックソはいまだに偉大(色んな意味で)
pythonはボケ防止のためにジジイがいじくる言語 若者はこんなの覚えてもちっとも役に立たんよ 代わりにruby勉強したほうがいい
どう違うんだ?
またzope関係者がファビョってますねw
Ruby知ってると前科者と疑われる時代になるかもだ
for Zombie in range(9999): print '@'*79
若者は体力があるうちにアセンブラとCを修めてほしい、とは思う。
誰もが下流に行くとは限らないんだよ
下流を目指すかどうかにかかわらず まともな開発者になりたいんなら アセンブラとCの知識は必要だよ
開発スタイルにもいろいろあるからね。 やはり、必要・不必要のレベルの話だと思う。
アセンブリ言語やれば、実行時間のコスト意識は養われるよ。
賢くなった気分にもなれる
inline assemblerで最適化ゴリゴリできるようになるには結構大変そうだけど、 どういう人がなれるの?
やる気のある人
アセンブリとかCを知らずにコスト意識を持っている奴はいるかも試練が そういうのは一握りの天才 凡人が天才に追いつこうと思ったら アセンブリとかCをやるのが近道の一つ
リソースのコスト意識も、高級言語にいく程希薄になりがちな気がするよ。
おっさんどもの雑談には困ったもんだな・・・
>>681 若い開発者も、出来る人ほど低級言語の経験があるんだよ
オッサンでもCとかASMの開発経験がまったくない奴はダメダメ。 これ定説。
まあ、オレは上流志望だからプログラミングは単なるたしなみだけどな。 といいつつ、オープンソースやってる・・・
実行時間のコスト意識を得るまでの勉強にかかる時間と、 それによって実際に減った実行時間と、 どっちが多い?
オッサンだけど、昔はアセンブラしかなかったのさ。ってか機械語か。 新CPUをつかうと決まったら、アセンブラをまずつくってたなぁ。 そのオヤジにいわせると、アセンブラは必要か?の問はNOだ。 組み込みプログラマでも生産性の低いアセンブラつかえても 自慢にならん。例は枚挙にいとまがないが。一般的にはNO。
>>685 場合による。
どんな場合が有利かを判別するにはコスト意識が必要。
開発時間と実行時間を単純比較してどーするんだ。
お前ら/.にも入り浸ってるだろw なんか適度な加齢臭とグダグダな流れがそっくりだ。
勉強にかかる時間を最適化した奴の書いたプログラムなんて使いたくないよw
直接的に必要でなくとも、アセンブラの勉強は損はないと思うよ。
Write Great Codeを、別にC書かないけどなぁと思いつつ読んでる俺
>>690 もちろん損じゃないが、他にできることがあるだろう。
正直、一部の分野を除いて今はオーダー以外気にしなくて良いかと。。。
俺はこの業界での評価が客観的に見ても高いからな。 いくらでも自由に言えるぜ。
ZenOfPythonを写経してこのいやな流れを断ち切るんだ!
趣味のプログラマならアセンブラレベルの知識は知らなくてもいいんじゃないかな。 プロで知らなかったら、ちょっと付き合いたくないタイプだね。 オートマしか運転できない人が「俺はF1ドライバーを目指す。F1だって今はオートマだから 俺はマニュアル車の運転には興味ないよ」って言ってたらやっぱり変だろ?
>>697 オマエはZen of Pythonの本当の意味を100%勘違いしているよボケが死ねカス。
Web プログラミングとか、 通信コストや処理速度を向上する努力とか必要じゃん。 転送量を下げるや表示速度を上げる工夫って、結構涙ぐましいものがあるよ。
アセンブラ知らなくていいから 代わりにBrainf*ckをちょいとたしなんでおいてくれ
じゃWhitespaceをば
じゃ、俺は Ook! で。
織田信長を差し置いてErlangが注目されるのが口惜しい。
読めねーし<織田信長
import this
from __future__ import draemon
RuntimeError: future robot draemon is not for you.
そういうのキモいからやめようよ。
面白いと思っているのだろうな
709の方がキモイよ。
団塊世代ってさ、よく人を馬鹿にした冗談でウケ狙おうとする人多くない?
単に他人に対する配慮を欠いた人間が多いだけだろ
久々に見たら、なんのスレだよこれw
焼け跡世代か
団塊だろうがゆとりだろうがpython使ってる時点でアホアホ非国民だろ 日本人ならrubyを使いなさい
(^_^;)
720 :
デフォルトの名無しさん :2007/05/23(水) 16:33:26
みんなでアホ国民になろう。
目新しい話題が乏しくなってネタ切れ感が強いな、最近。 このスレだけじゃなくMLの方も。 Pythonの使われ方が多様化、細分化してPython一般について語れることが少なくなった。 Pythonとその利用者層が成熟したってゆーことなんだろうけれども。 なんてゆーか、青春時代を振り返って懐かしんでいる年寄りの気分だ。 (実際年寄りなわけだがw)
以下の Ruby コードのようなことは Python でできますか? class Class1 def method1 puts "Class1#method1" end end class Class1 def method2 puts "Class1#method2" end end c = Class1.new c.method1 c.method2
出来ません、継承とかを使いましょう
m9(^Д^)プギャー できねぇでやんのwww やっぱ Python はダメダメだな。 日本人なら ruby やろ!
うんうん、日本人ならRubyだね 仕事で使って言語コア実装の甘さに泣くのも楽しいし RoRの重さにヒーヒー言うのも楽しい みんなもっとRubyを使えばいいヨ! Pythonみたいな堕落言語を使って生産性を高めたら駄目だヨ!!
その反応はあまりにも小学生過ぎやしないか
ゆとり用言語だものしかたがない
rubyのような将来性のない言語を好んで使う人ってやっぱり人間的にも将来性ないよね
>>722 って、話題自体は以前にもあった気がする。
どういうコメントがあったかは覚えて無いけど・・・
できないと何がまずいのか
>>724 に語ってもらおうぜ
漏れとしてはクラスの定義を一箇所だけ見れば済むほうが
わかりやすくていいと思うのだが
>>731 724 ではないが。
>>722 のように既存クラスに実装を追加できることをopen classと呼んだりする。
open classの使いどころは色々あるんだけど例としては、
・既存のライブラリをハックして少しだけ挙動を変える(人の作ったクラスのとりあえずのバグ修正など)
継承や委譲でもできるけど、そのクラスを使っているコードも直さないといけない
・テストの時だけメソッドを上書きしてスタブ的に挙動させる
・コアライブラリにメソッドを追加して言語を拡張
RailsがそうでObject#blank?などのメソッドを大胆に追加している。
継承や委譲ではその環境でしか使わないけれど
既存のクラスと役割が同じクラスがいたずらに増えてしまう。
多用するのは行儀がいいことではないね。
それにグローバルに影響するのでメソッド定義を上書きしたときには副作用が生じる。
733 :
722 :2007/05/23(水) 21:57:23
Python ではできないのですね。 "Python" "クラスにメソッドを追加" とかでググったら、 それっぽいのが出てきたのですが手元の Python 2.5.1 では エラーになってしまいました;; まさしく Rails がやっているような コアライブラリにメソッドを追加して…というのができるのか 知りたかったのです。 Ruby と Python どっちが面白そうか彷徨い中に、 ちょっと Ruby に傾きつつあったので 「いやいや Python でもできるぜ!」という話があるか探してました。 もうちょっと Ruby 続けてみようかな…でも Python も気になる気になる。
734 :
デフォルトの名無しさん :2007/05/23(水) 22:25:21
組み込み型は変更不可だけど、こういうことちゃうの? class A: pass def func(self): print "hello" A.func = func A().func()
>>733 >コアライブラリにメソッドを追加して…というのができるのか
そんなことは「できないほうがいい」
そういうことをしたいと思うオマエにはぜひRubyをやってほしい
こころからお願いする
頼む
頼むよ
Pythonにこないで!!!
ルビーってのはよく知らんが、コアライブラリを改変できちゃったら動かないプログラム続出で 困ったりしないの?
737 :
722 :2007/05/23(水) 23:30:27
>> 735 コアライブラリへのメソッド追加は 私も最初見てキショイと感じたのでお気持ち分かります。 ただ Rails みたいにフレームワークとしてアプローチするなら 面白いんじゃないかなと思います。 自分で追加することはそうそうないでしょうけど。 >> 736 私も勉強しはじめたばかりで少ししかしりませんけど、Rails では 改変というより(より意図が明確な名前の)メソッドが追加されて、 使えるようになったりします。 ただ Python だと「意図が明確になって新しいメソッドが出てくるより、 セオリーに習った書き方が分かりやすい」という意見もあると思うので どっちがいいのか分かりませんが。
738 :
731 :2007/05/23(水) 23:40:36
フレームワークのソース変更してぇぜ! フレームワークこのクラスにこのメソッドがあればスッキリ簡潔に書けるぜ! と思ったときに使うとグッド
そこでメタクラ(ry
Objective-Cを思い出した
>740 今回は (ry っていうよりある意味正論じゃ? ま、どっちみちヌルー
肝心なときに (ry してしまうのが、メタクラ厨の奥床しさですね
↓ここでJavaScript厨が一言
わっちにゃよーわからんぜよ
>>735 >そんなことは「できないほうがいい」
なんか激しく拒絶してるようだけど、
組み込み型以外は「できちゃう」んだからお前もPython出て行け。
動的に追加できないJavaとかC++にいけ。
こころからお願いする
頼む
頼むよ
Pythonに帰ってこないで!!!
test.py
>>746 >組み込み型以外は「できちゃう」んだから
知ってますけど。
何か気にさわったかしら(wwwwwwwwwww
あなたのような高度な知能を持ったハイレベルな人は別の言語がいいと思いますよ。 RubyとかRubyとか。
>>748 アホか。お前は「出来ない方がいい」とかバカいってるけど、
実際はほとんど「できちゃう」んだから、お前が出て行けって言ってるんだよ。
知ってるかどうかを説いたんじゃないんだよ。
自尊心でも傷ついちゃったのかしら(wwwwwwwwwww
自尊心(笑)
傷ついてるっぽいなw
自尊心(wwwww
かなり傷ついてるっぽいなw
なんかスレの流れがくだらないのでぶったぎるが、 cheeseshopからおとしてきたhoge.eggってどうやって入れるの? 具体的にはdmath.egg。
735は「コアライブラリにメソッド追加して」と書いているようだけど. Pythonでは、誰でも普通に使う組み込み型にメソッド追加できないんだよね? 746は何が言いたいのかワカラン. ところで、キチガイには常人がキチガイに見えるのだそうだよ.
組み込み型以外にコアライブラリは存在しないのかよ
>>757 キチガイのくせにかなり傷ついてるっぽいなw
>758 ありがとー virtual-python ってのもおもしろげだね。 てか、easy-install コマンドがdebianと喧嘩しない自信がないので、 cheeseshop経由のパッケージはvirtual-python で入れよかな‥‥‥。 (dmathは結局unzipでほどけることを発見して自分のプロジェクトに放り込んでしまった)
オープンクラスなんて、Ruby本体と最もメジャーなアプリRubyOnRailsですら 競合してたぜ。本体にメソッドが追加されるたびに戦々恐々なんてありえない。
それは考え方次第。Open classつかう連中は、ぶつかれば直せばいいとう考え方。 ぶつかる可能性はゼロではないが、極めて低いから、それよりは便利さをとるという態度。 そして、そんな態度でもうまくいくやつはうまくいく。うまくいかないやつはOpen Class使わなくてもうまくいかない。 それはそうと、generatorが終了しているかどうかを知る方法はありませんか。 next()でExceptionが出れば終了していると判断できますか、でないときは状態が変わってしまうので、 next()を呼び出さずに知る方法があれば教えてください。
前半で高説たれてるわりには 後半がダメダメな763タソ萌え
悲観的な奴だな。
766 :
デフォルトの名無しさん :2007/05/25(金) 14:56:08
os.system('su') ってやったときに パスワードっていう入力が出てきちゃうんですけど ここにプログラムから何かを自動入力したい場合はどうすればいいのでしょうか? 本当に困っています. 最後は二桁の数字のはずですが忘れてしまいました...
>>766 二桁数字ってことは、100回手打ちした方が手間が省けると思うぞ
>>769 !(Φ_Φ+)
普通は4桁と云う定義が在ると思えますが?
作る気がないのでしょうか?
どの様に使います?
>>770 『続』
!(Φ_Φ+){login.は普通は6桁から…}
誰かこの人工無能止めてくれー
773 :
デフォルトの名無しさん :2007/05/25(金) 17:15:44
!(Φ_Φ+) 『password = start = 数字』
!(Φ_Φ+) 『10000 = 0』
>>763 nextして出ちゃった値をさらにyieldしてみるとか
つーか、この新キャラは何?
聞いてくれ・・・今日とんでもない失態を犯しちまった・・・ 学校に行ったら、小さくていかにも手作りで縫い目が穴だらけの小学生が作ったとしか思えない人形が置いてあったんだ 「何?このみすぼらしい人形」ってつい聞いちゃったんだけど、聞いた相手が俺の彼女で、 間が悪いことに彼女が興味があって練習で作ってみたんだそうだ・・・ 口では練習で作ったからできが悪いのは仕方ないみたいな感じだったけど、 そのときの悲しそうな顔が目に焼き付いて離れない・・・誰か俺を殺してくれっっ。。。
kill -9 777
で、罪滅ぼしに、その人形がボロボロにすり減るまで携帯ストラップとして使うことを決心した・・・
>>760 キチガイも、傷ついてるのもお前なのに?
Guido先生きのこるには? あれ?何かおかしい
傷つきすぎて寂しくなっちゃったの? かわいそうに。
python -m moduleという使い方がありますけど モジュール名を与えるとimportしたことになるオプションってあります? rubyの-rみたいなの
ルビーで例えられても知らんがな。どういうのが何が欲しいの?
Rubyをつかえばいいんじゃね? アホかまったく死ねボケカス。
>>786 "モジュール名を与えるとimportしたことになるオプション"です。例えば
$ pyrhon -r sys -c "print sys.path"
['', '(中略)']
という風に使えるようになるもの。
python -c "import sys; print sys.path" じゃあかんのん?
>>789 対話モードで使えれば、毎回、最初にimportを沢山書かなくて住みます。
んで、モジュール名を含めたpythonコマンドがシェルのヒストリーに入るから
対話モードでちょっとしたテストを試行錯誤する際に楽かな、と思いまして。
済み、です。
たしかに便利かもしんない
つ PYTHONSTARTUP
対話モードで 毎回同じimportが必須であれば その必須なものを最初からimportした状態で 対話モードを起動できる それほど頻繁に対話モード環境を再起動しないのであれば まとめてimportする.py を用意して それをimportする りろーどしたら微妙にかぶった...
いつも思うんだが、 2ちゃんねるってなんでインデントができないこんな珍妙な仕様になってるのだ? Pythonスレをいぢめる為にこんな仕様にしてるのか? 2ちゃんねるはPerl製らしいからPerl信者の嫌がらせなんだろうか? こんな仕様に何か利点があるのか?
タブは削ってるみたいだけど、スペースがなくなるのはHTMLの仕様だと思。
>>793 どもです。こんな便利機能がああ。
そっれぽくスクリプトに出来そうです。
ありがとうございます。
>>795 その珍妙さがデフォだから。
改善要望は大昔からあるにはあるけど梨のつぶて。
エディタでタブを&nbsp;に変換するようなフィルタを書くといいよ。
&nbsp;はかちゅ〜しゃだとそのまま表示されてちょっと悲しい
>>800
 はどうか def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1)
まとめWikiに2ch投稿用整形スクリプトがあったような。 エディタで痴漢しちゃった方が早いか。
803 :
デフォルトの名無しさん :2007/05/26(土) 13:14:38
|┃三 _________ |┃ / |┃ ≡ _、_ < 「ロッキーのテーマ」が流れていたので来ました。今何%引きですか? ____.|ミ\___( <_,` ) _ \ |┃=___ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |┃ ≡ ) 人 \ ガラッ
Pythonのすべての合法的なコードって インデントのない状態から機械的にインデントを復元できるの?
>>804 それができたらインデントいらねーじゃん
def foo(): print "a" def bar(): print "b" これでムリ
質問です。 The target file.pdf のようにスペースを含むファイル名を, glob.globで得て,os.systemに放りこみました。 するとTheとtargetとfile.pdfが別々のファイル名として認識されます。 スペースのエスケープを保持(?)したまま渡すにはどうすれば良いでしょうか? 現在はとりあえず"でくくってお茶を濁しているのですが。
>>807 os.systemが起動するシェルの仕様について勉強しましょう。
あとos.system以外の起動方法についても調べてみましょう。
import subprocess subprocess.call(["dir", "c:"], shell=True) とか。今後はプロセスの生成はsubprocessモジュールが推奨みたい。
810 :
809 :2007/05/26(土) 14:34:13
かぶったwww
811 :
809 :2007/05/26(土) 14:35:58
あ、 subprocess.call(["dir", "c:/Program Files"], shell=True) みたいに空白を含められるってことね。例が悪かった。
>>809 ありがとう,できました。
勉強になりました。
Python使ってみると,高度に抽象化されていて初心者には
ぱっと見わかりにくい時がありますね。
あ,
>>808 もありがとう。
ど素人ですが、御質問させていただきます。 下の2つは違う結果になってしまいます。上が2、下が01。 スペースもプログラムの一部と言うことでしょうか? for i in range(0, 5): if i == 2: break print i; for j in range(0, 5): if j == 2: break print j;
無理やりかっこつけるとこんな感じ 下のは0,1に対して毎回print jが実行される for i in range(0, 5): { if i == 2: break } print i; for j in range(0, 5): { if j == 2: break print j; }
>>814 なるほどです。ありがとうございました。
>御質問させていただきます 日本語の勉強やり直した方がよさそうだ 笑えんよ...
笑うところじゃないから笑えないだけでは。 正しくないからといって、まず笑おうって姿勢がちょっとな。
>>817 丁寧すぎて違和感あるのは確かだけど
別に日本語として間違ってるわけじゃないと思うよ
「ご挨拶が遅れました」なんて普通に使うし
日本語って難しいんだぜ
初心者故、質問しとう存じます。 これでよくね?
>>819 > 「ご挨拶が遅れました」なんて普通に使うし
つかわねーし、日本語として間違ってる
うざいです
823 :
820 :2007/05/26(土) 21:33:54
質問しとうございます。 こっちのほうがいいか。
たのもー! でいいだろ
質問しちゃったりなんかしちゃったりして〜 こ〜の〜 ツンツン Python使いならこうだろ
質問だけ書く
別に質問したくてしてるんじゃないんだからね! 勘違いしないでよね! がいいんじゃね?
>827 そこでちょっとどもりが入らないとダメ
pythonさ、「tho」にアクセントだべ? おら、別に質問さしたくてしたわけじゃねえど! 勘違いしねえでけろ!
んだ
そもさん
せっぱ
py・thon/paiθon,-θn|-θn/ 【名】(複〜s,〜) 1 a 〔動〕ニシキヘビ. b [P〜]〔ギ神〕ピュートン《ApolloがDelphiで退治した大ヘビ》. 2 (巫女(みこ)などについて)予言する霊,悪魔;占い師,予言者. ジーニアス英和辞典 第3版 (C) Taishukan 2001-2006
アメリカ人のネイティブが読むと「パイサン」に聞こえる。
よしこれからはピュートンと呼ぶことにする
自宅警備員ならどう呼んでも同じだけどな。 聞く奴が母ちゃんくらいだから。
よしこれからはピュートンを広めることにする
主にかあちゃんと脳内妹に.
「ぴちょん」にしようぜ
Delphi で退治されたのか…。なんか皮肉だなw
ΠΥΘΩΝ
鉄棒とか噴水とかがある公園に見える。
ΠΥΘΩΝ ΥΘΩΝΠ ΘΩΝΠΥ ΩΝΠΥΘ ΝΠΥΘΩ
ゼナーカードに見えてきた
レスが800を超えてるのにアレが一度も出てねーじゃん。 _ ∩ ( ゚∀゚)彡 おっぱい!おっぱい! ⊂彡
_ ∩ ( ゚∀゚)彡 edora! edora! ⊂彡
>>838 妹さん亡くなったのか…ご冥福をお祈り致します
PyScripterというのを入れてみたけど、これ便利じゃね?
1から10まで足した数をプリントするプログラムなんですが、これで合っています? もう少し簡潔にする方法を御存知でしたら教えてにょ。 i = 1; s = 0; while i <= 10: s = s + i i = i + 1 if i == 11: break print s;
あれ? 空白部分がなくなってる・・・OTL
>>850 インデントは全角スペースで
あと文末のセミコロンと if - break は不要
>>> sum(range(1, 11))
55
チュートリアルにざっと目を通しておくといいにょ
おお、こんなに短くできるなんて・・・。昨日からpythonをはじめたもので・・・。 チュートリアルサイトで勉強してきます。どうもありがとうございましゅ。
>>850 あくまでループを使いたかったら
この場合はforを使ったほうが簡潔。
a=0
for x in range (1,11):
a+=x
print a
あえてwhileで作るなら
i = 1
s = 0
while i <= 10:
s += i
i += 1
print s
これで十分。
また厨か。低レベルは来んなって。
i = 1 #Thanks Adam
質問です。WindowsXPとPython2.5を使用しています。みんPyを参考にsqlite3を使用してデータベースファイルを作成する以下のコードを書いてみました。ところがデータベースファイルに中身が記録されないので困っています。 import sqlite3 test_data=[[1001,'aaa'],[1002,'bbb'],[1003,'ccc']] con=sqlite3.connect('c:\\db_file') cur=con.cursor() cur.execute('CREATE TABLE test_table(number,value)') for item in test_data: cur.execute('INSERT INTO test_table(number,value) VALUES(?,?)',item) result=cur.execute('SELECT * FROM test_table') for item in result.fetchall(): print item[0],item[1] cur.close() con.close() これを実行すると 1001 aaa 1002 bbb 1003 ccc と表示されます。ここまでは問題ないのですが、c:\に作成されたdb_fileの中身を再表示する為に以下のコードを実行すると何も表示されません。db_fileの中身が空のようです。 import sqlite3 con=sqlite3.connect('c:\\db_file') cur=con.cursor() result=cur.execute('SELECT * FROM test_table') for item in result.fetchall(): print item[0],item[1] cur.close() con.close() 試しにレコードを10000件(1〜10000までの数字を入れただけ)に増やしてみたのですが、db_fileのサイズは3件の時と同じ2KBのままで変化がありません。 sqlite3を使用してデータをファイルに保存するには何が抜けているのでしょうか。根本的に勘違いをしているかもしれませんが教えていただけると助かります。
#Python expert programmer import operator as op import functional as f fact = lambda x: f.foldl(op.mul, 1, xrange(2, x + 1)) print fact(6) これ何だけど、import functional as f 使わないで書くと どうなるかな?functional と lamda記法が一緒に出て来て よくわからないぽ。
def fact(x): return reduce(op.mul, xrange(2, x + 1), 1)
864 :
860 :2007/05/27(日) 22:55:53
>>863 試してみたら保存されてデータが表示されました。
助かりました。ありがとうございます。
馬鹿過ぎ
2.5.1 をDLしたら、落ちやすくなったんですが、何か問題があるんじゃろか。 OSはXP(SP2)。
DLしただけで落ちやすくなるのは珍しいですね。
ちょっと舌足らずですたな。 2.5.1をDLしたら、OSじゃなくて、python2.5.1のシェルが落ちやすくなったのでしゅ・・・
DLしただけで落ちやすくなるのは珍しいですね。
落としたら落ちやすくなったってことか
こういう質問はバカとか言われないのな。変なスレ。
キチガイよりバカの方が10000倍マシ。
>872 玩具は壊すより弄った方が楽しかろう。
875 :
デフォルトの名無しさん :2007/05/29(火) 10:13:39
cherrypy試そうと思ったら最初の例で動かない。。。 % python tut01_helloworld.py Traceback (most recent call last): File "tut01_helloworld.py", line 32, in ? cherrypy.quickstart(HelloWorld(), config=tutconf) AttributeError: 'module' object has no attribute 'quickstart' dir()で見てもたしかにquickstartがない、 この前turbogearsいれたからいけないの?
OSとPython/cherrypyのバージョンは?
877 :
デフォルトの名無しさん :2007/05/29(火) 10:37:22
>>876 Vine4.1
Python 2.4.4
/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg
>>877 とりあえず試してみて
cherrypy.root = HelloWorld()
cherrypy.server.start()
879 :
デフォルトの名無しさん :2007/05/29(火) 11:13:47
>>878 行けたよ!!
helloworld
Build time: 0.005s, Page size: 0.01KB
>>879 おめ。
>>878 では設定ファイルを渡してないので
cherrypy.config.update(tutconf)
も試してみて。2.2と3.0ではインタフェースが違うので注意
881 :
デフォルトの名無しさん :2007/05/30(水) 13:45:52
MACのいい統合環境ありますか?
Emacs
883 :
デフォルトの名無しさん :2007/05/30(水) 14:00:27
HTMLをパースしたいのですが、 <a> ... <b> <c>hoge</c> <d>fuga</d> </b> ... </a> こんな感じの構造でa、b、c、dはなんらかのタグとして、<b>以下のタグと要素だけを抜き出したいのですがどうすればできるでしょうか? 言い換えると、HTML全体からあるタグ以下の全ての部分要素を抜き出したい、という漢字でしょうか。
a. <b> を文字列検索して、見つかったらそれ以降で </b> を検索。両者で囲まれた部分を出力。 b. DOM ツリーに変換して <b> を探してその部分木を toxml() で文字列に戻す。 a. を汎用的に書くのは結構大変かも。b. は well-formed な XHTML でないとうまく動かないかも。
BeautifulSoupとか?
やり方は色々あると思うけど、もしElementTreeを使うなら >>> import xml.etree.cElementTree as ET >>> html = '<a>\n...\n<b>\n<c>hoge</c>\n<d>fuga</d>\n</b>\n...\n</a>' >>> a = ET.fromstring(html) >>> a <Element 'a' at 00B6A140> >>> b = a.find('b') >>> b <Element 'b' at 00B6A410> >>> c = b.find('c') >>> c <Element 'c' at 00B6A440> >>> a.find('b/c') <Element 'c' at 00B6A440> >>> c.text 'hoge'
887 :
884 :2007/05/30(水) 16:51:06
もうちょっと簡単な規則性が見つかったので、findとスライスだけで解決してしまいました。 レスありがとうございます。 そしてごめんなさい。
横合いから覗いててちょっと参考になった
クラスの内部でリストやオブジェクトを使いたいのですが class a: nums = [] obj = b() class b: num = 0 alist = [] for i in range(0, 10): alist.append(a()) alist[0].nums.append(0) alist[1].nums.append(1) alist[1].obj.num = 1 print alist[0].nums, alist[1].nums print alist[0].obj.num ,alist[1].obj.num >>> [0, 1] [0, 1] 1 1 生成したインスタンス間で同じオブジェクトを参照してしまうッ インスタンスごとに新しいオブジェクトを作って欲しいのに・・・って class a: def __init__(self): self.nums = [] これでできたー、なるほどなるほど
なまあたたかい。
2chでインデントぶっこわれたポスト見る度に思うけど、 こういう勉強スレみたいな内容で、コードのインデントとか消えちゃわないような掲示板って他にあるかな?
先頭の空白を nbsp に置き換えてくれる 2ch ブラウザならある
>>ヤクザ これはおもしろいな
QmFzZTY0pMelqKXzpbOhvKXJpMikq6S5pOukzs 6uudSkw6TGpOuksaTJDQqks6TspMekpKSkpPOk uKTjpMqkpKGp
MmNopMqk86TApKuk6VNoaWZ0X0pJU6TLpLek7aTo
面白いけど2ch向けPython以外で需要あるのかな…
行頭の空白を nbsp に置き換える Python スクリプトを組めばいいんじゃないか?
それだけじゃ、エディタの置換でまにあう。 どうせなら書いたコードのスペースを にした あと、ポストまでしてくれるスクリプトを作ろう。
>>900 このスレの何人かはそういう Python スクリプトを既に書いているんではないか?
少なくとも俺は2、3回書いたw
inputのtimeとkeyって何入れればいいの?
from anotherworld import esper
いやw、2chにpythonから自動投稿しようとしたことあるんだけど、timeとkeyって属性に何入れればいいのか 良く分からなくて、出来なかった記憶があるので、・・・
タブはコピー時に落ち、行頭半角は何個入れても反映されないという、 HTMLの仕様を考えた人は、Pythonが嫌いなのですか?
多分HTMLを直書きする為だろ HTML自体をインデントして書きたいからな
マジレスw
html 最初の仕様書 1993 python version 1.0 1994
どう表示されるかって話だから、HTMLの仕様ってよりは、ブラウザの問題じゃないの?
tridentとGeckoがそうだからだよな。他のエンジンはPythonに優しいのかも。あんま意味無いけど。
技術というのは積み重ねが肝心、ということがよく分かる展開だな。
>>911 ブラウザというのは原則としてHTMLの仕様に従って表示するだろ
そろそろPythonの話をしようぜ まずはメタク(ry
いや、その前に2chに自動投稿する際に必要なパラメータ値(特にkey=10桁の数字とhana=mogeraと言う謎のパラメータ) を解決してくれ。
断る!
dXRmLTjjgavjgZfjgabjgII=
〜
>>920 乙。漏れはインデントの置換について
テンプレに一筆書いてあるといいと思うのだが
「インデントを含むソースコードを投稿する場合
半角スペースやタブを に置換してから投稿してください」
みたいに
1 2 3 4 5 test
.1 . 2 . 3 . 4 . 5 .test
HTMLの仕様じゃなくて2chの仕様じゃないの?
まぁ、専用ブラウザで見てるからどうでもいいよ
>>927 お前はこれまでの話を全く聞いていないのか。もういいから帰れよ。
っていわれるよ。
ごめん
>>924 だけ見て脊髄反射レスしてしまった
どうして全角スペースも空白キャラクタじゃないのはなぜ?
どうしてASCII範囲外の文字は文字列リテラル外においちゃダメって決めたからってことを知らないのはなぜ?
どうしてどうしてボクたちは生まれてしまったのだろう
おれは一休さんの、どちて坊やが出てくる回だけはものすごく嫌いだ
桔梗屋ってのが嫌な奴だったでしょ。
しかし、悪党を懲らしめるのに一休さんに協力するおちゃめな一面もある。
このスレのレベルが急速に低下してるな……
デコレータの逆みたいなことってできないですか? 関数終了時に呼ばれる、みたいな
宿題ではないがお題を出してみるぜ
【 課題 】
リモートホストのファイルをHTTPでダウンロードし、
ローカルに保存するプログラムを作成せよ。
リモートのファイル取得先URLとローカルの保存先パスは
起動引数として受け取ること。
(例: % GET.py
http://example.jp/ hoge.html )
ダウンロード中は、何%ダウンロードしたかを示す進捗状況を表示すること。
(例: 12345 / 67890 (18%))
【 補足 】
コードは1回のレスに収まる程度にすること
おもしろい名前のUAに偽装できたらプラス5点
別にそんなアプリ書かなくても、wget があるじゃん。 っていうか CUI とかダサすぎ。Irvine みたいなのがいい。
GUIにすると環境に依存するからなあ Pygtkがまあ妥当だと思うけど、Winの連中は嫌だろうなw
wxPythonでしょ
import sys import urllib def progress(b, bytes, fs): print "\r%d / %d (%d)" % (bytes, fs, bytes / float(fs) * 100), op = urllib.FancyURLOpener() op.addheaders = [("User-Agent", "GET.py/0.0")] op.urlretrieve(sys.argv[1], sys.argv[2], progress) print "\rfinished"
>>940 関数が1回終わったあとに関数の処理を変えたいとかそういうこと?
たぶんデコレータで出来ると思う。
ただ、目的が全く分からないが・・・
>>940 そういったこともデコレータで可。
def decorator(f):
def wrap(*a, **kw):
ret = f(*a, **kw)
print f, "is called =>", ret
return ret
return wrap
@decorator
def f(i):
print "in function"
return i + 20
f(3)
print "after function"
IronPythonでやってみた。長いな… import System from System import Console from System.IO import Stream, File, BinaryReader from System.Net import WebRequest args = System.Environment.GetCommandLineArgs() wr = WebRequest.Create(args[2]) wr.UserAgent = "UA" rs = wr.GetResponse() br = BinaryReader(rs.GetResponseStream()) out = File.OpenWrite(args[3]) all = rs.ContentLength c = 0 while True: bytes = br.ReadBytes(1024) if bytes.Length == 0: break out.Write(bytes, 0, bytes.Length) c += bytes.Length if all != -1: Console.Write("(%d/%d) %0.2f%%\r" % (c, all, c*100.0/all)) else: Console.Write("(%d/??) ??.??%%\r" % c) out.Close() br.Close() rs.Close() rs.Close()
949 :
941 :2007/06/03(日) 15:48:53
もまいら最高
>>945 >>948 両者と比べられるとアレだが漏れのも貼ってみる
import urllib
import sys
class AppURLopener(urllib.FancyURLopener):
def __init__(self, *args):
self.version = 'GET.py'
urllib.FancyURLopener.__init__(self, *args)
urllib._urlopener = AppURLopener()
def showprogress(blocknum, blocksize, filesize):
sys.stdout.write('\r%s\r' % ' ' * 40)
if blocknum * blocksize >= filesize:
readed_size = filesize
else:
readed_size = blocknum * blocksize
rate = float(readed_size) / filesize * 100
sys.stdout.write('%d bytes/ %d bytes (%d%%)' %
(readed_size, filesize, rate))
if __name__ == '__main__':
if len(sys.argv) != 3:
sys.exit('usage: python GET.py url filename')
import httplib
httplib.HTTPConnection.debuglevel = 1
urllib.urlretrieve(sys.argv[1], sys.argv[2], showprogress)
>>949 はWinXP/ActivePython/コマンドプロンプトで動作確認
どんな端末でも同じように表示されるのを作るのは大変なので
うまく動かない場合は適当にいじってほしいんだぜ
>>952 urllib2にはたぶん無いけど
urllibのURLopenerのretrieveの実装が参考になると思うぜ
urllibとurllib2の共存はいつまで続くんだろ。 というか、なんで現状のようになってるんだ?
urllib3, urllib4とまだまだ続くよ。
3.0で統一されるんじゃないの? たしか、スタンダードライブラリを大幅リフォームしようみたいな話があった気がする。 2.6には残ると思う
その名もurllib3000
まあ、その辺はメインの言語が出来てしばらくしてから作られ始めると思うので、結構先になりそう・・・ 名前なんて最後の方でコロッと変わることなんてよくあるし、・・・
意外とこんなことを知らなかった >>>"aa" "bb" == "aabb" True
一般論ばっかり。dev読め。
低レベルは来んな。
webbrowser urllib ----------------------------------ここから低レベル urllib2 httplib socket _socket
>>953 なるほど、凄い簡単な実装でした。
urlopen後のreadに一枚皮かぶせるだけでよさそうです。
zipfileのinfolist()で得られるCRC属性ですが、 負の値が得られてしまうものがあるのですが、 どのようにしたらいいのでしょうか。 python2.3では FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up という警告が出たものの "%08X" で正しくフォーマットできていたし、 警告自体も warnings.filterwarnings(action='ignore', category=FutureWarning) で抑制できたのですが、python2.4では正しい結果が得られないのです。
>>966 よく分からんけど32ビット符号付き整数を32ビット符号なし整数とみなして
16進表記したい、ということなら、こうかな?
>>> sum = 0
>>> print "%08x" % (0x100000000+sum if sum < 0 else sum)
00000000
>>> sum = 2**31-1
>>> print "%08x" % (0x100000000+sum if sum < 0 else sum)
7fffffff
>>> sum = -2**31
>>> print "%08x" % (0x100000000+sum if sum < 0 else sum)
80000000
>>> sum = -1
>>> print "%08x" % (0x100000000+sum if sum < 0 else sum)
ffffffff
>>>
キーワード:2の補数
FutureWarningが出ているのに バージョン上げて動かなくなったとかほざいてる 阿呆が居るのは コ コ ですか
よくわからんけどzipfileに問題があるんじゃねーの?
>>967 たんに
sum & 0xffffffff
でよさげ
972 :
967 :
2007/06/04(月) 20:53:46