くだすれPython(超初心者用) その6

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>950 辺りで

前スレ
くだすれPython(超初心者用) その5
http://pc12.2ch.net/test/read.cgi/tech/1256350845/

関連スレ
Pythonのお勉強 Part35
http://pc12.2ch.net/test/read.cgi/tech/1253535109/
2デフォルトの名無しさん:2010/01/28(木) 22:47:32
>>> x
"['c', 'c']"

これを cc っていう文字列リテラルで表示したいです。
何を使用すればいいでしょうか。
3デフォルトの名無しさん:2010/01/28(木) 23:05:46
>>1
乙です

>>2
"".join(eval(x))
これでいいんじゃね?
4デフォルトの名無しさん:2010/01/29(金) 00:13:05
>>3
ありがとうございます。できました。
5デフォルトの名無しさん:2010/01/29(金) 03:28:15
適当なこと書くなよw
6デフォルトの名無しさん:2010/01/29(金) 17:08:13
>>2
s = reduce(lambda a,b: a + b, x)
7デフォルトの名無しさん:2010/01/29(金) 17:38:16
reduceを使うのはオッサン
8デフォルトの名無しさん:2010/01/29(金) 23:17:48
OS:windows7 64bit
python:2.6.2 (32bit)
py2exe:py2exe-0.6.9.win32-py2.6
の環境下で
"icon_resources": [(1,"pyico")]
として作成したプログラムファイルのアイコンがデフォルトのアイコンとなってしまいます。
このプログラムをXPのPCにコピーするとちゃんと指定したアイコンで表示されます。
この環境でもアイコンが見れるようにするにはどうすればいいでしょうか?
9デフォルトの名無しさん:2010/01/29(金) 23:53:55
OSを32bitにする
10デフォルトの名無しさん:2010/01/30(土) 20:07:18
Python 2.6です。

path=〜〜#削除したいディレクトリのパス
この時、path以下を(ファイルを含め)全て削除するにはどうしたらよいでしょうか?
os.removedirs(path)としてみましたが、
File "C:\Python2x\lib\os.py", line 170, in removedirs
rmdir(name)
WindowsError: [Error 145] ディレクトリが空ではありません。: '〜〜'
と言われてしまいます。
よろしくお願い申し上げます。
11デフォルトの名無しさん:2010/01/30(土) 20:14:17
>>10
ファイルも含めて再帰的に削除するか、
出来合いのものを使う
http://docs.python.org/library/shutil.html#shutil.rmtree
12デフォルトの名無しさん:2010/01/30(土) 21:09:09
>>11
ご教示の
shutil.rmtree
で行けました。
ttp://www.python.jp/doc/release/lib/module-shutil.html
これですね。
ありがとうございます。

13デフォルトの名無しさん:2010/01/31(日) 13:44:17
前スレで言ってたJython用のms932コーデック。2.5で確認したけど2.2でも動くはず

Lib/encodings/ms932.py

http://paste.bradleygill.com/index.php?paste_id=28762

募集:Byte配列のアンパックのきれいなやり方

スレ違いな気もするが反省はしていない
14デフォルトの名無しさん:2010/02/01(月) 03:17:50
超初心者です。
テキスト読み始め数日…
クラスってのがいまいちピンと来ないんですが、わかりやすく言うと(例えると)
どんな感じっすか?
15デフォルトの名無しさん:2010/02/01(月) 03:46:26
この動画で説明すると
http://www.nicovideo.jp/watch/sm9515208
クラス=型紙
オブジェクト=ぬいぐるみ
16デフォルトの名無しさん:2010/02/01(月) 16:17:55
>>14
個人的には、クラスに限らず、超初心者がいきなりわかりやすい一言表現とか比喩に触れても
まず意味はわからないし、場合によっては逆に混乱するんじゃないかと思ってる。
そういうのは、具体的なことがそこそこ手に付いてきた段階で、それらを頭の中で束ねる発想として
力を発揮するもので、まずは説明を読んでコード書いて……の繰り返しに専念すべきじゃないかな。
17デフォルトの名無しさん:2010/02/01(月) 20:07:39
わかんなくても書けるよ。
おれは未だにclassがなんで必要なのかイマイチ
分からないけど、classつかってるよ。
18デフォルトの名無しさん:2010/02/01(月) 20:33:55
必要かどうか迷ったときは必要じゃない時の方が多いような気がする>クラス

クラスについて知る

なんかよく分からんが怪しいオブジェクト指向本とか頼りに使い始める

デザパタとか覚えて無駄に使いまくる

(Java的なきっちりとした)クラス指向に疲れてくる

再利用を狙うんなら関数オブジェクトとかでもいいし、
ポリモーフィズムならダックタイピングでもいいし、
クラス指向が唯一の解ってわけでもない、とか気づく

それでもOpenCV2.0のC++実装とかnumpyとかそれなりに便利だし
オブジェクトも捨てたもんじゃねえかなとか思い出す       ←いまここ
19デフォルトの名無しさん:2010/02/02(火) 09:54:19
>>17
変数をまとめて管理できたら便利じゃね
 →リスト
変数やリストや辞書や関数をまとめて管理して一発アクセスできたら便利じゃね?
 →複雑な辞書
複雑な辞書作っちゃったけど、この構造使い回したい
 →クラス
20デフォルトの名無しさん:2010/02/02(火) 10:42:13
ttp://d.hatena.ne.jp/shuji_w6e/20090910/1252574711

なんにせよクラスとか意識しないで書いていいと思う。
変数散らかって不便だなーなんか読みにくいなって思ったら調べてみるといいんじゃないかなあ
21デフォルトの名無しさん:2010/02/02(火) 15:39:32
python の場合ファイル分けてモジュール化するだけでも実用になったりするからな
class のありがたみがわかるのってフレームワークとか自作するときくらいじゃないかな
22デフォルトの名無しさん:2010/02/02(火) 15:41:19
>>19
Python の class って辞書で作れるような
23デフォルトの名無しさん:2010/02/02(火) 15:43:47
>>21
シングルトンならモジュール化だけでなんとかなるんだろうけど
インスタンスを幾つも生成したかったら結局クラスを使うことになるよ
24デフォルトの名無しさん:2010/02/02(火) 22:00:28
クラスの話の流れで質問です
class Hasher:
def __init__(self,n,o):
ABC = o
def abc_hash(n):
if hash(self,n) == ABC:
print('-'*40)
return True
elif hash != ABC:
print('-'*40)
return False
def re_hash(self):
return n

a = Hasher

HasherクラスにHasher('検査する文字列',ハッシュ値のオブジェクト)
を渡してBOOL値を返したいのですが

ha = Hasher(abc, -1600925533)
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'abc' is not defined
ha = Hasher('abc', -1600925533)
ha
<__main__.Hasher instance at 0x18f46bc0>
ha.abc_hash()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 5, in abc_hash
NameError: global name 'self' is not defined
どうすれば良いんでしょうか
25デフォルトの名無しさん:2010/02/02(火) 22:21:17
>>> class Hasher(object):

def __init__(self, n, o):
self.n = n
self.o = o

def abc_hash(self):
if id(self.n) == self.o:
print('-'*40)
return True
elif self.n is not self.o:
print('-'*40)
return False


>>> ha = Hasher('abc', 31544672)
>>> ha.abc_hash()
----------------------------------------
True

