Pythonのお勉強 Part30
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/11/16(日) 19:09:55http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1223543412/
0153デフォルトの名無しさん
2008/11/23(日) 13:51:04現在入力中の文がコマンドとして
1 途中なのか、2 エラーなのか、3 コンプリートしたものか
判断する方法はないでしょうか?
1の例
for i in range(1, 3): ←これだけ入力されたら続きがある
2の例
j = foo() ←fooという関数はない
3の例
1+2 ←文として評価する事ができる
アドバイス頂けたら幸いですm(__)m
0154デフォルトの名無しさん
2008/11/23(日) 14:10:530156デフォルトの名無しさん
2008/11/23(日) 15:13:15pypy
0158デフォルトの名無しさん
2008/11/23(日) 19:59:53scimでもscim-bridgeでもuimでも問題ないだろ。
つーかLANG=ja_JP.eucJPってどんな化石なディストリ使ってるんだよ。
0159デフォルトの名無しさん
2008/11/24(月) 16:16:54マジで有るのか。
「パイパイいれていじってみたんだけど良いなコレ。」
「パイパイちょっと触ってみたんだけど、まだ発展途上じゃね?」
みたいな会話が繰り広げられているのか。
0160デフォルトの名無しさん
2008/11/24(月) 19:50:05temp=lst[i]; lst[i]=-1; i=temp #(1)
pythonではこんな見苦しい一時変数は必要ないもんね。と思い次のように書いた。
i, lst[i] = lst[i], -1 #(2)
賢明な諸兄はお気づきかと思うが、このプログラムは上手くいかない。
半日悩んだ結果、次のように書けばよいことが判った。
lst[i], i = -1, lst[i] #(3)
で、教えて欲しいんだけど、(2)が駄目で、(3)なら良いというこの動作は
うちの環境ではたまたま動くだけ? それとも公式に規定された動作ですか?
### 結局、プログラムは(1)の書き方で完成しました。
0161デフォルトの名無しさん
2008/11/24(月) 20:15:08http://www.python.org/doc/2.5.2/ref/assignment.html
http://www.python.jp/doc/release/ref/assignment.html
0162デフォルトの名無しさん
2008/11/24(月) 20:27:12http://www.python.org/doc/2.5.2/ref/assignment.html
> If the target is a target list enclosed in parentheses or in square brackets:
> The object must be a sequence with the same number of items as there are targets
> in the target list, and its items are assigned, from left to right, to the
> corresponding targets.
左から右の順で代入するとあるので公式に規定された動作といえそう。
0163デフォルトの名無しさん
2008/11/25(火) 03:29:32Pythonにもそういうイベントってある?
0164デフォルトの名無しさん
2008/11/25(火) 08:34:11PyConじゃね?
0165デフォルトの名無しさん
2008/11/25(火) 08:56:230166デフォルトの名無しさん
2008/11/25(火) 09:37:520167デフォルトの名無しさん
2008/11/25(火) 11:56:27残念ですが、なくなったようです。
0168デフォルトの名無しさん
2008/11/25(火) 12:52:260169デフォルトの名無しさん
2008/11/25(火) 17:18:14PyConって無くなったの?
知らなかった...orz....Pythonもうダメだ....。
0170デフォルトの名無しさん
2008/11/25(火) 17:19:020171デフォルトの名無しさん
2008/11/25(火) 17:34:31>>167=>>169
おい、デマばっか流してんじゃねーよ。
PyCon は今年もあったし、来年もちゃんとある。
http://www.python.org/community/pycon/
せいぜいお前は Python の人気を妬む Ruby使いってとこだろうが、
大人気ないぞ。
0172デフォルトの名無しさん
2008/11/25(火) 17:36:510173デフォルトの名無しさん
2008/11/25(火) 17:46:13ダンジョー乙
0174デフォルトの名無しさん
2008/11/25(火) 18:01:24日本でpython使うメリットなんてないんだよ。
0175デフォルトの名無しさん
2008/11/25(火) 18:27:390176デフォルトの名無しさん
2008/11/25(火) 18:45:13なんだ >>174 は、
恥というものを知らんのか。
0177デフォルトの名無しさん
2008/11/25(火) 18:56:11いいえ、ターボギアスR2です。
0178デフォルトの名無しさん
2008/11/25(火) 19:01:460179デフォルトの名無しさん
2008/11/25(火) 19:19:21惨めなやつ!
0180160
2008/11/25(火) 20:06:14なるほど、ちゃんと公式ドキュメントに書かれてたんですね。
「are not safe 安全でない」の解釈が微妙ですが、
規定された動作と考えてよさそうですね。
勉強になりました。ありがとうございました。
0181デフォルトの名無しさん
2008/11/25(火) 20:20:07例えば、
txt="abcdefg"
5番目と7番目(インデックス4と6)の文字の表示色を反転
print txt
みたいなことを望んでいます。
0182181
2008/11/25(火) 20:24:00文字と文字の背景の色を反転という意味です。
0183デフォルトの名無しさん
2008/11/25(火) 20:58:490184sage
2008/11/25(火) 21:00:56http://www.siafoo.net/snippet/88
もっと凝りたいなら、cursesで。
0185デフォルトの名無しさん
2008/11/25(火) 21:03:190187デフォルトの名無しさん
2008/11/26(水) 14:44:10「全く安全という訳ではない」
0188デフォルトの名無しさん
2008/11/26(水) 19:02:41turbogearsを構成している各eggファイルをダウンロードして、turbogearsのインストールを行いたいのですが、
公式サイトのファイルリストのどのファイルをダウンロードすればいいのでしょうか。
ちなみにWindows環境です。
0189デフォルトの名無しさん
2008/11/26(水) 19:15:300190デフォルトの名無しさん
2008/11/26(水) 19:20:15http://docs.turbogears.org/1.0/Wiki20/Page1
0191デフォルトの名無しさん
2008/11/26(水) 19:27:41ご紹介いただいたページは既に拝見しました。
プロクシ環境なのでこの方法が使えません。
そこで、上記サイトのオフラインインストールマニュアルを見たのですが、
"基本的に最新バージョンの各パッケージのeggファイルを落とせばいいけど、lightbox等の一部のパッケージは除く"みたいな表現があったので、悩んでます。
これらのファイルはダウンロードしなくていいって事なんですかね?
0192デフォルトの名無しさん
2008/11/26(水) 19:35:230193デフォルトの名無しさん
2008/11/26(水) 19:38:57そうですか。では、インストールしてみます。
ありがとうございました。
0194デフォルトの名無しさん
2008/11/27(木) 00:00:43Pythonで数独を解くプログラムを書きました。
色々いじってPenIII933MHzでPsycoなしで70秒、Psycoありで
25秒くらいで回答できるようになりました。
さらに高速化しようとboost.pythonを利用してC++に
移植したのですが返って遅くなってしまいました。
何が原因でしょうか?必要であればソース出します。
0195デフォルトの名無しさん
2008/11/27(木) 00:11:03よくわかんねえな。つうかそんなの組み方次第じゃないの。
数独解くプログラムって
ttp://codepad.org/T5tQp3vL
こんなもんでいいの?
C/CLLなら瞬殺だと思うけど。
0196デフォルトの名無しさん
2008/11/27(木) 00:11:58>PenIII933MHz
ワーキングプアかよ(wwWwwwWWWwwwwWwwWwwww
0197デフォルトの名無しさん
2008/11/27(木) 00:26:59回答ありがとうございました。ほとんど同じコードをPythonで書いていました。
あまりC++が詳しくないので、おっしゃられるとおりC++での組み方が
悪いだけなのだと思います。勉強しなおしてきます。
0198195
2008/11/27(木) 00:44:36C++のtypoね
>>197
ロジックが同じようなもんなら、とりあえず以下の点が疑わしいかなあ
・最適化していない(コンパイルオプションの問題)
・最近のVC++を使っているなら、vectorとかを使うと、[]演算子でもデフォルトで
範囲チェックがなされている可能性が高い(俺も細かいことは知らん)
0199デフォルトの名無しさん
2008/11/27(木) 00:57:35Pythonでは
ttp://codepad.org/3jRpg91x
という感じでした。
C++はおっしゃられるとおりvectorを多用していました。
boost.pythonがどうこういう以前の話だったようです。
勉強になりました。
0200デフォルトの名無しさん
2008/11/27(木) 01:07:400201デフォルトの名無しさん
2008/11/27(木) 01:07:55vector<>は別に悪者じゃなくて、C++ならそれが普通なんだけどね
VC++は最近セキュリティがらみで色々やってるみたいだから
SECURE_SCLだったかな?そのへんのキーワードでぐぐってみるといい
0202デフォルトの名無しさん
2008/11/27(木) 01:10:31スレ違いだが、vectorの仕様では、
oprator[]は範囲チェックなし、
範囲チェックしたければメンバー関数at(i)を使うことになっている。
0203デフォルトの名無しさん
2008/11/27(木) 01:12:55仕様ではそうなっていてもVC8以降は_SECURE_SCLが効いてると
operator[]の範囲チェックをするようになっていた気がする
だから、[]演算子「でも」と書いたんだけどね
0204デフォルトの名無しさん
2008/11/27(木) 05:32:110205デフォルトの名無しさん
2008/11/27(木) 05:34:040206デフォルトの名無しさん
2008/11/27(木) 06:17:44PIII800MHz
192MB
ですがなにか?
0207デフォルトの名無しさん
2008/11/27(木) 08:07:040208デフォルトの名無しさん
2008/11/27(木) 08:23:41cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res1 = opener.open(req)
if '<!-- 2ch_X:cookie -->' in res1.read():
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res2 = opener.open(req)
0209デフォルトの名無しさん
2008/11/27(木) 08:27:500210デフォルトの名無しさん
2008/11/27(木) 10:41:28pythonで一番メジャーなパッケージマネージャは何ですか?
調べてもあんまり出てこないんですよね・・。
0211デフォルトの名無しさん
2008/11/27(木) 10:53:26easy_installじゃないの?
0212デフォルトの名無しさん
2008/11/27(木) 12:26:520213デフォルトの名無しさん
2008/11/27(木) 13:34:53つか、遅すぎなんだけど。なにそれ。やる気あんの?
boost とか使う前にアルゴリズムを改良しろよ。
まずは CSP 学べ。
0214デフォルトの名無しさん
2008/11/27(木) 13:43:260215デフォルトの名無しさん
2008/11/27(木) 14:18:440216デフォルトの名無しさん
2008/11/27(木) 14:26:15総当りに近いんじゃね?
25秒とか、古い Pen II でもありえんよ。
CPU が P3 933Mhz もあるんだったら、半秒以上かかる sudoku solver 書いた時点で負け。
0217デフォルトの名無しさん
2008/11/27(木) 14:31:220218デフォルトの名無しさん
2008/11/27(木) 14:56:20if __name__ == '__main__':
import sys
main(sys.argv[1])
を付け加えて、
530070000
600195000
098000060
800060003
400803001
700020006
060000280
000419005
000080079
とかいう入力を与えてみたけど、一瞬だったけど?
time の結果が0.25秒程度
別にPsycoとか使ってねー
PentiumM 1.7GHz
Windows XP SP3
Python 2.5.2
0219デフォルトの名無しさん
2008/11/27(木) 15:01:05それって25*25でってこと?
0220デフォルトの名無しさん
2008/11/27(木) 15:14:04(少なくとも)3種の枝刈り手法があったと思ったが、どれもやってないの?
0221デフォルトの名無しさん
2008/11/27(木) 15:16:32上でやってるのはごくシンプルなバックトラックだよ
数十秒とか絶対ありえん
0222デフォルトの名無しさん
2008/11/27(木) 15:17:260223221=222
2008/11/27(木) 15:18:470224194
2008/11/27(木) 16:01:18221さんが指摘されているとおりシンプルなバックトラックです。
他のアルゴリズムも勉強してみます。
>213,218,221
218さんが検証してくださっているとおり簡単な問題は
1秒未満で回答できます。紛らわしくてすいません。
ttp://www.sudoku.name/index-jp.php
の問題を使用しているのですが上級++で
004000080
003007000
600800009
030002500
070080090
005000030
200001007
000400100
050000600
というような問題の回答が遅いです。
220さんがおっしゃっているようにアルゴリズムの工夫で
何とかしてみます。ありがとうございました。
0225デフォルトの名無しさん
2008/11/27(木) 16:32:27がんばって。
0226デフォルトの名無しさん
2008/11/27(木) 17:16:130227デフォルトの名無しさん
2008/11/27(木) 18:32:35GTKがLGPLなのに対して、QtはGPLか最近のtool kit としては高額の
有償ライセンスかのいずれか
利用できる人間は、どうしても限られてくる
0228デフォルトの名無しさん
2008/11/27(木) 21:04:280229デフォルトの名無しさん
2008/11/28(金) 02:59:53どっかのホームページで数独の問題集があって、難易度ごとに別れているんだけど
最強難易度の一番最後の問題(たぶん94番目)を解くのに3秒くらいだったよん。
==環境==
WinXP
ActivePython 2.5.2.2くらい
Core2Duo1.7GHz
bar = "fuga"
TITLE = {"title":foo - bar}
print TITLE["title"]
これで hoge - fuga と出力したいんだけど
"foo - bar"で引用符で囲むと foo - barになる。
囲まないとエラーになる。
どうすれば hoge - fuga に出来ますか?
0231デフォルトの名無しさん
2008/11/28(金) 11:00:31ちゃんと勉強汁
foo + " - " + bar
"%s - %s" % (foo, bar)
0232デフォルトの名無しさん
2008/11/28(金) 11:15:59>>195の、単純なバックトラックのCのコードですら
その問題は(俺の環境では)0.35秒ぐらいで解けるようだよ
アルゴリズム改善がベストだが、C++で書いても
そんなに遅いのは、別の理由もありそうだな
0233デフォルトの名無しさん
2008/11/28(金) 11:21:1116進数を作ってから、\xとつなげるにはどうすればいいですか?
"\x%x"のように文字列フォーマットを使おうとするとエラーになってしまいます。
0234デフォルトの名無しさん
2008/11/28(金) 11:22:440235デフォルトの名無しさん
2008/11/28(金) 11:25:310236デフォルトの名無しさん
2008/11/28(金) 11:26:190237デフォルトの名無しさん
2008/11/28(金) 11:30:51こんな感じ
0238デフォルトの名無しさん
2008/11/28(金) 12:18:40chr(0x25)
おぉ! + を使って繋げるのか
TITLE = {"title":foo + " - " + bar}
print TITLE["title"]
hoge - fuga
と、無事にできました
でも、これが分かりません orz
> "%s - %s" % (foo, bar)
プログラム経験は昨日からです...
www.python.jpを見ながら勉強してます
0241デフォルトの名無しさん
2008/11/28(金) 13:51:06PyScripterはバグが多く、使いにくかったです…
テキストエディタでいいじゃん
0243デフォルトの名無しさん
2008/11/28(金) 15:15:29Vimを +python でコンパイルしたもの
0244デフォルトの名無しさん
2008/11/28(金) 15:26:20ttp://www.sudoku9981.com/jp/print/extreme.asp
の94番目のやつ
0245225
2008/11/28(金) 15:46:29ありがと。
0.98秒くらいだった。ハードのスペック違うけど。
Vista
CPython 2.6
PentiumM 2.1GHz
0246225
2008/11/28(金) 16:31:333回くらい実行したら、最短で0.2秒くらいだった。
0248デフォルトの名無しさん
2008/11/28(金) 16:51:580249デフォルトの名無しさん
2008/11/28(金) 16:52:45まあ地道にコード打ってがんばろう。
てなことで今数独問題生成・解答アルゴリズムを考えてる。
0250デフォルトの名無しさん
2008/11/28(金) 17:17:26http://wiki.python.org/moin/BeginnersGuide/NonProgrammers
>"python file" と "python <file" の違いに注意してください。
>後者の場合、プログラム内でinput() や raw_input() が呼び
>出され、ユーザからの入力が必要な場合、入力はファイル から
>取り込まれます。この場合、パーザはプログラムの実行を開始
>される前にファイルを終端まで読み込んでおくので、プログラム
>はすぐに入力の終わりまで到達してしまいます。前者の場合
>(大抵はこちらの方が望ましい動作です)、入力には Python
>インタプリタの標準入力に接続された何らかのファイルまたは
>デバイスが充てられます。
まず最初に意味が理解できなかった所です。
0252デフォルトの名無しさん
2008/11/28(金) 18:01:08pythonは違うから注意しろってことだろ
■ このスレッドは過去ログ倉庫に格納されています