ハッシュ値がどうたらは置いといてコンテキスト乱れまくってるぞ
26デフォルトの名無しさん:2010/02/03(水) 00:21:24
だからスペースを& nbsp;に置換しろと(ry

それはそうと、pythonでメンバ使いたかったら
selfを第一引数にしてself.hogeだ
27デフォルトの名無しさん:2010/02/03(水) 07:26:59
 codepad
 ttp://codepad.org/

長いソースを貼るときはここへ!


ってテンプレートに入れようぜ。
28デフォルトの名無しさん:2010/02/03(水) 10:40:37
29デフォルトの名無しさん:2010/02/03(水) 19:28:28
投稿側で&nbsp;を入れるか
閲覧側でdat読めば問題ない。
30デフォルトの名無しさん:2010/02/05(金) 00:15:56
Jane Style使いはみんな既にやってるのかもしれないが一応。

Jane StyleのReplaceStr.txtを書き換え。。
<rx2>\s & nbsp; msg //(&n間スペース削除)

おぉ見やすい。なんで俺今まで気づかなかったのか。
他の専ブラでも出来るのかな?
普通のブラウザはGreaseMonkey使えたらできそうだな。
・・・と思って書いてみら出来た。Firefoxで成功。

// ==UserScript==
// @name Show top space of 2ch
// @namespace *
// @include http://*.2ch.net/*
// ==/UserScript==

(function(){
var nodes = document.getElementsByTagName("dd");
for(var i = 0; i < nodes.length; i++){
var after = nodes[i].cloneNode(true);
var msg = after.innerHTML;
msg = msg.replace(/\s/g, "& nbsp;"); //(&n間スペース削除)
after.innerHTML = msg;
nodes[i].parentNode.replaceChild(after, nodes[i]);
}
})();
31デフォルトの名無しさん:2010/02/05(金) 00:25:05
Portable PythonのPyScripterを日本語化したいのですが
どうすればいいのかアドバイスお願いします。
Portable Python 1.1 - based on Python 3.0.1
PyScripter v1.9.9.6
32デフォルトの名無しさん:2010/02/05(金) 00:27:00
そもそもPortable Pythonの用途が不明。
33デフォルトの名無しさん:2010/02/06(土) 02:32:21
一体そんな漠然とした質問でどうしろと。
34デフォルトの名無しさん:2010/02/06(土) 08:49:22
Python製の2ちゃんブラってあります?
35デフォルトの名無しさん:2010/02/06(土) 14:04:08
指定した実行可能ファイルが$PATH中に存在するか
判定するにはどうすればいいでしょうか?
36デフォルトの名無しさん:2010/02/06(土) 15:36:17
subprocess.Popen()して、無かったらOSErrorが返るけど
これではいかんのですか。実行してしまったらいかんのかな
37デフォルトの名無しさん:2010/02/06(土) 15:50:43
>>35
os.environ['PATH']
38デフォルトの名無しさん:2010/02/06(土) 17:11:18
which ls ; echo $?
which foo ; echo $?
39デフォルトの名無しさん:2010/02/06(土) 17:16:58
標準モジュールのwebbrowserが自力で探してたよ
40デフォルトの名無しさん:2010/02/06(土) 20:03:54
sys.path.contains()
41デフォルトの名無しさん:2010/02/07(日) 00:15:03
distutils.spawn.find_executable
でできました。ありがとうございます。
42デフォルトの名無しさん:2010/02/07(日) 11:58:42
C++のコメントに一致するPython正規表現を書いて/教えてくださいませんでしょうか?

target_str = open("hoge.cpp").read()
で取得したtarget_strを対象とし、
hoge.cppのC++のコメントに一致する部分にマッチするところを
全て抜き出しリストにして欲しいです。



////////////////C++のコメント/////////////////////////////

//でコメント導入を示し、行末までがコメントになります。

 var = 42; // この部分がコメント

また/*と*/で囲むと、複数行コメントになります。

 /*この部分がコメント。*/
 /*この部分がコメントです。
  この部分もコメントです。
  この部分もコメントです。
  */

/* */の中に/* */の対を入れることは出来ません。/*の後に再び/*が来ても、それはコメントの一部と思われるため、無視。一方、最初に出現した*/でコメントは終わりと取られます。

 /* コメントを /* 入れ子 */ にすることはできません。*/ ← error!!

ttp://www.icepp.s.u-tokyo.ac.jp/~sakamoto/education/atlasj/cplusplus/l1.html
より引用・改変。
43デフォルトの名無しさん:2010/02/07(日) 12:45:37
import re
comment = re.compile(r'(?<=//)[^\n]*|(?<=/\*).*?(?=\*/)', re.M|re.S)

a = '''
//////////////////////comment1/////////////////
var = 43; // comment2
/* comment3
comment4
*/
/* comment5 */'''

comment.findall(a)
=>
['////////////////////comment1/////////////////',
'',
' comment2',
' comment3\ncomment4\n',
' comment5 ']
4443:2010/02/07(日) 12:49:42
42のコメントの定義だと
/* foo // bar */
foobar */
は "foobar" までコメントになるけど
実際gccで試してみたらエラーだな
45デフォルトの名無しさん:2010/02/07(日) 12:52:00
//が先に評価されて /**/がその後で評価されるってことか
46デフォルトの名無しさん:2010/02/07(日) 12:57:20
コメントは面倒だぞ
cout << "/* comment? */" << endl; とかもある
47デフォルトの名無しさん:2010/02/07(日) 13:05:01
>>42
re.compile(r'(//[^\n]*$)|(/\*.*?\*/)', re.M | re.S).findall(target_str)
4847:2010/02/07(日) 13:07:44
うげ、もろかぶり。しかも>>46考えてない
49デフォルトの名無しさん:2010/02/07(日) 13:28:37
>>44
> 42のコメントの定義だと
> /* foo // bar */
> foobar */
> は "foobar" までコメントになるけど
ならないだろ。
42のコメントの定義でも。

> 実際gccで試してみたらエラーだな
無論そうだろう。
5042:2010/02/07(日) 13:40:01
すみませんみなさん。
確かに
/* // */
のようなケースについては記述をしていませんでした。

C++のプリプロセッサは基本的に前から見ていくので、
最初に出現したコメントが優先されます。
(//を無条件で優先するということはありません。)

従ってご指摘の通り、
/* foo // bar */
foobar */
は最初の/*を見た瞬間から*/が出現しない限り全て無視する(コメント扱いする)こととなります。
よってC++プリプロセッサは//を見ても何とも思わずコメント扱いを続け、
その後最初に */を見た瞬間にコメント扱いを終了します。

よって
"foobar" までコメントになるのでははなく、
/* foo // bar */だけがコメントとなりfoobar */の部分でコンパイルエラーとなります。
(当方、g++, VC++, dmcで確認しましたが全て同じ動作でした。)

5142:2010/02/07(日) 13:45:20
例:
ttp://uploader.rgr.jp/src/up1912.jpg
このような扱いです。
緑の部分がコメントで、
黒がコメントでない部分です。
52デフォルトの名無しさん:2010/02/07(日) 13:55:08
もう正規表現使うよりparser書いた方がいいんじゃないか
53デフォルトの名無しさん:2010/02/07(日) 15:02:50
文字列に含まれるコメントがなぁ・・・
import re

a = '''
//////////////////////comment1/////////////////
var = 43; // comment2
/* comment3
comment4
*/
/* comment5 */
" /* comment6 */ "'''

comment_and_string = re.compile(r'(?<=//)[^\n]*|(?<=/\*).*?(?=\*/)|"[^\n]*"', re.M|re.S)
[ x.group(0) for x in comment_and_string.finditer(a) if x.group(0) and x.group(0)[0] != '"']

re.scannerでparser書いた方がわかりやすいかも
5442:2010/02/07(日) 15:07:51
みなさんありがとうございます。

正規表現で一気にやらず、処理を分けるかparserを書くことにします。

ありがとうございました。
55デフォルトの名無しさん:2010/02/07(日) 15:12:56
正規表現ミスってた
comment_and_string = re.compile(r'(?<=//)[^\n]*|(?<=/\*).*?(?=\*/)|"[^\n"]*"', re.M|re.S)

シングルクォーテーションとダブルクォーテーションの区別が付きにくいフォントだと
かなり終わってる
56デフォルトの名無しさん:2010/02/07(日) 15:19:11
49は穴だらけの仕様を書いてしまうか、記載外の処理を思い込みで実装するタイプ
57デフォルトの名無しさん:2010/02/07(日) 15:21:13
>>56
釣られてどうする
荒れるからやめろよ
58デフォルトの名無しさん:2010/02/07(日) 15:22:48
Finding Comments in Source Code Using Regular Expressions
ttp://ostermiller.org/findcomment.html
ここでも結局
Does not support multi-line comments
とかなっているね。
しかも、文字列の中にあるのは除外すべきなのに対応できていない。
59デフォルトの名無しさん:2010/02/07(日) 15:28:41
詳説正規表現にあった気がするよ
60デフォルトの名無しさん:2010/02/07(日) 15:43:05
>>59
俺は持っていないが、
さすがに文字列中のコメントには対応できていないんじゃないか?
(文字列の中にあるのは除外すべきってやつ。)
61デフォルトの名無しさん:2010/02/07(日) 16:03:32
六章末にあるが誰も引用したがらないだろうな・・・
62デフォルトの名無しさん:2010/02/07(日) 16:06:48
Google booksで覗けるから未読の人は見てみるといい
63デフォルトの名無しさん:2010/02/07(日) 16:07:14
正規表現のスレに行って聞いてみるわ。
6460:2010/02/07(日) 16:10:01
詳説正規表現をGoogle booksで見てみたけど、
やっぱり
Does not support multi-line comments状態だね。
65デフォルトの名無しさん:2010/02/07(日) 16:17:30
>Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems
>ある人達が一つの問題に直面した時,彼らは「ああ、正規表現を使えばいいのか.」と考えた。今彼らは二つの問題を抱えている。
>- Jamie Zawinski
66デフォルトの名無しさん:2010/02/07(日) 16:17:58
話は変わるけど>>43にある通り、正規表現の先読み後読みって非対称的で可読性低いよね
由来が由来だから仕方ないけど、文字列処理だけPythonicに書けないってのがなんかなぁ……
正規表現の代替って無いもんだろうか
67デフォルトの名無しさん:2010/02/07(日) 16:22:23
そもそも、正規表現で解析できるのはregular languageだけだ。
行コメント、複数行コメントと文字列リテラルが絡むとregular languageの範囲を超えて
context free languageになるから、それようの構文解析器が必要になる。

構文解析ライブラリを使って自分で解析するか、 Pygments みたいなライブラリを
再利用するべし。
68デフォルトの名無しさん:2010/02/07(日) 16:28:47
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq6.html#how_do_i_use_a_regular_expression_to_strip_c_style_comments_from_a_file

# Perl用
s#/\*[^*]*\*+([^/*][^*]*\*+)*/|//[^\n]*|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $2 ? $2 : ""#gse;

うえっぷ
69デフォルトの名無しさん:2010/02/07(日) 16:30:45
>>66
Pythonらしいのは、やはり、自作パーサだろう
http://inforno.net/articles/2008/08/08/sexp-parser-in-python-re-scanner

まぁ55みたいに文字列とコメントにマッチさせて、文字列除いてもいいけど
70デフォルトの名無しさん:2010/02/07(日) 16:32:51
>>65
英語かっこいい
何で日本人はこう気の利いたこと言えないの?
劣等民族だから?
71デフォルトの名無しさん:2010/02/07(日) 16:34:02
>>70
英語かっこいいって、お前中学生かよw
72デフォルトの名無しさん:2010/02/07(日) 17:01:36
>>70
俺は正規表現厨氏ねって思ってるから安心して
73デフォルトの名無しさん:2010/02/07(日) 17:03:40
>>53,55は "/**//3" をうまく扱えないな
74デフォルトの名無しさん:2010/02/07(日) 17:21:47
75デフォルトの名無しさん:2010/02/07(日) 17:35:36
>>53
/* test
char *hoge = " */ ";
*/
76デフォルトの名無しさん:2010/02/07(日) 17:54:44
>>75
それ >>74 でも失敗するな
77デフォルトの名無しさん:2010/02/07(日) 19:21:19
>>73
先読みを使ってるせいで
複数行コメントの終端を表すスラッシュがマッチ後も消費されないから
単一行コメントのスラッシュとしても使われてしまう
ってことか。なるほど。

>>75
それコンパイルできる?
gccだとエラーになった
78デフォルトの名無しさん:2010/02/07(日) 20:53:28
コンパイルエラーが正解
79デフォルトの名無しさん:2010/02/07(日) 22:01:14
>>75
 /* test
 char *hoge = " */ ";
 */

 /* test
の/*を見たところからコメント扱いを続けるため。
 char *hoge = " */ ";
 */

             ";
 */
だけが残される。
よってコンパイルエラー。
80デフォルトの名無しさん:2010/02/08(月) 13:53:50
返事かなり遅れました...
僅かな時間を見つけて

>>25
ありがとうございます
is notですか...
参考になります
一致しない時に返すという条件を定義するんですね
あと__init__とかって組み込み型を継承しないと使えない特殊メゾットなんですね
>ハッシュ値がどうたらは置いといてコンテキスト乱れまくってるぞ
混乱してました。英語のリファレンス読んだり、日本語の読んだりして
あと僕が思い描いていた処理とは少し違うようです
でもとてもいいヒントになりました
http://codepad.org/Nxv7UZul
こんな感じです

>>26
覚えておきます...
メンバってメンバ関数のことですよね
調べてみます
>>27
すいませんでした
今度から活用させていただきます

あと最近Pythonと文法が似ている(と誰かが言っていた)JSにも挑戦中です
ブロック体で表現する以外にthisだとかvarだとか...
Pythonでも;を付ける癖が...

ありがとうございました
81デフォルトの名無しさん:2010/02/08(月) 19:53:13
悪いんだが、君が今やろうとしているオブジェクト指向というか、クラスシステムの部分は1番似てない。
それに、varをはじめとするスコープの仕組みもだいぶ異なる。

JavascriptとPythonで似ているところといえば、
ジェネレータとか、関数がオブジェクトとか、ある程度使いこなせてる人が「便利だな」と感じる部分。
だから生半可な気持ちで掛け持ちすると火傷しそうな気がする。
82デフォルトの名無しさん:2010/02/08(月) 20:11:34
>クラスシステムの部分は1番似てない

そうかな?
83デフォルトの名無しさん:2010/02/08(月) 20:53:21
プロトタイプベースとクラスベースだから、まぁ違うよね。

PythonとJSの文法を似てると言うのなら、CもJavaもRubyもHaskellも似てるうちに入る。
以後その誰かの言うことは信用するな。
84デフォルトの名無しさん:2010/02/08(月) 21:57:49
JavaScriptはモジュールがないのがな
Pythonのモジュールシステムが便利すぎるだけだが
85デフォルトの名無しさん:2010/02/08(月) 22:11:40
Python って頑張ればプロトタイプベースで書ける
86デフォルトの名無しさん:2010/02/08(月) 22:11:58
rindex() と index() って何か違うの。
87デフォルトの名無しさん:2010/02/08(月) 22:13:05
>>85
いや、頑張らなくていいから w
88デフォルトの名無しさん:2010/02/08(月) 23:40:34
>>86
index()は左から探し、rindex()は右から探して最初にヒットしたものを返す。

>>a = "test"
>>a.index("t") == 1
True
>>a.rindex("t") == 3
True
89デフォルトの名無しさん:2010/02/09(火) 00:40:43
頑張ってるのってかなり遅い
90質問:2010/02/09(火) 02:15:16
OS: Windows7 x64
Pythonのバージョン: Stackless Python 2.6.4

という環境で

http://www.riverbankcomputing.co.uk/software/pyqt/download

からPyQt-Py2.6-gpl-4.7-1.exeをダウンロードしてインストールしました。

そして実行すると以下のようなエラーが出ました。

> cat QTHello.py
import sys
from PyQt4.QtGui import *
app = QApplication(sys.argv)
button = QPushButton("Hello World", None)
button.show()
app.exec_()
> python QTHello.py
Traceback (most recent call last):
File "QTHelloWorld.py", line 2, in <module>
from PyQt4.QtGui import *
MemoryError

悩みましたが解決方法がわからず、
皆さんのお力をお借りしたいと思い、
質問させていただきます。
91デフォルトの名無しさん:2010/02/09(火) 02:32:19
Windows Vista 32bit
Python 2.5
そのソースのままで動いた

64bit 環境では知らん

関係ないかもしれないけど
from PyQt4.QtGui import *
をやめて下のように書いたらどうなりますか?

import sys
import PyQt4.QtGui as QtGui

app = QtGui.QApplication(sys.argv)
button = QtGui.QPushButton('Hello, work', None)
button.show()
app.exec_()
92デフォルトの名無しさん:2010/02/09(火) 04:12:37
64bitを窓から投げ捨てろ!
93デフォルトの名無しさん:2010/02/09(火) 05:13:27
Hello, work
94質問:2010/02/09(火) 10:56:41
>>91
そのソースでも同じくMemoryErrorがでました。
64bitというのが怪しいのでしょうか・・・
95デフォルトの名無しさん:2010/02/09(火) 11:15:11
96質問:2010/02/09(火) 11:22:03
>>95
なるほど、PyQTは行儀の悪いライブラリだからStackless Pythonでは動かないんですね。
97質問:2010/02/09(火) 11:50:04
解決しました。

PyQTのソースを弄ってまでStackless Python上で使い続ける気が無かったので、
普通のPython上で実行してみたところ正常に実行できました。
ありがとうございました。
98デフォルトの名無しさん:2010/02/09(火) 11:52:40
でもこれからは64bit全盛なんだろうなぁ・・・
俺もそろそろ64bitに移行したいが、こういうトラブルが怖い
99デフォルトの名無しさん:2010/02/09(火) 12:00:48
この場合64bitは関係ないと思う。Stackless PythonというPython実装の問題。
100デフォルトの名無しさん:2010/02/09(火) 12:48:46
Stackless Python でもほとんどの拡張モジュールがそのまま動く。
PyQtというかSIPが行儀の悪い拡張をしているのが問題。
101デフォルトの名無しさん:2010/02/09(火) 15:36:57
r8 と r9 をどっかで潰してるんだろうな
102デフォルトの名無しさん:2010/02/10(水) 08:35:21
1: #!/usr/local/bin/python
2:
3: spams = [ "spam", "egg", "ham" ]
4: for i in spams:
5: if i != spam
6: print "spam"
7: print i
8: print "SPAM! SPAM! SPAM!"

ネットで拾った文で適当に動かしてみてるのですが5行目がおかしいみたいで動きません
どういじるべきなんでしょうか?
103デフォルトの名無しさん:2010/02/10(水) 09:11:25
よくわからんけど、5行目は

if i == "spam":

なんじゃねの?
104デフォルトの名無しさん:2010/02/10(水) 09:15:36
動きました
ありがとうございます
105デフォルトの名無しさん:2010/02/14(日) 12:41:31
__hoge__
↑こういう前後にアンダーバー2つついてるものの名前教えろや
106デフォルトの名無しさん:2010/02/14(日) 12:49:47
特殊メソッド
107デフォルトの名無しさん:2010/02/14(日) 12:53:51
サンクス。褒美をやろう(・∀・)つI
108デフォルトの名無しさん:2010/02/14(日) 15:37:50
print 'aaa'

if boolean_flag :
    〜ここ〜

print 'bbb'
print 'ccc'

###################################################

上のソースにて、〜ここ〜の部分に何か入れて、
このプログラムを終了してしまいたいのですが、
どうすればいいでしょうか?
boolean_flagがTrueの時にプログラムを終了したいということです。
よろしくお願い申し上げます。
109デフォルトの名無しさん:2010/02/14(日) 15:38:24
sys.exit()
110デフォルトの名無しさん:2010/02/14(日) 15:52:12
>>109
ありがとうございます。
111デフォルトの名無しさん:2010/02/14(日) 15:59:58
raise SystemExit でおk。処理内容は等価だし。
112デフォルトの名無しさん:2010/02/14(日) 16:37:12
文字列sのなかに、
"hogehoge"
という文字列が含まれているかを調べるにはどうすればいいのでしょうか?
if s.includes("hogehoge") :
みたいなことをしたいのですが。

よろしくお願い申し上げます。
113デフォルトの名無しさん:2010/02/14(日) 16:43:56
if "hogehoge" in s:
  print('s contains "hogehoge"')
114デフォルトの名無しさん:2010/02/14(日) 16:45:10
>>113
if "hogehoge" in s:
これでできるのですか。
ありがとうございます。
助かりました。
115デフォルトの名無しさん:2010/02/14(日) 17:06:42
if spam in mail:
みたいなフィルタ書けると嬉しいな
116デフォルトの名無しさん:2010/02/14(日) 17:09:55
何を意図しているのか正確には分からないが、__contains__をオーバーロードすればいいと思う
117デフォルトの名無しさん:2010/02/14(日) 23:04:37
Process.kill(:USR1, pidi)
他の動作中プロセスに割り込みするにはシグナルしかないの?
WindowsにはUSR1とかない?から、違う方法使いたい。
118デフォルトの名無しさん:2010/02/15(月) 16:24:29
ああ、、、、、
http://codepad.org/rYcyP8as
質問なのですが、Pythonを記述する作法見たいのが書かれているサイトはありませんか
英語でもいいです
119デフォルトの名無しさん:2010/02/15(月) 16:33:55
120デフォルトの名無しさん:2010/02/15(月) 16:40:50
>>119
どうもです
121デフォルトの名無しさん:2010/02/16(火) 00:57:22
PCゲームのmodを作成しようと、windows7 64bitのパソコンに
Python2.6.4 Windows X86-64をインストールし、Path、PATHEXTの設定を
行いました。
しかし、拡張子.pyのファイルをPythonで開くことができません。
正確には一瞬ウィンドウが開くのですが、瞬時に閉じてしまいます。
Python自体は正常に動作します。
どのように対処すれば良いでしょうか?
初心者以前の質問で申し訳ありませんが、助言をお願いします。
122デフォルトの名無しさん:2010/02/16(火) 01:02:31
えーと何か処理を書けばいいのではないでしょうか
123デフォルトの名無しさん:2010/02/16(火) 01:04:43
処理が終了したから閉じた。
右クリックしてidle上で実行しる。
124デフォルトの名無しさん:2010/02/16(火) 01:05:48
コマンドプロンプトから実行するか
スクリプトの最後でraw_inputを使う
125121:2010/02/16(火) 01:12:42
>>122-124
ありがとうございます
126デフォルトの名無しさん:2010/02/16(火) 02:48:35
returnの「値を返す」の意味が上手く理解できません。
何か上手い例えとかありましたらご教授頂きたいです。

例)
"""Print a Fibonacci series up to n."""
def fib(n):
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a+b
    return result


最後はprintでなく、returnでないといけないのでしょうか?
returnの意味が…orz
127デフォルトの名無しさん:2010/02/16(火) 03:22:08
print にしたけりゃ print でいいんだよ
128デフォルトの名無しさん:2010/02/16(火) 03:38:55
>>126
http://en.literateprograms.org/Fibonacci_numbers_(Python)

・return はひとつだけ値を返したいとき
・yield は for in 構文で複数の値を返したいとき

でおk

print はデバック用に確認するためのみに使うべきもの (conoleに出力logファイルに出力)
129デフォルトの名無しさん:2010/02/16(火) 03:44:43
>>127,128さん
回答ありがとうございます。初心者なのでちょっと理解しかねる部分もありますが(滝汗
そもそも「値を返す」って日常生活では使わない言葉ですよね(汗
日常的な言語で表現するとしたら?
計算なりの結果を最終的に表示するって感じですか?
130デフォルトの名無しさん:2010/02/16(火) 03:52:58
どっかでみた自動販売機の例えが分かり易かったかもな
それでいうと、お釣りが「値を返す」って事になる
131デフォルトの名無しさん:2010/02/16(火) 04:05:20
表示するんじゃなく、結果を置き換えること。
日常じゃ、関数なんて言葉使わないだろう。それと同じで、日常じゃ返すなんて言葉を使わない。

例えば、
a= 1+1
の場合、1+1の計算が行われることによって、2に置き換えられ、
a=2
と同じ意味になる。

def twice(x):
 return x*2

a=twice(3)
は、twice(3)が6を返す=6に結果を置き換えるので、
a=6
と同じ意味になる。

def p_twice(x):
 print x*2
の場合、何もreturnしてない=何も返してない。
何も返さなかったときの動作は言語によって違うが、Pythonの場合は、Noneが返される。
結果、
a=p_twice(3)は、p_twice(3)がNoneを返す、つまりNoneに置き換えるので
a=None
と同じ意味になる。

全然違うでしょ?
132デフォルトの名無しさん:2010/02/16(火) 04:08:35
return で値を返していると
関数を使ったときに、その結果を変数に入れて
合計を求めたり、逆順にしてみたり色々弄れる
>>> a = fib(100)
>>> sum(a)
232
>>> a[::-1]
[89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 1]

日常的だとPDFじゃなくてExcelでほしいとか?
133デフォルトの名無しさん:2010/02/16(火) 04:08:38
>>126
おまいさんみたいなのにはみんなして触らないように心掛けるもんだが、
あえて言っておくと
ヒント:関数
134デフォルトの名無しさん:2010/02/16(火) 06:12:48
>>131さん
とてもわかりやすかったです。
置き換える。
意味がわかりました。
面倒な質問に付き合って頂いてすみませんでした。
ありがとうございました。
…またお願い致します(汗
135デフォルトの名無しさん:2010/02/16(火) 20:00:14
linuxからインタプリタで最近python始めました
www.python.jpのドキュメントなどを見てやってます
あとで分からなくなったりしたときのためにやったことをソースとして残しておきたいと思うのです
インタプリタで実行したコマンドをスクリプトにして保存する(というか実行したことをテキストかなにかで残しておく)ことは可能なんでしょうか?
日本語が所々おかしいところありますがよろしくおねがいします
136デフォルトの名無しさん:2010/02/16(火) 20:10:36
>>135
man script
137デフォルトの名無しさん:2010/02/16(火) 20:10:41
>>135
標準のインタプリタの代わりにIPythonを使って、 %logstart を使うとログが取れるよ。
他の方法だったら、 screen を使うとかかな。
138デフォルトの名無しさん:2010/02/16(火) 20:29:49
tmux
139デフォルトの名無しさん:2010/02/16(火) 21:50:22

http://codepad.org/UYVxK3uW
質問なのですが、Pythonのモジュール使い方をサンプルソース付きで解説しているブログとかありませんか
英語でもいいです
140デフォルトの名無しさん:2010/02/16(火) 22:03:20
ぐぐればいっぱいある

次の方どうぞ
141デフォルトの名無しさん:2010/02/16(火) 22:50:59
>>139
ActiveState, PyMOTW
142デフォルトの名無しさん:2010/02/17(水) 18:06:30
>>140
>>141
ありがとうございます
143デフォルトの名無しさん:2010/02/17(水) 20:29:59
135です
>>136 さん
>>137 さん
>>138 さん
お礼がおそくなりました
自分で読み直しても理解しにくいような文章に迅速な対応わざわざご回答ありがとうございました。
また来るかもしれないのでその時はよろしくおねがいします
144デフォルトの名無しさん:2010/02/19(金) 02:02:51
ファイルのMD5を取得するにはどうすればいいんですか。
import hashlib
hashlib.md5("c:\test.exe").hexdigest()

だと文字列"c:\test.exe"のMD5値が得られてしまいます。。。
145デフォルトの名無しさん:2010/02/19(金) 03:18:32
import hashlib
hashlib.md5(open("c:\test.exe").read()).hexdigest()
146デフォルトの名無しさん:2010/02/19(金) 03:29:56
せっかくなので一気に全部読まずにちょっとづつ読みながら計算する方法も教えて頂けますか?
147デフォルトの名無しさん:2010/02/19(金) 03:42:35
おいこの流れ前にも見たぞ?
148144:2010/02/19(金) 03:49:32
>>146 オメー誰だ

>>145
ありがとうございます。
でも、欲しい値が得られません><
f.read()で全部読み込めてない気がするんですが。。。

ちなみに、これの値です。
http://www.aimp.ru/index.php?do=download
149デフォルトの名無しさん:2010/02/19(金) 04:05:32
バイナリモードで開けばいい
open(r"c:\test.exe", "rb").read()
150144:2010/02/19(金) 04:18:27
>>149
うおおお、出来ました!ありがとうございます。
151デフォルトの名無しさん:2010/02/19(金) 04:23:19
import md5
h = md5.md5()
f = open('main.cpp', 'rb')
while True:
  b = f.read(4096)
  if not b:
    break
  h.update(b)
f.close()
print h.hexdigest()
152デフォルトの名無しさん:2010/02/19(金) 11:30:25
md5はPython2.5で撤廃済みだぞ
それはさておき

> このメソッドを繰り返して呼び出す操作は、それぞれの呼び出し時の
> 引数 arg を結合したデータを引数として一回の呼び出す操作と同等に
> なります: つまり、m.update(a); m.update(b) は m.update(a+b) と同等です。

メモリ気にして小分けに渡してupdateしてるの
こういう説明されると意味無しに思えて嫌だ
153デフォルトの名無しさん:2010/02/19(金) 19:25:51
禿堂
154デフォルトの名無しさん:2010/02/19(金) 23:07:19
TkinterのListboxについての質問です。
listbox内のアイテムをget()で取得するときに<Button-1>だと一つ前に選択
していたアイテムを取得してしまいます。
これをクリックしたアイテムを取得するようにするにはどのようにすればできますか。
<Double-Button-1>ではなくButton-1>でお願いします。
155デフォルトの名無しさん:2010/02/20(土) 14:02:14
ある1文字が全角か半角か判定するのはどのようにしたらいいのでしょうか?
156デフォルトの名無しさん:2010/02/20(土) 14:48:06
unicodedata.east_asian_width
157デフォルトの名無しさん:2010/02/20(土) 14:56:28
unicodeに変換してunicodedata.name()辺り呼ぶのが比較的きれい
158デフォルトの名無しさん:2010/02/20(土) 15:38:59
汚いけど、sjisにエンコードしてlen
159デフォルトの名無しさん:2010/02/20(土) 16:11:56
double_width = set(" = dict(F=2, H=1, W=2, Na=1, A=2, N=1)
def count_width(s):
  import unicodedata
  return sum(2 if c in "FWA" else 1 for c in s)
160>>159:2010/02/20(土) 16:14:35
一行目消し忘れたw
161デフォルトの名無しさん:2010/02/20(土) 19:55:02
multi
162>>159:2010/02/22(月) 02:06:18
全然ダメじゃねーか。
sum(2 if unicodedata.east_asian_width(c) in "FWA" else 1 for c in s)
だ。
163デフォルトの名無しさん:2010/02/22(月) 02:48:21
凝った書き方するからだ
164デフォルトの名無しさん:2010/02/22(月) 21:02:36
凝った書き方はPythonの文化では好まれない。
読みやすさ&分かりやすさ優先。
・・・ってことぐらい常識だと思うぜ。
165デフォルトの名無しさん:2010/02/22(月) 21:21:44
コードはマシンに向けて書くものじゃなく
人間に向けて書くものだって誰かお偉いさんが言ってたな
166デフォルトの名無しさん:2010/02/22(月) 21:35:16
は?
167デフォルトの名無しさん:2010/02/22(月) 21:50:23
>>165
その人は今はお偉いさんじゃなくて
ホームレスになっちゃってたりしませんか?
168デフォルトの名無しさん:2010/02/22(月) 22:13:44
ネストしているわけでもないし、一行に収まる長さだし、
これくらいならぎりぎりPythonicに含まれると思うぞ。
169デフォルトの名無しさん:2010/02/22(月) 22:17:19
>>168
まあ、な。
170デフォルトの名無しさん:2010/02/22(月) 22:44:43
and/or を使うという手もある
171デフォルトの名無しさん:2010/02/22(月) 22:47:21
i = 0
while True:
 処理
 i += 1

という無限ループがちょっとカッコ悪いので、for i in 〜の形で書きたいんだけど、なにかいい方法ありますか?
172デフォルトの名無しさん:2010/02/22(月) 22:52:21
無限ループなんて物騒なもの使うなよ
173デフォルトの名無しさん:2010/02/22(月) 23:04:08
>>171
import itertools
for i in itertools.count(0):
    処理
174デフォルトの名無しさん:2010/02/23(火) 00:30:46
>>173
ありがとう。

>>172
使いたいこともあるのですよ。
175デフォルトの名無しさん:2010/02/23(火) 01:14:01
>>171
無限ループなんだからループカウンタを作る必要なくね?と思ったらbreakするまで値を1増やし続けるプログラムを想定してるのか
個人的には目にわかりやすいから普通にwhileでやったほうがよさそうな気もするけど
176デフォルトの名無しさん:2010/02/23(火) 09:44:55
>>171
generator
177デフォルトの名無しさん:2010/02/24(水) 17:59:05
arrayで行列を作成してある行を削除しようとして
del(test[row,:])
としたところ
ValueError: Can't delete array elements.
となってしまいます。どのようにしたらその行を
削除することができるのでしょうか?
178デフォルトの名無しさん:2010/02/24(水) 18:39:29
test が mutable なら
del test[row]
179デフォルトの名無しさん:2010/02/24(水) 19:36:53
せっかく教えていただいたのにできませんorz
from Numeric import *
import Numeric
import math
import sys
from scipy import gplt
from scipy import*
import sys,string
import time

test=zeros((4,2),typecode=Int,savespace=1)
rowcount=0
for line1 in range(2):
for line2 in range(2):
test[rowcount,0]=line1
test[rowcount,1]=line2
rowcount=rowcount+1
for row in range(4):
if test[row,0] ==1 and test[row,1]==1:
print row,test[row]
del test[row]
こんな感じで記述していて、一応実験的に最後の[1,1]を消そうと
思っています。
どなたかご指導お願いいたします。
180デフォルトの名無しさん:2010/02/24(水) 19:48:26
マルチする悪い子には教えてあげない、まで読んだ
181デフォルトの名無しさん:2010/02/24(水) 22:24:37
nums = filter(lambda x,y:x%y or x==y,[x for x in\
[i for i in range(2,8),[nums for nums in range(2,50)]]])\

ワンラインで素数の計算をしたいのですが
無名関数への複数の値の引き渡しがまだ良く解りません
Pythonic的には少し複雑ですがlambdaを使いたいです
使うと分かりますね、無名関数の良さが
182デフォルトの名無しさん:2010/02/24(水) 22:39:29
>>181
[i for i in range(2,8),[nums for...
この時点で意味不明。i for i のリスト内包をどこで閉じるの?

filter 使うのは、まず filter 使わずにシーケンスできてからにしたほうが
いいと思うよ。
183デフォルトの名無しさん:2010/02/24(水) 22:42:44
lambdaなんて無理に使う必要ないから
184デフォルトの名無しさん:2010/02/24(水) 22:43:07
右のほうに角カッコがあるがな
関数型言語スレならともかくここはPythonスレなので読む気も起こらないが
185デフォルトの名無しさん:2010/02/24(水) 22:47:21
>>184
いや、 [i for i in range(2,8), [nums for nums in ...]] って本当にしたいんだとすると、
[range(2,8), [nums for nums in ...]] と同じだから、 i for i が何のためにあるのか
意味がわからなくなるから、リスト内包を本当はどこで閉じたかったのかを確認したかったんだ。

よく見ると [nums for nums in range(2,50)] も range(2,50) と同じだから、全く無意味に
リスト内包使ってるんだな、 >>181 は。
186デフォルトの名無しさん:2010/02/24(水) 22:48:16
>>181
結論: ワンライナーを書くのは、まず複数行でやりたいことが書けるようになってから。
187184:2010/02/24(水) 22:52:12
>>185
了解
わざわざ説明させてしまってごめんよ
188デフォルトの名無しさん:2010/02/24(水) 22:58:06
>>186
複数行で出来るからワンライナーで書こうと思いましたが確かにその通りですね
nums = range(2, 50)
for i in range(2, 8):
    nums = filter(lambda x: x == i or x % i, nums)
ありがとうございます
189デフォルトの名無しさん:2010/02/24(水) 23:18:36
[filter(lambda x: x == i or x % i, range(2, 50)) for i in range(2, 8)]
190デフォルトの名無しさん:2010/02/24(水) 23:49:24
191デフォルトの名無しさん:2010/02/25(木) 00:09:08
>>188
テストしたか?
192デフォルトの名無しさん:2010/02/25(木) 00:14:38
ああ、俺が勘違いしてたのかスマソ
この内容なら2と8forで回さなくても良い気がする
193デフォルトの名無しさん:2010/02/25(木) 00:55:53
>>188
それ、numに再代入しちゃってるよね。再代入しちゃうワンライナーなら
そこから作っても良いけど、いきなり>>181みたいのは無いだろ。
ワンライナーじゃなくて、>>181っぽいロジックのコードを書かないと。
194デフォルトの名無しさん:2010/02/25(木) 02:48:01
reduce
195デフォルトの名無しさん:2010/02/25(木) 02:57:26
Numeric 使ってるひといるみたいだけど obsolete じゃなかった?
numpy とどうちがうの?
196デフォルトの名無しさん:2010/02/25(木) 13:49:57
初めましてこれからpython勉強します宜しくお願いします
バージョンの方ですが2.6.4と3.1.1があるみたいですがどちらをインストールすればいいでしょう
197デフォルトの名無しさん:2010/02/25(木) 13:56:00
2.6.4
198デフォルトの名無しさん:2010/02/25(木) 14:07:34
ありがとうございます早速インスコしました
とても楽しみでうずうずします
199デフォルトの名無しさん:2010/02/26(金) 02:08:19
>>188
これはどうだろうワンライナーでlambda使ってる
filter(lambda n: all(n%x!=0 for x in range(2,n)), range(2,50))
200デフォルトの名無しさん:2010/02/26(金) 02:18:55
>>188
おもしろい方法を思いついたしかも超anti-pythonic
きっとhaskell使いとかなら普通に使ってる
(lambda x,r,f: x == 8 and r or f(x+1, filter(lambda y: y%x!=0, r), f)) \
(2,
range(2,50),
lambda x,r,f: x == 8 and r or f(x+1, filter(lambda y: y%x!=0, r), f)
)
201デフォルトの名無しさん:2010/02/26(金) 02:25:06
あ、誤答だね連投失礼
(lambda x,r,f: x == 8 and r or f(x+1, filter(lambda y: y==x or y%x!=0, r), f)) \
(2,
range(2,50),
lambda x,r,f: x == 8 and r or f(x+1, filter(lambda y: y==x or y%x!=0, r), f)
)
202デフォルトの名無しさん:2010/02/26(金) 10:42:06
以前にもオライリーの「集合知プログラミング」のサンプルコードでNaNが発生する理由を
質問していたものです。時間が出来たのでもう一度トライしたくなりある程度調べました。
ttp://examples.oreilly.com/9780596529321/ の nmf.pyでの問題です。
発生原因はこの関数で間違いないと思います。">"の行はデバッグのために加えました。
NaNとNaNは比較してもイコールにならないことを利用してプログラムを止めてます。
他にも if h.any() != h.any(): と if w.any() != w.any(): も書いてますがここでは止まりません。
(.any()の使い方は良く分かっていません。インタプリタがこう書けというので書きました。)

def difcost(a,b):
dif=0
for i in range(shape(a)[0]):
for j in range(shape(a)[1]):
# Euclidean Distance
dif+=pow(a[i,j]-b[i,j],2)
> print a[i,j] ,b[i,j] ,dif
> if dif!=dif:
> return dif
return dif
何回かやりましたが結果はiterは3で必ずNaNが出るようです。
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>>

なぜかwh(一回前のwとhの積です)の方に急にnanがでるようです。これでなにか分かりませんでしょうか。
203デフォルトの名無しさん:2010/02/26(金) 10:50:27
def difcost(a,b):
dif=0
k = 0
for i in range(shape(a)[0]):
for j in range(shape(a)[1]):
# Euclidean Distance
k+=1
dif+=pow(a[i,j]-b[i,j],2)
print k,':' ,a[i,j] ,b[i,j] ,dif
if dif!=dif:
return dif
return dif
で実行してみました。結果はk=585で毎回止まるようです。メモリ系のバグでしょうか。
ubuntuもあるのでそちらでも試して見ます。

577 : 0 0.0121184608179 81.0386182152 577 : 0 0.0164147052137 91.5984888312 577 : 0 0.0292418437414 79.7176242734
578 : 0 0.0508183707462 81.041200722 578 : 0 0.0496066791031 91.6009496538 578 : 0 0.0733880158902 79.7230100743
579 : 0 0.0257723893872 81.041864938 579 : 0 0.0274640804479 91.6017039296 579 : 0 0.0441988852923 79.7249636157
580 : 0 0.0193929967783 81.0422410264 580 : 0 0.0304702331206 91.6026323647 580 : 0 0.0250509068254 79.7255911637
581 : 0 0.136879372348 81.0609769889 581 : 0 0.13911625497 91.6219856971 581 : 0 0.155482865404 79.7497660851
582 : 0 0.0558954001978 81.0641012847 582 : 0 0.0732634782209 91.6273532343 582 : 0 0.0667560238416 79.7542224518
583 : 0 0.0431843749592 81.0659661749 583 : 0 0.0296703213474 91.6282335623 583 : 0 0.0374581954731 79.7556255682
584 : 0 0.0525606269812 81.0687287944 584 : 0 0.0382979828685 91.6297002978 584 : 0 0.0666638480736 79.7600696369
585 : 0 nan nan 585 : 0 nan nan 585 : 0 nan nan
>>> >>> >>>
204デフォルトの名無しさん:2010/02/26(金) 10:52:14
>>203
585回で止まっている様子を3つ横に並べて書いたのですが、スペースが消えて
わけが分からなくなってしまいました。申し訳ございません。
205デフォルトの名無しさん:2010/02/26(金) 11:13:11
集合値プログラミング読んでないけど、がんばってるからちょっとだけ見てみた。
NumPyの配列は、0で除算しても ZeroDivizionError にならないで inf (無限) になる。
pow(a[i,j] - b[i,j], 2) してるけど、 inf - inf は NaN になるから、この結果も NaN

PythonのバグでもNumPyのバグでもないね。
factorize という関数は >>202 が突っ込んだデータに対応できないというだけ。
206デフォルトの名無しさん:2010/02/26(金) 11:14:41
207デフォルトの名無しさん:2010/02/26(金) 11:18:30
Ubuntuはk=676で止まります…

環境は
windowsXP python2.6 numpy-1.4.0-win32-superpack-python2.6.exe

あとUbuntuがpython 2.6.4 numpy-1.3.0です。
208デフォルトの名無しさん:2010/02/26(金) 11:23:19
レスありがとうございます。頭冷やしてからもう一度見てみます。ありがとうございました。
209208:2010/02/26(金) 12:10:49
…といいつつ分かりそうにも無いです…
元の論文が
http://hebb.mit.edu/people/seung/papers/nmfconverge.pdf
だそうですが、(10)の式で大なりが出てくる辺りがポイントでしょうか。
全くすれ違いですね。失礼しました。
210デフォルトの名無しさん:2010/02/26(金) 13:38:45
了解
211デフォルトの名無しさん:2010/02/26(金) 14:14:35
>>208
http://oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321
これに載ってないか見てみるといいかも

> Non-Negative Matrix Factorization is well defined only
> when there all no all-zero rows and columns.
212デフォルトの名無しさん:2010/02/26(金) 20:35:31
>>199
>>200
>>201
ありがとうございます
すごすぎて何をやっているのか正直良く解りませんが後で解析してみます
あと皆さんのおかげでなんとか超初心者から初心者に昇格できそうです
本当にありがとう、では
213デフォルトの名無しさん:2010/02/26(金) 23:48:17
Windows + Python 2.6.4 で
optparse (=コマンドラインオプション解析) を使う際
日本語のヘルプメッセージを表示するのは難しいでしょうか?

Unicodeでヘルプメッセージ文を書いてしまったら
DOS窓=ShiftJISコードで日本語を表示するコンソール上で
日本語が文字化けしてしまいそうですが…

メッセージをコンソールに出力する際には必ずUnicode→SJIS変換を行う
といった指定ができればなんとかなるのかなと想像したのですが
どうすればそういうことができるのかもさっぱりわからず…
かといって、optparse 相当を「車輪の再発明」するのも馬鹿馬鹿しいですし…
何か手はないものでしょうか?
214213:2010/02/27(土) 00:21:00
失礼しました
今試したら、u" " でメッセージを指定したら
そのまま日本語で表示されました

2.6.4 の optparse は、
Windows + DOS窓でのSJIS表示に対応していたのか…
知らなかった…
215デフォルトの名無しさん:2010/02/27(土) 00:54:22
>メッセージをコンソールに出力する際には必ずUnicode→SJIS変換を行う
>といった指定ができればなんとかなるのかなと想像したのですが

reload(sys)
sys.setdefaultencoding('cp932')

ttp://python.matrix.jp/tips/string/encoding.html
216デフォルトの名無しさん:2010/02/27(土) 02:29:44
できました。
本当にありがとうございます。
217デフォルトの名無しさん:2010/02/27(土) 04:05:33
それにしてもpythonは資料が少ないですね
僕はhttp://www.pythonweb.jp/を見て勉強しています
みなさんは見ているサイトブログ等ありますか?
218デフォルトの名無しさん:2010/02/27(土) 04:30:14
>>213-214
u"" で書いた方が「Unicode」ね。
ソースコードをUnicodeで保存していても、 "あいう" とかしたら、それはPythonにとってはバイト列。
cp932じゃないバイト列を標準出力に出したら、cp932のバイト列を期待しているコンソールは当然文字化けする。
print u"あいう" なら、Pythonは出力するときにUnicodeを出力先のエンコーディングにエンコードしようとしてくれる。

ただし、出力先がファイルだったりするとエンコーディングが判らない。なので、
import codecs
writer = codecs.getwriter('cp932')(sys.stdout)
みたいにすると、 print >>writer, u"あいう" は cp932 に変換されて sys.stdout に書かれる。
219デフォルトの名無しさん:2010/02/27(土) 04:33:27
>>218
w
220デフォルトの名無しさん:2010/02/27(土) 07:57:00
>>218
> Pythonは出力するときにUnicodeを出力先のエンコーディングにエンコードしようとしてくれる。

Perlではそのへん全然やってくれなかったので
てっきりPythonもそうなのかと思い込んでました
賢いというか、気がきくやつですね…>Python
少し惚れましたとです
221デフォルトの名無しさん:2010/02/27(土) 12:45:41
>>209
その論文は非負値行列因子分解する手法を提案したものだが
matplotlibスレでも言及されているように
コード自体はLS法を忠実に実装しているので
205の言うとおり、君が扱っているデータが
与えている因子数とマッチしないデータだったというだけ

もう少し詳しく書くと
ゼロ除算が発生することが問題なので
コード中の "hd" "wd" の要素がゼロになった時点で負け確定
なので
"w" にすべての要素がゼロの行が含まれる
"h" にすべての要素がゼロの列が含まれる
のいずれかの条件を満たした場合に失敗する

確認すべきは、diffcost内の計算ではなく "w" と "h" 自身
222デフォルトの名無しさん:2010/02/27(土) 23:54:47
f = codecs.open("hoge.txt", "r", "utf_8")
str = f.readlines()

これで hoge.txt をUTF-8で開いて内容をstrにコピーすることができますよね。
ところがhoge.txtがUTF-8では扱えない変な文字を含んでいる場合、

File "C:\Python2x\lib\codecs.py", line 674, in readlines
return self.reader.readlines(sizehint)
File "C:\Python2x\lib\codecs.py", line 583, in readlines
data = self.read()
File "C:\Python2x\lib\codecs.py", line 472, in read
newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 4105-4107: invalid data

というエラーになってしまいます。

これを、強制的に開かせることはできませんでしょうか?

よろしくお願い申し上げます。
223222:2010/02/27(土) 23:56:26
簡単に考えるとバイナリモードで開けと言うことになりますが、
それ以外でできますでしょうか?

「UTF-8では扱えない変な文字」を扱える文字コードは不明とします。
(ユーザーがUTF-8のつもりで突っ込んできたHTMLを想定しているので)

どうかよろしくお願い申し上げます。
224デフォルトの名無しさん:2010/02/28(日) 00:05:21
open('hoge.txt','rb').decode('utf-8','ignore').splitlines()
じゃだめ?
225デフォルトの名無しさん:2010/02/28(日) 00:05:49
>>224
ignoreなんてあるのですね。
ありがとうございます。
226デフォルトの名無しさん:2010/02/28(日) 01:20:53
>str = f.readlines()

w
227デフォルトの名無しさん:2010/02/28(日) 05:35:03 BE:39715384-PLT(15607)
time.strptime("Sat Feb 27 13:29:58 +0000 2010", "%a %b %d %H:%M:%S +0000 %Y")

これをコンソールから実行すると正常に値が返りますが、mod_pyhton上からだと

ValueError: time data 'Sat Feb 27 13:29:58 +0000 2010' does not match format '%a %b %d %H:%M:%S +0000 %Y'
となります。

何か特殊なことが必要なのでしょうか?
228デフォルトの名無しさん:2010/02/28(日) 07:00:07
versionは?
229デフォルトの名無しさん:2010/02/28(日) 09:26:49
>>221
なるほど。ではhd wd がゼロになる直前の値が一番ましと
割り切るしかないのですね。もっとvに0が少ないもので
試してみます。ありがとうございました。
230デフォルトの名無しさん:2010/02/28(日) 09:53:17
strptimeってOSのロケール情報が影響したような
231デフォルトの名無しさん:2010/02/28(日) 13:59:12
>>226
これはどこかまずいでしょうか?
232デフォルトの名無しさん:2010/02/28(日) 14:18:41
>>231
>>226じゃないけど、おそらくビルトインオブジェクトであるstrに代入しているところだと思う。
別に__builtins__.strを参照すれば元に戻せるけど。
233デフォルトの名無しさん:2010/02/28(日) 14:20:15
>>231
>>226 でも >>232 でもないけど、 readlines() は(文字列が入った)リストを
返すのに、文字列が入っていると誤解させる変数名を使っているのも
気になるな。
234231:2010/02/28(日) 14:50:11
なるほど。
strという変数名は避けるべきなのですね。
理想的には
str_listとかにすべきということでしょうか。
235デフォルトの名無しさん:2010/02/28(日) 14:56:39
よりも、 hoge_lines みたいに、リストの内容を示す変数名の方が良いな。
236デフォルトの名無しさん:2010/02/28(日) 16:25:52 BE:59573186-PLT(15607)
>>228
Python 2.6.4です

>>230
localeですか。そのあたりを攻めてみます。
237デフォルトの名無しさん:2010/02/28(日) 16:54:45 BE:39716148-PLT(15607)
locale.getlocale()をしたところ、
コンソールは(None, None)、mod_pythonは('ja_JP', 'UTF-8')でしたので
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')した結果、解決ができました。

失礼しました。
238デフォルトの名無しさん:2010/02/28(日) 17:27:02
>>231
>>226 でも >>232 でも >>233 でもないけど、
f = codecs.open("hoge.txt", "r", "utf_8")
で codecs をかましてるんだったら
f.readlines() は str (バイト列)のリストではなく unicode 文字列のリストが入ってると期待されるので、
ustrs = f.readlines()
みたいな感じで受けるのが良いのかもしれない
239デフォルトの名無しさん:2010/02/28(日) 23:22:56
>>224
read()が抜けてる。
codecs.open()も4つ目の引数で 'ignore' 指定できるよね。
readlines()なんかしないで forループにかけたりした方が素直な気がするけど。
240231:2010/02/28(日) 23:26:04
みなさんありがとうございます。
'ignore'フラグを利用して今回は解決できました。

どうもありがとうございました。
241デフォルトの名無しさん:2010/03/01(月) 02:19:07
バイト列のリスト? unicode 文字列のリスト?
242デフォルトの名無しさん:2010/03/02(火) 21:31:02
くそすれに見えた
243デフォルトの名無しさん:2010/03/02(火) 22:41:01
くそすれです。 どうもありがとうございました。
244デフォルトの名無しさん:2010/03/04(木) 10:39:41
from Numeric import*
a=array([3,6,4,1,9,5,2,8,7,5,1,6])
a.shape=(4,3)
print a


a[[3 6 4]
[1 9 5]
[2 8 7]
[5 1 6]]
のような配列を作成した時、真中の列のソートとともに
行も移動させる方法を教えていただけないでしょうか?
↓こんな感じに
[[5 1 6]
[3 6 4]
[2 8 7]
[1 9 5]]
245デフォルトの名無しさん:2010/03/04(木) 10:57:04
Numeric は obsolete
246デフォルトの名無しさん:2010/03/04(木) 12:52:46
では何を用いればよいのでしょうか?
247デフォルトの名無しさん:2010/03/04(木) 13:37:08
ruby
248デフォルトの名無しさん:2010/03/04(木) 14:42:33
>>247
なるほど
ありがとうございます
249デフォルトの名無しさん:2010/03/04(木) 14:56:44
>>> from numpy import *
>>> a=array([3,6,4,1,9,5,2,8,7,5,1,6])
>>> a.shape=(4,3)
>>> ind = argsort(a, axis=0)
>>> ind[:,1]
array([3, 0, 2, 1])
>>> a[ind[:,1]]
array([[5, 1, 6],
      [3, 6, 4],
      [2, 8, 7],
      [1, 9, 5]])
250デフォルトの名無しさん:2010/03/04(木) 15:18:43
numpyか
numpy+PyCUDAとか覚えないといかんかな。
「Python?遅くね?」
とか言っている奴が泡を吹く。
251デフォルトの名無しさん:2010/03/04(木) 18:18:04
エンヴィディアさんが最近ちょっとおかしいのが不安要素ではある
252デフォルトの名無しさん:2010/03/06(土) 22:16:16
pythonインスコしました

メモ張に「print "Hello world"」と書いて拡張子pyで保存しました

ダブルクリックで起動させるのですが、すぐに窓が閉じて結果がわかりません
助けてください
253デフォルトの名無しさん:2010/03/06(土) 22:19:05
自己解決しますた!
254デフォルトの名無しさん:2010/03/06(土) 23:31:44
かわいい
255デフォルトの名無しさん:2010/03/07(日) 04:13:24
pythonでtwitterクライアントを作っていますが、IDとパスワードはどう管理すれば良いですか?
暗号化してファイルに保存するのは安易すぎますか?
256デフォルトの名無しさん:2010/03/07(日) 06:12:47
python関係ある?
257デフォルトの名無しさん:2010/03/07(日) 11:45:40
>>255
複数のアカウントを暗号化して、それを1つのパスワードで管理するなら
手間は減らせる。

でなければ都度入力させる方が安全。
258255:2010/03/07(日) 14:36:50
>>257
アカウントは現状1つしか想定していないので、
その都度入力するように実装しようと思います。
ありがとうございました。
259デフォルトの名無しさん:2010/03/07(日) 20:56:57
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
260デフォルトの名無しさん:2010/03/07(日) 20:59:20
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import oppai
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named oppai
>>>
261デフォルトの名無しさん:2010/03/07(日) 21:21:00
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import sex
File "<stdin>", line 1
SyntaxError: not a chance
>>>
262デフォルトの名無しさん:2010/03/07(日) 21:23:37
おっぱいをマルチするなw

くらえっ
>>> import this
263デフォルトの名無しさん:2010/03/07(日) 22:19:38
local_netモジュールはおもにどんなスクリプトを書く時に使うのでしょうか?
またモジュール一覧などがみれるサイトはありますか?
264デフォルトの名無しさん:2010/03/07(日) 22:36:32
265デフォルトの名無しさん:2010/03/07(日) 22:39:14
ありがとうございます
今日pythonを一通り理解したばっかでまだまだ全然わかんない‥
初心者用のお題とかありますか?
266デフォルトの名無しさん:2010/03/07(日) 22:42:14
>>265
hello world
267デフォルトの名無しさん:2010/03/07(日) 22:42:25
>>263
ドラマで使われてたやつらしいけど
local_netっていうモジュールが実際にあるわけじゃないから
(誰かが真似て作ってるかもしれないけど)
ここで聞いても意味ないと思うよ

>>265
チュートリアルのコードの部分を中心に読むとか
説明でわからないところは調べるか飛ばすかここで聞けばおk
268デフォルトの名無しさん:2010/03/07(日) 22:54:00
>>265
どの言語でも同じ。まずは何に使うか、だね。

でも一通り理解したって凄いね。
漏れなんか半月やってるのに未だに良く分からん。
ドキュメントの見方が。結局ライブラリのソース拝んでる。
269デフォルトの名無しさん:2010/03/07(日) 22:57:54
すいませんあげてしまいました
>>267
どおりでググっても出ない訳ですか
自分でつくったってことですね
>>268
本当に基本的な事ですよ
クラスの書き方とか
イテレータとかめんどいのは覚えてないし
270デフォルトの名無しさん:2010/03/07(日) 23:01:29
何やってんだ‥さげれてない
>>264
オヌヌメが開けないんですが
271デフォルトの名無しさん:2010/03/07(日) 23:04:54
>>269
漏れの場合はGoogle DATA APIを扱いたくてなんとなくPythonになったので
参考にはならないが、

今までに他の言語で作ったものがあれば、それを
この言語に移植してみるのも勉強になると思う。

違いが分かる。

たとえば
ttp://code.google.com/p/piwate/wiki/PythonFileIOTips
こんな感じ。

272デフォルトの名無しさん:2010/03/07(日) 23:08:00
pythonがプログラミング初体験なんです
無難に電卓ですかね?
だとするとTkinter と wxpythonどっちがいいですか?
>>270ブロックを解除したら開けました
273デフォルトの名無しさん:2010/03/08(月) 00:50:26
>>272
作りたいものを作ればいい。
274デフォルトの名無しさん:2010/03/08(月) 01:20:10
>>272
電卓程度ならTkinterで良いと思うよ
275デフォルトの名無しさん:2010/03/08(月) 03:56:24
276>>272:2010/03/08(月) 14:37:39
みなさんありがとうございます

>>275
ここはみた事あるんですがよく分からなかったです‥
277デフォルトの名無しさん:2010/03/08(月) 18:18:01
>>272
右も左もわからないなら、チュートリアルを読んでCUIのプログラムを書いてみる
http://www.python.jp/doc/nightly/tut/tut.html

wxPythonはここが解りやすいかも
http://www.harukaze.net/~haruka/wxpython/index.html
278>>272:2010/03/08(月) 18:26:32
>>277
有難うございます
素晴らしいです


メールを送るようにするのはどうすればいいでしょうか?
すいません質問ばかりで
279デフォルトの名無しさん:2010/03/08(月) 19:00:44
スパマーは死ね
280デフォルトの名無しさん:2010/03/08(月) 19:37:52
>>279
ハムを食べて何が悪いんですか
281>>272:2010/03/08(月) 19:46:51
>>279
プログラミングのきっかけは以前メールを千件一人に送りつけるツールをみたことですのでwww
282デフォルトの名無しさん:2010/03/08(月) 20:45:58
>>281
まぁなんだ、最初は自分のアドレスにちまちま送るぐらいにしとけ。

宛先如何に関わらず、大量に発信するとISPにマークされる。

対策:
・インターネットに負荷を掛けないよう、ゆっくり送る
・沢山のISPに分散して実装し、それぞれから少しづつ送信する

補足:
・逆引き可能なドメインでないと拒否されることがある。
・ホワイトリスト/ブラックリストに載っているドメインだと拒否されることがある。
・相手ごとに同意が必要(携帯の場合。サイトで同意を取り、アドレスを教えてもらう)
・クリーニングされてないメールアドレスを使った場合
携帯キャリアが送信をブロックすることがある。
・一度に沢山送ると携帯キャリアはブロックする。
なお、その閾値は公表されてない。冒険するか、無難なスピードにしておくこと。
283>>272:2010/03/08(月) 20:57:03
>>282
うわすげえ
ありがとう
ヘッダがよくわからないからまだまだ先になると思うけど
284デフォルトの名無しさん:2010/03/08(月) 22:32:57
モジュールの相互参照ってできないのでしょうか?
たとえば
(./a.py)
import b
class a_class:
 def __init__(self):
  b_class()
a_class()

(./b.py)
import a
class b_class:
 def __init__(self):
  return
のようなコードではNameError: global name 'b_class' is not definedとエラーになってしまいます.
ひとつのファイルに書けばいい話なのですが、
それぞれのクラスが巨大になってきてファイルを分割したい欲求に駆られました

よろしくお願いします
285デフォルトの名無しさん:2010/03/08(月) 22:58:33
pythonで

def __init__(self, title, description, duedate, addeddate=None)

これのaddeddate=Noneってどういうこと?
286デフォルトの名無しさん:2010/03/08(月) 23:13:02
>>284
クラスのガワだけ定義して置いて、
後から代入すればいいんじゃね?
試してないけど。

チュートリアルの9.4いろいろな注意点辺り。
代入したらそのインスタンスのみに効くような気がしなくもないが
よくわからん自分で試してみてくれ。
287デフォルトの名無しさん:2010/03/08(月) 23:33:51
>>284
b.b_class
という意味じゃなくて?
288デフォルトの名無しさん:2010/03/08(月) 23:48:05
>>287
失礼しました
./a.pyのb_class()はb.b_class()が正しいです.
エラーメッセージも正しくは
AttributeError: 'module' object has no attribute 'b_class'
です.恥ずかしい・・・

>>286
C言語で宣言文のみ先に読み込ませるようなことでしょうか?
pythonでのサンプルコードがパッと思いつかないのでもうちょっと勉強してみます.
289デフォルトの名無しさん:2010/03/08(月) 23:52:40
>>288
1) import b を、 def __init__(self) の中に入れる。
2) a_class() とインスタンスを作る部分をさらに別モジュールに分ける。
3) b.py で import a を止める
290284:2010/03/09(火) 00:21:00
>>289
ありがとうございます.
2)までの手順でエラーなく実行できました.

import bを関数内部に書くことで
import aを行っている最中にb.pyを読まないようにする,
という理解でいいんですよね?
291デフォルトの名無しさん:2010/03/09(火) 00:34:06
>>290
そうですね。
でも、相互参照しているのはやはりモジュールを分割するときの切り口が悪いかもしれないです。
292デフォルトの名無しさん:2010/03/09(火) 02:03:20
>>284
a_class()のインスタンス化する場所に問題があると思う。
importってのは、実質的にそのスクリプトを丸ごと実行しているので、
グローバルなスコープに書かれたコードはimport時に実行されてしまう。
293デフォルトの名無しさん:2010/03/09(火) 03:06:19
for x in range(1,10)

inの意味がわかりません
xにrange(1,10)を入れるということでしょうか
294デフォルトの名無しさん:2010/03/09(火) 03:14:11
xに1から10までを順に入れるということです。
295デフォルトの名無しさん:2010/03/09(火) 03:20:06
rangeについてはわかっておりました
ご丁寧にありがとうございます
もう一つなんですが度々出てくるinについて教えていただけないでしょうか
296デフォルトの名無しさん:2010/03/09(火) 03:26:19
for x in hoge:
はhogeという集まりから一つずつ取り出してxに入れろよボケナスという意味です
297デフォルトの名無しさん:2010/03/09(火) 03:33:32
>>296
それじゃちょっとニュアンスが違うよ。

hogeという集まりから一つずつ取り出してxに入れろよハゲ

って感じかと。
298デフォルトの名無しさん:2010/03/09(火) 03:33:41
なるほどわかりやすい説明ありがとうございます
299デフォルトの名無しさん:2010/03/09(火) 03:34:53
ボケナスかもしれませんがハゲではありません
300デフォルトの名無しさん:2010/03/09(火) 03:44:58
いやPython2.5以降はhoge→ハゲが推奨されると聞いていたので。
301デフォルトの名無しさん:2010/03/09(火) 04:00:28
>>295
inは文脈によって意味が異なる。
というより、for-inで1つの構文なので、forの後のinは他のinとは意味が違う。

for以外のinはここに書いてある。
ttp://www.python.jp/doc/release/lib/typesseq.html
ttp://www.python.jp/doc/release/lib/types-set.html
ようするに、a in bは「bの中にaが含まれるか?」という条件式。
'a' in 'abc'はTrue、'd' in 'abc'はFalseになる。
302デフォルトの名無しさん:2010/03/09(火) 04:06:04
>>301
なるほどかゆいところに手が届きました
ありがとうございます
303デフォルトの名無しさん:2010/03/09(火) 06:25:18
>>296
ふと、
ランダムに値を返すイテレータ作ったら面白そうな気がした。
304デフォルトの名無しさん:2010/03/09(火) 13:43:17
>>303
こうですか?わかりません ><

import random
class randomIter(object):
    def __iter__(self):
        return self
    def next(self):
        return random.randint(0,100)

if __name__ == '__main__':
    ra = randomIter()
    for x in ra:
        print x
305デフォルトの名無しさん:2010/03/09(火) 13:50:12
from Numeric import *

を用いてarrayでからの2次元配列を作成し、
[2,5,3]
[9,1,7]
[8,4,6]
を順に加えながら配列の大きさを拡大していく方法を
教えていただけないでしょうか?
306デフォルトの名無しさん:2010/03/09(火) 14:03:31
arrayは入れ子にできないんじゃない?
arrayじゃないとだめなの?
307デフォルトの名無しさん:2010/03/09(火) 14:56:03
listなら出来そうなのですが、計算させたいのでarrayを使おうかと・・・
308デフォルトの名無しさん:2010/03/09(火) 15:07:18
list みたいな可変長配列つかって、計算する部分だけ array にしたら?

そう言えば、list から array への変換ってデータをコピーするのかな?
OpenCVの vector<*> から cv::Mat への変換はデータのコピーをしないけど
numpyではどうなってるのだろう。
309デフォルトの名無しさん:2010/03/09(火) 18:08:14
for i in [1 5 6 3 7]:
n=a[i]
for j in range(n):
a=n[0]
b=n[1]

z=n[]
 
ある値を格納するとき委は変数を指定しなければなりませんが、
上のようなとき(イメージ)にnの数によって変数を作成していく方法ってありますか?
nの長さによって変数を増やすのはどうやればできますか?
310デフォルトの名無しさん:2010/03/09(火) 18:12:34
>>309
グローバル変数なら可能。メンバ変数などでも可能。
ローカル変数なら不可能。
関数は関数オブジェクトを生成する時にローカル変数一覧が決定されるので、
動的にローカル変数を増やすことができない。

そもそも、何をやりたいの?
絶対、配列か辞書を使う方が賢いよ。
311デフォルトの名無しさん:2010/03/09(火) 19:28:28
>>309
仮に n が 100 だった場合 100 番目の変数にはどうやってアクセスするんだ
バラバラに展開した変数と目的の値の対応を覚えておくのは大変じゃないか
いずれにしろ別の方法を探したほうがいいと思うよ

普通はリストのまま使ったほうがいい
>>> board = [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
>>> board[1][1]
1
>>> board[0][0] = 1
>>> board
[[1, 0, 0], [0, 1, 0], [0, 0, 0]]
312デフォルトの名無しさん:2010/03/09(火) 20:49:45
>>285
デフォルト引数と呼ばれ、引数を指定しなかったとき=以降の値が引数として扱われる。例えばこんな感じ:
>>> def foo(bar=123):
...   return bar
...
>>> foo(456)
456
>>> foo()
123
ちなみに、デフォルト引数は関数を定義した時にしか評価されないので以下のようにはしないこと:
>>> import time
>>> def report(now=time.time()):
...   print now
...
>>> report()
1268135316.33
>>> report()
1268135316.33
313デフォルトの名無しさん:2010/03/10(水) 13:23:36
初心者がPythonをはじめる場合、あえてActivePythonをインストールしたほうが
良いのかな?
pywin32が最初からインストールされているし、GUIのパッケージマネージャが
付いてくるらしいし。
314デフォルトの名無しさん:2010/03/10(水) 13:39:18
315デフォルトの名無しさん:2010/03/10(水) 13:45:07
横からだがなんか落とし穴でもあるんだっけ

featuresを見たらPyPMってビルド済みパッケージを落とせるマネージャや
pywin32やCOMが最初から付いてくるようだし
Windowsユーザには特に良さそうなんだが
316デフォルトの名無しさん:2010/03/10(水) 14:07:29
317デフォルトの名無しさん:2010/03/10(水) 14:24:47
否定すんなら理由書け
それともいつもの荒らしか
318デフォルトの名無しさん:2010/03/10(水) 14:32:30
Nein
319デフォルトの名無しさん:2010/03/10(水) 14:36:36
バカが引っ越してきたか?
320デフォルトの名無しさん:2010/03/10(水) 14:43:34
Non
321デフォルトの名無しさん:2010/03/10(水) 16:40:11
バッテリ同梱なのにパッケージマネージャいるのきゃ?
322デフォルトの名無しさん:2010/03/10(水) 16:50:05
>>321
いくら標準ライブラリが充実しても、外部ライブラリが要らない言語なんてないだろ。
323デフォルトの名無しさん:2010/03/10(水) 16:51:09
より強力なバッテリ(外部モジュール)が欲しいんじゃね
324デフォルトの名無しさん:2010/03/10(水) 16:57:48
よっぽどの理由がない限りはCPythonでいいと思う
あえてActivePythonを選ぶ理由はない
あとActivePythonいれたらTkinterがインポートできなくなった
速攻で元に戻した
325デフォルトの名無しさん:2010/03/10(水) 17:07:34
PyPMとか普通使わない。pip or easy_installで十分だし、他の人もそうしてる。
326>>325:2010/03/10(水) 17:21:47
>>324
ActivePython が CPython とバイナリ互換をうたってるから、互換性がすごく高いと
思ってたけど、そんな問題もあるのね。
>>325
俺は setup.py bdist_wininst やってアンインストールできるようにしているけど、
やっぱりGUIでPyPIを探してパッケージをインストールできるツールがあったほうが
いいと思う。特にWindowsの初心者プログラマ向けに。
PyGameとかあるんだし、素人向けの開発環境が簡単に構築できるようになったら
Pythonの魅力がもっと広がると思うんだ。
327デフォルトの名無しさん:2010/03/10(水) 17:42:00
あれ、PyPMって別にGUIのインストーラを提供しているわけではないのか?
だとしたら、pywin32がデフォルトでインストールされている以外はあまり
旨みが無いなぁ。
328デフォルトの名無しさん:2010/03/10(水) 19:10:16
file = open('hoge.txt')
file.close()
としたとき、もう一度fileをファイル名を使わずにopenする方法ってありますか?
宜しくお願いします。
329デフォルトの名無しさん:2010/03/10(水) 19:21:30
file = open(file.name)
330デフォルトの名無しさん:2010/03/10(水) 20:15:10
>やっぱりGUIでPyPIを探してパッケージをインストールできるツールがあったほうが
いいと思う。

なるほど作ったら面白そうな気がした
ありがとうございます
331デフォルトの名無しさん:2010/03/10(水) 20:24:40
Pythonとか時代遅れにも程がある
今はPerlにすべてにおいて負けてる
332デフォルトの名無しさん:2010/03/10(水) 20:36:09
ruby厨がperl厨に一言↓
333デフォルトの名無しさん:2010/03/10(水) 20:42:27
本スレでやれ
334デフォルトの名無しさん:2010/03/10(水) 20:45:09
なんでPythonの初心者スレに定期的にRubyとかPerlとか言い出すゴミが現れるの?
335デフォルトの名無しさん:2010/03/10(水) 20:57:06
>>334
本スレでは歯が立たないからだろう。

それにしても他の言語と比較するならちゃんと両方例示して欲しいもんだ。
ま、そんなことも出来ない程度の奴等なのかもな。
336デフォルトの名無しさん:2010/03/10(水) 21:11:56
2.6の環境じゃPython Twitter 1.6使えないの?
上位互換かなと思ったんだけどorz
337デフォルトの名無しさん:2010/03/10(水) 21:18:07
>>336
具体的にどんなエラーになってるの?
同じ Python twitter が現在 Python 2.5 なら動いているの?
Twitter側の変更のせいで動かなくなっている可能性は無い?
338デフォルトの名無しさん:2010/03/10(水) 21:22:58
>>336
なんでわざわざpython-twitterなんて地雷を踏むんだ?
普通はtweepyやtwythonだろう。
339デフォルトの名無しさん:2010/03/10(水) 21:30:30
普通とかあるのかよ
340デフォルトの名無しさん:2010/03/10(水) 21:30:36
>>337
mkdir python2.6
touch /usr/include/python2.6/pyconfig.h
したらイケたorz
341336=340:2010/03/10(水) 21:32:14
>>338
爾来なの?っつかそんなのあるんだ。
python twitterでググったらあったからなんだが。
342デフォルトの名無しさん:2010/03/10(水) 21:33:45
>>340
実は python-dev or python-devel をインストールしていないとか?
python-twitter って拡張モジュール使うん?使わないのに pyconfig.h を参照する??
343340:2010/03/10(水) 21:35:00
>>342
なんすかそれw
344デフォルトの名無しさん:2010/03/10(水) 21:38:45
>>342
simplejson使ってるみたい
345デフォルトの名無しさん:2010/03/10(水) 22:23:17
>>341
python-twitterは2.6未対応、文字数をバイト数でカウントするので日本語で問題有り、
ごく一部のAPIしか使えない、作者も更新やめてほったらかし。

tweepy、twythonはそのままでも2.6対応している。
今からやるならtweepyが一番いいんじゃない?まだ情報は少ないと思うが。
346デフォルトの名無しさん:2010/03/10(水) 22:38:37
すいません。色々調べてる時間が無いんでココで聞きます。

GAEでPython使ってwebアプリ構築する事にしたんですが(ここで意見あれば是非)、IDE使うべきかemacs使うか悩んでます。
emacsはもう10年近く触って無いんでちょこっと面倒ですが、慣れた時の便利さは分かってるつもりです。(現在Mac使い)
IDEはeclipse考えてます。

皆さん意見お願いします。
347デフォルトの名無しさん:2010/03/10(水) 22:53:13
完全に好みの問題だな
emacsのキーバインドを忘れてるならeclipseでいいんじゃない
348341:2010/03/10(水) 22:53:54
>>345
了解。みてみるーあんがと。
349デフォルトの名無しさん:2010/03/10(水) 23:02:28
>>347
ありがと〜

昔はemacs上でメールから何から完結してたけど今は違うからね、eclipseにするわ

こういう時に2chは頼りになるね。初pythonなんで今後も宜しくお願いします。
350デフォルトの名無しさん:2010/03/10(水) 23:16:28
いちおうeclipse向けのemacsキーバインディングもあるよ
351デフォルトの名無しさん:2010/03/11(木) 00:15:45
以前聞いたんですが結局調べてもわかりませんでした

def __init__(self, addeddate=None)

の=Noneってどういうことなんでしょうか?
352デフォルトの名無しさん:2010/03/11(木) 00:17:45
>>351
>>312で答えてくれてるぞ
353デフォルトの名無しさん:2010/03/11(木) 00:18:41
>>352
うわあああああ
きづかなかった
ほんとすいません
354328:2010/03/11(木) 00:18:54
>>329
ありがとうございます。
355デフォルトの名無しさん:2010/03/11(木) 00:21:49
>>312
ありがとうございます
すごいわかりやすいです
つまりその例だと関数を定義した時の時間しか表示されないってことですね?
356デフォルトの名無しさん:2010/03/11(木) 01:13:35
そう。その例とかはまだ分かりやすいけど
default={}
とかは俺も未だにうっかりする事があるので注意
357デフォルトの名無しさん:2010/03/11(木) 02:05:59
>>356はドジっ娘なだけでホントは分かってる人だろうからいいんだけど、初心者は、
数字/文字列/True/False/タプル以外の初期値はdefault=Noneにする習慣つけるといいよ。
関数内で
if default is None:
  default = なんたらかんたら
ってする。
そのまま指定できる型でも、変に指定するよりも関数内で指定した方が処理がわかりやすくなることもある。

意図的に
_nonlocal_vars={}
って引数を付けて、その仕組みを悪用するという技もあるとかないとか……
便利だけどよくないってことで、python3からはnonlocalキーワードが追加されたよ。
358デフォルトの名無しさん:2010/03/11(木) 03:50:10
それぞれの要素に対して操作するときは
for i in ["a","b","c"]: print i でいいんだろうけど
要素の順番によって挙動を変えたいときってどうすればいいんですか

たとえば、今は次のように書いてるけど
l=["a","b","c"]
for i in range(len(l)): print i, l[i]
なんか見苦しく感じているのです
359デフォルトの名無しさん:2010/03/11(木) 03:55:34
やりたいことがあってるかは分からないけど
とりあえず、下のコードと同じことは

l = ["a", "b", "c"]

for i, j in enumerate(l): print i, j

こういうふうにできる
360デフォルトの名無しさん:2010/03/11(木) 03:55:42
for i, x in enumerate(l): print i, x
361デフォルトの名無しさん:2010/03/11(木) 04:26:30
VB脳
362デフォルトの名無しさん:2010/03/11(木) 09:03:12
>>356
うわ、これ初めて知った。
無意識のうちにNone使ってたから、やらかしたことはなかったが。
363デフォルトの名無しさん:2010/03/11(木) 09:37:06
いい加減入門書嫁。
364デフォルトの名無しさん:2010/03/11(木) 12:11:41
>>357
ん?どういうこと?シーケンスリテラルを初期値にするなってこと?
365デフォルトの名無しさん:2010/03/11(木) 12:46:53
違う。デフォルト引数をmutable objectとすることは注意しないといけないって話
拡張型ならあまり考えないでも問題にならない事が多いけど
class Hoge(object):
a = []
の.aがHogeの所有でHoge()の所有でないのと同じ
リストや辞書はそのまま書き換える事が多いので
うっかりするとデフォルト引数にアイテムが貯まって行っちゃう
366デフォルトの名無しさん:2010/03/11(木) 13:28:57
def hoge(self, default=[]):
も危険?
367デフォルトの名無しさん:2010/03/11(木) 13:34:39
>>366
>>> def hoge(default=[]):
...   default.append('hoge')
...   return default
...
>>> hoge(range(3))
[0, 1, 2, 'hoge']
>>> hoge()
['hoge']
>>> hoge()
['hoge', 'hoge']
368デフォルトの名無しさん:2010/03/11(木) 14:14:55
>>367
知ってて利用するのはあり?
それとも可読性が下がるからだめ?
369デフォルトの名無しさん:2010/03/11(木) 14:24:21
人生のレシピなんてないさ
370デフォルトの名無しさん:2010/03/11(木) 14:49:36
>>368
なしとはいわないけどclassにして__call__実装しろ
371デフォルトの名無しさん:2010/03/11(木) 16:04:45
>>367
む。これは気を付けないと。

教えてくれてサンクス。
372デフォルトの名無しさん:2010/03/11(木) 20:27:06
def hoge(default=None):
if default is None:
default = []
default.append('hoge')
return default

こう書かないといけないのか
373デフォルトの名無しさん:2010/03/11(木) 21:02:01
def u(f):
    def v(*args,**kwds):
        def w(default=None):
            if default is None:
                default = []
            default.append("hoge")
            return default
        return w
    return v

@u
def h():
    print("hello")#実行されない

h(range(10))
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hoge']
374デフォルトの名無しさん:2010/03/11(木) 21:05:48
間違えた
@u(range(10))#多分ここの数字は何でもいい
引数を与えないと動かないでした
連投スマソ
375デフォルトの名無しさん:2010/03/11(木) 21:10:51
あれ?デコレーターに引数を渡す意味が分からない
何やってんだろ
でも引数渡さないと動かない
スレ汚し失礼
376デフォルトの名無しさん:2010/03/11(木) 21:13:31
そもそも >>373 が何をしたいのか判らない。
呼び出すたびにデフォルト値を生成するデコレータを作りたい?
377デフォルトの名無しさん:2010/03/11(木) 21:21:23
>>376
ムシャムシャしてやったから無視していいです
378デフォルトの名無しさん:2010/03/11(木) 23:01:51
if not addeddate:
addeddate = datetime.now

ってどういう意味ですか?
379デフォルトの名無しさん:2010/03/11(木) 23:23:20
bool(addeddate) == Falseのとき、addeddateにdatetime.nowを代入する。
具体的にはaddeddateがNoneとか空リストとかFalseそのものだったとき。
380デフォルトの名無しさん:2010/03/11(木) 23:26:46
>>379
なるほどありがとうございます
381デフォルトの名無しさん:2010/03/12(金) 23:48:11
デバッグ用のインスタンス表示メソッドってなんですか?
382デフォルトの名無しさん:2010/03/13(土) 15:08:33
ディレクトリの中身一覧が欲しいとき
os.walk(path).next()
以外の方法ってありますか?
383デフォルトの名無しさん:2010/03/13(土) 15:17:14
os.listdir(path)
384デフォルトの名無しさん:2010/03/13(土) 20:03:13
そうなのか。知らなかった。
385デフォルトの名無しさん:2010/03/13(土) 22:55:31
>383
ありがとうございます。
386デフォルトの名無しさん:2010/03/14(日) 12:33:36
今からpython始めたいんですが2.6と互換性のない3.1のどっちから勉強始めるべきでしょうか?
387デフォルトの名無しさん:2010/03/14(日) 12:38:01
ちなみに今学生なのですぐに業務に使う予定はありません。2.6からスムーズに移行できるものなのでしょうか?
388デフォルトの名無しさん:2010/03/14(日) 12:41:31
勉強だけなら3.1で良いと思う
外部ライブラリを使いたい or 使うかもしれないのであれば2.6の方が無難
389デフォルトの名無しさん:2010/03/14(日) 12:48:31
2.6から3.1への移行は心配しなくて良いと思う
3.x系で弾かれる書式は、2.6でも警告されるから
2.6でも自然と互換性のある書き方を採用しているだろうし

ただ、文字列周りは混乱するかもしれない
http://d.hatena.ne.jp/fgshun/20090901/1251818730
390デフォルトの名無しさん:2010/03/14(日) 12:54:58
>>388>>389
2.6から勉強始めることにしました
非常に参考になりました
ありがとうございます!
391デフォルトの名無しさん:2010/03/14(日) 13:07:02
勉強にはお勉強スレのテンプレサイトも参考にするといいぞ
テンプレに載ってなかったので貼り

Dive Into Python 3 日本語版
http://diveintopython3-ja.rdy.jp/

Python 3.x向けだけど、その点を割引いても読む価値がある
392デフォルトの名無しさん:2010/03/14(日) 13:48:49
まとめwikiに……と思ったら
まとめwikiがない
393デフォルトの名無しさん:2010/03/14(日) 13:56:27
たぶんこれ
ttp://python.rdy.jp/
394デフォルトの名無しさん:2010/03/14(日) 16:16:27
皆さんはexeに、変換する時どのようにしていますか?
いまいち分からなくて
395デフォルトの名無しさん:2010/03/14(日) 18:43:56
cx_Freeze
396デフォルトの名無しさん:2010/03/14(日) 22:32:37
cx_freezeはお手軽だがascii以外の文字コード使ってるときは要注意だな
あと有名所はpy2exe
どちらもググれば大量に実行例がヒットする
397デフォルトの名無しさん:2010/03/14(日) 22:37:58
おれpy2exeばっかだ。
こんどcx_Freezeも使ってみよう。
398デフォルトの名無しさん:2010/03/14(日) 23:02:10
PyInstaller, 開発はずっと続いているんだけど、リリースされなくてsvnから
最新版取って来いってのがなぁ・・・
399>>394:2010/03/14(日) 23:14:43
皆さんありがとうございます
2.6に対応してないのが多いので困ってました
400デフォルトの名無しさん:2010/03/14(日) 23:17:37
>>399
Python2.6に対応していないのって、あまり気にしないでいいよ。
俺もpy2exeをPython2.6で利用しているし。
msvcrtは別にインストールしてもらう必要があるけど。
401>>394:2010/03/14(日) 23:20:53
>>400
そうなんですか!有難うございます

webアプリがpythonで作れるってしったんですがwebアプリがいまいちなんのことか理解できないです
402デフォルトの名無しさん:2010/03/14(日) 23:23:35
例えば2chとかWikipediaとかYoutubeとかだな>Webアプリ
403デフォルトの名無しさん:2010/03/14(日) 23:40:34
>>400
msvcrtもsetup.pyに書いておけばいいのに
404デフォルトの名無しさん:2010/03/14(日) 23:41:42
405400:2010/03/14(日) 23:48:00
>>403
WinSxS でググってみて。
setup.py に msvcr9.dll を書くだけじゃダメだって判るから。

まじめに解決しようとしたら、Windowsプログラミングでは避けて通れないmanifest
を扱う必要があるんだけど、それが面倒だから「VC Runtime再配布可能パッケージ
をインストールして」とかで逃げる。
406デフォルトの名無しさん:2010/03/15(月) 00:28:47
再配布だと.pydの配置とロードが問題になるんだよな
setuptools+py2exeで一つのディレクトリにまとめる事はできるけど考えるのめんどくさいのでmsvcr入れろになる

しかしインストーラのファイル名が全部vcredist_x86.exeとかMSは何考えてんだ
407デフォルトの名無しさん:2010/03/15(月) 00:38:27
VSも10でSxS廃止するらしいな
やれやれだぜ
408デフォルトの名無しさん:2010/03/15(月) 00:39:01
何も考えてないにきまってるじゃないか
409デフォルトの名無しさん:2010/03/15(月) 00:42:49
またぶん投げんのかよ
410デフォルトの名無しさん:2010/03/15(月) 01:02:54
プログラムの学習目的でpythonを始めようと思うのですが、
ヴァージョンが2.xと3.xがありますがどちらを選べばいいんでしょうか?
特徴などあればあわせて教えていただきたいです。
411デフォルトの名無しさん:2010/03/15(月) 01:12:10
pythonの学習目的
2.xと3.x

プログラムの学習目的
2.xと3.x
412デフォルトの名無しさん:2010/03/15(月) 01:14:01
>>410
2から3への橋渡しである2.6。
ほとんどのサードパーティ製ライブラリが利用できるし、3への移行も簡単。
413デフォルトの名無しさん:2010/03/15(月) 01:15:42
学習目的ってことだと情報が多いかどうかが重要かなあ
現時点で情報が多くて、皆が使っている(と思われる)のは2.X系列なので
そっちが無難だと思うよ
ライブラリが揃っているという意味で、実用的でもあるしね
414デフォルトの名無しさん:2010/03/15(月) 01:18:55
>>411-413
皆さん即レスありがとうございます。
2.6にしてみようと思います。
415デフォルトの名無しさん:2010/03/15(月) 01:54:32
>>407
マジか!?
どこに書いてあった?
416デフォルトの名無しさん:2010/03/15(月) 02:43:44
2ch
417デフォルトの名無しさん:2010/03/15(月) 11:51:20
>>412
>3への移行も簡単。

善良な市民に嘘を教えるなよボケ。
418デフォルトの名無しさん:2010/03/15(月) 11:55:55
移行の時は、実際Python3で動かしてみて、エラーが起きたらトレースバックを見て
問題を解決できるんだよな。
暗黙に壊れるより明示的にエラーになるという方針が嬉しい。
文字列と数値の間で暗黙に型変換されるような言語だったら、Python2から3へ
みたいなアップグレードへの対応は気が狂うと思う。

php4からphp5への移行とかどんな感じだったんだろう?
ほとんどのアプリ、フレームワークが、移行をあきらめて新規に作り直したんじゃ
無いだろうか。
419デフォルトの名無しさん:2010/03/15(月) 12:20:19
>>417
Python 2.6用に書かれたプログラムはpython -3でエラーが出なくなるまで修正した後、2to3で普通にPython 3用のコードになるけどこれでも簡単ではない?
420デフォルトの名無しさん:2010/03/15(月) 13:43:56
>>419
Dive Into Python3 の chardet モジュール移行を読むと良いよ。
b"foo"[0] が文字列から数値に変わってたりする。
421デフォルトの名無しさん:2010/03/15(月) 13:52:40
>>420
それぐらいでしょ?-3オプションで訂正されないのは。
422デフォルトの名無しさん:2010/03/15(月) 13:56:45
>>421
辞書の .keys() がリストではなくviewオブジェクトを返すようになったけど、
リストを期待しているコードは動かなくなる。
これも -3 じゃ検出できない。

-3 オプションや 2to3 でできるのは静的に自明な部分だけで、動的解析が
必要なものは検出できないよ。
423デフォルトの名無しさん:2010/03/15(月) 14:19:38
2.xから3.xへの移行が簡単なら、Django移植してくれよ
424デフォルトの名無しさん:2010/03/15(月) 14:32:15
425デフォルトの名無しさん:2010/03/15(月) 14:42:57
タイムアウト
426デフォルトの名無しさん:2010/03/15(月) 14:44:38
-3オプションは2to3で修正できないコードの警告を出して
dict.keys()は2to3でlist(dict.keys())のように修正されるから良いじゃないの?
427デフォルトの名無しさん:2010/03/15(月) 15:01:48
pygtkが使えません、インストールしたあと
import gtk
とやってもないと言われてしまいます
どうすればいいでしょうか
428デフォルトの名無しさん:2010/03/15(月) 15:20:45
import pygtk
429デフォルトの名無しさん:2010/03/15(月) 15:44:42
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
の中のgtk-2.0とpygtkとついたファイルを4つ
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packagesに移したら
サンプルのプログラムが動きました
ありがとうございました
430>>394:2010/03/15(月) 17:52:59
>>402
それはwebサイトって事ですか?
431デフォルトの名無しさん:2010/03/15(月) 17:59:32
>>430
Google DocumentsやGmailみたいなのがWebアプリ
ショッピングカートとか機能性を有する物。

動的ページを吐き出すのが目的のwikiや2chはアプリという概念からはズレてる気がする。
432>>394:2010/03/15(月) 18:18:53
>>431
いまいち分かんないんだけど見るだけじゃなくて何か機能があるって事ですか?

cx_freezeとpy2exeインストールからつまづくんですが
433>>394:2010/03/15(月) 18:44:39
インストールは出来ました
ただ使い方が
434>>394:2010/03/15(月) 18:50:29
足の爪が伸びてきたな
先に爪を切ってきます
435>>394:2010/03/15(月) 20:11:37
>>434
ちょwww
436デフォルトの名無しさん:2010/03/15(月) 20:17:21
437デフォルトの名無しさん:2010/03/15(月) 22:27:57
おすすめのエディタってありますか?
438デフォルトの名無しさん:2010/03/15(月) 22:28:27
Windowsでファイル名とかディレクトリ名にUnicodeが含まれてると
os.remove()とかos.renameが
WindowsError: [Error 123] ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。:
ってなっちゃうんですが、解決法はありますか?
439デフォルトの名無しさん:2010/03/15(月) 22:41:33

>>> open(ur'C:\うにこーど.txt', 'wb').write('fugafuga')
>>> open(ur'C:\うにこーど.txt', 'rb').read()
'fugafuga'
440デフォルトの名無しさん:2010/03/15(月) 22:48:52
>>438
os.remove()やos.rename()にちゃんとunicodeでパスを渡せば問題はない
strだとダメだな
441デフォルトの名無しさん:2010/03/15(月) 22:54:55
@property
def members(self):

この @property てなんですか?
442438:2010/03/15(月) 22:57:05
例えば
for f in os.walk(path).next()[2]:
    os.remove(f)

こんな感じのことがしたいんですが
strからunicodeに変換する方法はどうすればよいのでしょう?
443デフォルトの名無しさん:2010/03/15(月) 23:01:49
os.walk は UNICODE を扱うように出来ていないんじゃなかったかな
不便だけど os.listdir は UNICODE 対応なのでそっち使うとか
444デフォルトの名無しさん:2010/03/15(月) 23:02:17
>>442
os.walk() に渡している path が str だから、戻ってくるのもstrになる。
unicode で path を渡せば、ちゃんとunicodeでファイル名が帰ってくる。
445デフォルトの名無しさん:2010/03/15(月) 23:06:03
>>441
@が付くのはデコレータ
@propertyの使い方はいわゆるgetter
class MyClass(object):
  _a = 100
  _b = 100
  @property
  def total(self):
    return self._a * self._b

c = MyClass()
print c.total


446デフォルトの名無しさん:2010/03/15(月) 23:07:56
あれ、大嘘言ったようだ
>>443は無視しておくれ
447438:2010/03/15(月) 23:13:28
あああ!
ようやく>444の意味がわかりました。
ありがとうございました。
448デフォルトの名無しさん:2010/03/15(月) 23:14:20
できるだけ os.walk を使わないようにします
449441:2010/03/15(月) 23:20:33
>>445
ありがとうございます
みんPyにはのってなかった
450デフォルトの名無しさん:2010/03/15(月) 23:40:34
マジかよみんPy捨ててきた
451デフォルトの名無しさん:2010/03/15(月) 23:43:44
Webアプリ編に書いてあるよ>デコレータ
452デフォルトの名無しさん:2010/03/16(火) 01:10:49
今のところ、メモ帳を使ってプログラムを書いているんですが、どんなエディタを使えば良いんでしょうか?
JmEditorやPyScripterなどが出てきたんですが、開発が止まっていたりして何を選べばいいのかさっぱりです。
よければ使っているものを教えてください。
453デフォルトの名無しさん:2010/03/16(火) 01:17:55
xyzzy
454デフォルトの名無しさん:2010/03/16(火) 01:18:38
xyzzy + py-mode
455デフォルトの名無しさん:2010/03/16(火) 01:24:38
サクラエディタ
456デフォルトの名無しさん:2010/03/16(火) 10:23:41
>>452
俺はvim使ってるが、万人に勧められる代物じゃないなぁ……
エディタは自分にあってるかどうかが重要なので、無料で使えるものでよさそうなのをとりあえず使ってみたら?

Pythonの場合、インデントの設定が詳細にできることは、必須条件。
エディタによっては自動インデントがお節介でスペースとタブの混ざったインデントにしてくれるものもあるが、
Pythonではそれやられると致命的だから、そんな設定は初めからないか、無効にできるものがいい。
457デフォルトの名無しさん:2010/03/16(火) 10:34:04
KomodoEditって日本語でも大丈夫だっけ?

vimとemacs以外に何をおすすめして良いのか判らん。
458デフォルトの名無しさん:2010/03/16(火) 10:55:46
viとかemacsはときどき日本語の扱いに難があるから困る。
459デフォルトの名無しさん:2010/03/16(火) 11:17:04
>>451
ありがとうございました!
本屋で見てきます!!
460デフォルトの名無しさん:2010/03/16(火) 11:37:16
>>451
Webアプリ編のデコレーターの説明はすごく分かりづらかった気がする。
素直に初めてのPython買っておけばいいと思うけど。
461デフォルトの名無しさん:2010/03/16(火) 11:59:24
このスレ気持ち悪い
462デフォルトの名無しさん:2010/03/16(火) 12:04:11
Komodo Edit はGUIを日本語化できないけど、見た目は普通の
テキストエディタっぽくて良いな。ちゃんとファイルのエンコーディングも
設定できる。
PythonWin は今時MDIだと古くさく見える。PyScripterはどうだっけ?

IDEとしては、Pydev が盤石で、eclipse 重いという人は Eric かPyScripterだな。
463デフォルトの名無しさん:2010/03/16(火) 12:17:08
>>452
俺が使ってるのは、PyScripterとEmEditorのフリー版。

PyScripterは、無限ループのスクリプトを実行させるとそのままIDEも
フリーズして強制終了しないといけなくなるとかの問題があるけど
統合環境の便利さと起動/動作の軽さは優秀。

EmEditorはそのままだとタブを使われるから、設定を変更して
スペースにする必要がある。
464デフォルトの名無しさん:2010/03/16(火) 12:34:36
>>463
EmEditor はPythonのシンタックスハイライトに対応していますか?
あと、ファイルのエンコーディングでcp932とutf-8(bom無し)に対応していますか?

PyScripterは、たぶんRpycをインストールして、コードを別プロセスで動かすように
設定すればIDEが落ちなくなるはず。
465デフォルトの名無しさん:2010/03/16(火) 12:46:05
みんなのPython Webアプリ編,読んでみたけど良い書籍だった気がする。
466デフォルトの名無しさん:2010/03/16(火) 12:53:00
本の宣伝する時は名前欄に本名書くように
467デフォルトの名無しさん:2010/03/16(火) 14:12:13
>>465
良く書けてる本だと思うよ
フレームワークの情報を期待すると肩すかしを食らうかもしれないが(w
468452:2010/03/16(火) 16:21:24
みなさんどうもありがとうございます。
eclipseは昔使ったことがあるので、とりあえずPydevを入れてみたいと思います。
469デフォルトの名無しさん:2010/03/16(火) 19:35:10
>フレームワークの情報

本の中で自作してるんだっけ?
470デフォルトの名無しさん:2010/03/17(水) 23:39:02
デスクトップアプリ作ってて、helpファイルを起動するときって、
みなさん何使いますか?
私は os.startfile か subprocess.popen あたりを使ったんですが、
普通は何を使うものでしょうか?
471デフォルトの名無しさん:2010/03/17(水) 23:54:31
startfileって要するにShellExecuteでしょ?
それでいいんじゃね?
472デフォルトの名無しさん:2010/03/18(木) 01:22:44
>>466
は?
473デフォルトの名無しさん:2010/03/19(金) 02:50:35
http://vipprog.net/wiki/prog_lang/python.html
これ一通りやってみました
次は何をすれば良いですか?
474デフォルトの名無しさん:2010/03/19(金) 02:57:13
しらねーよw
すきなもん作ればいいじゃん
475デフォルトの名無しさん:2010/03/19(金) 03:46:19
>>473
プログラミング言語は道具だ。

つまり、君の質問は、包丁の使い方一通り覚えて千切りと短冊切りできるようになったけど
次は何をすればいいの?って質問と同じだ。


そんな答え辛い質問ではあるが、
じゃあみじん切りに挑戦したら?に対応する答えは、じゃあクラスに挑戦してみたら?
じゃあカレーでも作ってみたら?に対応する答えは、自前でソートの実装してみたら?
にあたる。
476デフォルトの名無しさん:2010/03/19(金) 04:14:39
>>473
pythonでCGIをやってみるとか
perlやphpで書かれたお気に入りのスクリプトをpythonに移植してみるとか。

GUIの2chブラウザ作るとか
477デフォルトの名無しさん:2010/03/19(金) 07:55:25
>>473
そこ日本語の文字列のところの説明がめちゃくちゃだな
478デフォルトの名無しさん:2010/03/19(金) 09:01:47
>>477
VIPだからゆるしてやれ
479デフォルトの名無しさん:2010/03/20(土) 01:04:24
質問書いてたら自己解決したでござる
ありがとうくだすれ!
480デフォルトの名無しさん:2010/03/20(土) 09:15:46
481デフォルトの名無しさん:2010/03/20(土) 09:22:22
>>480
Python Exercisesってのが面白そうだね
ライセンスも原著作者のクレジットだけ示せばいいらしいし
宿題スレにでも持ち込んでやってみるかな
482デフォルトの名無しさん:2010/03/20(土) 13:24:35
EclipseにPyDevを導入したいんですが、詳しく解説してあるサイトってありますか?
483482:2010/03/20(土) 13:41:22
すみません、自己解決しました
484デフォルトの名無しさん:2010/03/20(土) 14:28:12
pyfltkをインストールは出来たのですが、モジュールがインストールできません
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fltk/__init__.py", line 31, in <module>
_fltk = swig_import_helper()
File "fltk/__init__.py", line 23, in swig_import_helper
import _fltk
ImportError: No module named _fltk
どうすればいいでしょうか
485デフォルトの名無しさん:2010/03/20(土) 15:17:32
>>484
自決しました
486デフォルトの名無しさん:2010/03/20(土) 17:29:38
>>485
ちょw死ぬなw
487��:2010/03/20(土) 20:29:36
In [14]: l=[1,2,3,4]

In [15]: for i in l:
print i
....:
....:
1
2
3
4

In [17]: l=[1,2,3,4]

In [18]: for i in l:
print i
if i < 3:
l.remove(i)
....:
....:
1
3
4


なんで2が出ないのですか?
488デフォルトの名無しさん:2010/03/20(土) 20:35:32
>>> l=[1,2,3,4]
>>> for i in l:
print i, l
if i < 3:
print l
l.remove(i)


1 [1, 2, 3, 4]
[1, 2, 3, 4]
3 [2, 3, 4]
4 [2, 3, 4]
>>> l=[1,2,3,4]
>>> for i in l[:]:
print i, l
if i < 3:
print l
l.remove(i)


1 [1, 2, 3, 4]
[1, 2, 3, 4]
2 [2, 3, 4]
[2, 3, 4]
3 [3, 4]
4 [3, 4]
489デフォルトの名無しさん:2010/03/20(土) 20:36:29
490デフォルトの名無しさん:2010/03/20(土) 21:28:49
for x in なんちゃら って、だいたいの人がx使ってるのはなんでだろう。
代入してxを宣言しなくても怒られないのは何でだろう。
そういうもんだと使ってたけど、ふと思うと気になってくる。
491デフォルトの名無しさん:2010/03/21(日) 00:15:26
へ?
俺は慣習的にiを使う事が多いけどな。
492デフォルトの名無しさん:2010/03/21(日) 00:41:01
for 単数形 in 複数形:
かな。個人的に i は極力使わないようにしてる
493デフォルトの名無しさん:2010/03/21(日) 00:50:40
俺も最近は492
HaskellやCloujureで推奨されてるみたいだし
enumerateでインデックス取ってくるときは i か idx を使うな
494デフォルトの名無しさん:2010/03/21(日) 01:08:12
iのほうが押しやすいという理由でi
小指と薬指のキーは嫌い、特に下段w
495デフォルトの名無しさん:2010/03/21(日) 01:10:56
emacs使ってると左小指が強化される
SSKで右小指も
496デフォルトの名無しさん:2010/03/21(日) 01:14:07
そして潰れる
一日使っただけでEmacs小指になって捨てた。
元々指が軟弱なのかも知れないが俺は短足、短指、短小と3拍子揃ったイケメン
497デフォルトの名無しさん:2010/03/21(日) 01:14:11
ごめん
× SSK
○ SKK
498デフォルトの名無しさん:2010/03/21(日) 01:19:32
SKK使うとタイプミスする

メモメモφ(_ _)
499デフォルトの名無しさん:2010/03/21(日) 01:21:24
>>496
俺は逆にCtrl+のショートカットで出来ることを
カーソルキーやファンクションキー、DEL、BS
あまつさえHOME、ENDを使わなきゃならない
ってことになるのが苦痛だなぁ
500デフォルトの名無しさん:2010/03/21(日) 01:23:29
>>499
それは同意だな
Emacsの2ストロークも苦痛だが
501デフォルトの名無しさん:2010/03/21(日) 01:26:56
>>490
明示的に代入(もっとPython風に言うと、名前への値の束縛)をしなくてもいいのは、
for x in l自体がxに値を束縛するって意味を含んでいるから。
def func()だって、funcに関数を束縛するって意味だから、funcに前もって代入しなくてもいい。

俺も>>492のいう単数形 in 複数形を心がける事が多いなぁ。
iは、ループカウンタとしての使い方、値はどうでもよくて回数のみが重要なときと
リストなどのインデックスとして使うときは極力使い、そうでないときは極力使わないようにしてる。
インデックスとしての利用はなんとなくPythonらしくない気がするので避けてるけど、その方が楽そうなときは無理には避けない。
502デフォルトの名無しさん:2010/03/21(日) 01:33:24
その日の気分で大文字でAとかBとかやってみたりする事もあるな。
思考が止まるから深く考えた事無いや
503デフォルトの名無しさん:2010/03/21(日) 01:38:30
>>500
2ストロークはタイプ自体は苦痛じゃないけど
数が多すぎて覚えられないのが苦痛だな
いや、別に、良く使うやつだけ覚えておけばいいんだけど
あと、右AltはIME切り替えに割り当ててるんで
Alt+左手キーがムチャクチャ押しにくいw
Python関係なさすぎ

>>501
単数形 in 複数形スタイルは時に自分の英語力の無さに絶望することになる
『dataの単数形ってなんだっけ?』みたいな
504デフォルトの名無しさん:2010/03/21(日) 01:40:10
dataの単数形なんて知らないから for d in data: にしちゃうよ
505デフォルトの名無しさん:2010/03/21(日) 01:45:25
まぁ単数形自体は "datum" なんだけど
タイプ量も増えちゃうし
俺は data という単語自体を敬遠するようになったw
506デフォルトの名無しさん:2010/03/21(日) 02:22:02
大丈夫。ネイティブの連中も知らんからw使うと→(゚Д゚)ハァ?
507デフォルトの名無しさん:2010/03/21(日) 03:16:06
なんでもかんでも for item in items でおk
508デフォルトの名無しさん:2010/03/21(日) 03:44:56
>>506
いや、それは無いだろ・・・え、マジ?
509デフォルトの名無しさん:2010/03/21(日) 04:01:53
data/datasで意味わかるからおk
510デフォルトの名無しさん:2010/03/21(日) 04:04:58
日本人が荻と萩の区別をつけにくいというのと同じような意味だ
511デフォルトの名無しさん:2010/03/21(日) 04:52:01
剥げと禿げ
512デフォルトの名無しさん:2010/03/21(日) 09:43:53
indexの複数形がindicesってのも、知らない人多いよな。
513デフォルトの名無しさん:2010/03/21(日) 11:44:45
mouse の複数形とか
514デフォルトの名無しさん:2010/03/21(日) 11:49:00
ペゾルト本でそんなネタがあったね

ところでおまいら補償と保証と保障の区別はつきますか
515デフォルトの名無しさん:2010/03/21(日) 11:49:32
質問が完全に無視された死のう
516デフォルトの名無しさん:2010/03/21(日) 11:59:11
っドナーカード
517デフォルトの名無しさん:2010/03/21(日) 12:02:35
>>515
どの質問?
518デフォルトの名無しさん:2010/03/21(日) 12:10:56
>>517
>>484
未だに解決してない
519デフォルトの名無しさん:2010/03/21(日) 12:14:11
>>485 で解決宣言出たと思ってたw
520デフォルトの名無しさん:2010/03/21(日) 12:20:30
単純に即答できる人がいなかっただけではないかと
521デフォルトの名無しさん:2010/03/21(日) 13:15:32
485は荒らしだろ

>>484
http://sourceforge.net/projects/pyfltk/
からダウンロードしたバイナリなら大丈夫だけど
522デフォルトの名無しさん:2010/03/21(日) 13:35:15
質問には一時的に鳥つけた方がいいな
俺も一回、解決しますた!とか言われたわ
523デフォルトの名無しさん:2010/03/21(日) 14:47:45
compensationとassuranceとguaranteeだな
524デフォルトの名無しさん:2010/03/21(日) 16:11:26
必要なライブラリswig-1.3.40fとltk-1.1.10をソースからビルドした上で
pyFltk-1.1.5のディレクトリに移動して、python setup.py build;python setup.py install
を実行してインストールしました
site-packagesにfltkディレクトリとpyFltk-1.1.5-py2.6.egg-infoが生成されました
インタラクティブシェルで
>>> import fltk
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fltk/__init__.py", line 31, in <module>
_fltk = swig_import_helper()
File "fltk/__init__.py", line 23, in swig_import_helper
import _fltk
ImportError: No module named _fltk

>>521
駄目でした
525デフォルトの名無しさん:2010/03/21(日) 16:38:13
_fltk.pydはあるの?
526デフォルトの名無しさん:2010/03/21(日) 16:41:59
>>524
えぇー。おかしいね

C:\Python26\Lib\site-packages\fltk\_fltk.pyd が存在するか

C:\Python26\Lib\site-packages\fltk をカレントディレクトリにして python 起動させて
>>> import _fltk
できるか
527デフォルトの名無しさん:2010/03/21(日) 16:51:58
>>525
>>526
>C:\Python26\Lib\site-packages\fltk\_fltk.pyd が存在するか
_fltk.soの存在をfltkディレクトリに確認しています

>C:\Python26\Lib\site-packages\fltk をカレントディレクトリにして python 起動させて
>>>> import _fltk
>できるか
>>> import _fltk
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(./_fltk.so, 2): no suitable image found. Did find:
./_fltk.so: mach-o, but wrong architecture

なんでー
528デフォルトの名無しさん:2010/03/21(日) 16:59:35
cygwin使ってる?
529デフォルトの名無しさん:2010/03/21(日) 17:21:35
拡張モジュールに関する質問をする場合は、使用しているOSや、Pythonのバージョン、
Windowsの場合だったらWindows版PythonかCygwin版Pythonかまで先に言っておかないと。
530デフォルトの名無しさん:2010/03/21(日) 17:23:50
osxか。環境ないから俺はお手上げだな
依存関係の解決に失敗してるとかみたいね
531デフォルトの名無しさん:2010/03/21(日) 18:24:22
xyzzyにpy-modeを適用しましたが、pyファイルを読み込んだ時にしか有効になりません。
新規ファイルで有効にする方法はあるんでしょうか?
それとtabを押してもインデントが有効にならないんですがこれもどうすればいいでしょうか?
OSはwin7 32bitです。
532デフォルトの名無しさん:2010/03/21(日) 18:30:06
スレチ
xyzzy Part16
http://pc12.2ch.net/test/read.cgi/win/1209098133/
xyzzyの使い方が分からぬやし 励ましあえ その12
http://pc12.2ch.net/test/read.cgi/software/1226425897/
533デフォルトの名無しさん:2010/03/21(日) 18:34:06
申し訳ないです。誘導ありがとうございます。
534デフォルトの名無しさん:2010/03/21(日) 19:15:48
ImportError: dlopen(./_fltk.so, 2): no suitable image found. Did find:
./_fltk.so: mach-o, but wrong architecture
535デフォルトの名無しさん:2010/03/22(月) 00:13:53
# encoding:utf-8
def fg(**kwargs):
 return

dict={ u'いち':1}
print dict[ u'いち']
d={ u'y':2 }
print fg(x=1,**d)

python2.6.4です.
上記のコードで前者のprintはちゃんと1を出力しますが,
後者はTypeError: fg() keywords must be stringsというエラーが出てしまいました.
コード内の文字列をすべてUnicode型に統一したいのですが、
この場合はどう変更したらいいでしょうか?
536デフォルトの名無しさん:2010/03/22(月) 01:08:06
どう変更したら良いも、キーワード引数にユニコード型を使わなければ良いだけの話なのでは?
どうしても使いたいのならPython 3.xにすればいい
537デフォルトの名無しさん:2010/03/22(月) 01:11:59
2.6.5なら大丈夫っぽい
538デフォルトの名無しさん:2010/03/22(月) 01:14:53
>>527
まずFLTKを単体で入れてみたら?

Building and Installing FLTK Under UNIX and MacOS X
http://www.fltk.org/documentation.php/doc-1.1/intro.html
539デフォルトの名無しさん:2010/03/22(月) 01:17:44
Issue 4978: allow unicode keyword args - Python tracker
http://bugs.python.org/issue4978
540デフォルトの名無しさん:2010/03/22(月) 01:25:32
539のリンクを辿った先にあるGuidoのコメントで
『キーワード引数をユニコードにする必要性がわからん』
って書いてるね
541デフォルトの名無しさん:2010/03/22(月) 07:28:10
def fg(いち=1):
 return
542535:2010/03/22(月) 08:43:18
皆さん、回答ありがとうございます.

>>536
欧米で作成されたコードの日本語対応をしようとしてまして、
辞書にUnicode型が使えないとなると、ほぼ全部書き直しになってしまうのです。
Python3.xも検討しましたが、使用しているライブラリが対応していませんでした・・・

>>537,539,540
ありがとうございます。
2.6.5にしたところ動作しました。
Guido氏のコメントによると、自分のやろうとしていることは実は相当外道なのでしょうか。
543デフォルトの名無しさん:2010/03/22(月) 10:25:14
>辞書にUnicode型が使えないとなると、ほぼ全部書き直しになってしまうのです。

なんで?
544デフォルトの名無しさん:2010/03/22(月) 10:26:27
>Guido氏のコメントによると、自分のやろうとしていることは実は相当外道なのでしょうか。

外道かどうかはともかく
相当設計が間違ってると思う
545デフォルトの名無しさん:2010/03/22(月) 10:32:08
キーワード引数のキーワードを日本語にしたい?

昔Windowsのとあるプログラムが、日本語化で、/ALL というオプションが /全 という
漢字オプションにされたというおそろしい話を思い出すのだが。
546デフォルトの名無しさん:2010/03/22(月) 10:54:25
>>542
dictをキーワード付き引数リストとして渡す関数の方では
キーワードにUnicode型を期待していないはず

辞書のキーにはUnicode型が使えるが
キーワード付き引数のキーワードにはUnicodeが使えない
ってところで、542がなんで困ってたのかさっぱりわからん

まぁ、2.6.5になって解決したならいいけど
547デフォルトの名無しさん:2010/03/22(月) 11:37:22
ただし、Python3では変数名に日本語が使えるようになるから、キーワード引数に日本語を使うのも
間違いじゃないね。
もちろん、英語じゃない単語を使うことはPEP8では推奨されず、標準ライブラリでは利用されないけど。
548デフォルトの名無しさん:2010/03/22(月) 11:40:10
どんどんVB並みになっていくな
549535:2010/03/22(月) 11:46:59
535,542です.
あるスクリプト(ゲームスクリプトのようなもの)を構文解析してそれに応じて処理をするようなプログラムなのですが、
元のプログラムはそのスクリプトが英語で書かれていると仮定して作られているため.
日本語を書けるようにしたい、というのがそもそもの動機です.

元のプログラムでは、日本語で書けるべきtokenを辞書のキーとして用いているので、
辞書にUnicode型が使えないと困るわけです。
ただ>>535のように、辞書を引数として渡しているところでエラーが発生していたため、
対処法を質問した次第です.

>>546
ようやく理解できたような気がします.
そもそも自分はキーワード引数というものを理解していないことに気づきました.
要するにキーワード引数を使わないようにすべての関数を変更していったらよいのでしょうか?
>>535では fg(**kwargs) ---> fg(args) みたいに



550デフォルトの名無しさん:2010/03/22(月) 11:52:37
辞書キー全部UTF-8にすればいける
551デフォルトの名無しさん:2010/03/22(月) 12:09:35
>>549
この場合問題は「キーワード引数」ではなく、「可変引数」で
たんに関数に辞書を渡したいだけなら、可変引数なんて必要なくて
辞書をそのまま渡せばいい。

fg(**kwargs)は、fg(foo=1,hoge='hoge)のようにして呼び出すための構文。
そういう関数の呼び方をしないなら、使う必要はない。
552デフォルトの名無しさん:2010/03/22(月) 14:05:48
>>549
551が書いてるみたいに辞書を展開しないでそのまま渡すのなら
関数の内部で辞書の値を辞書のキーと同じ名前の変数に割り当てるか
もしくは、キー名の変数を使っているところで辞書を参照するようにする

例えば以下のような関数では
show(x=0, y=0):
 print("X:%s, Y:%s" % (x, y)

前者の場合
show2(point):
 for k in point.keys():
  exec('%s = %d' % (k, point[k]))
 print("X:%d, Y:%d" % (x, y))

前者の場合
show3(point):
 print("X:%d, Y:%d" % (point['x'], point['y']))
553デフォルトの名無しさん:2010/03/22(月) 14:07:09
ぐわミスった
どっちも前者になってるw
554デフォルトの名無しさん:2010/03/22(月) 14:43:26
>>551-552
細かい修正の仕方まで教えてくださってありがとうございます.
特にshow2の書き方は参考になりました.
本当にありがとうございました.
555デフォルトの名無しさん:2010/03/22(月) 15:03:50
どうでもいいけどdict.items使おうぜ
556デフォルトの名無しさん:2010/03/22(月) 15:27:48
>>554
ちょっと不安になったんで念のために
execは注意して使わないと危ないぞ

exec('%s = %d' % (k, v))
の時に 'k' の内容が
import os; os.rmdir('*');x
とかだと目も当てられない
557 ◆R9K0ZGdQng :2010/03/23(火) 19:59:43
pythonで2chの特定のスレに書き込むのはどんなライブラリを使えばいいの?
検索仕方とかも教えてください
558デフォルトの名無しさん:2010/03/23(火) 20:15:09
urllib
googleで「python urllib」で検索
559 ◆R9K0ZGdQng :2010/03/23(火) 20:37:20
>>558
ありがとうございます
ですが、私が言ったのはライブラリを検索する方法です
今回でいうurllibが分からなかった場合で
560デフォルトの名無しさん:2010/03/23(火) 20:48:06
561 ◆R9K0ZGdQng :2010/03/23(火) 21:17:00
>>560
すいませんありがとうございました
562デフォルトの名無しさん:2010/03/24(水) 11:54:27
質問です。オブジェクトのリストを要素でソートしたいのですが
sort(cmp=lambda x:???) の使い方がよくわかりません(これを使うのがスマートなのでしょうか)
たとえば、
Class Point(object):
def __init__(self,x,y):
self.x=x
self.y=y

triangle=[ Point(0,0),Point(2,4),Point(2,2) ]

このtriangleの要素を Pointクラスのyで昇順にしたいです
563デフォルトの名無しさん:2010/03/24(水) 12:06:21
sort(points, key=lambda p: p.y)
ただし、これだとyが同じ時の順番が未定義。

yが同じ時にはx順で並べたいなら
sort(points, key=lambda p:(p.y, p.x))
564デフォルトの名無しさん:2010/03/24(水) 12:08:45
ごめん、昇順か。reverse=Trueでもつければいいと思うよ
565デフォルトの名無しさん:2010/03/24(水) 12:12:17
あとsortedだぜ
566デフォルトの名無しさん:2010/03/24(水) 12:12:52
昇順なら別にreverse要らないんじゃないか
567デフォルトの名無しさん:2010/03/24(水) 12:21:31
>>563-566
ありがとうございます!
lambdaで設定したkeyをフラグにして取り出すんですね
568デフォルトの名無しさん:2010/03/24(水) 17:52:39
py2exeで自分が読み込んだモジュールはどうすればいいでしょうか?
569 ◆0RbUzIT0To :2010/03/24(水) 20:17:02
#! /usr/bin/env python
# coding=utf-8
from Tkinter import *
root=Tk()
buff=StringVar()
buff.set("")
label=Label(root,textvariable=buff)
label.pack()
# コールバック関数の生成
def make_cmd(n):
return lambda : buff.set('button %d pressed' % n)
# ボタンの生成
for x in range(4):
button=Button(root,text="Button %d" % x, command=make_cmd(x))
button.pack()

root.mainloop()

@これのStringVar()とはどのようなものでしょうか?

Aそれとlambdaをここで使うわけは何でしょうか?
570デフォルトの名無しさん:2010/03/24(水) 22:10:55
>>569
1. 要するにLabelのテキストを簡単に設定するためのプロパティオブジェクト
configure すればいいけどこれ使う方が簡単

2. 使わなくてもいい。単にボタン4つ分のイベントハンドラを書くのが面倒だったと思われる
571 ◆0RbUzIT0To :2010/03/24(水) 22:28:50
>>570
すいませんプロパティオブジェクトとconfigureは私のpython本には乗っていないので良く分からないです
572デフォルトの名無しさん:2010/03/24(水) 22:40:24
573 ◆0RbUzIT0To :2010/03/24(水) 23:18:34
>>572
英語ですか
見た所簡単そうな感じなので頑張って見ます
574デフォルトの名無しさん:2010/03/25(木) 05:46:56
>>569
1 の StringVar は、StringVar の中身を変更すると
StringVar と対応付けられたウィジェットも自動で書き換わるという仕組み
以下を対話型プロンプトから試してみて

>>> from Tkinter import *
>>> root = Tk()
>>> svar = StringVar()
>>> b = Button(text='', textvariable=svar)
>>> b.pack()
>>> svar.set('Hello')
>>> svar.set(u'こんにちは')

2 は簡単そうに見えるけど実は相当難しい(クロージャってやつ)
ボタンの生成時に make_cmd(x) を実行しているのがポイントで、
make_cmd の返り値である無名関数はボタンを生成したときの番号( 0, 1, 2, 3 )を記憶している

わけわかんなかったら次みたいに素直に書くのもあり

def button0_onclick(): ...
def button1_onclidk(): ...
575デフォルトの名無しさん:2010/03/25(木) 08:43:31
>2 は簡単そうに見えるけど実は相当難しい(クロージャってやつ)

実は簡単
576デフォルトの名無しさん:2010/03/25(木) 08:49:04
関数を生成して返してるだけじゃん
どこが難しいのやら
577デフォルトの名無しさん:2010/03/25(木) 08:51:08
天才現わる
578 ◆0RbUzIT0To :2010/03/25(木) 18:31:27
>>574
やっぱりクロージャですか
ありがとうございます
一つ目がよく分かんないです‥
579 ◆0RbUzIT0To :2010/03/25(木) 18:52:22
もしかしてStringVar()は後から中身を書き換える時に使うんでしょうか?
580デフォルトの名無しさん:2010/03/25(木) 19:27:08
もともとTk由来だから分かりにくいかもなあ
今のありがちなツールキットなら、label.textみたいにプロパティで
アクセスさせるのが普通だし

Tkだと、何の変哲も無いただの変数を
label .foo -textvariable foo_value
みたいにして、ウィジットと紐付けることができるんよ
一旦紐付けると、それ以後、変数foo_valueの値を書き換えれば自動的に
ウィジットに転送されるし、逆もまた行われる

tkinterのStringVarはそれをエミュレートするためのクラスね
tkほどエレガントとは言えんけど、原理は同じ
581 ◆0RbUzIT0To :2010/03/25(木) 19:36:10
>>580
なるほどありがとうございます
582デフォルトの名無しさん:2010/03/25(木) 21:59:51
下のような処理を書きたいんですが、
lambda x: x とか result[k] = result.get(k, 0) + 1 あたりはもっといい書き方ないですかね。

def count_by(iterable, func = lambda x: x):
  result = {}
  for e in iterable:
    k = func(e)
    result[k] = result.get(k, 0) + 1
  return result
583デフォルトの名無しさん:2010/03/25(木) 22:14:33
mod_wsgiを利用している際のimportについて質問です。
src/
path.py
hoge.py
huge.py

のようなファイル構成で、path.pyに
ROOTPATH ="D :/python/"

と記述し、hoge.pyやhuge.pyから、
import path
filePath = path.ROOTPATH

というように利用するつもりなのですが、
ローカルでは動くのに、WSGI上ではエラーとなってしまいます。
解決方法をご存知の方はご教示願います。
584デフォルトの名無しさん:2010/03/25(木) 22:18:31
バックトレース貼ってくれ
あとsys.pathの確認
585583:2010/03/25(木) 22:32:12
>>584
レスありがとうございます。

職場で作業しているので今はバックトレースを貼れません。すみません。
sys.pathについてググってみましたが、
http://www.python.jp/doc/2.5/inst/search-path.html
こちらのサーチパスの変更作業が必要という認識で問題なさそうですか?

今からちょっと環境用意して試してみます。
586デフォルトの名無しさん:2010/03/25(木) 22:33:18
バカゆとりどもの宿題タダでやってやるなんて、お人好しだなお前ら
587デフォルトの名無しさん:2010/03/25(木) 22:46:54
tsv(csv)ファイルの計算について質問です。

カラムごとに数値の合計値を出力したいと考えています。
特定のカラムであれば,

i = 0
for line in open('test.tsv').readlines():
item = string.split('\t')
if item[0].isdigit():
i += int(item[0])
print i

で大丈夫なのですが、
複数のカラムの場合はどのようにすればよいでしょうか?
588デフォルトの名無しさん:2010/03/25(木) 22:52:42
>>582
collections.defaultdictを使うといいんじゃないかな
589デフォルトの名無しさん:2010/03/25(木) 23:02:09
>>587
単に合計値をリストに格納すればいい
こんな感じでいいんじゃないの

sums = []
for line in open('test.tsv'):
    cols = line.split('\t')
    if len(cols) > len(sums):
        sums += [0] * (len(cols) - len(sums))
    for i, col in enumerate(cols):
        try:
            sums[i] += int(col)
        except ValueError:
            pass

for sum in sums:
    print sum
590デフォルトの名無しさん:2010/03/25(木) 23:19:08
import csv

tsv = [map(int, line) for line in csv.reader(open("tsv.tsv","r"), csv.excel_tab)]
print map(sum, zip(*tsv))
591デフォルトの名無しさん:2010/03/25(木) 23:19:35
>>852
>>> from collections import defaultdict
>>> def count(iterable):
...     result = defaultdict(int)
...     for item in iterable:
...         result[item] += 1
...     return result
...
>>> x = ["foo", "bar", "baz", "foobar"]
>>> count(len(y) for y in x)
defaultdict(<type 'int'>, {3: 3, 6: 1})

Python 2.7 なら collections.counter というそのものズバリなものが追加されるけどね。
592587:2010/03/25(木) 23:38:00
>>589
>>590

助かりました!
質問に答えてくださり、ありがとうございました。
593 ◆0RbUzIT0To :2010/03/26(金) 19:43:03
>>> def foo(n):
return lambda x: n * x

>>> foo10 = foo(10)
>>> foo10(100)
1000
>>> foo5 = foo(5)
>>> foo5(11)
55

これのfoo(10)ではnにセットしているのですか?
それともxにセットしているのですか?
594デフォルトの名無しさん:2010/03/26(金) 19:46:30
foo(10)の10はn
foo10 = foo(10)
foo10(100)の100がx
595デフォルトの名無しさん:2010/03/26(金) 21:23:38
何度見てもラムダがランバダに見えてしまう
596 ◆0RbUzIT0To :2010/03/26(金) 21:54:33
>>594
ありがとうございます
ただ理屈がわからない‥
597デフォルトの名無しさん:2010/03/26(金) 22:20:10
前の質問もそうだったけど
どうわからないのか書いておくれ
598デフォルトの名無しさん:2010/03/26(金) 22:53:10
>>596
foo(10)の10はnなのはわかるべ?

で、関数def foo(n):
の戻り値が「lambda x: n * x」でnに10を入れると、
foo10っていう変数には
lambda x: 10 * x
が代入される。

これは

def foo10(x):
  return 10 * x

と同じだと思ってよろし
599デフォルトの名無しさん:2010/03/26(金) 23:24:22
> lambda x: 10 * x が代入される
これだと実行していない lambda の中身が一部評価されてることになるぞ
600デフォルトの名無しさん:2010/03/26(金) 23:36:23
わからないうちはそう思っておけばいい
601 ◆0RbUzIT0To :2010/03/26(金) 23:59:43
なるほど!
ありがとうございます
もう少し自分で考えればよかったですね…
602582:2010/03/27(土) 01:28:58
>>588,591
レスが遅くなりましたが、上手く出来ました。
ありがとうございます。
603デフォルトの名無しさん:2010/03/27(土) 18:58:32
今日、みんなのPythonが届き勉強をはじめました。
がんばるぞ〜。
604デフォルトの名無しさん:2010/03/27(土) 23:53:16
初めてのPython は読み応えありすぎてわろた
605デフォルトの名無しさん:2010/03/28(日) 00:14:57
はじぱいはPython3が主流になる前に売り払った方がいいかな
606デフォルトの名無しさん:2010/03/28(日) 00:32:35
>>605
地元の図書館に寄贈しろよ
Book Offとかで売ったってしれてるだろ
607デフォルトの名無しさん:2010/03/28(日) 00:42:05
売ってもどうせ一食分にもならないから図書館に寄贈して未来の技術者に貢献するべき
608デフォルトの名無しさん:2010/03/28(日) 00:58:49
図書館に寄贈したら一瞬で捨てられるぞ。
俺が寄贈した技術本は既に棚に並んでいない。
609デフォルトの名無しさん:2010/03/28(日) 01:04:24
書庫の奥で眠ってるんじゃね?
610デフォルトの名無しさん:2010/03/28(日) 01:06:04
技術書の場合はあまりに汚かったり古い本は捨てられるよ
611デフォルトの名無しさん:2010/03/28(日) 01:12:02
新しい技術書はヤフオク
古い技術書はブックオフ
これでおk
612デフォルトの名無しさん:2010/03/28(日) 01:13:12
ミンぱいwebアプリ編買おうと思ってるけど、webアプリなんて作る事ある?
613デフォルトの名無しさん:2010/03/28(日) 01:14:00
寄贈するなら新刊のうちに。
それと読みたいのに無いなら
すぐにも購入希望を出したほうが全員の利益になる。
614デフォルトの名無しさん:2010/03/28(日) 01:15:41
>>609
それはない
615デフォルトの名無しさん:2010/03/28(日) 13:24:06
>>612
あれ買うぐらいならこれ読んだ方がためになると思う。
http://www.python.org/doc/essays/ppt/sd99east/index.htm
616デフォルトの名無しさん:2010/03/28(日) 16:53:43
>>612
何か凄い特長でもあれば考えてもよいが、思いつかない。
PerlとかPHPの方が情報も書籍も多いと思われ。

617デフォルトの名無しさん:2010/03/28(日) 16:58:14
図書館の本って鼻くそが挟まってたり動物の糞が挟まってる時があるよな
618603:2010/03/28(日) 17:39:52
>>604
>>605
みなさん凄いです。
早くそうなりたいです。
N88-BASICならある程度いろいろ出来るんですが…現在、変数と組み込み型のとこです。
619デフォルトの名無しさん:2010/03/28(日) 17:52:26
馴れ合いなら他所でやれ
620デフォルトの名無しさん:2010/03/28(日) 18:03:33
ごめんなさい
621デフォルトの名無しさん:2010/03/28(日) 18:07:40
>>617
あるね
小学生の頃に借りた動物図鑑にはカエルの小さいヤツが干からびて挟まってた。
622デフォルトの名無しさん:2010/03/28(日) 18:35:39
Python3の解説サイトでオススメのとこ教えてくれよ
623デフォルトの名無しさん:2010/03/28(日) 18:45:08
固定長の配列を宣言するときの定型みたいなものはありますか?
例えば2×2のときに、
>>> a = [[0] * 2] * 2
とするとうまく動きません。
624デフォルトの名無しさん:2010/03/28(日) 18:50:46
a = [[0 for x in range(2)] for y in range(2)]
625623:2010/03/28(日) 19:15:02
>>624
リスト内包表記を使うんですね。
参考になりました、これでいってみます。
ありがとうございました。
626デフォルトの名無しさん:2010/03/28(日) 19:29:38
対話式インタープリタで

>>> print(dir(sys.os))

のように、コマンドの実行結果をファイル出力したいんですが可能でしょうか?
627デフォルトの名無しさん:2010/03/28(日) 20:32:35
>>622
入門書レベルならdive into python 3
ttp://diveintopython3-ja.rdy.jp/index.html
ただ、Python2やってた人には冗長かもしれない。

英語でもいいなら、公式ドキュメントとかpepとかそのへんがいいんじゃないかなぁ。
あと、3は専用スレあるからそっち池
http://pc12.2ch.net/test/read.cgi/tech/1235050215/
628デフォルトの名無しさん:2010/03/28(日) 20:44:48
>>626
ファイルオブジェクトへの書き込みなら
print >>fileobj, dir(sys.os)
だけど、まだ開いてないならややめんどくさく、
with open("filename.txt", "w") as f: print >> f, dir(sys.os)
629デフォルトの名無しさん:2010/03/28(日) 21:02:46
>>627
サンクス
2もやったことないから3から挑戦してみる
630デフォルトの名無しさん:2010/03/29(月) 10:01:30
dive intoってあまり話題になってないのが不思議
信者がウザいのが問題なのかな?
631デフォルトの名無しさん:2010/03/29(月) 10:54:01
超初心者向けではないからここでは話題になりにくいだけじゃないか
前の版は定番で広く読まれてるよ
632デフォルトの名無しさん:2010/03/29(月) 11:11:38
まあ宣伝乙ってことで(ww
633デフォルトの名無しさん:2010/03/29(月) 11:35:04
>>629
初めてな人は2から始めた方がいいよ。
3は情報少ないし、ライブラリも対応していないのが多い。
634デフォルトの名無しさん:2010/03/29(月) 12:00:22
初心者にどちらを勧めるかは、用途によって異なる。
すぐにWebアプリ作って公開したいとか、即戦力を求めるならライブラリの充実した2
とりあえずかんたんなスクリプティングから始めたいというなら、互換性を維持するための
種々の問題と無縁で将来のスタンダードになる3
635デフォルトの名無しさん:2010/03/29(月) 12:06:39
おれはずっと2でいいや
636デフォルトの名無しさん:2010/03/29(月) 13:01:13
>>634
>とりあえずかんたんなスクリプティングから始めたいというなら、互換性を維持するための
>種々の問題と無縁で将来のスタンダードになる3

簡単なスクリプティングのまま2〜3年過ごすのってどんな自宅警備員ですか?
637デフォルトの名無しさん:2010/03/29(月) 13:05:29
なんのこっちゃ
638デフォルトの名無しさん:2010/03/29(月) 15:57:06
もちろん将来は逆転するだろうけど
3で始めると足りない機能とかライブラリとか気付いたときに
2に乗り換えるとなると余計面倒なことになると思うし
だからといって3の環境が整うのを待つのも微妙
なので今の段階では2から始めて置く方が無難なんだよね
2で分かってれば3になっても苦労しないと思う
逆は大変だよ
639デフォルトの名無しさん:2010/03/29(月) 15:58:07
Googleがさっさと3に移行してくれねぇかなぁ
640デフォルトの名無しさん:2010/03/29(月) 16:22:22
638はできる子。
634は非モテ。
641638:2010/03/29(月) 16:29:27
ありがとう
はじめて2chで褒められた (*・ω・*)
642 ◆0RbUzIT0To :2010/03/29(月) 17:53:21
毎度お世話になります
今回は初歩的な質問です

例えば
def f(x):
return x * 2

という関数を作ったときに、returnをつけなければならない理由は何でしょうか?
また
def print_a():
print "クルミポンチオ"
のときにreturnを付けない理由は何でしょうか?
今一返り値がよく分からないんです
643デフォルトの名無しさん:2010/03/29(月) 17:57:48
>>642
関数の呼びだし元で、返り値を利用するときはreturnで値を返す。
644 ◆0RbUzIT0To :2010/03/29(月) 18:08:28
>>643
ようは、計算したらreturnってことですか?
645デフォルトの名無しさん:2010/03/29(月) 18:11:18
>>642

def func1():
  return 'hello world'

def func2():
  print 'hello world'

modori = func1()
print modori

func2()
646デフォルトの名無しさん:2010/03/29(月) 18:13:40
def counter():
x += 1
yield x
みたいなのもなかったっけか
647デフォルトの名無しさん:2010/03/29(月) 18:15:48
>>644
例えば、「このゴミ捨てといて」と頼む場合は、捨てたゴミは返してもらう必要がないので
返り値はいらない。

「この書類にサインして」と頼む場合は、サインされた書類を返して貰う必要がある。

その関数に、どういう役割をもたせるかの問題。
648デフォルトの名無しさん:2010/03/29(月) 18:18:48
今時のゴミ投棄は廃棄証明が戻って来たりする罠
649 ◆0RbUzIT0To :2010/03/29(月) 18:20:56
>>647
そのごみ捨てといてがprint文に当たる訳ですか
関数やらprintを使ったらreturnはいらないってことですか
650デフォルトの名無しさん:2010/03/29(月) 18:23:23
これはあかん
651デフォルトの名無しさん:2010/03/29(月) 18:25:05
>>> def counter():
... x = 0
... while True:
... yield x
... x += 1
...
>>> counter()
<generator object at 0x01ACBCD8>
>>> counter()
<generator object at 0x01ACBCB0>
>>> counter()
<generator object at 0x01ACBD00>
>>> counter().next()
0
>>> counter().next()
0
>>> counter().next()
0
>>> c = counter()
>>> c.next()
0
>>> c.next()
1
>>> c.next()
2
>>> c.next()
3
>>> c.next()
4
652デフォルトの名無しさん:2010/03/29(月) 18:28:10
>>642
> という関数を作ったときに、returnをつけなければならない理由は何でしょうか?
xを受け取ってそれを2倍した計算結果をわざわざ捨てて
呼び出し側にNoneを返す関数なんて使い物にならないから

> のときにreturnを付けない理由は何でしょうか?
後者はその恥ずかしい文字列を出力さえしてくれればいいのでreturnしていない
653デフォルトの名無しさん:2010/03/29(月) 18:37:21
>>649
関数の中身がどうなっているか(printを使ったか)ではなく、
その関数が結果を返す必要があるかどうか。

例えば、「2chのスレッドを読み込む」という関数は、ダウンロードしてきた
スレッドの内容を返す必要がある。
「2chのスレッドに書き込む」という関数は、特に何も返す必要がない。
どちらも似たような処理だが、役割が違う。
654 ◆0RbUzIT0To :2010/03/29(月) 18:51:14
なんだか分かった気がします
確認のためにテストなどお願いします
655デフォルトの名無しさん:2010/03/29(月) 19:07:39
ではさっそく
いわゆるFizzBuzz問題を解いてください
656 ◆0RbUzIT0To :2010/03/29(月) 19:18:49
for x in range(1,101)
print x
if x % 3 ==0:
print "Fizz"

elif x % 5 ==0:
print "Buzz"

ここまでできたが3と5の両方の倍数ってどうやって表現するのかわかりません
 まだまだアマチュアですね

てかちげえwww
657デフォルトの名無しさん:2010/03/29(月) 20:54:56
>>656
if x % 15 == 0:
print "FizzBuzz"

if x % 3 == 0 and x % 5 == 0:
print "FizzBuzz"
お好きな方をどうぞ

補足
andはhoge and hogeの二つの条件に当てはまった時
orはhoge or hogeのどちらか一方が当てはまったとき
658 ◆0RbUzIT0To :2010/03/29(月) 21:07:19
>>657
それって、3と5の公倍数でしたっけ?
9とか10も入ると思ってたんですが
これってそんなに難しくないですよね?
659デフォルトの名無しさん:2010/03/29(月) 21:24:07
FizzBuzz問題の標準制限時間は2分だそうです
660デフォルトの名無しさん:2010/03/29(月) 21:29:57
>>656
if文の外で必ず通るところにprint xが書いてあるから
123Fizz45Buzzになりそうだけど
661 ◆0RbUzIT0To :2010/03/29(月) 21:55:31
>>659
出来なくはないかも知れませんね
覚えてればの話ですけど
662デフォルトの名無しさん:2010/03/30(火) 00:36:44
returnを省略すると暗黙の「return None」と同義と考えていいと思う。

def print_a():
print "クルミポンチオ"
return None

返値を使うか使わないかは呼び出し側次第。
663デフォルトの名無しさん:2010/03/30(火) 03:20:50
いや、そのりくつはおかしい
664デフォルトの名無しさん:2010/03/30(火) 09:04:10
>>662
確かにreturnがない関数の戻り値を見るとNoneだけど、
なーんかしっくりこない。
pythonでは「何も返さない関数」=「Noneしか返さない関数」だけど、やっぱりしっくりこない。

実行したときの結果が同じに見えるとき、その処理の中身の違いが分からない程度の学習段階だと、
とりあえずもうちょっと先に進んでみろ、と言っておきたい。
関数に引数渡したり、関数を沢山使う場面に出くわすようになったら、意味が全然違うことに気付くはず。
665デフォルトの名無しさん:2010/03/30(火) 09:23:35
それなりにPythonやってる方だと思うけど
なんで省略=return Noneがおかしいのか分からん
666デフォルトの名無しさん:2010/03/30(火) 09:39:16
関数が必ず戻り値を返すということにすると、関数をラップするとか、
関数オブジェクトを利用するコードが書きやすいんだよな。

あと、動的型付け言語だと、関数が戻り値を呼び出すのかどうかが
実行時まで判らないから、本当に戻り値の無い関数があると
その扱いが難しい。
667デフォルトの名無しさん:2010/03/30(火) 10:55:30
>>> def a(): 1
...
>>> a() == None
True

こうなるから間違ってなさそうだけどな
668デフォルトの名無しさん:2010/03/30(火) 11:08:57
>>> import dis
>>> def hoge():
... 1234 + 5678
...
>>> dis.dis(hoge)
2 0 LOAD_CONST 3 (6912)
3 POP_TOP
4 LOAD_CONST 0 (None)
7 RETURN_VALUE
669デフォルトの名無しさん:2010/03/30(火) 11:28:16
>>668
もちついてください
超初心者用スレでそんな低レベルの話されたらパニックになる人が最低1人は出ます

漏れです
670デフォルトの名無しさん:2010/03/30(火) 11:53:25
Cでは「何も返さない関数」=「アキュムレータの値を返す関数」
671デフォルトの名無しさん:2010/03/30(火) 11:54:41
Rubyでは「何も返さない関数」=「さいごに評価された値を返す関数」
672デフォルトの名無しさん:2010/03/30(火) 11:56:47
省略=return selfだったら良かったのにと思うことはある
673デフォルトの名無しさん:2010/03/30(火) 11:59:35
Ruby気持ち悪い
674 ◆0RbUzIT0To :2010/03/30(火) 12:33:01
結局、FizzBuzz問題の答えはなんですか?
675デフォルトの名無しさん:2010/03/30(火) 12:47:55
ファッションチェックお願いします

for x in range (1,101):
y = x
if x % 3 == 0 :
y = "Fizz"
if x % 5 == 0 :
y = "Buzz"
if x % 15 == 0 :
y = "FizzBuzz"
print y
676デフォルトの名無しさん:2010/03/30(火) 13:19:59
まあNoneが返るだけいいよ
>>671-672とかだったら発狂してた
677デフォルトの名無しさん:2010/03/30(火) 14:31:29
>>671
Ruby ヒドすwwww
678デフォルトの名無しさん:2010/03/30(火) 14:34:58
fizzbuzz?1行で書いてやんよ

print '12fizz4buzzfizz78fizzbuzz'
679デフォルトの名無しさん:2010/03/30(火) 14:38:18
680デフォルトの名無しさん:2010/03/30(火) 14:42:44
>>678
学生に課題だすと必ずそういう解答するお調子者がいるんだよなぁ
681デフォルトの名無しさん:2010/03/30(火) 14:50:44
>>672
>省略=return selfだったら良かったのにと思うことはある

これが噂のRuby脳か。
682 ◆0RbUzIT0To :2010/03/30(火) 14:52:04
>>675
yを使うのかー
なるほど
683デフォルトの名無しさん:2010/03/30(火) 14:53:33
print(map(lambda x:'FizzBuzz' if x%15==0 else 'Fizz' if x%5==0 else 'Buzz' if x%3==0 else x,range(1,101))
684デフォルトの名無しさん:2010/03/30(火) 15:01:17
>>683
出たな一行野郎
685デフォルトの名無しさん:2010/03/30(火) 15:06:21
m = {0:'fizzbuzz', 1:'1', 2:'2', 3:'fizz', 4:'4', 5:'buzz', 6:'fizz', 7:'7', 8:'8', 9:'fizz', 10:'buzz', 11:'11', 12:'fizz', 13:'13', 14:'14'}
for x in xrange(100): print m[x%15]
686デフォルトの名無しさん:2010/03/30(火) 15:06:30
687デフォルトの名無しさん:2010/03/30(火) 15:07:53
ifは遅せえよ
マップ型使えといわれてるだろ
688デフォルトの名無しさん:2010/03/30(火) 15:09:08
>>685
それ、間違ってる
689デフォルトの名無しさん:2010/03/30(火) 15:09:24
>>681
省略=self は ruby じゃないだろ
690デフォルトの名無しさん:2010/03/30(火) 15:09:39
#!/usr/bin/env python
try:
num_of_input = input("Input number of values: ")
i = 0
vals = []
while i < num_of_input:
val = input("Input value #" + `i` + ": ")
if val >= 100: raise "TooBig"
vals.append(val)
i = i + 1
print "The following values are user inputs:"
for val in vals:
print val
except "TooBig":
print "The value is too big!!"
これってどうゆうこと?コピペしても実行できないorz
691デフォルトの名無しさん:2010/03/30(火) 15:12:11
for i in range(100):print i%3/2*"Fizz"+i%5/4*"Buzz"or-~i

ttp://python.rdy.jp/wiki.cgi?page=FizzBuzz
692デフォルトの名無しさん:2010/03/30(火) 15:13:09
>>690
どこからコピペしてきたのか知らないけど
`i` はたぶん 'i' か "i"

あと実行はコマンドプロンプトから行ってエラーメッセージ貼ってね
693デフォルトの名無しさん:2010/03/30(火) 15:14:16
>>690
そういう英語がおかしいコードは読まなくてもよい。
694692:2010/03/30(火) 15:18:06
なんか別の言語と間違えてた

>>690
#!/usr/bin/env python
try:
num_of_input = input("Input number of values: ")
i = 0
vals = []
while i < num_of_input:
val = input("Input value #" + `i` + ": ")
if val >= 100:
raise "TooBig"
vals.append(val)
i = i + 1
print "The following values are user inputs:"
for val in vals:
print val
except "TooBig":
print "The value is too big!!"

インデントが狂ってたよ
ポップアップかソースで
695デフォルトの名無しさん:2010/03/30(火) 15:26:38
>>694
インデントの位置がわからない…
696デフォルトの名無しさん:2010/03/30(火) 15:28:47
>>690
python 2.6 だと文字列例外が取り除かれてるみたい
raise "TooBig" とかできなくなってる

#!/usr/bin/env python
# -*- coding: utf-8 -*-

class TooBig(Exception):
pass

try:
num_of_input = input("Input number of values: ")
i = 0
vals = []
while i < num_of_input:
val = input("Input value #" + `i` + ": ")
if val >= 100: raise TooBig()
vals.append(val)
i = i + 1
print "The following values are user inputs:"
for val in vals:
print val
except TooBig:
print "The value is too big!!"


一応こんなふうにすればなる
697デフォルトの名無しさん:2010/03/30(火) 15:32:59
あと `i` は python 3 で使えなくなるから repr(i) の方がたぶんいい
698デフォルトの名無しさん:2010/03/30(火) 15:38:01
>>696
例外クラスのExceptionを継承するってことデスか
699デフォルトの名無しさん:2010/03/30(火) 15:42:52
ねえねえ、例外処理とifってどっちが早いの?
700デフォルトの名無しさん:2010/03/30(火) 15:44:56
>>698
文字列例外ではなくクラス例外を使わなければいけないということ
Exception クラスを継承しているのはユーザが定義する例外はそうすべきだと書いてあったから
http://www.python.jp/doc/2.5/lib/module-exceptions.html
701デフォルトの名無しさん:2010/03/30(火) 15:45:27
ifで済む様なところまで例外使う奴が意外と多くて驚いた
702デフォルトの名無しさん:2010/03/30(火) 15:50:36
だからコードは貼るなと!
ttp://codepad.org/
使えとあれほど!
703デフォルトの名無しさん:2010/03/30(火) 15:50:47
>>701
だってパターンマッチがないんだからしょうがないないじゃん
704デフォルトの名無しさん:2010/03/30(火) 15:50:54
C#かpythonのどちらかを勉強しようと思うのですが、どちらを勉強したらいいと思いますか?
将来的には物理演算とグラフィカルな表示をするプログラムを作りたいです。
705デフォルトの名無しさん:2010/03/30(火) 15:52:07
>>704
その用途なら間違いなくC#でしょ。
706704:2010/03/30(火) 15:56:05
即レスどうもです。
ちなみに理由は何故ですか?
物理演算用のライブラリでも用意されてるんですか?
707デフォルトの名無しさん:2010/03/30(火) 16:09:39
速度が重要な用途だから。

しかし、そんならC/C++でCUDA/PhisyXでも修行しなさいって
ことになるか。
708704:2010/03/30(火) 16:40:46
計算速度はそれほど気にしません
強いて言えば習得できるスピードを重視してます
709デフォルトの名無しさん:2010/03/30(火) 16:48:55
ものによっては速度100倍とか変わるで
710デフォルトの名無しさん:2010/03/30(火) 17:23:46
単純な数値計算やバイト列の操作とかは、PythonはCに比べるとものすごく遅いよ
Pythonを選ぶのなら、その手の処理は丸投げ可能なライブラリを使うか、
自分でC拡張を書いたほうがいいな
711704:2010/03/30(火) 17:36:02
なるほど、勉強になりました
これ以上はスレチになりそうなので他所に行きます
答えてくださった方々、ありがとうございました
712デフォルトの名無しさん:2010/03/30(火) 20:10:31
>>689
自己参照返しはメソッドチェーン作るときのお決まりのパターン。
Pythonじゃあんまりメソッドチェーン使わないけど
Rubyはメソッドチェーンだらけだし。
713デフォルトの名無しさん:2010/03/30(火) 20:15:44
使わないというか使うなクソボケ氏ねっていう勢い
714デフォルトの名無しさん:2010/03/30(火) 20:34:11
>>712
そんなのは分かってるよ
あほか
715デフォルトの名無しさん:2010/03/30(火) 20:49:24
pythonだって文字列処理とかはメソッドチェーンじゃないですか
手癖によるけど
716デフォルトの名無しさん:2010/03/30(火) 21:45:56
数値演算ならnumpy使えば全然速いだろ。
717デフォルトの名無しさん:2010/03/30(火) 22:17:22
>>715
Pythonで値が返るのは、基本的に(selfではなく)「新たな値を返す」ケースだね
文字列もそう
self返しはあまり見ないな
718デフォルトの名無しさん:2010/03/30(火) 22:32:02
ruby信者きもいで素(><)
719デフォルトの名無しさん:2010/03/31(水) 01:31:09
あるオブジェクトだけが与えられた時、それがどのクラスのインスタンスか知る方法はありますか?
720デフォルトの名無しさん:2010/03/31(水) 01:48:51
>>719
type(obj)
721デフォルトの名無しさん:2010/03/31(水) 07:33:47
720は駄目な子
722デフォルトの名無しさん:2010/03/31(水) 09:56:35
>>721
俺もそう思ったが、Python 3.xでは正解のようだ。
723720:2010/03/31(水) 10:15:13
うわぉ、 old-type-class だと >>720 が上手くいかないんだな。
old-type-classなんて使うな!って思うけど・・・
ダサいけど、 obj.__class__ を使の方が汎用的なのか?
724デフォルトの名無しさん:2010/03/31(水) 10:25:26
ああ、3.xということじゃなくて、new style classってことか。
2.5.x, 2.6.x でも__future__で全部new style classにして欲しいな。
つい忘れる事がある。
725720:2010/03/31(水) 10:40:34
>>724
__metaclass__ = type

class C: pass
↑ new style class
726デフォルトの名無しさん:2010/03/31(水) 13:47:56
722はお花畑の住人。
727デフォルトの名無しさん:2010/03/31(水) 21:05:03
リストの概念がむずかしい
728デフォルトの名無しさん:2010/03/31(水) 21:33:03
pythonの #! はどう書いておけば無難なの?
まだWindows版しか使ってないから分からない。
729デフォルトの名無しさん:2010/03/31(水) 22:15:51
windowsはshebangではなく拡張子を見てるから
つける必要はない
730デフォルトの名無しさん:2010/04/01(木) 02:36:52
Windows専用なら書かなくてもいいけど
*n*xにも持っていくなら書いた方がいいかもね
書かなくても python hoge.py で動くよ

#!/usr/bin/env python
この書きかたが多いみたいだけどこれを嫌う人もいるらしい

#!/usr/local/bin/ptyhon
自分でインストールしたらなこんな感じ

#!/usr/bin/python
元々インストールされてたのを使うならこんな感じ

どっちみちポータビリティ考えてプログラム書いておかないといけないから
ここだけ変えて動くってもんでもないことは意識しておいたほうがいいよ
731デフォルトの名無しさん:2010/04/01(木) 07:42:03
google のスタイルガイドでは #!/usr/bin/env python<バージョン> だそうで
ttp://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Python_Interpreter

因みに #!/usr/bin/env の問題についてはこのへん
ttp://ya.maya.st/d/200606c.html#d20060625
結局どう書いても環境依存するので無難な書き方ってのは無い。自分の環境で動くように書いとけばいいよ
732デフォルトの名無しさん:2010/04/02(金) 00:05:09
#!/usr/bin/env python
で十分。あとは setup.py をきちんと書いておくこと。
python setup.py install するときに、自動的に書き換えられるから。
733デフォルトの名無しさん:2010/04/02(金) 10:09:40
今はバージョン混在期なので /usr/bin/python2.6 -O のように明示的にしておいた方が無難かもね。
734デフォルトの名無しさん:2010/04/02(金) 13:10:11
自分で書いたソースの中で shebang 行に書かれている内容を参照出来ますか?
自己ファイル読むしかないですか?
735デフォルトの名無しさん:2010/04/05(月) 16:28:24
DOSコマンドのroute printで表示される情報と同じものを取得する方法を教えてください
736デフォルトの名無しさん:2010/04/05(月) 16:35:21
import win32com.client
print u'%-16s%-16s%-16s%-16s' % ('Destination', 'Netmask', 'Gateway', 'Metric')
for i in win32com.client.Dispatch('WbemScripting.SWbemLocator').ConnectServer().ExecQuery('Select * From Win32_IP4RouteTable'):
 print u'%-16s%-16s%-16s%-16s' % (i.Destination, i.Mask, i.NextHop, i.Metric1)
737デフォルトの名無しさん:2010/04/05(月) 17:18:23
わあいわあい
738デフォルトの名無しさん:2010/04/08(木) 01:13:11
Pythonの日本語コミュニティってどんなところがあるか教えてください。
出来ればIRCやチャットなんかでリアルタイムで参加できるといいんですが。
PyjugとかいうところはIRCもうやってないみたいだし。ここやhatenaのブログ群しかわからんです。
オンラインで一人でやっていく場合、何かいい手助けがあれば教えてください。おながいします。
739デフォルトの名無しさん:2010/04/08(木) 06:50:00
>>738
そんなものはない。英語を勉強するか諦めるかどっちか選べ。
740デフォルトの名無しさん:2010/04/08(木) 06:50:12
ついったーに#Pyjugってハッシュタグあるね。
あんまついーとされてないけど。。
741デフォルトの名無しさん:2010/04/08(木) 06:54:31
2chのスレが一番マシなのか?www
742デフォルトの名無しさん:2010/04/08(木) 06:57:15
>>738
マジレスすると最近はGAE周りに
初心者に手取り足取り教えてくれる
親切な人たちが集まっているようだ

GoogleAppEngine hack-a-thon
でググってみてくれ
743738:2010/04/08(木) 07:56:47
>>739
やはりそうですか、前にPython勉強しようとして挫折したのもそこからだった気がします。
調べたんですがなかった。今仰るとおり英語で勉強中です。

>>740
サンクスちょっと見てみます。

>>742
マジレスありがとうございます。やはり日本語コミュニティはありがたい手助けになると思うので、熱心にググってみますです。
744デフォルトの名無しさん:2010/04/08(木) 08:48:37
ラブプラスを持ってゆくとカップル割引になりますか?
745デフォルトの名無しさん:2010/04/08(木) 09:00:03
http://www.python.jp/mailman/listinfo/python-ml-jp

Webのアーカイブを見れば分かると思うけど、メーリングリストで質問すれば親切に答えてくれるよ。
746デフォルトの名無しさん:2010/04/08(木) 09:39:29
PythonのMLは、参加者の数に対して、質問を含めて、ネタを提供する人が
足りない状況ですね。
初心者が気兼ねなく質問するのは、活気が戻るので大歓迎です。
747デフォルトの名無しさん:2010/04/08(木) 09:51:42
GoogleAppEngineのコミュニティなど存在しない。
厨房の妄想が作り出した幻想だ。
748デフォルトの名無しさん:2010/04/08(木) 11:28:19
>>739
自分で作るという手もあるぜ
749デフォルトの名無しさん:2010/04/08(木) 13:41:59
チャットルーム作ってみた
http://www.cometeo.com/room/GdiVpDEF/
750デフォルトの名無しさん:2010/04/08(木) 15:46:43
python challengeやったんだが一問目からわからん
なにすればいいの?
751デフォルトの名無しさん:2010/04/08(木) 15:54:15
try to change the URL address
URLがttp://www.pythonchallenge.com/pc/def/0.html
謎の画像


というか専用スレがあるよ

Python Challengeをやろう!
http://pc12.2ch.net/test/read.cgi/tech/1175919288/
752デフォルトの名無しさん:2010/04/08(木) 15:54:52
>>751
誘導サンクス
753デフォルトの名無しさん:2010/04/08(木) 15:55:52
たしかに最初にやったときは面食らった
754デフォルトの名無しさん:2010/04/08(木) 16:54:23
モジュールなんてどこから探せばいいんだ?
755デフォルトの名無しさん:2010/04/08(木) 18:07:18
名前さえわかるならeasy_installで一発
756デフォルトの名無しさん:2010/04/08(木) 18:09:22
* ぐぐる
* 公式マニュアル>ライブラリリファレンス
* PyPI
757デフォルトの名無しさん:2010/04/08(木) 18:45:03
効果から名前を知りたいんだよな
ライブラリリファレンスも使いにくいし
758デフォルトの名無しさん:2010/04/08(木) 19:58:14
画面キャプチャが
import ImageGrab
ImageGrab.grab().save('hage.png')
だけで出来るとは気付かなかった
759デフォルトの名無しさん:2010/04/09(金) 04:40:44
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
760デフォルトの名無しさん:2010/04/09(金) 08:16:35
ironpython始めたんだけど
みんなエディタ何使ってるの?TT
761738:2010/04/09(金) 10:20:41
一応irc.2ch.netにpythonのチャンネルがあるのは見つけました。
irc://irc.2ch.net/python
762デフォルトの名無しさん:2010/04/09(金) 14:49:52
>>760
秀丸
763デフォルトの名無しさん:2010/04/09(金) 18:19:39
なんかこれだけは覚えとけってモジュールある?
764デフォルトの名無しさん:2010/04/09(金) 18:21:56
peak hell
765デフォルトの名無しさん:2010/04/09(金) 18:23:52
autolibがあれば他は不要
766デフォルトの名無しさん:2010/04/09(金) 19:05:20
sysとかも必要かね?
767デフォルトの名無しさん:2010/04/09(金) 19:10:07
>>765
そんなのある?
768デフォルトの名無しさん:2010/04/09(金) 19:33:53
PIL
769デフォルトの名無しさん:2010/04/09(金) 20:14:27
iモードIDの取得方法を教えてください
f = cgi.FieldStorage()
if f.has_key('HTTP_X_DCMGUID'):
print f['HTTP_X_DCMGUID'].value
と書いてもダメのようです
770デフォルトの名無しさん:2010/04/09(金) 20:23:35
携帯側でID送らない設定になっているとかいうオチだったり
771デフォルトの名無しさん:2010/04/09(金) 20:25:23
from uamobile import detect
dev = detect({'HTTP_USER_AGENT':os.getenv('HTTP_USER_AGENT'),'HTTP_X_DCMGUID':os.getenv('HTTP_X_DCMGUID')})
iid = dev.guid
772デフォルトの名無しさん:2010/04/09(金) 20:38:37
できたぁ〜
771さんヒントありがとう
import os
dev = os.getenv('HTTP_X_DCMGUID')
print dev
773デフォルトの名無しさん:2010/04/09(金) 20:41:53
おめこ
774デフォルトの名無しさん:2010/04/09(金) 23:00:23
沢山バージョンがあるんですがどのpythonがいいですか?
やりたいことはxpでコマンドラインが扱えるツールを扱ったり
webからファイルをダウンロードするようなものを作ろうと思ってます
775デフォルトの名無しさん:2010/04/09(金) 23:14:22
>>774
とりあえずこれでいい
http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi

しかしいつの間にかテンプレ消えてんじゃねーか
◆関連リンク
Python の Home Page
http://www.python.org/

Python 日本語ドキュメント - Pythonistaのお友達
http://www.python.jp/doc/release/

最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも
http://www.python.org/download/

Python のコーディングガイド PEP8
http://www.python.org/dev/peps/pep-0008/

Python のコーディングガイド PEP8 - 日本語訳
http://www.oldriver.org/python/pep-0008j.html

日本語文字列コード問題まとめ
http://python.matrix.jp/tips/string/encoding.html

インタラクティブモードのエンコード
http://python.matrix.jp/tips/compatibility/interact_encoding.html
776デフォルトの名無しさん:2010/04/09(金) 23:20:04
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)
777デフォルトの名無しさん:2010/04/09(金) 23:22:52
>>775
Pythonの文字化け対策:sys.setdefaultencodingの謎
http://hain.jp/index.php/tech-j/2008/01/07/Python%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91
実行時にdefaultencodingを変更する
http://d.hatena.ne.jp/perezvon/20070715/1184469534
778デフォルトの名無しさん:2010/04/10(土) 00:28:18
>>775にいたるまでテンプレ消えても誰も指摘しなかったのかw
おおらかでいいな
779デフォルトの名無しさん:2010/04/10(土) 00:32:25
自治は結構丸投げなんだよな
780デフォルトの名無しさん:2010/04/10(土) 00:35:03
ID出ない時点で半分諦めてるからな
モジュール書く時はsys.getdefaultencoding()に関係なく動くようにしたい思った春
781デフォルトの名無しさん:2010/04/10(土) 00:36:59
>>775
そういう初歩的なことはどうでもいいから
さっさとファイル入手力のやり方が知りたいんだが
ヘルプにもどこにもそこのリンクには書いていないじゃないか
別に本格的にやるわけじゃないんだから
要所だけわかりゃいいんだよ
782デフォルトの名無しさん:2010/04/10(土) 00:40:18
そうですか
がんばってね
783デフォルトの名無しさん:2010/04/10(土) 07:47:09
pyファイルでコマンドライン引数拾いたいんだが
pyファイルにファイルドロップしようとしても無理だし
ランチャに登録してパス渡しても無理なんだけど
コンパイルしなきゃだめなの?
784デフォルトの名無しさん:2010/04/10(土) 08:12:50
%s
785デフォルトの名無しさん:2010/04/10(土) 08:31:30
argvs = sys.argv
print argvs

こうやってるんだけどさ、pyファイルのパスしか格納されてないんだよね
786デフォルトの名無しさん:2010/04/10(土) 08:40:21
あーわかったわ、
なぜかわからないがipy.exeに対してやらなきゃならないのか

ipy.exe test.py readme.txt
787デフォルトの名無しさん:2010/04/10(土) 08:48:46
IronPythonは別スレがあるぞ
それはともかく

> こうやってるんだけどさ、pyファイルのパスしか格納されてないんだよね
ドロップしたファイルのパスがargv[1]に入らないってことか

なんかWindowsのコンソールは関連付けやパイプで妙な挙動をすることがあるから
変だなと思ったら>>786みたいに明示的にインタプリタに食わせるといいよ
788デフォルトの名無しさん:2010/04/10(土) 09:37:39
>>787
お、スレチでしたか
ともかくありがとう
789デフォルトの名無しさん:2010/04/10(土) 11:22:06
なんだactivepython入れたらエディタもついてくるじゃない
これでいいやん
790デフォルトの名無しさん:2010/04/10(土) 11:35:54
・・・
791デフォルトの名無しさん:2010/04/10(土) 13:23:37
792デフォルトの名無しさん:2010/04/10(土) 16:16:30
めんどくせーなこの言語は
何度も何度もshift-jisに変更させやがって
変換なしで文字列操作できないのかよ
793デフォルトの名無しさん:2010/04/10(土) 16:20:32
っちらし
794デフォルトの名無しさん:2010/04/10(土) 16:22:31
>>792
馬鹿には使えません
795デフォルトの名無しさん:2010/04/10(土) 16:36:36
はあ?他の言語なら何も考えずに処理できるぞ
言語が糞なんだろうが
いちいちエラー吐きやがってよ
796デフォルトの名無しさん:2010/04/10(土) 16:39:47
   〃∩ ∧_∧
   ⊂⌒(  ・ω・)  はいはいわろすわろす
     `ヽ_っ⌒/⌒c
        ⌒ ⌒
797デフォルトの名無しさん:2010/04/10(土) 16:55:44
なんだこれは
今度はソースのセーブすらできなくなってるし
そりゃ過疎るわなこんな糞言語
798デフォルトの名無しさん:2010/04/10(土) 17:35:46
   〃∩ ∧_∧ 
   ⊂⌒(  ・ω・)  はいはいわろすわろす 
     `ヽ_っ⌒/⌒c 
        ⌒ ⌒ 
799デフォルトの名無しさん:2010/04/10(土) 17:37:50
  ∧_∧
⊂(#・д・)  わろすって言ってんだろ!!
 /   ノ∪
 し―-J |l| |
         人ペシッ!!
       __
       \  \
          ̄ ̄
800デフォルトの名無しさん:2010/04/10(土) 18:39:01
わざわざ何度も何度も変換するなんて、相当暇なんだな。
入力時にdecodeして出力時にencodeするだけでいいのに。
801デフォルトの名無しさん:2010/04/10(土) 18:39:58
にわかとうじょう
802デフォルトの名無しさん:2010/04/10(土) 19:25:05
>>795
>はあ?他の言語なら何も考えずに処理できるぞ

まちがったまま勝手に処理されても気付かない
(=文字化けしたり)ってことはCのヌルポと同じだよ
Javaみたいにヌルポを教えてくれるかどうかの違い
803デフォルトの名無しさん:2010/04/10(土) 19:34:19
これはひどい
ていうか悪態つくような子に触らないで
804デフォルトの名無しさん:2010/04/10(土) 19:45:38
  ∧_∧
⊂(#・д・)  ヌルポって言ってんだろ!!
 /   ノ∪
 し―-J |l| |
         人ペシッ!!
       __
       \  \
          ̄ ̄
805デフォルトの名無しさん:2010/04/10(土) 22:37:57
uniのABCとsjisのABCを直接結合できないと知った春でした
しかしそれくらいで500エラー出すかね、厳しい言語だね
806デフォルトの名無しさん:2010/04/10(土) 22:45:09
>>805
もうちょっと弱い型付けの言語でも探せば?
807デフォルトの名無しさん:2010/04/10(土) 23:23:45
>>805
馬鹿には使えません
808デフォルトの名無しさん:2010/04/10(土) 23:36:55
ここまでなんとかできたんだけどもっとシンプルに書けませんか?
url="http://yutori7.2ch.net/test/read.cgi/ana/1270636640/"
lines=urllib.urlopen(url).readlines()

if os.path.exists("img") != True:
 os.mkdir("img")

def getTitle(line):
 return line[7:len(line)-9]

imgurls=[]
def getIMGurls(line):
 strs=line.split()
 for str in strs:
  if re.search("ttp://blog-imgs",str) != None:continue
  if re.search(".jpg",str) != None:
   imgurls.append(str)

for line in lines:
 if re.match("<title>",line) != None:
  title= getTitle(line).decode("shift-jis")
 if re.search("\.jpg",line) != None:
  getIMGurls(line)

for imgurl in imgurls:
 if re.match("ttp",imgurl) != None:imgurl="h"+imgurl
 dest="img\\"+os.path.basename(imgurl)
 urllib.urlretrieve(imgurl,dest)
 time.sleep(1)
809デフォルトの名無しさん:2010/04/10(土) 23:49:26
あー
3年位前に漏れも同じの作ったわw
810デフォルトの名無しさん:2010/04/10(土) 23:54:34
>>808
めんどくさいから俺がどうにかする気はないが、シンプルにしたいのなら。

正規表現使う必要性があんまり分からん。それにもし使うなら文字列取り出しまでやっちゃえばいいのに。
そうするとgetTitle関数は不要になるか、タイトルにマッチするかどうかも盛り込んだ関数になるんじゃないかなぁ。

getIMGurls関数は、グローバル変数のimgurlsに依存してる時点であんまり処理の分割って役目を果たせていないのだから、
1回しか使わないのであれば関数にする必要ないんじゃないかなぁ。

あと、一度imgurlsに入れてから処理しなおさなくても、その場で処理してしまってもいいように思えるが。
811デフォルトの名無しさん:2010/04/10(土) 23:59:11
ひどいコードだ
まるでPHPを見ているようだ
812デフォルトの名無しさん:2010/04/11(日) 00:34:36
>>805
エラーを出してくれる方が親切だろ。

しかし、その割には変数の宣言は必要ない。
厳しいのか緩いのかよくわからん謎仕様。
813デフォルトの名無しさん:2010/04/11(日) 00:48:11
>>812
強い動的型付けが謎仕様なの?
814デフォルトの名無しさん:2010/04/11(日) 01:53:26
プログラミング初心者でも理解出来そうなpython入門書教えてくだしあ
815デフォルトの名無しさん:2010/04/11(日) 02:32:46
pythonで学ぶプログラム作法

英語なら無料
ttp://www.freenetpages.co.uk/hp/alan.gauld/
816デフォルトの名無しさん:2010/04/11(日) 03:33:06
>>812
漏れは >>805 じゃないけど
python 学び始めた頃は文字列操作の度に
なんでこんなに例外ばっかり・・・と思ってた

unicode と (encoded) str の違いを理解して
例外の出る理由が判ったあとは考えかたが変わった

いいかげんな文字列処理で文字化けしてても動く言語
→どこにバグがあるか判らないけどとりあえず動くからプログラムに間違いがあっても放置

python の場合
→ちゃんと問題のある場所でエラーが出るからバグ修正が楽
817デフォルトの名無しさん:2010/04/11(日) 03:56:11
ご指摘の参考にちょっとマシになったと思うのですがどうでもしょうか?
lines=urllib.urlopen(url).readlines()
title=""
dir=""

for line in lines:
  if re.match("<title>",line):
    title= line[7:len(line)-9].decode("shift-jis")
    dir="d:\\img\\"+title+"\\"
    if os.path.exists(dir) != True:
      os.mkdir(dir)
  else:
    strs=line.split(">")
    for str in strs:
      m=re.search(r"ttp://.+\.jpg",str)
      if m:
        filename=title+"_"+os.path.basename(m.group(0))
        print filename

        try:
          if os.path.exists(dir+filename) != True:
            urllib.urlretrieve("h"+m.group(0),dir+filename)
            print "success "+filename
          else:
            print "exists "+filename
        finally:
          print ""

raw_input("ダウンロード完了")
quit()
818デフォルトの名無しさん:2010/04/11(日) 04:41:27
汚ねーコード貼るなって
819デフォルトの名無しさん:2010/04/11(日) 07:02:08
>>817
* 行からタイトルを探す作業は一度見つかったら残りの行については探さなくて済むはず
* os.mkdirの引数は\で終端する必要は無い
* if not os.path.exists(dirname): と書くとすっきり
* strは組み込み関数にもあるのでできれば使わない
* (urllibはkeep-alive(ぐぐって)に対応してなかったような気がする)

あとはHTMLからリンクを抜き出す正規表現を勉強してみたり
HTMLでなくDATにアクセスするようにするともっとすっきり書けると思う
strs=line.split(">")のあたりはいかにも苦し紛れだ
820デフォルトの名無しさん:2010/04/11(日) 07:03:05
DATについては monazilla 2ch dat でぐぐって
821デフォルトの名無しさん:2010/04/11(日) 09:47:06
>>819
独学でやっているので動けばいいかなぐらいで妥協しがちだけど
こういう意見は非常に参考になります
思い切って意見聞いて正解でした
ありがとうございました
822デフォルトの名無しさん:2010/04/11(日) 10:43:31
>>817
HTMLから持ってくるなら
HTMLParser使えよ....
823デフォルトの名無しさん:2010/04/11(日) 14:19:42
datだろ常考
824デフォルトの名無しさん:2010/04/11(日) 14:37:04
dat使った方が楽そうだけど、HTMLでやった方が汎用性は高いぞ
825デフォルトの名無しさん:2010/04/11(日) 15:00:53
なんか開発するときってどうゆうてじゅんでやってる?
826デフォルトの名無しさん:2010/04/11(日) 15:07:00
>>825
・目的を考える。
・ターゲット考える。

それから開発
827デフォルトの名無しさん:2010/04/11(日) 15:08:35
・既に出来上がったものがあるかどうかを調べる
・2chで聞いて誰かが作ってくれるかどうか確認する
828デフォルトの名無しさん:2010/04/11(日) 15:52:26
HTMLParserとか汎用ライブラリの下請けに使うことはあっても
>>817に使うケースは99%ないなw
829デフォルトの名無しさん:2010/04/11(日) 16:32:08
怒らないでマジレスしてほしいんだけど
おまえら、なんでこんな時間に書き込みできるわけ?
普通の人なら学校や会社があるはずなんだけど
このことを知った親は悲しむぞ?
もっと、現実を見ようぜ。
830デフォルトの名無しさん:2010/04/11(日) 16:33:19
マルチうざい
831デフォルトの名無しさん:2010/04/11(日) 16:45:49
そのコピペ流行ってるのか?
832デフォルトの名無しさん:2010/04/11(日) 17:04:08
>>831
化石レベル。
コピペを知ったばかりのリアル厨房と思われ。
833デフォルトの名無しさん:2010/04/11(日) 17:08:53
自演かもしれないがHaskellスレに見事釣られてるのがいて失笑した
834デフォルトの名無しさん:2010/04/11(日) 17:58:03
いちいち報告せんでいいわ厨房
835デフォルトの名無しさん:2010/04/11(日) 18:23:10
厨房ってなに?
836デフォルトの名無しさん:2010/04/11(日) 18:27:06
そりゃあれだろ、料理を作る感じの
837デフォルトの名無しさん:2010/04/11(日) 18:29:44
kitchen
838デフォルトの名無しさん:2010/04/11(日) 20:03:12
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
839デフォルトの名無しさん:2010/04/14(水) 12:47:48
Python 3 プログラミング徹底入門は評判どうなんでしょうか。
買った方いらしたらどんなもんか教えてください。
840デフォルトの名無しさん:2010/04/14(水) 13:48:40
プログラミングとやったことない人でもはじめられる入門書ってないですか

3DCGのソフトのスクリプトがpythonになるので手をつけたいんですけど
841デフォルトの名無しさん:2010/04/14(水) 13:50:27
本の質問多いな
たぶん本でPython学んだ人って少ないと思うよ
842デフォルトの名無しさん:2010/04/14(水) 14:02:03
>>840
最初の言語にPythonはやめとけ
VisualC#2008 Expressを落として、
「プログラムを作ろう! Microsoft Visual C♯2008 Express Edition 入門 (DVD付) (マイクロソフト公式解説書」
とか買ってみなさい。
843デフォルトの名無しさん:2010/04/14(水) 14:27:53
>>842
Pythonは最初の言語としても優れている。

WindowsでGUIアプリを作るところから始めたいのなら、C#から始めるのが正解だと思うけど、
>>840は別の目的があるのでPythonから始めたのでOK。C#はお門違い。
844デフォルトの名無しさん:2010/04/14(水) 14:58:23
てか「最初の言語」という用途こそ
教育用言語由来であるPythonがもっとも得意とする分野だと思うがどうか

本ははじパイでいいんじゃない
ちと高くて厚いけど
845デフォルトの名無しさん:2010/04/14(水) 15:24:25
はじパイはunicodeまわりのところが全くといっていいほど書かれていないのでお勧めしない
昔とちがって今はネットの情報で充分だよ
846デフォルトの名無しさん:2010/04/14(水) 15:27:52
問題は、「インストールしてIDLEで書いて動かせる」ところまでいけるかどうかだな!
847デフォルトの名無しさん:2010/04/14(水) 20:37:07
みんなIDLEで書いてるの?
848デフォルトの名無しさん:2010/04/14(水) 20:39:26
他に選択肢がないからな
849デフォルトの名無しさん:2010/04/14(水) 20:48:17
俺はGinnieというマイナーエディタ使ってる
850デフォルトの名無しさん:2010/04/14(水) 20:56:59
秀丸使ってます(キリッ
851デフォルトの名無しさん:2010/04/14(水) 21:16:19
Emacs
852デフォルトの名無しさん:2010/04/14(水) 21:17:04
PythonってCと比べて簡単?
853デフォルトの名無しさん:2010/04/14(水) 21:43:04
簡単だよ
854デフォルトの名無しさん:2010/04/14(水) 21:50:43
IDLEはPython2系ではクソ。非ASCII文字列の扱いがデタラメ。
855デフォルトの名無しさん:2010/04/14(水) 21:56:02
デタラメってほどじゃないけどな
判らずに使ってると滅茶苦茶に見えるのは確かだな
856デフォルトの名無しさん:2010/04/14(水) 22:05:16
馬鹿には使えません
857デフォルトの名無しさん:2010/04/14(水) 22:30:24
馬鹿しか使いません
858デフォルトの名無しさん:2010/04/14(水) 22:56:06
くやしいのう
くやしいのう
(AAry
859デフォルトの名無しさん:2010/04/14(水) 22:56:59
ばーか
860デフォルトの名無しさん:2010/04/14(水) 22:59:07
他所で解決しました
もう結構です
861デフォルトの名無しさん:2010/04/14(水) 23:20:53
>>860
さようなら。たびのひと。またおたちよりください。
862デフォルトの名無しさん:2010/04/15(木) 00:05:33
>>855
判らずに使ってるとも何も・・・
UTF-8以外の環境で、 u"あいうえお" ってしてみ?
863デフォルトの名無しさん:2010/04/15(木) 00:31:37
それIDLEの問題というよりはcode.pyの問題
864デフォルトの名無しさん:2010/04/15(木) 00:35:00
>>863
IDLEの問題と言いにくいのは事実だが、code.pyの問題でもないな。
http://bugs.python.org/issue1542677
http://bugs.python.org/issue5911

IPythonも同じ問題を抱えている。
865デフォルトの名無しさん:2010/04/16(金) 01:47:00
初めての言語でパイソンはないよな
この言語から学べるものって何もないが
このソフト使うのってコマンドラインツール
を利用するときぐらいしかないわ
866デフォルトの名無しさん:2010/04/16(金) 02:03:11
そりゃ学ぼうとしなければ何も学べないわな
867デフォルトの名無しさん:2010/04/16(金) 08:49:59
formatterモジュールって何をするモジュールですか?
ドキュメント見てもわけわかりません・・・
868デフォルトの名無しさん:2010/04/16(金) 09:41:51
logging で使ったことがあるような気がする
ttp://lab.hde.co.jp/2008/02/pythonlogging.html
869デフォルトの名無しさん:2010/04/16(金) 11:12:51
>>865
言語から本気で何かを学び取りたいなら、
コンピュータそのものを学びたいならアセンブラかC
コンピュータサイエンス的なものを学びたいなら、LispかMLかHaskell
だと思うんだ。

けど、そういう言語こそ2番目以降でいい。
870デフォルトの名無しさん:2010/04/16(金) 11:29:42
始めての言語にPythonはいい選択だと思うが
あとはちと古いがPascalなんかも

真面目に取り組みたいなら>>869の言うとおり
871デフォルトの名無しさん:2010/04/16(金) 11:32:59
Pascal は良いね
矯正ギプスみたいな感じがする
872デフォルトの名無しさん:2010/04/16(金) 12:17:33
言語としては入門に向いていても、現状では初心者が勉強していく
環境が十分に整ってないと思う。

あと、初心者がモチベーションを維持していくには、絵や音が出た方が
いいと思うけど、Pythonでそれをするのは面倒なんだよね。

そういう点では、入門としてはSmallBasicが最高の環境だね。
文法がBASICなのがイマイチだが。
873デフォルトの名無しさん:2010/04/16(金) 14:11:32
言語としては入門に向いていても、現状では初心者が勉強していく
環境が十分に整ってないと思う。

あと、初心者がモチベーションを維持していくには、レン鯖にCGIを置いたり
Webサービスを簡単に利用できたほうがいいけれど、
SmallBasicでそれをするのは面倒なんだよね。

そういう点では、入門としてはPerlが最高の環境だね。
リファレンス周りで他の言語に乗り換える奴が続出するけどね。
874デフォルトの名無しさん:2010/04/16(金) 14:24:59
ないない
875デフォルトの名無しさん:2010/04/16(金) 14:32:37
結局C#一本やるだけで十分事足りる
876デフォルトの名無しさん:2010/04/16(金) 14:44:00
なぜここいいるんだ?
877デフォルトの名無しさん:2010/04/16(金) 14:53:59
C#強いわ〜。タダだし開発環境最強だし。
878デフォルトの名無しさん:2010/04/16(金) 15:22:52
ところで840の人は、Maya Pythonとか使えるようになったのかな。
でも、
ttp://cgkit.sourceforge.net/maya_tutorials/intro/
のTake 4とかみたら「なんだこれ」と思った。
879デフォルトの名無しさん:2010/04/16(金) 16:13:45
>>872
音は出ないけど、turtleモジュールとかはどうだろう。標準で付いてくるし、Pythonのソースコードを落とせばデモで遊べる。
音を出したいんだったらpygame辺りか。
880デフォルトの名無しさん:2010/04/16(金) 17:27:57
Tkinterが標準で付いてくるのもポイント高いな
881デフォルトの名無しさん:2010/04/16(金) 17:33:50
どうせGUIやるならC#でやるわ
882デフォルトの名無しさん:2010/04/16(金) 18:47:22
C#はソース丸見えらしいがpythonもかい?
883デフォルトの名無しさん:2010/04/16(金) 18:58:12
Pythonもそうだよ
だから安心してWhitespaceにGUIライブラリを実装するといい
884デフォルトの名無しさん:2010/04/16(金) 19:37:46
import win32com.client
import re
s = win32com.client.Dispatch('SAPI.SpVoice')
vs = s.GetVoices()
voicename = ['DTalker_Taro', 'MSSam', 'MSMary', 'MSMike', 'LHKENJI', 'LHNAOKO']
voice = {}
for i in xrange(vs.Count):
 v = vs.Item(i)
 for n in voicename:
  if re.match(r'^(.*)(%s)' % n, v.Id):
   voice[n] = v

s.Voice = voice['LHNAOKO'] if 'LHNAOKO' in voice else voice['MSSam']
s.Rate = 5
s.Speak(u'これはPythonでSpeech APIを制御してしゃべらせています。どうでしょうか。', 1)
s.WaitUntilDone(30000)
s.Speak(u'二つ目の文です。', 2)
885デフォルトの名無しさん:2010/04/16(金) 19:42:30
>>884
時間待ち? が寂しいんだが。
スピーチ終了を知らせるイベントとか無いの?
886デフォルトの名無しさん:2010/04/16(金) 20:31:33
s.WaitUntilDone(-1)

887デフォルトの名無しさん:2010/04/16(金) 20:34:52
888デフォルトの名無しさん:2010/04/16(金) 20:40:35
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに
知識として持っててあたりまえのことを質問する馬鹿が増えた
889デフォルトの名無しさん:2010/04/16(金) 21:48:02
>>888
自分が利口になったからだ!
って考えれば末広がりんぐ
890デフォルトの名無しさん:2010/04/16(金) 23:22:28
>>889
お前さん、なんかかっこいいな
891デフォルトの名無しさん:2010/04/17(土) 01:25:57
892デフォルトの名無しさん:2010/04/17(土) 16:23:39
Pythonチュートリアルの日本語訳を探しているんですが、2.6や3.0のものが見付かりません。
Python本体は2.6や3.0を使って、チュートリアルは2.5のものを読むのでも大丈夫ですか?
なんかチュートリアルが一番コンパクトにまとまってるみたいなので、入門にそれを使いたいんです。
893デフォルトの名無しさん:2010/04/17(土) 16:26:20
みんなのPythonはどうですか?
894デフォルトの名無しさん:2010/04/17(土) 16:57:38
>>892
2.5と2.6は大して変わってないので気にしなくていい。
895デフォルトの名無しさん:2010/04/17(土) 17:21:56
>>892
2.5をやればいいと思うよ
多くのチュートリアルサイトも2.5以前のものが多いし
つまらないところでいちいち詰まるよりは効率的
どっちみち英語読めない奴は糞プログラマだしな
896デフォルトの名無しさん:2010/04/17(土) 18:49:37
>>894
loggingは拡充されてた希ガス。configfileから読み込む辺りが。
897デフォルトの名無しさん:2010/04/17(土) 20:05:10
最近pythonを始めました。そこで疑問がありましたので質問させてください。
listのindexでは該当項目がないとエラーになりますが、
count等でまずは該当項目があるかチェックするのが普通のやり方なのでしょうか?
またcount以外でやる方法がありましたら教えていただけないでしょうか?
898デフォルトの名無しさん:2010/04/17(土) 20:13:43
ValueErrorをトラップすればいいと思うけど
要素リスト内にあるかどうかを調べたいのなら、単に
if x in [1,2,3]:
とかでいいよ
899デフォルトの名無しさん:2010/04/17(土) 20:14:11
エラーが起きたらエラー処理をする
簡単でしょ?
900デフォルトの名無しさん:2010/04/17(土) 20:14:39
try: except LookupError: で処理するのが普通かな
indexがなかったらデフォルト値を使うような処理ならdictを検討した方がいい
あえて例外素通りさせるのもあり
901デフォルトの名無しさん:2010/04/17(土) 20:32:01
>>898-900
なるほどif文でも調べられるのですね。
まだチュートリアルで
902デフォルトの名無しさん:2010/04/17(土) 20:33:37
>>901
がんがれ
if文というより、in演算子の機能だよ

>>> 4 in [1,2,3]
False
>>> 1 in [1,2,3]
True
903デフォルトの名無しさん:2010/04/17(土) 20:34:00
すいません、途中で送信してしまいました。

>>898-900
なるほどif文でも調べられるのですね。

まだチュートリアルでtryまでいってなかったので、気づきませんでした。
親切に教えていただきありがとうございました。
904デフォルトの名無しさん:2010/04/17(土) 20:37:55
>>902
なるほどin演算子でtrue,falseも返ってくるのですね。
in演算子はlistとかの中身を送るだけなのかと思っていました。

勉強になりました。ありがとうございます。
905デフォルトの名無しさん:2010/04/18(日) 01:04:54
>>904
>in演算子はlistとかの中身を送るだけなのかと思っていました。

細かい話なので、混乱するようなら今は覚えてなくてもいいけど、
for x in lsのinのことを言っているのなら、それはin演算子じゃあないよ。
for文がfor ... inの形式で書くことになってて、ここでのinはfor文の一部。
in演算子と偶然同じ単語が使われてるだけね。
906デフォルトの名無しさん:2010/04/18(日) 02:11:56
hoge = [None] * 10

とかして一定の大きさの配列確保してから代入して使ってた
907デフォルトの名無しさん:2010/04/18(日) 08:57:32
import time
import threading

class TestA(threading.Thread):
  def __init__(self, name):
    threading.Thread.__init__(self)
    self.name = name

  def run(self):
    cnt = 0
    while True:
      print cnt, self.name
      cnt += 1
      time.sleep(1)

def testB(s):
  for i in xrange(5):
    print i, s
    time.sleep(1)

for i in xrange(3):
  TestA('testA %d' % i).start()
  threading.Thread(target=testB, args=('testB %d' % i, )).start()

これで testB が全部終了したときに
TestA の方が自動で終了するようにしたいのですが
どう書けば良いのでしょうか?
908デフォルトの名無しさん:2010/04/18(日) 20:43:04
>>905
for文のinは違うのですね。
for文のinがまさしくin演算子だと思っていたから勉強になりました。
ありがとうございます。
909デフォルトの名無しさん:2010/04/19(月) 11:07:03
RSSを取得してきて表示するのを書きました。
RSSはUTF-8で書かれているのですが、コマンドプロンプトで実行すると漢字だらけで文字化けしているようです。
うまく表示するにはどうしたらいいのでしょうか?
910デフォルトの名無しさん:2010/04/19(月) 11:50:17
勉強ついでに5000件程度のファイルのサイズをチェックして重複を削除するプログラムを作ったのですが時間がかかりすぎて不便を感じてます。
より高速に処理するにはどう記述したら良いでしょうか?
i = 0
path = '/hoge/'
files = os.listdir(path)
del_list = []
while i < len(files):
File = path + files[i]
j = i + 1
while j < len(files):
File_check = path + files[j]
if os.path.getsize(File) == os.path.getsize(File_check):
del_list.append(File_check)
j = j + 1
for del_file in del_list:
os.remove(del_file)
911デフォルトの名無しさん:2010/04/19(月) 12:05:29
ファイルサイズをキーにしたdictを使うといいよ
912デフォルトの名無しさん:2010/04/19(月) 12:08:28
ファイルサイズだけで重複判定して削除って随分危険だな
まあ勉強用ということならいいけど
913デフォルトの名無しさん:2010/04/19(月) 12:09:00
>>911
ありがとうございます!
さっそく試してみます
914デフォルトの名無しさん:2010/04/19(月) 12:11:12
>>910
つ、checksum 値。
e.g.) md5sum, sha1sum
915910:2010/04/19(月) 12:21:24
>>912
どうせエロ画像だからいいのです('A` )
>>914
ありがとうございます。
後で試して比較してみます
916デフォルトの名無しさん:2010/04/19(月) 12:28:10
>>909
Python 2.X系と仮定しての話だけど

日本語WindowsのデフォルトのコードページはCP932という奴で、
UTF-8とは違うエンコーディングになるので、UTF-8なバイト列を
そのまま表示しようとしたら、当然文字化けになる

Windowsのコードページにあったエンコーディングに変換するには
Pythonでは'mbcs'というエンコーディング名を使う

sにデータが入ってるとして
u = s.decode('utf-8') # str->unicode変換
u.encode('mbcs', errors='ignore') # unicode->str変換
のようなことをやるとよいよ

運がよければ上だけで印字できる(print uとかやれば)
それでダメなら下で、再度strに変換する
917デフォルトの名無しさん:2010/04/19(月) 13:43:23
普通に
print u'おちんちんびろーんwwwww'
みたいにユニコード文字列にするのでは駄目なの
918デフォルトの名無しさん:2010/04/19(月) 13:44:46
>>917
RSSフィードみたいなのをプログラムの外から読み込むのと
ソースに書き込むリテラルは全然違う話だぞ
919デフォルトの名無しさん:2010/04/19(月) 18:12:31
>>916
Windowsのエンコードを取得するとcp932なのに、
mbcsと指定しないとコケるのはなんとかならんのだろうか?

import locale
console_encode = locale.getpreferredencoding()

間違い?
920デフォルトの名無しさん:2010/04/19(月) 18:14:37
間違い
921デフォルトの名無しさん:2010/04/19(月) 18:32:19
>>920
じゃあどーすんの?
922デフォルトの名無しさん:2010/04/19(月) 20:02:32
>>916
C#なら何もしなくてそのまま表示できるのに
923デフォルトの名無しさん:2010/04/19(月) 20:54:38
>>909
RSSはxmlだから、xmlのライブラリに突っ込んでやって、そこから値を取り出せば、
デコードされてunicodeになって帰ってくる。
unicode文字列をそのまま print したら、コンソールのエンコーディングにエンコード
されるから文字化けしない。

>>922
C#でも、ダウンロードしたバイナリをそのまま標準出力に流したら化けるだろうが。
言語の問題じゃなくて、処理フローの問題だよ。
924デフォルトの名無しさん:2010/04/20(火) 19:01:56
参考書に載ってるソースコードそのまま書いて実行しても書いてある結果になりません。。。
print("Type integer, each followed by Enter; or just Enter to finish");

total=0;
count=0;

while True:
line=input("integer:")
if line:
try:
number=int(line);
except ValueError as err:
print(err);
continue;
total+=number;
count+=1;
else :break;

if count:
print("count=",count,"total=",total,"mean=",total/count);

これで最後にEnterだけ押したら最後の行のが出力されるはずなんですが、
なぜかEnter押しても
invalid literal for int() with base 10: ' '
となります。どうしてでしょうか。わかる方教えてください。
925デフォルトの名無しさん:2010/04/20(火) 19:19:27
>>924
line=input()の後にline = line.strip()ってつけてみてもだめかなぁ?
926デフォルトの名無しさん:2010/04/20(火) 19:42:14
>>925
ありがとうございます!載ってる答え通りになりました。
が、参考書のソースコードがこれ間違ってるってことになるんですかね。。
927デフォルトの名無しさん:2010/04/20(火) 19:44:39
とりあえず書名と自分の使ってる Python のバージョンぐらい書いたほうがいいぞ
928デフォルトの名無しさん:2010/04/20(火) 20:05:57
>>927
申し訳ないです。本は「Python3 プログラミング徹底入門」
バージョンは3.0で、開発環境はEclipseのPyDEVのバージョン1.5.6です。
929デフォルトの名無しさん:2010/04/20(火) 20:42:22
半角スペースを入れずにEnterだけ押したのなら
本に書いてあるとおりの結果になると思う

コマンドプロンプトや仮想端末から実行してみて
line = line.strip()がなくても望みの結果が得られるようならEclipse+PyDevが怪しい
930デフォルトの名無しさん:2010/04/20(火) 23:42:28
糞本買うととんでもないことになるな。
931デフォルトの名無しさん:2010/04/21(水) 01:31:43
「はじめてのPython」にしとけとあれだけry
932デフォルトの名無しさん:2010/04/21(水) 05:55:52
Eclipse+PyDevが怪しい
933デフォルトの名無しさん:2010/04/21(水) 05:57:26
Python3が怪しい
934デフォルトの名無しさん:2010/04/21(水) 06:02:49
バグ取りや例外処理の練習用だと思えば良い教材
935デフォルトの名無しさん:2010/04/21(水) 07:22:17
プログラムの本質でない部分のバグで詰まるなんてかわいそう
素直にC#でやればいいのに
936デフォルトの名無しさん:2010/04/21(水) 07:23:31
PHPで言う所の
PHPをC++化するOSSツール「HipHop for PHP」、Facebookがベータ版を公開 | 情報・通信:カテゴリー別新着一覧 | nikkei BPnet 〈日経BPネット〉
ttp://www.nikkeibp.co.jp/article/news/20100204/208938/

これに相当するPython版ってありませんか?
937デフォルトの名無しさん:2010/04/21(水) 07:46:41
ありません
938デフォルトの名無しさん:2010/04/21(水) 09:31:05
>>936
全く同じものはないけど、Cython, unladen-swallow, PyPy-JIT
939デフォルトの名無しさん:2010/04/21(水) 12:12:12
>>929
コマンドプロンプトから実行したら望みの結果がでてしまいました。。。
ってことは開発環境周りが怪しいってことですね・・・
940デフォルトの名無しさん:2010/04/21(水) 17:54:00
Windows XP上のPython 2.6.2とPyscripter 1.9.9.7で質問です。
Python command Lineで実行すると正常にプログラムが動き、Pyscripterで実行→実行すると
decoding Unicode is not supportedとエラーをはきます。
文字列コードの変換がおかしいのかなと、文字列コード変換を別々にやらせるように修正。
今度は逆に、Pyscripterでは正常に動くのはいいんですが、Pythonのcommand lineでは動かなくなります。
可能性としては何かありますか?
941デフォルトの名無しさん:2010/04/21(水) 18:01:33
ソースにエンコード指定行書いてないとか
942デフォルトの名無しさん:2010/04/21(水) 18:16:54
>>940
とにかくさ、慣れるまで非効率的でも癖のないエディタを使うべきだと思うよ
もしくは併用するとか
大抵のテキストエディタはランチャ登録機能備えているしね
943デフォルトの名無しさん:2010/04/21(水) 18:20:10
>>942
了解です。いろいろとエディタ探しの旅に出てみますね。
ありがとうございます。
944デフォルトの名無しさん:2010/04/21(水) 18:52:32
>>940
何をしてエラーが出たのかくらい説明しないと答えようがない。
文字を出力したのか入力したのか、スクリプトを実行したのかシェルで入力したのか、
質問するには情報がなさすぎ。
945デフォルトの名無しさん:2010/04/21(水) 19:06:46
通りがかりのエスパーですが
print u'日本語'.encode('hogehoge')
print u'日本語'
print '日本語'
と混在して出力させてると
>>940 の状態が起きそうな気がする
946デフォルトの名無しさん:2010/04/21(水) 19:58:57
>>944
すみません。スクリプトを実行したときで文字を入力したときです。
>>945さんの言うように混在してます。
947デフォルトの名無しさん:2010/04/21(水) 20:03:40
ソース晴れ
948デフォルトの名無しさん:2010/04/21(水) 20:19:07
Pyscripterは糞だから使うなっつーの
949デフォルトの名無しさん:2010/04/21(水) 20:25:42
あほが湧いてるな。せっかく入学した学校で虐めにでもあってるのか?
950デフォルトの名無しさん:2010/04/21(水) 20:28:00
>>949
ここで昔話するな
951デフォルトの名無しさん:2010/04/21(水) 23:22:35
907 ですがわかるかたいらっしゃいますでしょうか?
952デフォルトの名無しさん:2010/04/22(木) 01:23:32
>>928
ぐぐったらその本に書いてあるサンプルが公開されてたからら見てみたけど
お前が勝手に
if not line: break
削ったせいじゃねーかwwwwww
953デフォルトの名無しさん:2010/04/22(木) 08:50:00
>>951
スレッドBを先に作って、start()しない。
スレッドAの最後で、スレッドB.join()する。
スレッドB.start()する。
954デフォルトの名無しさん:2010/04/22(木) 09:25:52
>>907
    threading.Thread.__init__(self)
の次の行に
    self.setDaemon(True)
955デフォルトの名無しさん:2010/04/22(木) 20:59:49
>>952
''はFalseだが' 'はTrueだぞ
956デフォルトの名無しさん:2010/04/22(木) 21:30:02
>>924
そのスペースはどっから沸いたんだよwwwwwwww
957デフォルトの名無しさん:2010/04/22(木) 21:30:43
>>924 ×
>>955 ◯
958デフォルトの名無しさん:2010/04/22(木) 21:35:23
ぐぐればそれっぽいのが出てくるな
一行で

http://stackoverflow.com/questions/2530387/
why-eclipse-pydev-print-output-look-strange-with-two-strings
959デフォルトの名無しさん:2010/04/23(金) 08:50:40
windowsで2.6使っていますが、3.1も使いたいと思ってます。
同じ環境に3.1インストールしても問題ないんでしょうか?
960デフォルトの名無しさん:2010/04/23(金) 08:51:15
かまへんかまへん
961デフォルトの名無しさん:2010/04/23(金) 08:55:23
>>960
即答ありがとうございます
3.1入れてみます
962デフォルトの名無しさん:2010/04/23(金) 09:06:02
>>960
優しさと弱さの区別が付かないのが、チョウセンヒトモドキ
963デフォルトの名無しさん:2010/04/23(金) 10:52:17
日本語お上手ですね^^
964デフォルトの名無しさん:2010/04/23(金) 11:05:37
タプルがわからん
タプルの何がわからんかもわからん
たぶんタプルの存在意義がわからん
使い方とか具体例だしてわかりやすく教えれ
おねがいします
965デフォルトの名無しさん:2010/04/23(金) 11:20:35
リストと似てるけど
最初の一回しか初期化出来ないのがタプル
966デフォルトの名無しさん:2010/04/23(金) 11:24:42
タプルは辞書のキーにできるけど、リストはできないんじゃなかったっけ?
967デフォルトの名無しさん:2010/04/23(金) 11:26:23
初期化じゃなかった代入
968デフォルトの名無しさん:2010/04/23(金) 11:28:52
>>> {'hoge':'fuga',1:'hage',2:'hige',(1,2):'moge',('a','b'):'mage'}
{(1, 2): 'moge', 1: 'hage', 2: 'hige', ('a', 'b'): 'mage', 'hoge': 'fuga'}
>>> {'hoge':'fuga',1:'hage',2:'hige',(1,2):'moge',('a','b'):'mage',[1,2]:'a'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list objects are unhashable
969デフォルトの名無しさん:2010/04/23(金) 11:33:00
ソートも出来ないな

>>> sorted((3,2,1))
[1, 2, 3]
>>> (3,2,1).sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'sort'
970デフォルトの名無しさん:2010/04/23(金) 11:35:48
あと、タプルだと代入するときに綺麗に書けることあるよね
971デフォルトの名無しさん:2010/04/23(金) 12:04:21
なるほどありがとうございます
どうゆうときに使えばいいんだろう?
誕生日のデータとか固定されてて変更しないようなデータのときはタプル?
972デフォルトの名無しさん:2010/04/23(金) 12:27:09
入門書を読め
973デフォルトの名無しさん:2010/04/23(金) 12:32:02
>>971
mutableなオブジェクト全般に言えることだけど
listを安易にリターンすると、listの中身を弄られて壊される可能があるから
気をつけてね

return xs[:]
のようにコピーをリターンするのなら問題ないし
弄られていいのなら問題ないけど
tupleのようなimmutableな型なら、そういう心配はもともとない
974デフォルトの名無しさん:2010/04/23(金) 12:57:50
つまりいじられたくないデータをタプルに、ムータブルでもかまわないようなデータはリストにってことか
おおまかだけど認識できた
ありがとう
975デフォルトの名無しさん:2010/04/23(金) 13:16:41
リストとタプルの違いは、mutableとimmutableの違いや参照の話になるから
ちょっと初心者には難しいね。

基本的には複数の値をひとまとめにするにはタプルを使っておけばいい。
ライブラリでリストを指定されたときだけリストで。

リストでできることは大抵タプルでもできる。
ただ、中身を頻繁に書き換えるような使い方だと、タプルでは効率が悪くなるだけで。
976デフォルトの名無しさん:2010/04/23(金) 13:33:00
PHP.netの右上の「search for」みたいに、
横断的に関数・ライブラリのリファレンスを検索するには
どこで検索すればいいんでしょう?

http://docs.python.org/ の Quick Search では
例えば pycurl の情報が出ないし、何よりドキュメントが貧弱で
もう少しまともなのがあればと思って質問しました。
977デフォルトの名無しさん:2010/04/23(金) 13:34:10
PEP-8とか
http://www.python.org/dev/peps/pep-0008/
http://oldriver.org/python/pep-0008j.html

Google Python Style Guideとか
ttp://google-styleguide.googlecode.com/svn/trunk/pyguide.html
ttp://works.surgo.jp/translation/pyguide.html

   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
978デフォルトの名無しさん:2010/04/23(金) 13:39:29
くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
979デフォルトの名無しさん:2010/04/23(金) 13:53:57
糞本めええええええええええええええええええええええええ
980デフォルトの名無しさん:2010/04/23(金) 20:40:58
PIL の ImageWin で
「あるウィンドウの中身に BMPファイルから書き込む」
ことは出来たのですが
逆の
「あるウィンドウの中身を BMPファイルに書き出す」
のが ImageWin ではうまく出来ないようで
他にそれらしいモジュールとかも見つからないのですが
PIL では出来ないのでしょうか?
981デフォルトの名無しさん:2010/04/23(金) 21:22:27
>>980
なんでPILにこだわるの?
GetDIBits()で取れない?
そういうのは期待していない?
982デフォルトの名無しさん:2010/04/23(金) 21:27:29
>>981
最後の手段でそれは考えていますが
自分で一通り作ったあとに
車輪の再発明とかだったらショックなので orz
983デフォルトの名無しさん:2010/04/23(金) 22:19:31
wxPythonならwx.MemoryDCFromDC(dc)で取得したDCにBlitで取れるかな
984デフォルトの名無しさん:2010/04/24(土) 00:25:30
車輪の再発明を怖がりすぎ
985デフォルトの名無しさん:2010/04/24(土) 07:49:30
>>956
>>924からわいてきてるじゃん。
> invalid literal for int() with base 10: ' '

>>952
if not line: break削ったのが原因って指摘は、
>>924
if line:
 # ...
else :break
をちゃんと読んでいたらわいてこない発想。
986デフォルトの名無しさん:2010/04/24(土) 08:53:10
>>980
wxPython で作った pnl (=wx.Panel) に書いた画像は取得&保存できた

from wx.lib.colourchooser.canvas import BitmapBuffer
import wx
bb = BitmapBuffer(width, height, wx.Colour(0, 0, 0))
bb.Blit(0, 0, width, height, wx.WindowDC(self.pnl), 0, 0)
bmp = bb.GetBitmap()
bmp.SaveFile(u'できたよ.png', wx.BITMAP_TYPE_PNG)

ちなみに Win32API を使うとこんな感じになるみたい
ttp://www.sm.rim.or.jp/~shishido/wincap.html
987デフォルトの名無しさん:2010/04/24(土) 09:21:28
PIL試してみたけどImageWin使えねーwww
988デフォルトの名無しさん:2010/04/24(土) 11:26:00
>>986
C#なら2行でできる処理だな
989デフォルトの名無しさん:2010/04/24(土) 12:55:54
じゃあ2行分の予算でおねがいしますね
990デフォルトの名無しさん:2010/04/24(土) 14:15:03
>>986
できました!!
ありがとうございました!!!
991デフォルトの名無しさん:2010/04/24(土) 17:41:03
PyPIっていつもこんな重いんですか?
992デフォルトの名無しさん:2010/04/24(土) 17:48:24
くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
993デフォルトの名無しさん:2010/04/24(土) 17:48:53
>>991
おまえの環境だけが遅いのかもしれんが
994デフォルトの名無しさん:2010/04/24(土) 17:49:22
うめますね
995デフォルトの名無しさん:2010/04/24(土) 17:49:55
くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
996デフォルトの名無しさん:2010/04/24(土) 17:52:39
くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
997デフォルトの名無しさん:2010/04/24(土) 18:05:16
うめますね
くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
998デフォルトの名無しさん:2010/04/24(土) 18:05:38
うめますね
くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
999デフォルトの名無しさん:2010/04/24(土) 18:06:24
うめますね
くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
1000デフォルトの名無しさん:2010/04/24(土) 18:06:36
うめますね
くだすれPython(超初心者用) その7
http://pc12.2ch.net/test/read.cgi/tech/1271996751/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。