[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/21 08:58 / Filesize : 249 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:20:45 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。

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

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

関連スレ
Pythonのお勉強 Part35
pc12.2ch.net/test/read.cgi/tech/1253535109/

577 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 17:19:29 ]
print文の後ろに,が付くか付かないかで改行されるかどうかが決まるのでしょうか?

付けると改行されず、付けないと改行される、でよろしいですか?


578 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 17:21:19 ]
>>577
はい。リファレンスマニュアルのprint文の箇所も参照してね。

579 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 17:27:25 ]
>>578
ありがとうございます。
print 文がカンマで終了していない限り、末尾には文字 "\n" が書き出されます。この仕様は、文に予約語 print がある場合のみの動作です。


580 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 17:33:07 ]
このようにprint文は特殊なので
3.0からは関数になります。

581 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 17:34:08 ]
import math

from math import *
とでは、
伝統や文化的な理由で
どちらが推奨されるとかありますか?


582 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 17:55:00 ]
>>581
一般的には前者推奨。
後者は小規模スクリプトかインタラクティブシェルで使うぐらい。

583 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 18:09:16 ]
>>582
ありがとうございます。


584 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 21:26:49 ]
Windowsで
〜.py(ttp://codepad.org/tXDoThvC)をダブルクリックした場合
これを実行すると、コマンドプロンプトが一瞬で閉じてしまいます。
(コマンドラインからpython 〜.pyとする文には大丈夫ですが。)

最後に何かキー入力を受けるまで画面を閉じないようにする
1文などありませんでしょうか?


585 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 21:28:32 ]
import os
os.system('pause')



586 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 21:44:31 ]
>>585
ありがとうございます!
まさにこれがしたかったです。


587 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 21:48:30 ]
codepadでは通るこのコード
ttp://codepad.org/6ggvcFhC

Python 2.6.4で、エラーになります。
エラーメッセージは
ttp://codepad.org/3o9Vqzu4
です。
どうしてでしょうか。。。

588 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 22:20:43 ]
>>587
同じディレクトリに random.py があるんじゃね?

589 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 22:48:06 ]
>>588
それでした。
どうもありがとうございます。

590 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 23:21:37 ]
 a=[3,7]
 b=a
 a=a+[2]
を実行すると
 b は [3,7]
 a は [3,7,2]
となる。他方
 a=[3,7]
 b=a
 a.append(2)
を実行した場合には
 a も b も [3,7,2]
である。

この違いにびっくりしました。
Pythonは基本的には参照を渡すのか、コピーを渡すのか、
どっちが多いですか?


591 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 23:34:32 ]
>>590
まず、Pythonの変数は全部参照だから、「渡す」のは全部参照。
コピーを作ってそのコピーの参照を渡すのか、元の参照を渡すのかの違いでしかない。
a = [3,7] # [3,7] というリスト (A) を作って、その参照を a に入れる
b = a # a に入っている (A) への参照を b に入れる
a = a + [2] # a + [2] で、 (A) と [2] を連結した新しいリスト (B) を作る。そしてそれを a に代入する。
a.append(2) # a が参照しているリスト (A) に、 2 という値のオブジェクトへの参照を追加する。

+ という演算子が「新しいオブジェクトを作る」という動作をしている。
# immutable な型なら、+ 演算子で新しいオブジェクトを作らずに既存のオブジェクトを使いまわすのもアリ

592 名前:>590 >505 mailto:sage [2009/12/27(日) 23:39:21 ]
>>591
あー、なるほど!
非常に分かりやすい解説ありがとうございます。
どうにもC++で型宣言を意識していたため、よく分かっておりませんでした、
ありがとうございました。


593 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 08:08:06 ]
ばっさばっさとさばいておりますな。初心者スレにふさわしい。

594 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 10:17:58 ]
ttp://codepad.org/tdwJTVZ8
この挙動も
> この不自然な結果は、Pythonが a=[[0]*3]*3 を処理するのに (内部で)
>  t=[0]*3
>  a=[t]*3
> とやった為に発生したと考えられる。
> この問題は次のようにすれば回避できる。
>  a=[0]*3
>  a[0]=[0]*3
>  a[1]=[0]*3
>  a[2]=[0]*3
こう説明がありました。
うーん。
つまり[0]*3は新しく別のリストを作っており、一方
a=[t]*3は[t, t, t]だから その場に存在しているリストは
a==[t, t, t]とt==[0, 0, 0]の2つだということですか?


595 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 10:22:35 ]
[0] * 3 は [0, 0, 0] という新しいリストを作る
[t] * 3 は [t, t, t] という新しいリストを作る

0 は immutable だから、同じオブジェクトの参照がたくさんあっても問題にならないけど、
リストは mutable だから、同じオブジェクトの参照がたくさんあると、一つを書き換えると他からの
参照にも影響を与える。



596 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 10:44:34 ]
>>595
ありがとうございます。
ttp://codepad.org/KWHJEbWb
これでxの値を7から-5に変更したら、
tは[x, x, x]で
aは[t, t, t]なので
t, aが共に変更されるのではないかと思うのですが、
実際は変更されません。
これは何故でしょうか。


597 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 11:15:04 ]
>>596
これで納得してくれるかは怪しいけど

a = 1 # 名前 a は 1 を指す
a # 名前 a を評価する。評価して得られた値は 1
b = [a, a] # 名前 b は [a, a] を評価して得たリスト [1, 1] を指す
a = 2 # 名前 a は 2 を指す
b # 名前 b は相変わらず [1, 1] を指したまま

あと a = 1 は「名前は a を指す」って代入文であって数学の等式じゃないから気をつけて
a = 1; a = 2 なんてのも Python では成立する

598 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 11:29:24 ]
>>596
リストはオブジェクトへの参照のリスト。
他の言語で参照というと変数への参照の場合があるけど、Pythonの場合は変数への参照は無い。

x = 7 # 7 という値のオブジェクト (A) を用意して、x が (A) を参照するようにする。
[x] # x が参照している (A) というオブジェクト一つを要素にしたリスト [ (A) ] を作る。このオブジェクトを(B) とする。
t = [x] * 3 # (B) を3回繰り返したリストのオブジェクトを作る。これを (C) とする。 (C) は [(A), (A), (A)] になる。 t に (C) への参照を代入する。
[t] # t が参照している (C) というオブジェクト一つを要素にしたリスト [ (C) ] つまり [ [ (A), (A), (A)] ] を作る。このオブジェクトを (D) とする。
a = [t] * 3 # (D) を3回繰り返したリストのオブジェクト [ (C), (C), (C) ] をつくる。このオブジェクトを (E) とする。

x = -5 # -5 という値のオブジェクト (F) を用意して、 x が (F) を参照するようにする。 (A) の値は変更されない。

結果として、 a が参照しているオブジェクト (E) の値は [(C), (C), (C)], t が参照しているオブジェクトは (C),
(C) の値は [(A), (A), (A)]. (A) の値は 7 のまま。

599 名前:591=595=598 mailto:sage [2009/12/28(月) 11:46:52 ]
ちなみに、>>590はどの言語の経験があるの?
ベースとなる言語があれば、その言語で言えばどういう意味か説明に使える。

>>596 を Javaで書き換えると、

Integer x = Integer.fromInt(7); // x = 7

ArrayList<Object> t = new ArrayList<Object>();
for (int i = 0; i < 3; i++) t.add(x); // t = [x] * 3

ArrayList<Object> a = new ArrayList<Object>()
for (int i = 0; i < 3; ++i) a.add(t); // a = [t] * 3

x = Integer.fromInt(-5); // x = -5

Javaが判れば、xを書き換えてもaやtに影響ないのが判ると思う。

600 名前:599 mailto:sage [2009/12/28(月) 11:52:55 ]
ごめん、 Integer.fromInt は Integer.valueOf の間違い。

JavaはPythonのオブジェクトを説明するのには向いているけど、
ここ5年以上マトモに使えてないので、文法エラーやメソッドのミスには目をつぶってくれ。

ちなみに、Pythonのオブジェクトを説明するのにJavaが向いている理由は、
整数と文字列がimmutableだから。
x = 7
y = 7
で x is y の結果が言語で規定されていない理由は、
Integer x = Integer.valueOf(7);
Integer y = Integer.valueOf(7);
x == y の結果が言語で規定されていない理由と同じ。

601 名前:590 mailto:sage [2009/12/28(月) 11:54:47 ]
みなさまありがとうございます。
私はC++プログラマです。
そのため変数の型宣言がないPythonを学び、
ところどころで困惑してお世話になっております。

とても長くなったため私の現在の認識を自分でながめるために書き出してみました。
ttp://codepad.org/MJaNWykh

Javaの経験はありませんが、ご教示いただいたJavaコードはC++な見方で
推測して拝見しました。
そことのアナロジーで解釈しても
この1.〜3.の解釈は正しいと思うのですが、
そうだとしますと
4.でt, aが変更される理由がまた分からなくなります。

どうして4.だけ変更されるのでしょうか?


602 名前:600=methane mailto:sage [2009/12/28(月) 12:12:25 ]
>>601
C++にはJavaのObject型みたいなのがないから、void*で代用するけど、こんな感じになる。 (キャストは省略)
x = 7
t = [x]*3
a = [t]*3

void *x = new int(7);

vector<void*> *t = new vector<void*>;
for (int i = 0; i < 3; ++i) t->push_back(x);

vector<void*> *a = new vector<void*>;
for (int i = 0; i < 3; ++i) a->push_back(t);

ここまでで初期状態。
じゃぁ、初期状態から t = 3.14 を C++ でいうと、
t = new double(3.14);
t が新しく別のオブジェクトをポイントするようになるだけで、 a[0]は、もともとtが指していた [7,7,7] を差し続ける。

つぎに、初期状態から a[0][0] = -5 を C++ でいうと、
(*((*a)[0]))[0] = -5;
t というポインタが指している vector オブジェクトの先頭要素を -5 に書き換えている。
で、tもaもポイントしている先は変わらないまま、tがポイントしているvectorオブジェクトの先頭要素だけを書き換えているので、
t と a の両方が影響を受ける。

603 名前:methane mailto:sage [2009/12/28(月) 12:21:08 ]
C++プログラマなら、Pythonの変数は全部C++でいうポインタ変数で、オブジェクトは全部
new やその他の手段でヒープ上に取られるという理解をすると良いと思う。

「参照」と呼んでいるのは全部ポインタのことで、

int a = 3;
int &x = a;
int *y = &a;

でいうところの a のような、変数と値が完全に束縛された存在が無い。
あとは、
a[0][0] = -5 がリスト「オブジェクトに対する変更」なのにたいして、
t = -5 がオブジェクトは全く変更されず、「ポインタ変数が別のアドレスを指すようになる」
という違いを把握できれば、一気に壁を突破できるはず。

604 名前:590 mailto:sage [2009/12/28(月) 12:27:42 ]
>>602-603methane氏
C++に例えてくださりありがとうございました。
現在必死に読んでおります。


605 名前:590 [2009/12/28(月) 12:45:51 ]
値は全て無名であると考えてよろしいですか?




606 名前:methane mailto:sage [2009/12/28(月) 12:52:35 ]
>>605
コード上に出てきた変数名と密結合しているオブジェクトが存在しないという意味であれば、すべて無名ですね。

def foo(): pass
bar = foo
del foo

したら、foo()できなくてbar()できるし、 class もモジュールもパッケージも、名前とオブジェクトの関係は全部同じです。

607 名前:590 mailto:sage [2009/12/28(月) 13:10:02 ]
おかげさまで理解できたと思います。
つまり
 ttp://uproda.2ch-library.com/lib200590.zip.shtml
こんなことになっているんですね。
(Wordファイルをzipで圧縮したもので
 DLキーはpythonです。)
この理解でよろしいでしょうか?

608 名前:methane mailto:sage [2009/12/28(月) 13:31:10 ]
>>607
5番が書きかけなのかな・・・
4番までは完全に正解。Good Job.

609 名前:590 mailto:sage [2009/12/28(月) 13:35:52 ]
>>608
5.番は
 t[0]=−5
以外は4.と相違点ありません。
a[0][0]=-5とt[0]=−5が等価であるという事を言いたかった図です。
どうでしょうか。

610 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 13:37:57 ]
>>571はダウト

611 名前:methane mailto:sage [2009/12/28(月) 13:42:55 ]
>>609
あぁ、4からコピーした後編集するの忘れてると勘違いしてました。
a[0][0] と t[0] は等価で図は完全一致で正解です。
図だと判りやすいですね。

612 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 13:44:10 ]
>>590
a=[3,7]
b=a
a=a+[2,5]
print b
print a

a=[3,7]
b=a
a.append([2,5])
print b
print a

613 名前:590 mailto:sage [2009/12/28(月) 13:45:22 ]
>>611
これでまた一つ壁を越えられた気がします。
methane氏、諸先輩方 どうもありがとうございました。


614 名前:590 mailto:sage [2009/12/28(月) 13:50:02 ]
>>612
今となっては>>590の挙動についても納得しました。
aとbが同一の値(リスト)を指しているので、
 ttp://codepad.org/btaagIKq
こんな挙動になるわけですね。

615 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 14:03:43 ]
ぬるぽ



616 名前:デフォルトの名無しさん [2009/12/28(月) 18:57:49 ]
ファイルのMD5ハッシュやSHA1ハッシュを表示するPythonスクリプト - MoreslowlyWiki
ttp://www.moreslowly.jp/mw/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81
%AEMD5%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%82%84SHA1%E3%83%8F%E3%83%83%E3
%82%B7%E3%83%A5%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8BPython%E3%82%B9
%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88
このプログラムで、末尾で

if __name__ == '__main__':
 ここで処理

としているのは何故でしょうか?
このif文は何を意味するのですか?

617 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 19:07:03 ]
モジュールとして他のファイルからimportされたときと
それ自身単独で実行されたときの動作を区別出来る
テストケース書くなり実行コードにするなり

618 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 19:11:29 ]
>>617
おお、
なるほど。
ありがとうございました。

619 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 23:14:44 ]
>>618
御礼言われたら照れるなあ

620 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 01:40:07 ]
他人へのお礼で照れるとは

621 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 11:06:55 ]
おなあ

622 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 11:08:59 ]
りい

623 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 23:22:19 ]
殿かよ

624 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 11:02:47 ]
師走ですから

625 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 15:48:43 ]
本年はまことにお世話になりました
来年は初心者スレから卒業したい。



626 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 00:27:24 ]
あけましておめでとう

手元の習熟メモを見ると、学んでみようと思い立ったのは2006年らしいのに、
まだまださっぱりだぜ俺…

627 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 20:58:54 ]
Python 2.6.4の(reモジュール等の)標準モジュールの中に、
ある文字列が正規表現として文法的に正しいかどうかを調べる
機能があれば教えていただけますでしょうか?


628 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 21:20:02 ]
re.compile()を通せばre.errorが飛んでくるだろ

629 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 21:44:39 ]
>>628
なるほど。
ありがとうございます。


630 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 16:50:58 ]
これから1から勉強をはじめたいと思ってます
2.6と3.0と3.1とバージョンがありますが、3.x系は不評であると聞いております
互換性を気にしないのであれば3.x系から始めても問題ないでしょうか?

631 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 16:59:15 ]
問題ないけど、まだ3.xに対応したライブラリ少ないよ

632 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 16:59:46 ]
問題ないでしょう

633 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 17:11:44 ]
ありがとうございます
PHP4みたいになると困るので3.1から始めたいと思います
英語のドキュメント読みながらやってみます

634 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 17:38:10 ]
バカがバカを育てるわけだな

635 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 17:42:51 ]
それでも2to3はPHPのバージョンアップよりは楽だと思う…



636 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 22:00:50 ]
初めてのPython 第3版でPython3対応出来ますかね?

637 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 23:15:51 ]
これから勉強するのに3からだとダメなの?

638 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 23:30:47 ]
だめじゃないよ

639 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 04:47:01 ]
だめじゃなくもなくないよ

640 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 05:13:40 ]
外部ライブラリ使うとちと怖い
言語コアのみなら無問題

641 名前:デフォルトの名無しさん [2010/01/10(日) 13:57:23 ]
python.exeを起動してprint "hello world"と入力したのですが
以下の線の中の4行が表示されてしまいました

------------------------
File "stdin>", line 1
print "hello world"
               ^
SyntaxError: invalid syntax
------------------------


どなたか解決方法をご教授お願い致します

642 名前:641 mailto:sage [2010/01/10(日) 13:58:45 ]
自己解決しました
print ("hello world")って書かないとダメだったんですね

643 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:11:10 ]
Python3の日本語マニュアルってありませんか?

644 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:14:03 ]
英語くらい読めよ
中学生か?

645 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:21:30 ]
小学生です



646 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:41:41 ]
ならしょうがない
英語もろくに読めないおっさんにならないように
中学校ではちゃんと英語勉強しろよ

647 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:49:37 ]
釣りや騙りも見分けられるよう
空気も読めるようになった方がいいな

648 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:52:18 ]
>>647
いやそれは自分に言えよww

足りない頭で良く読め。
>>646の書き方はわざわざ嫌みをつけた
書き方をしているうだろ?
つまり分かってやっていることだってのが何で分からないの?


649 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:55:31 ]
>>648
いやそれは自分に言えよww

足りない頭で良く読め。
>>647の書き方はわざわざ嫌みをつけた
書き方をしているうだろ?
つまり分かってやっていることだってのが何で分からないの?

650 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:14:46 ]
RuntimeError: maximum recursion depth exceeded

651 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:27:12 ]
>>644
ここプログラム板
英語の板じゃないよ

652 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:38:29 ]
>>651
だから何?
python3の日本語ドキュメントはあるの?
ないなら、英語で読むしかないじゃん
馬鹿か?

653 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:39:10 ]
じゃあ翻訳してやればおk

654 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:42:39 ]
>>652
>>650に答えろ

655 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:45:19 ]
みんなどんだけストレス溜めてんだよ



656 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:46:10 ]
>>646
書き込む所間違えてるよ
君が書き込むべき板は厨房板だと思うよ

657 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:47:45 ]
なにこの低能力者板。
所詮P言語ユーザーなんてこんなレベルかwww

658 名前:648 mailto:sage [2010/01/10(日) 16:49:34 ]
>>649
悔しいからってオウム返しは自閉症のやることだよw

659 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:53:47 ]
ここまで643への回答ゼロ

660 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:00:46 ]
まぁあれだよ、需要が無いから供給が無いんじゃないか?

661 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:03:59 ]
>>643
まだ翻訳されてません

662 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:13:20 ]
>>656
嫌味なやつだけど正論だろ
英語が読めないといろいろ苦労をする
暇な学生時代にもっと勉強しとけばよかった・・・

663 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:15:23 ]
>>662
板違い

664 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:21:56 ]
日本製Rubyは英語読めない馬鹿もウェルカムだよー^^
無理してPythonなんてやってないでみんなRubyにおいで

665 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:24:16 ]
pythonのPyPIあたるもは、
Rubyには有るんですか?



666 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:39:39 ]
>>665
日本語で

667 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:58:39 ]
Ruby Gemsとか?

668 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:16:43 ]
差別発言をするような奴にろくな奴はいない

669 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:20:39 ]
最近キチガイが1人住み着いてから荒れてるな

670 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:21:22 ]
>>664
英語日本語以前に、空気読めない人間はPythonに向いてないと思う。
特定の誰かに対した嫌みではなく。

671 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:42:34 ]
>>668
差別発言?どこに?
>>669のことか?

672 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:47:35 ]
くだスレを荒らすのはやめれ

673 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 19:43:22 ]
>>672
くだスレが本当にくだらないスレになってる。

674 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 19:55:20 ]
くだすれは'くだらないスレ'であって、
'救いようのないスレ'ではない。

675 名前:> 673 mailto:sage [2010/01/10(日) 19:58:56 ]
>>674
いやそもそも、本当は
'くだらないスレ'じゃなくて
'くだらない質問をするためのスレ'
じゃないのか?

まあいいか。



676 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:00:19 ]
Windows XP + Python2.6です。
変数strに文字列が代入されている状態で、
Windows XPのコマンドラインを実行することはできませんか?
C言語だと
system(str);
って言うやつが相当します。

677 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:08:24 ]
Cのsystemと完全に一致するかは知らないけど
os.system(s)

678 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:09:03 ]
あとstrは組み込み関数名なので避けたほうがいいかも

679 名前:676 mailto:sage [2010/01/10(日) 20:35:33 ]
>>677-678
strを避けるべきとは知りませんでした。
ありがとうございます。

もう一つ、Windows XP + Python2.6上で。

3つの文字列str1, str2, str3があるとき、
あるプログラムX上から
 os.system(str1)
 os.system(str2)
 os.system(str3)
これらを同時に実行し、3つとも終わったら
Xを終了する
といったことは実現可能でしょうか?
実現するとしたら、どうすればできますでしょうか?
よろしくお願いします。


680 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:41:28 ]
subprocess を使えばよろしい

681 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:48:02 ]
>>679
subprocessモジュールを使う
ただしsubprocessモジュールは引数として文字列ではなく
argv形式のリストを取るので、もし元が文字列ならshlexあたりで分割汁
こんな感じだ

import shlex, subprocess

cmds = [shlex.split(s) for s in [str1, str2, str3]]
children = [subprocess.Popen(cmd) for cmd in cmds]
for p in children: p.wait()

682 名前:679 mailto:sage [2010/01/10(日) 20:57:46 ]
>681
ありがとうございます。
教えを頼りに頑張って見ます。


683 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 21:05:00 ]
>>681
ちなみに教えていただいたそのコード
のライセンスはどうすれば宜しいでしょうか?

684 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 21:06:18 ]
>>683
ライセンスかw
どうでもいいので好きに汁

685 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 21:07:54 ]
どうでもよくないよ
2chに書き込んだら2chの物になる



686 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 21:50:06 ]
>>685
プログラムのソースコードを2chに書き込んだ場合、
そのライセンスは厳密にはどうなるんだろう?
・・・ってのはどこで聞けばいいかな?


687 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 21:55:43 ]
初めて書き込む前に規約がでただろう。それを嫁

688 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:30:32 ]
>>643
ttp://diveintopython3-ja.rdy.jp/

ただし未完成らしい。

689 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:33:04 ]
>>688
ありがとうございます

690 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:43:41 ]
>>687
> ・投稿者は、投稿に関して発生する責任が全て投稿者に帰すことを承諾します。
> ・投稿者は、話題と無関係な広告の投稿に関して、相応の費用を支払うことを承諾します
> ・投稿者は、投稿された内容及びこれに含まれる知的財産権、(著作権法第21条ないし
> 第28条に規定される権利も含む)その他の権利につき(第三者に対して再許諾する権利
> を含みます。)、掲示板運営者に対し、無償で譲渡することを承諾します。
> ただし、投稿が別に定める削除ガイドラインに該当する場合、投稿に関する知的財産権
> その他の権利、義務は一定期間投稿者に留保されます。
> ・掲示板運営者は、投稿者に対して日本国内外において無償で非独占的に複製、公衆送信
> 、頒布及び翻訳する権利を投稿者に許諾します。また、投稿者は掲示板運営者が指定する
> 第三者に対して、一切の権利(第三者に対して再許諾する権利を含みます)
> を許諾しないことを承諾します。
> ・投稿者は、掲示板運営者あるいはその指定する者に対して、著作者人格権を一切行使しないことを承諾します。

一方、2ちゃんねるのトップページには
> 2ちゃんねるのデータの利用に関して、原則的に自由ですが、
> 2ちゃんねるのデータ自体を利用して対価を取る行為はご遠慮下さい。
> 要するに、2ちゃんねるをモニターして、お金をとってる
> マーケティング会社の方はご相談頂けないと面倒なことになるかもしれません、、、ってことです。

ということで、例えば>>681が書いたソースコードの著作権は
>>681ではなく2chにあることになる。
また利用者は対価を取らない限り>>681の意志・意向を無視して勝手にそのソースコードを使っても良いことになる、


691 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:48:54 ]
>>688
それマニュアルじゃないだろ(ww

692 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:52:06 ]
>>690
てか>>681に著作権は発生しているのかい

693 名前:690 mailto:sage [2010/01/10(日) 22:54:49 ]
>>692
どんなに短いソースコードでも、
いやソースコードですらなくコメントでも
発生しているよ。

しかも日本では著作権が発生することを拒否できないし、
著作権を放棄できない。


694 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:56:18 ]
>>692
ちなみに君のその短い1文にすら著作権は発生しているよ。
ただし書き込んだ瞬間からその著作権の大半が2chのものになっているけど。

695 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:59:10 ]
>>693
デマ乙
naoシフトを思い出すわ



696 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:59:36 ]
>>693
そんなDQNめいたことが法廷であったのか!
実際にあるのなら大問題になるから判例挙げてくれ
もちろん根拠となる条文もね

697 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:00:46 ]
どっちもウザい。いいかげんにしろ。

698 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:01:07 ]
print ("Hello World")

690先生の言うとおりだとこれも著作権になるわなwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
ひーーーーーーーーーーハーーーーーーーーーーーーーーーwwwwwwwwwwwwwwwwwwwwwwwwwww

699 名前:696 mailto:sage [2010/01/10(日) 23:02:51 ]
>>697
それもそうだな。吊ってくる

言うまでも無いがソースコードが著作物として認められるには創作性が必要
サンプル程度では認められない

700 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:05:08 ]
二度と戻ってくるなよ。
ママのオッパイ吸って寝ろ。

701 名前:693 mailto:sage [2010/01/10(日) 23:07:26 ]
いやいかなる短さのいかなるものでも著作権は発生するんだよ。
ただ法廷でそれを盾にして戦えるかどうかといえばまあ無理だろうがね。


702 名前:デフォルトの名無しさん [2010/01/10(日) 23:10:30 ]
例えば以下。


>>698
wの数で低能力者の程度が知れると言うが、そのとおりだな。

> print ("Hello World")
うん。発生するよ。
もう2chに書いちゃった後だからもうお前には著作権はないけど、
もし書く前だったとすると、
俺が print ("Hello World") というコードを別の所に書いたら
お前が俺を訴えることも可能。

ただし俺は当然、そのコードは俺が作った!と言い張るから
その短さなら俺が勝つことにはなるが。
要するに立証できないだけ。


703 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:11:19 ]
そろそろ法律板でやったほうがいいかも

704 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:12:46 ]
著作権論議をこのスレでやって欲しいとは思わないけど
2chに書き込んだコードに著作権がないと言い張る奴には
オープンソースから足を洗って欲しいとも思う。

705 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:15:34 ]
すでに権利が他のところにあるものを書き込んだらどうなるの、っと



706 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:16:57 ]
法律版に行けよ、OSSから足を洗ってからな

707 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:19:06 ]
良かったな>>681よ、
君のソースコード、とても人気があるぞ。

708 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:23:17 ]
>>705
あらゆる情報伝達が阻害されるな
常識の無い奴は法律かじらないで欲しいわ

709 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:15:59 ]
>>707
>>681だがびっくりした
要するに皆暇なんだなw


710 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:16:42 ]
なんでこんなに殺伐としてるんだ……

711 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:18:33 ]
総当たりで文字列を生成して2chに書き込むシステムを作れば著作権は崩壊する

712 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:36:07 ]
>>711
低能乙w

もしそれができるんなら
総当たりで文字列を生成して
自身のブログで公開すれば全て自分が著作権を握れてウマー

不可能だろ。バカじゃねぇの?お前。


713 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:40:24 ]
自動生成と著作権は非常に難解で高度な問題だよ

714 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:55:18 ]
ニートは引きこもってないで仕事しろって。
たけしが言ってた。

715 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 01:29:52 ]
>>714
連休明けたら言われたとおり仕事探すんだぞ



716 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:09:25 ]
連休明けとか思ってるからダメなんだよ。
すぐ行動しろや。

717 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:25:58 ]
仕事を探す前に法律版に行けよ(ww

718 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:02:19 ]
>>702
発生しねえよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
お前naoシフト開発した池沼だろwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

719 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:09:21 ]
>>718
       _, ._   気持ちはわかるけど
     ( ・ω・) いくらなんでも生やしすぎだも
     ○={=}〇, 
      |:::::::::\, ', ´
   、、、、し、、`(.@)wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww



720 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:13:51 ]
なにこの隔離病棟

721 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:37:24 ]
いつからここは隔離病棟になっちまったんだ...

722 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:41:33 ]
質問が来ればまた正常営業に戻るよ

723 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:47:32 ]
ニートはしょうがないな。

724 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:56:47 ]
ニートは勉強会とか行ってる場合じゃないぞ。
すぐ逃げる癖をまず直さないと。

725 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 11:11:16 ]
>>718
無能が草を生やした所で
誰一人の役にも 立たないんだよwww



726 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 11:19:13 ]
てかprint ("Hello World")で著作権発生するとかネタ?それともマジで言ってる?

727 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:02:41 ]
普通に考えて日本では作ったら発生する。
>>726
むしろそれで発生しないという根拠をしめせ。


728 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:14:01 ]
草を刈る準備は万端だぞ

729 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:18:04 ]
根拠を求める以前に,脳内にある根拠を外に出す方法を教えてくれ

730 名前:デフォルトの名無しさん [2010/01/11(月) 18:06:24 ]
print(1)

これは誰の著作権か教えてください

731 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:11:15 ]
チャールズ・フロイ

732 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:15:03 ]
著作権は草の数に比例する。

733 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:16:37 ]
ふ〜ん・・・で?

734 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:39:46 ]
本スレが荒れるとこっちが平和になる。
逆も然り。

735 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 19:36:29 ]
730の著作権は俺にある。
文句がある奴は、730の著作権が俺にないという根拠を示せよ。



736 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 19:48:56 ]
まだやんのかよ?w

737 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:29:48 ]
print("こんにちは")

print("Hello Kitty")

print("こんにちは世界")

全部だれの著作権かよろ

738 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:31:35 ]
イラストでもつけて公開しろよ

739 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:35:45 ]
著作権のことだけで終わる連休
なんて生産的で有意義なんだろう!!

740 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:36:28 ]
>>737
ちょっとレッシグさんに聞いてくるわ

741 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:04:19 ]
>>737
737

742 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 23:46:03 ]
独創性の無いものに著作権は発生しませんよ
プログラム作ってる人なら常識だと思うんだけど
まあネタで騒いでるんだろうな、つられちった

743 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 23:52:49 ]
>>690の盛大な釣り
                         / ヽ
             >>690         ,/    ヽ
             . ∧_∧   ,/       ヽ
               ( ´∀`) ,/          ヽ
             (    つ@            ヽ
 .__          | | |                ヽ
 |――|        (__)_)                ヽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|                 ヽ
/⌒\/⌒\/⌒\/⌒\|彡~゚ ゜~ ~。゜ ~ ~ ~ ~~ ~ ~~ ~ ~~ ~~ ~~
⌒\/⌒\/⌒\/⌒\/⌒\彡 〜 〜〜 〜〜 〜〜 〜 〜
                                     │
                                     │
                                     │
                  人人人人人人人       ∧J∧
                 <           >     ( / ⌒ヽ
                 < 吊られちゃった >      | |   | >>○
                 <           >      ∪ / ノ
                  ∨∨∨∨∨∨∨        | ||
                                    ∪∪ >>698

744 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 00:02:33 ]
>>693みたいなのを中高生が信じちゃうといけないから
>>698達は覚悟のうえで釣られていったんだよ・・・

745 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 00:07:47 ]
∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵。∴∵
∴∵∴∵:。∴∵∴∵∴: --─- ∴∵∴∵∴∵∴∵
∴∵゜∴∵∴∵∴∵  (___ )(___ ) >>698達 ∵。∴∵∵ ゜
∴∵∴∵∴:∵∴∵_ i/ = =ヽi ∴∵∴∵。∴∵∴
∴∵☆彡∴∵∵ //[||    」  ||] ∴:∵∴∵∴∵:∴∵
∴∵∴∵∴∵ / ヘ | |  ____,ヽ | | ∴:∵∴∵∴∵:∴∵
∴゚∴∵∴∵ /ヽ ノ    ヽ__./  ∴∵∴∵:∴∵∴∵
∴∵∴∵  く  /     三三三∠⌒> ∴:∵∴∵:∴∵
∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∵∴∵∴∵
   ∧∧   ∧∧  ∧∧   ∧∧
  (   )ゝ (   )ゝ(   )ゝ(   )ゝ 無茶しやがって・・・
   i⌒ /   i⌒ /  i⌒ /   i⌒ /
   三  |  三  |  三  |  三  |
   ∪ ∪  ∪ ∪  ∪ ∪  ∪ ∪
  三三   三三  三三  三三



746 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 02:51:38 ]
着地点が見つけられなくて逆上したか?
独創性の定義次第では、print("Hello World")にも著作権が発生するわけだが。

747 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 02:58:55 ]
>>746が裁判官あたりで法律の解釈を自由に決められるんならそうなるかもしれんな。

748 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 03:03:56 ]
>>746
なんだ、結局著作権発生するんじゃん
アンチは完全否定しろよ
くだらないAA張ってる場合じゃないぞ

749 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 03:06:11 ]
747は、746が裁判官でなくて法律の解釈を決められないことを証明する必要があるな。
頑張れ。応援しているぞ。

750 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 06:39:11 ]
というかくだらない火種が
いつの間にか複数人vs複数人の争いになってきているな。

いいぞ、もっとやれ


751 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:14:14 ]
定義次第ではって……そりゃ、殺人の定義次第では、道歩いただけで殺人になるよ。

752 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:43:32 ]
質問です

空白で区切った文字列の二番目を分割して、税をかけて文字列を書きだしたいのですが
def add_tax(astring):
....item = astring.split()
....price = int(item[1]) * 1.1
....item[1] = str(int(price))
....return " ".join(item)
>>>add_tax("Good 1000 2009/1/11)
とやっても駄目だったので
def add_tax(astring):
....item = astring()
....price = int(item[1])
....item[1] = str(price)
....return item[1]
とすると文字列をそのまま返してくるのですが
price = int(item[1]) * 1.1
としても税をかけて文字列を返してくれません
どうすればいいでしょうか
あと、一番上の関数の最後の行 return " ".join(item)は
スペースを区切り文字として、シーケンス(()の内容)連結下文字列が出来上がるとなるのですが、
エラーになってしまったのでjoin()メゾットが何をしてるのかも詳しくお願いします

Python2.6.4です

753 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:01:28 ]
質問キター

>>752
上のadd_taxがどう駄目だったのかわからない
入力と期待する戻り値と実際に返って来た戻り値を書いて

入力チェックとかをせず簡単に書くとすれば
>>> def add_tax(s):
... item = s.split()
... return '%s %d %s' % (item[0], int(item[1]) * 1.1, item[2])
>>> add_tax('Good 1000 2009/1/11')
'Good 1100 2009/1/11'

joinの説明はそれであってる
エラーになるならなんてエラー表示されたのか貼って

754 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:07:17 ]
>>748
もう釣りはいいですよ

755 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:08:50 ]
print(item) で、
['GOOD', 1100, '2009/01/11']  joinは失敗する、expected stringなのにintだから
['GOOD', '1100', '2009/01/11'] ならjoin出来る
ていうか出来たけどなぁ どこが違うんだろ。

>>> def add_tax(astring):
....item = astring.split()
....print(item)
....price = (int(item[1])*1.1)
....print(price)
....item[1] = str(int(price))
....print(item)
....return " ".join(item)

>>> add_tax("GOOD 1000 2009/01/11")
['GOOD', '1000', '2009/01/11']
1100.0
['GOOD', '1100', '2009/01/11']
'GOOD 1100 2009/01/11'
>>>



756 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:11:54 ]
>>746
中学生とか高校生かあんたは
大人がそんなこと言ってるなら終わってるな

757 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:12:31 ]
>>756
質問北からもうやめれ

758 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:18:00 ]
こんにちは
おはようございます
こんばんは
おやすみなさい


これらも著作権が発生するんですね、笑えます

759 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:46:56 ]
>>756
人のことはいいから、自分の痛さに敏感な人生を送ろうぜ。

760 名前:デフォルトの名無しさん [2010/01/12(火) 10:01:12 ]
集合知プログラミングのp39あたりを打ち込んでp40の

>>> clust=clusters.hcluster(data) を打つと

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "clusters.py", line 114, in hcluster
closest=distance(clust[0].vec,clust[1].vec)
TypeError: 'dict' object is not callable

とエラーが返ります。拾い読みで全部のコードを打ち込んでないのが
悪いのかもしれませんが、

closest=distance(clust[0].vec,clust[1].vec)

のclust

clust=[bicluster(rows[i],id=i) for i in range(len(rows))]
の biclusterは

class bicluster:
def __init__(self,vec,left=None,right=None,distance=0.0,id=None):
self.left=left
self.right=right
self.vec=vec
self.id=id
self.distance=distance
と打ち込んでいます。何が悪いんでしょうか教えてくだしあ。

761 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:18:55 ]
>>760
> closest=distance(clust[0].vec,clust[1].vec)
のdistanceが関数名やクラス名等のcallableであることを期待してるんだろう
なのに辞書だから怒られてる
あと手打ちしなくてもオライリーからソースコード落とせるはずだよ

762 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:21:58 ]
>>758
すばらしいポエムだ、感動した!!!
著作権をください!!!

763 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:44:04 ]
distance と distances が混ざっていたのが原因でした。

ところでソースコードは
d.hatena.ne.jp/shohu33/20080811/1218456689
で書かれてるところから落とせたんでしょうか、404です…
まぁ打ち込むのも勉強と思えばいいんですが。



764 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:54:50 ]
>>763
英語版でよければ
ttp://examples.oreilly.com/9780596529321/

765 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 11:15:28 ]
>>764
おお、ありがとうやっぱり楽な方がいいやw



766 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 11:33:58 ]
>>753
ありがとうございます
後で張ります
待っててください

767 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 12:40:47 ]
>>759
ガキはスグ反応してくれるね、フイタ

768 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 13:33:53 ]
Python 3が後方互換性を捨ててでも求めたもの
ttp://www.atmarkit.co.jp/fcoding/articles/python3/01/python301a.html

↑これ読んだら、Python2が気持ち悪くてしょうがない。
Python2.6初めてまだ3日目、2.5のチュートリアル4章まで読んだんだけど、
>>688読んで、3からやった方がいいかな?

「誰もが正しいと考える、たった1つの方法をできる限り採用する
 (There should be one―and preferably only one―obvious way to do it)」
が今や、2系と3系で2つの方法が存在してるじゃんwww
アホの子なの?まじ、きめえええwwww

769 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 13:42:13 ]
きめえならTIMTOWTDIでも驚き最小限でも好きな言語やったらいいよ
んでネタとしては本スレ向きだからそっちに書き込んでくれ

770 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 14:44:24 ]
質問です。
他の言語で言うところの「構造体」をエミュレートする場合
辞書とクラスのどちらがいいのでしょうか?
静的言語ならクラスにしとけばコンパイル時エラーになりますが
Pythonだとどちらも実行時エラーになりますし・・・

771 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 14:50:00 ]
僕はカッターナイフの形が気持ち悪くて仕方がありません。
だからいつも髪を切るときは包丁を使います。

772 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 14:54:19 ]
辞書で構造体… myunionA1['Key01'] = 33.05 みたいにするのかな。
myUnionA1.var01 = 12  みたいなほうがやっぱり構造体っぽいんじゃないかな。
作り方や使い方にしても、「変数持ってるだけのクラス」でいいと思うし。

773 名前:768 mailto:sage [2010/01/12(火) 15:01:00 ]
>>769
本スレいくわ

>>770
3日目の俺が答えてやろう。
構造体 → タプル でおk
ja.wikipedia.org/wiki/%E3%82%BF%E3%83%97%E3%83%AB

774 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:05:12 ]
>>770
単にデータの集合体に名前でアクセスできればいいのなら辞書かクラス
そのうち使い捨てで構わないのなら辞書、そうでないのならクラス

Cの構造体のように順序も保持したいのならnamed tuple
それか配列かタプルをクラスでラップして名前でアクセス

コンパイル時/実行時は例がないとちょっとわかんない

775 名前:752 mailto:sage [2010/01/12(火) 15:27:29 ]
>>>add_tax("Good 1000 2009/1/11)
とやっても駄目だったので

の"が足りないところは気にしないでください
これがエラーの原因ではありません
もう一度自分で関数を定義したらできました

あと>>753さん
そんな記述の仕方もあるんですね
文字列フォーマットを使って指定した文字列を挿入する処理はこれから学ぶつもりですが、大変参考になります
コッチのほうが処理が解りやすいし短いですね
join()が何をするのかはわかってはいたんですけど、スペースを埋め込んで連結した文字を作るというのが
なかなかイメージが掴めなくて苦労してました
エラーは多分タイプミスのシンタックスエラーです
ありがとうございます



776 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:27:35 ]
コンパイル時にできるだけ多くのエラーを拾いたいってことなら
どう書いても大差ないと思う

777 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:34:52 ]
>>775
" ".join(リスト) は、" ".glue(リスト) だったほうが分かりやすいと思うんだよな
スペース文字のjoinメソッドというか、スペース文字が糊になって接着するメソッド

778 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 17:23:50 ]
自分にとって分かりやすいことが、万人にとって分かりやすいこととは限らない。

779 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:59:53 ]
phpのarray_mapみたいなのってpythonでどの関数使えばいいのでしょうか?

780 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:13:04 ]
>>779
すでに定義されている関数を使うなら map、
y = map(func, x) # リストxの各要素に func を適用した結果のリストをyに代入する

専用に関数を定義するくらいなら 内包表記、
y = [z * 2 for z in x] # xの各要素に対して x * 2 した結果のリストを y に代入する

781 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:56:38 ]
>>780
ありがとうございます

782 名前:770 mailto:sage [2010/01/12(火) 23:52:40 ]
>>772
クラスの方が見た目的に他言語と共通してますしね

>>773
タプルはインデックスアクセスしか出来ないので・・・

>>774
>コンパイル時/実行時は例がないとちょっとわかんない
>>776さんの言ってることです。

>>776
やはりそうですか。

いろいろと意見ありがとうございました。
クラスを使えば構造体のメンバ一覧も明記できるので、辞書ではなくクラスを使うようにします。

783 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:41:54 ]
>>782
既出だが、 Python 2.6 以上なら namedtuple がある。
namedtuple だと作成と同時に値が固定されてしまうけどね。

784 名前:760 [2010/01/13(水) 04:41:01 ]
同じく「集合知プログラミング」で今度は10章をやっていますが、
p259の
weights,feat.nmf.factorize(v,pc=20,iter=50)
でNaNが出ます。

その上の
w,h= nmf.factorize(m1*m2,pc=3,iter=100)
は、21.99999822 とか多少誤差が出ることはありますがぴったりの時もあり
うまくいっています。

一応p247のfeedlistは吟味してp250の
>>>wordvec[0:10]が空になるものは、URL変わったのかなと思ってコメントアウトしました。
またp251のdrawdendrogramでascii以外が混ざってるっぽいエラーがでてたので、
そのフィードもコメントアウトしてデンドログラムは描画できました。

他にどこを確認すればいいでしょうか?



785 名前:760 [2010/01/13(水) 08:33:26 ]
追記です。問題の非負値行列遠視分解ですが、変数で割り算をしてるのはここだけ↓です。
h=matrix(array(h)*array(hn)/array(hd))

w=matrix(array(w)*array(wn)/array(wd))

hdとwdをprintするようにしてみましたが、
[[ 0.02011069 0.02977744 0.02906954 ..., 0.02407994 0.02889659
0.02915037]
[ 0.01446606 0.02134596 0.02148551 ..., 0.01774882 0.02021706
0.02054283]
[ 0.01723484 0.02917753 0.02718492 ..., 0.02231427 0.02644232
0.0300849 ]
...,
[ 0.01144608 0.01790515 0.01683023 ..., 0.01426036 0.01676002
0.01819174]
[ 0.00750103 0.01223539 0.01129087 ..., 0.00934213 0.01090586
0.01224102]
[ 0.00230905 0.00371431 0.00355478 ..., 0.00290677 0.00371496
0.00378571]]
[[ NaN NaN NaN ..., NaN NaN NaN]
[ NaN NaN NaN ..., NaN NaN NaN]
[ NaN NaN NaN ..., NaN NaN NaN]
...,
[ NaN NaN NaN ..., NaN NaN NaN]
[ NaN NaN NaN ..., NaN NaN NaN]
[ NaN NaN NaN ..., NaN NaN NaN]]
と言う感じです。もとの行列に0が多すぎるのがいけないのかもしれませんが、
解こうとしている問題の性格上変えようがありません。どうにかならないでしょうか?



786 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 09:31:01 ]
その程度の数の割り算でNaNになるはずはない

どっかでsqrtに負数を突っ込んでないか?

787 名前:デフォルトの名無しさん [2010/01/13(水) 18:24:53 ]
>>786
レスありがとうございます。>>764さんのURLから落とせる
nmf.pyを使っているだけなのですが、sqrtは見た目にはありません。

NumPyというパッケージを使っているのですが、それが問題でしょうか?
「集合知プログラミング」以外pythonの本は持ってなくてデバッグの
やり方とかも分かりません。Windows XP SP2 pythonのバージョンは2.6.4ですが、
なにかいい方法ありますでしょうか?

788 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:37:58 ]
みんPyを読んだのだが…
簡単なツールでも作りたいな
なにかお題を出してくれる人いないっすか?
もち回答とだめだし希望

789 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:05:30 ]
>>788
Editraの日本語入力を修正するパッチを作ってください

790 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:06:53 ]
>>788
RDB(MS)
SQL文で管理するコレクション型みたいなもの(SQLiteみたいな)

理由>俺が欲しい。わりとマジで

791 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:13:09 ]
>>788
ttp://pc12.2ch.net/test/read.cgi/tech/1258320456
ここに行ってみれば?
きっと喜ぶよ。


792 名前:デフォルトの名無しさん [2010/01/14(木) 00:34:45 ]
>>787
にもレスくだしあ;;

793 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 00:58:35 ]
>>788
ふ、ふりぃおのどらいばを・・・

794 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 01:05:24 ]
宿題スレ池ってレス以外みんなネタじゃないか

795 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:59:43 ]
>>794
Editraはネタじゃないです



796 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 18:33:12 ]
>>788
解答はしらないけど、
2つのディレクトリのパスを受け取って、
フォルダ構成やら中身のファイルやらが完全に一致しているかを
調べるPythonScript作ってください。



797 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 19:00:21 ]
from filecmp import dircmp
import sys

d = dircmp(sys.argv[1], sys.argv[2])
d.report()

798 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 19:32:27 ]
>>797
>〜.py aaa aaa
diff aaa aaa
って

799 名前:760 [2010/01/14(木) 19:35:22 ]
>>787 もよろしくお願いします。


800 名前:797 mailto:sage [2010/01/14(木) 19:45:48 ]
>>798
.report() じゃなくて、 .report_full_closure() ならどう?

801 名前:798 mailto:sage [2010/01/14(木) 19:59:10 ]
中身にファイルを入れないと
>dircmp.py aaa bbb
diff aaa bbb
Only in aaa : 〜
Only in bbb : 〜
Identical files : 〜
Differing files : 〜
とかの詳細って表示されないってことを今 分かりました。

これで、全部が全く等しい時に
ディレクトリとして等しいよ!って表示してくれる機能はありませんでしょうか。


802 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:05:01 ]
>>797
そんなのあるんだ
でもファイルの中身がちょっとだけ違ってて
サイズと日時が同じだったりしたらどうなんだろ

803 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:08:19 ]
>全部が全く等しい

ディレクトリ(サブディレクトリ含)単位でhash値出すとか?

804 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:10:40 ]
>>803
ファイルのhashは計算できるのですが、
ディレクトリのhashって計算できますか?


805 名前:801 mailto:sage [2010/01/14(木) 20:15:09 ]
>>802
ファイル名が同じで日時はことなり、内容を1バイトだけ変えたファイルは
別のファイルだと検出されました。




806 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:45:05 ]
>>805
それだと日時を見てるのか1バイトで引っかかったのか分からんがな

807 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:46:19 ]
ディレクトリのhashはファイルのhashから求めればいいんじゃないかな

808 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:07:57 ]
['a', 'b'] と [10, 20]から
{'a' : 10, 'b' : 20}を生成するみたいな方法ってありませんか?


809 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:11:30 ]
dict(zip(['a', 'b'],[10, 20]))

810 名前:760 [2010/01/15(金) 05:55:20 ]
くりかえしになりますが >>787 もホントによろしくお願いします。

811 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:23:26 ]
口あけて待ってるだけじゃ誰も助けてくれん罠

812 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:35:58 ]
>>809
ありがとう

813 名前:デフォルトの名無しさん [2010/01/15(金) 12:48:24 ]
Python3.1.1をWindows7 ultimate 64bitにインストールしたんだけど、
Fatal Python error: Py_Initialize: can't initialize sys standard streams
ImportError: No module named encodings.utf_8

とかいわれて機動出来ない。

どうすればいいか教えて!


814 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:14:00 ]
>>810
numpy使ってる人少ないんだよな。
matplotlibスレのやつなら知ってるかもしれない。

815 名前:760 mailto:sage [2010/01/15(金) 16:38:30 ]
>>814
スレをのぞきましたがたしかにnumpy の話題が出てますね。
ありがとうございます。逝ってきまつ。



816 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:52:19 ]
文字列があって2文字列処理をしていくのですが、なにか素敵な書き方はありますか?
for c in s:
 としてフラグを使い2文字たまったら処理していくようにする

StringIOとread(2)を使う

re.splitで2文字の文字列のリストにしてfor文に突っ込む

がとりあえず思いつきました

817 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:04:27 ]
for c1, c2 in zip(s[::2], s[1::2]) しか思いつかない

818 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:25:49 ]
for c1, c2 in map(None, s[::2], s[1::2])

819 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:26:35 ]
it = iter(s)
for c1, c2 in zip(it, it)

820 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:29:02 ]
for x in range(0, len(s), 2)

とすると、s[x], s[x+1]で取り出せる。

821 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:32:36 ]
for i in xrange(len(s) / 2):
c1, c2 = s[i*2], s[i*2 + 1]

822 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:33:45 ]
おまえらみんなsの文字長が奇数だったときのこと考えてるか?

823 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:35:56 ]
>>822
質問の条件には何も言われてないから
未定義で医院ジャマイカ

824 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:44:16 ]
>>822
たしかsが奇数のときは
>>817は最後の文字を無視
>>818が最後の文字とNoneのペアを作る、だったかと。

825 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:48:04 ]
>>819は無視。
>>820, >>821は例外だな。



826 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:48:33 ]
みなさんありがとうございます
いろいろ方法があるんですね
参考になりました

>>820が私的に直感的なのでこれにしておこうと思います
文字列は偶数が保証されていたのでその点も問題無かったので






827 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:53:00 ]
忘れた頃に何故か奇数のデータが混ざってて
例外が出て嵌ると

828 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:53:59 ]
スライス使えばみんな幸せ♪

829 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 02:14:39 ]
>>819
これいいね

>>> s = '0123456789'
>>> list(zip(*[iter(s), ] * 2))
[('0', '1'), ('2', '3'), ('4', '5'), ('6', '7'), ('8', '9')]
>>> s = '01234567890'
>>> list(zip(*[iter(s), ] * 2))
[('0', '1'), ('2', '3'), ('4', '5'), ('6', '7'), ('8', '9')]

しかし短くしようとするとどんどん直感的じゃなくなるんだよな

830 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 02:27:31 ]
直感性を切ってまで短くするのはPython的じゃないね。
遊びでやるのは別かもしれんが

831 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:53:08 ]
>>830
> 直感性を切ってまで短くするのはPython的じゃないね。
それは同意。
短いor早いのが好きならC/C++を使えと。


832 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 13:33:21 ]
perlerがこっちを見ている
仲間にしますか?[Y/N]

833 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:47:37 ]
こっち見んな

834 名前:デフォルトの名無しさん [2010/01/19(火) 01:22:05 ]
#!/usr/bin/env python
# coding: utf-8

import threading
import time

class hoge(threading.Thread):
def run(self):
for i in range(0, 10) :
print i
time.sleep(0.1)


for i in range(0, 10):
fuga = hoge()
fuga.start()


以前こんな感じにインスタンス生成しているのを見たことがあるんですが
同じ変数fugaを何度も使用してインスタンス生成しています
結果は予想を反して正常に動作をするんですが
こういう使い方をして問題とかは無いのでしょうか?


835 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:26:45 ]
( ´ ▽ ` )問題ないよ。本当だよ。



836 名前:デフォルトの名無しさん [2010/01/19(火) 01:31:31 ]
delete fuga はしないほうがいい?

837 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:33:02 ]
>>835
そうなんですか?
できればなぜ問題ないのか、
解説か説明しているサイトへ誘導してもらえないでしょうか?

調べ方が悪いのかググっても
見つからないのでおねがいします

838 名前:デフォルトの名無しさん [2010/01/19(火) 01:54:36 ]
>>837
ヒント: gbkr

839 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 02:16:24 ]
>>834です
あれからデストラクタを使って、インスタンスが廃棄されるタイミングを調べたらシックリすることができました。
同じ変数にインスタンス生成しても、重複したインスタンスはループを抜けると自動的に消滅して最後に生成した
インスタンスだけが残ることがわかりました。
(ただしループ内で実効した処理がループを抜けた後も残っている場合は、処理が終了するまで廃棄しない)

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

import threading
import time

class hoge(threading.Thread):
def __del__(self):
print 'destructor'

def run(self):
for i in range(0, 10) :
print i
time.sleep(0.1)

for i in range(0, 10):
fuga = hoge()
fuga.start()

time.sleep(4)
print 'piyo'

>>838
すみません。ヒントの意味が分かりません

レスに答えてくれてどうもありがとうございました

840 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 02:26:56 ]
>>834です
>(ただしループ内で実効した処理がループを抜けた後も残っている場合は、処理が終了するまで廃棄しない)

これはスレッドを使用したときだけのようですね
失礼しました

841 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 03:50:23 ]
ふとした疑問なのですが
map型に対しkeys()とvalues()を実行した際、その並び順は同じと考えて大丈夫でしょうか
(もちろん両者を実行する間に変更はありません)

items()でとってzipするべきでしょうか?

842 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 04:21:14 ]
def func(**keys):
def func2(**keys):

って二つあって
funcが受け取った引数をそのままfunc2へと流したいんだがどう書いたらいい?

def func(**keys):
 func(keys)
みたいなこと




843 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 08:23:27 ]
関数を別の変数に流し込んで
x = ....
func(x)
func2(x)
じゃダメなのか?

844 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 09:27:31 ]
>>842
それで何か問題が?
名前無し引数にも対応するなら、
def func(*args, **kwargs):
  func2(*args, **kwargs)

845 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 13:44:50 ]
>>843,844
自分で試してだめだったので質問したつもりだったのですが、ご指摘の通りやり直したらきちんと動きました
前回自分で試したときなにか別の理由で動かなかったものを勘違いしていたようです
どうもすいませんでした





846 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 13:56:02 ]
class X():
 def func(self, **keys):
  print keys
 def func2(self, **keys):
  self.func(keys)

X().func2(x=10, y=20)

連投すいません
上の例だと上手くいかないのですが, どうやって渡したらいいのでしょうか?

847 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 13:58:02 ]
self.func(**keys)

848 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 13:59:09 ]
>>847
ありがとうございます

849 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:06:43 ]
最近みんなのPythonを購入して遊んでいるのですが、PyScripterで実行したプログラムのPython Trutle Graphics
のウィンドウをマウスで動かそうとするとフリーズしてしまいます。かるくググってみてもWindows環境では昔からある症状と
あり解決手段を見つけられませんでした。そこで質問なのですがフリーズ回避の方法はありますか?

850 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:12:34 ]
コマンド・プロンプトから実行する

851 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 19:45:29 ]
>>849
とりあえず外部実行でやってみろ
Alt + F9 な


852 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:34:44 ]
>>850
できれば軽量IDEのPyScripterを使いたかったものですから。

>>851
ありがとうございます。実行してみたところプログラムが終わるとウィンドウも閉じてしまうようで、期待した動作ではありませんでした。
設定項目も見つけられなかったので、素直にシェルを使おうと思います。

853 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:53:22 ]
PyScripter は RPyC を利用したリモートデバッグができる。
セットアップが少々面倒だけど、一度セットアップしたら普通の
デバッグと同じ感じに使えるはず。
ttp://plaza.rakuten.co.jp/kugutsushi/diary/200710290000/

854 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 13:16:46 ]
>>851
ウィンドウが閉じてしまうのが嫌なら、最後に
raw_input("")
でも付けたら?

855 名前:849です mailto:sage [2010/01/20(水) 15:47:57 ]
>>853
私宛てですか?正直よく分からなかったです。

>>854
標準の実行をするとTurtle Graphicsのウィンドウは消えないのですが、IDEと被って見にくいので横にずらしたい。
→マウスで動かそうとするとフリーズ。
外部実行だと図形を書きおわったらTurtle Graphicsのウィンドウが消える。
→orz
raw_input("")は外部実行では効果がなかったです。

たんに from tutle import * で簡単なサンプル動かしてるだけなので、そこまで深刻な問題ではないのですが、
みなさんありがとうございます。




856 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 17:41:34 ]
>>855
それフリーズしてるんじゃなくて
WM_PAINTが呼ばれていない
(あるいはメッセージループが回っていない)
だけだと思う
IDEのバグだろ

857 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 21:47:58 ]
>>856
詳しくはわかりませんが、Win環境のPythonとPyScripterの相性のようです。

Python標準シェルとIPythonの挙動が違う意味がわからないので質問します。

Python IPython

>>>str = u"あ" >>>str = u"あ"

>>>type(str) >>>type(str)
<type 'unicode'> <type 'unicode'>

>>>str >>>str
u'\u3042 u'\x82\xa0'

>>>print str >>>print str
あ UnicodeEncodeError:'cp932'〜〜

1.u"あ"を代入した時点で、strはUnicode文字列型になっている
2.IPythonはstr参照時にUnicode文字列型を文字列型にエンコードしなおしている

と言う理解であってますか?そしてこれはバグですか?
ttp://dsas.blog.klab.org/archives/51390187.htmlの方法で解決するみたいなんですが
正当なやりかたなのか気になります。

858 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 21:55:37 ]
すみません、体裁が…。

Python
>>>str = u"あ"
>>>type(str)
<type 'unicode'>
>>>str
u'\u3042
>>>print str


IPython
>>>str = u"あ"
>>>type(str)
<type 'unicode'>
>>>str
u'\x82\xa0'
>>>print str
UnicodeEncodeError:'cp932'〜〜



859 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 22:09:12 ]
とりあえずstrという名前の変数に代入するセンスを疑う

860 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 22:12:30 ]
>>857
IPythonのバグだと思う
リンク先の解決方法は
間違っては居ないが場当たり的だと思う

861 名前:methane mailto:sage [2010/01/20(水) 23:37:58 ]
>>857 のBlogの著者です。
Python本体のインタプリタはCで書かれていて、Python製のPythonインタプリタは
compile() 関数を通しているのが根本的な違いです。
compile() 関数にエンコーディングを渡す良い方法が無いので、ハックで対策するしかありません。
Pythonに付属のIDLEも同じ問題を抱えています。

Blogに書いているよりも良い挙動になるハックが、
https://bugs.launchpad.net/ipython/+bug/339642/comments/8
にあります。

また、この問題は Python3 になるとcompile()の仕様を変えなくても自動消滅します。
実際、Python3 の IDLE も大丈夫です。早くPython3の時代になると良いですね。

862 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 00:16:23 ]
>>861
すばらしい!!
次版のiPythonリリースには取り込まれていて欲しいですね


863 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 02:27:33 ]
>>859
確かに予約語やそれに近しい略語は使うべきではありませんでした、すみません。

>>860,>>861
ありがとうございます。このコードはIPython/iplib.pyのcompile_command()以下

source=source.encode(self.stdin_encoding)
if source[:1] in [' ', '\t']:
  source = 'if 1:\n%s' % source
if source[:1] in [u' ', u'\t']:
  source = u'if 1:\n%s' % source
source = '# coding: %s\n%s' % (self.stdin_encoding, source)

であってますか?リンク先の
+ source = '# coding: %s\n%s' % (self.stdin_encoding, source)
の+は追加の意味で、コードではないですよね?

864 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 02:40:33 ]
diff の出力だから patch に喰わせるのが吉

865 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 02:42:34 ]
compileに渡すユニコード文字列に
文字コード指定を追加してるんで
それであってる



866 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 02:46:15 ]
っつーか 「-」 の部分を追加するな www

867 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 07:31:15 ]
そこはわかっていると信じたい

868 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 12:34:09 ]
dS/dt=-βSI
dI/dt=βSI-γI
dR/dt=γI

という連立微分方程式があってβとγ求めたいんですがPythonで書くとどうなりますか?


869 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 12:59:59 ]
えっ βとγを変えて数値シミュレーションするとかじゃなくてか。

870 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 13:18:53 ]
記号微分?

871 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 14:58:55 ]
ラプラス変換してから逆行列か

872 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 17:17:05 ]
空を飛べ〜

873 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 17:25:59 ]
それはロプロス

874 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 17:44:59 ]
863です。
IPythonでもきちんとUnicodeが扱えるようになりました。
みなさま、ありがとうございました。

875 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 19:12:03 ]
失礼します。若干スレ違いかもしれませんが、質問よろしいでしょうか?

Windows で Python2.6.4&Pygame1.9.1 を使用してプログラムを組もうとしています。
その際の参考サイトとして、
ttp://www.halb-katze.jp/pygt/
ttp://pygame.skr.jp/
などを利用させていただいているのですが、どちらのサイトのスクリプトをそのまま利用しても、うまくウィンドウを開くことができません。
正確にはウィンドウは開くのですが、前者のスクリプトだと一瞬、後者でも半秒も経たないうちにプログラムが終了してしまいます。
解説を読む限りだと、能動的に終了処理をしない限りはウィンドウは開いたままのような気がするのですが、
原因おわかりであればご教授いただけませんでしょうか。



876 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 22:20:30 ]
質問が不親切だな

きっとダブルクリックでもしてるんだろ
コマンドで実行してみろ

877 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 22:39:17 ]
加齢臭がする

878 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 22:43:46 ]
晩飯はカレーだった

879 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 02:14:03 ]
今、カレーヌードル食ってる

880 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 03:22:26 ]
ここは華麗にスルーだろ

881 名前:875 mailto:sage [2010/01/22(金) 05:04:26 ]
>>876
言葉足らずでした、失礼。ウィンドウとはコマンドプロンプトの意ではなく、
pygame.display.set_mode で作成される、画像などを描画可能なウィンドウのことです。

具体的には以下のようなプログラムを走らせるのですが、
ttp://www.halb-katze.jp/pygt/pygt0100.html
while文で無限ループを作り、たとえば終了ボタンが押されるまでウィンドウは閉じないようになっているはずなのですが、
実際には、上述の通り一瞬だけ開いて終了してしまいます。

882 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 07:06:28 ]
うちは大丈夫

883 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 09:01:22 ]
python.exe二パスが通ってないとか
.pyに関連付けされてないとかではないの?
コマンドプロンプトから実行してみたら?

884 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 11:13:48 ]
>>883
長くてURLが貼れないので、お手数ですがこちらのWikiを見て貰えますか?
ttp://pygame.skr.jp/

たとえばこれの「基礎>図形を描画する」をそのまま実行した場合、
pygame.display.set_caption(u"蝗ウ蠖「縺ョ謠冗判")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
とのエラーは出てきますが、当該部分を"DRAW"などに置き換えれば正常に実行されます。
(UTF-8で保存はしているんですが、これは何がいけないのかな?)

対して「基礎>ウィンドウを表示する」を(日本語部分だけ訂正し)実行した場合、
特にエラー表示もないまま、起動するなり終了してしまいます。ダブルクリックの場合も一緒です。
試しに終了条件をなくしてみるなどしましたが、ループにすら入っていないのか、何の変化もありません。

いろいろと弄くっているのですが、終了してしまう場合の規則性が見えない状況です。
図形を描画するサンプルを削っていっても、どうも突然にループに入らなくなる模様です。
Pygameをインストールしなおしたところ、ループに入らなくなる条件が変わったようですが、詳細はさっぱり……。
他サイトのサンプルスクリプトなども同様です。なんなんでしょうか。

885 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 11:19:58 ]
コマンドプロンプトから実行してみたら?



886 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 11:39:58 ]
言葉足らず、重ね重ね申し訳ありません。
「ダブルクリックの場合も一緒です。」とあるように、コマンドプロンプトから実行しています。

887 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 11:41:16 ]
酸っぱいような、苦いような臭い

888 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 11:47:11 ]
>>884
>たとえばこれの「基礎>図形を描画する」をそのまま実行した場合、
>pygame.display.set_caption(u"蝗ウ蠖「縺ョ謠冗判")
>UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
>とのエラーは出てきますが、当該部分を"DRAW"などに置き換えれば正常に実行されます。
>(UTF-8で保存はしているんですが、これは何がいけないのかな?)

なんだ pygame が unicode 通さないのか?
ソースを utf-8 で保存していて
# -*- coding: utf-8 -*-
も書いてるんなら
日本語文字列の前の u を取ってしまうか
u'日本語文字列'.encode('utf-8')
にすれば通る

889 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 11:58:27 ]
>>888
uを取った場合は正常に動作、
明示的にUTF-8に変換した場合は同じエラーとなりました。

890 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 12:42:53 ]
追伸:確かにUTF-8で保存しています

891 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 12:43:24 ]
>>888
OpenGLの方はcp932しか通さないなwwwwwwww

892 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 12:45:50 ]
>>889-890
sitecustomize.py で sys.setdefaultencoding() を変なのにしてるとか

893 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 12:47:52 ]
>>889-890
うちは大丈夫(日本語文字コードの問題はあるけどそこを直すだけで動く)

894 名前:デフォルトの名無しさん [2010/01/22(金) 12:50:19 ]
解決しました
ありがとうございました

895 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 13:34:26 ]
プログラマなら自力で勉強して解決しろよ。それが出来ない奴はいらん。



896 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 13:38:26 ]
プロのプログラマが超初心者用スレに質問に来るんですか?w

897 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 13:44:35 ]
よくあることです

898 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 13:58:24 ]
長いこと申し訳ありません……

>>892
デフォルトのまま何も弄くっていません。
特に弄くる必要はないとのことでしたが、何か設定した方がいいのでしょうか?

899 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 17:50:37 ]
>>875
WindowsVista + Python 2.5.2 + pygame 1.9.1
utf-8 で保存
u が付いてるとエラー(コンソール上で文字化け)
u'日本語'.encode('utf-8') ならサンプルすべて正常動作


900 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 18:39:19 ]
ttp://boxheadroom.com/2009/05/21/py_anime_gif2

901 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 00:38:47 ]
>>898
884の "draw_figure.py" だったら
"import sys"の後に以下の2行を追加して実行してみたらどうなる?

reload(sys)
sys.setdefaultencoding('shift_jis')

これでうまくいくなら sitecustomize.py でググれ

902 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 00:40:27 ]
あ、ごめん

reload(sys)
sys.setdefaultencoding('utf-8')

の間違い

903 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 00:48:32 ]
しかし、"UnicodeEncodeError" なんて
Python2.xの定番中の定番FAQで、自分で貼ってるwikiサイトを
サイト内検索しても解決方法が載ってるのに
ここまでダラダラ引っ張るとは・・・

もしかしてpygameの宣伝?!
・・・アンインストールしよっと

904 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 00:52:50 ]
(^ω^;)

905 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:30:50 ]
(-_-;)



906 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 03:49:54 ]
上に出てた人と似たような質問なんですが、python2.6.4で

# -*- coding: utf-8 -*-
a = raw_input(u"何か書く : ")
print a
input()

というファイルを実行すると、動くんだけども"何か書く"の部分が文字化けしてしまいます
sys.getdefaultencoding()だと'utf-8'になってるし、対話モードで入力すると正常に表示されます
自分にはこれ以上分からないのですが、原因となることは何か考えられますか

907 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 03:51:33 ]
はい

908 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 08:33:30 ]
>>906
まず、Pythonを動かしている環境を明示して下さい。
Windowsですか?Linuxですか?Linuxであれば "$ locale" というコマンドの実行結果は
どうなっていますか?

あと、 defaultencoding は ascii が標準です。 utf-8 にすることで unicode の扱いの
ミスによる UnicodeError を回避できますが、回避した部分はすべて utf-8 が
正しいという前提になってしまっているのでその前提が崩れると文字化けします。
文字化けの原因になるようなコードを書かないために、開発や勉強をする環境では
defaultencoding は ascii のままにしておくことをおすすめします。

909 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 08:41:39 ]
>>906
import sys
import codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
これでやってみそ。

910 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 15:11:34 ]
超初歩的な質問ですいません。
なんだか初めてのプログラミングで苦戦してます。
奥が深すぎて・・・ 関数やメソッドはたくさんありますが全てを熟知していないと
使えないってわけではないですよね?
参考書を読んでますが、どこから手をつけていいのか・・・
参考書:(新しい)みんなのPythonです。
アドバイスをお願い致します。

911 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 15:54:53 ]
初めてで奥まで行くのはむりだと開き直れ

やりたいこととか自分にとって必要なこととかあるだろ

そこからやりゃいんだよ

912 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 17:16:21 ]
>>910
プログラミングを始めた動機
その本を何章まで読み終わったか

それが分かればアドバイスできるお

913 名前:910 mailto:sage [2010/01/23(土) 17:21:07 ]
動機はpythonを覚えたかったから?
8章ですかね

914 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 17:25:47 ]
Pythonを覚えたいためにPythonプログラミングを始める
手段が目的となる… それもまた人の進歩の要因なのだ

915 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 17:49:20 ]
>動機はpythonを覚えたかったから?

予想通りでワロス



916 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 18:33:08 ]
ぶっちゃけプログラミング覚えるだけでも結構楽しいからそれでええんちゃう……?
試行錯誤するのが楽しい人はさ。

>>910
むしろ全部を知らなくて済むようにリファレンスとhelp関数がある。
使いたいものがあれば調べりゃいい。

917 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:43:15 ]
>>908-909
環境はwindowsです(defaultencodingはasciiに戻しました)
>>909さんの方法を試しても相変わらず文字化けします

そもそもprint u"何か書く"だと正常に表示されるのにinput(u"何か書く")だと化けます
もうお手上げです(´〜`;)

918 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 21:05:07 ]
>>917
うん、プログラミング初心者は日本語(というか非ASCII)を使うなって金言があるんだ
他のことを勉強するのに時間割いたほうがいいぞ

というか化けたのならその化けた文字列を貼ってくれ

919 名前:909 mailto:sage [2010/01/23(土) 21:22:03 ]
>>917
これは大変失礼した。
import sys
import codecs
sys.stdout = codecs.getwriter(ここに端末の文字コード(Windowsならshift-jis(cp932とした方がよいかも)))(sys.stdout)
raw_input(u"くわー")
print u"ぽいうぃ"

としなければならないんだった。
こちらではこれで動いたのでこれで動かなかったら知らん。

920 名前:908 mailto:sage [2010/01/23(土) 21:43:45 ]
print が特殊なんだよな−。sys.stdout.encoding を考慮してくれる。

sys.stdout を含め、ファイル(標準入出力を含む)に対する write() は、通常エンコードが
必要になる。raw_input も write を使っているから、出力するべきエンコーディングで
エンコードされたバイト列を渡さないといけない。

ファイルにリダイレクトされたときのこととかいろいろ考えまくった場合の
お手本コードはこんな感じ。

import locale

# sys.stdout.encoding があればそれを、無ければその環境で一般的と思われる
# エンコーディングを推測したものを使う
enc = getattr(sys.stdout, 'encoding', locale.getpreferedencoding())

# unicode 文字列に enc で encode できない文字が入っていたら '?' みたいな
# 置換文字に置換する。
a = raw_input(u"くわー".encode(enc, error='replace'))

>>919 みたいに、 sys.stdout を unicode が出力できるようにしてしまうのも
1つの手。ただし、こんどはバイト文字列を出力できなくなる(ascii文字だけなら
なんとかなるけど)から、プログラム全体に渡ってそのポリシーを貫く必要がある。

921 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 23:59:39 ]
どうせPython3でデフォルトがユニコード文字列になるんだから
初心者は何も考えずにsitecustomize.py作って
『非asciiはu''』って覚えた方が手っ取り早いと思う

『日本語を表示したいだけなのに
ロケールやらコーデックやらめんどくせ〜』
ってなっちゃわないか?


922 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 00:03:23 ]
>>918-920
回答ありがとうございます

# -*- coding: utf-8 -*-
import sys
import locale
enc = getattr(sys.stdout, 'encoding', locale.getpreferredencoding())
a = raw_input(u"くわー".encode(enc, 'replace'))
print a

で文字化けなく表示出来ました!encの中身はcp932になってました
1日悩んだ問題がやっと解決・・・ありがとうございました

923 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 00:34:35 ]
はじぱいはエンコードについてほとんど書いてないから糞だよね。

924 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 00:46:41 ]
事細かに書くと『うゎ、Pythonめんどくせっ』ってなっちゃうからな

必要最低限のことは書いてあって
外部とやり取りする際には、必ず、decode、encodeを使って
明示的に文字コードを指定あげて、内部ではユニコード文字列で扱う
といった趣旨のことは書いてある

・・・うん、充分めんどいね

925 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 01:15:33 ]
ASCII文字でしか書かれていないファイルhoge.txtがありまして、
改行コードはCR+LFです。

これを元にして
改行コードがCRでそれ以外の内容は同じファイルpiyo.txtと、
改行コードがLFでそれ以外の内容は同じファイルfuga.txt
を作りたいのですが、Pythonではどうすれば良いでしょうか?

文字コード変換は調べて見つかるのですが、
肝心の改行コード変換が見つかりませんでした。

どうかよろしくお願い申し上げます。



926 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 01:30:46 ]
バイナリモードで扱うのが移植性が高くて簡単かな
contents = open("hoge.txt", "rb").read()
open("piyo.txt", "wb").write(contents.replace("\r\n", "\r"))
open("fuga.txt", "wb").write(contents.replace("\r\n", "\n"))

927 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 02:00:51 ]
>>924
でも暗黙的な扱いになると、いざバグった場合に対処しづらかったり

928 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 02:42:22 ]
>>924
>外部とやり取りする際には、必ず、decode、encodeを使って
>明示的に文字コードを指定あげて、内部ではユニコード文字列で扱う
>といった趣旨のことは書いてある
>
>・・・うん、充分めんどいね

言いたいことは判るがその発言はどうかと思う

>>927

perl とか php って糞だよね


929 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 07:10:42 ]
>>927
確かに
でも、お手軽にやっつけたいからスクリプトを使うのに
コンソールに日本語表示するのがダルすぎる

shift-jisに含まれないユニコード文字を扱おうとすると
更に訳わからん

>>927
う〜ん、煽るつもりはなかったんだけど。。。

930 名前:908 mailto:sage [2010/01/24(日) 09:27:21 ]
>>929
>でも、お手軽にやっつけたいからスクリプトを使うのに
Python はスクリプトとしても使えるというだけで、スクリプト用言語ではなく
本格的なアプリケーションやシステムにも適したプログラミング言語だから

>コンソールに日本語表示するのがダルすぎる
いや、ファイル入出力はたしかに下手に隠蔽するべきではないけど、
画面出力では print を使って簡単に unicode を表示できるようになってる。
(で、ファイルにリダイレクトするときちんと UnicodeEncodeError になる)

だから、コンソール上で手軽に使う raw_input も、printと同じで
sys.stdout.encoding を見て自動でエンコーディングするべきだと思うよ。
実際、Python3 でも raw_input はバイト列じゃなくて文字列を受け取るしね。
バグ報告してみるよ。

931 名前:925 mailto:sage [2010/01/24(日) 11:57:29 ]
>>926
ありがとうございます。
助かりました。

932 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 12:48:12 ]
'2010-01-01 01:01:01'という日付文字列から日付オブジェクトを作成するために

from datetime import datetime
date = datetime.strptime'2010-01-01 01:01:01'), '%Y-%m-%d %H:%:M:%S')

のようにすると思いますが、

'2010-01-01 01:01:01.11111'のようなmicrosecondを含めた日付文字列から
生成するためには、文字列フォーマットをどのように指定すればいいでしょう??

933 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 13:11:46 ]
>>932
date = datetime.strptime('2010-01-01 01:01:01', '%Y-%m-%d %H:%M:%S.%f')

934 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 13:19:21 ]
>>930
>バグ報告してみるよ。

すばらすぃ!期待してる!!

>>929
>shift-jisに含まれないユニコード文字を扱おうとすると

どのみち、cmd.exeではPython経由じゃ素直に表示できないし
ファイルに書き込んだり、作ったりならいけるんだけどねぇ

>>932, 933
ちょっと修正
dt = datetime.strptime('2010-01-01 01:01:01.123456', '%Y-%m-%d %H:%M:%S.%f')
microsecondが書式指定文字列に入ったのはPython2.6以降なんで注意
docs.python.org/library/datetime.html#strftime-behavior


935 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 14:01:34 ]
u"うにこど".sub(u"う", u"あ、う")

こんな漢字でUnicode文字列を置換しようとすると
'unicode' object has no attribute 'sub'
って言われてしまいます。

Unicode文字列を置換するにはどうすればよいでしょうか?



936 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 14:04:37 ]
subじゃなくてreplace。たぶんre.subと間違えてるんじゃないかな

937 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 14:04:39 ]
>>> print u'うにこど'.replace(u'う',u'あ、う')
あ、うにこど

938 名前:937 mailto:sage [2010/01/24(日) 14:05:29 ]
吊ってきまつ

939 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 14:09:28 ]
>>936
あー間違えてました。
すみません。
ありがとうございました。

940 名前:デフォルトの名無しさん [2010/01/24(日) 16:28:03 ]
Pylons使ってるんですが、checkboxの複数の値が取れなくて困ってます。
たとえば、
<input type="checkbox" name="hoge_cd" value="1"/>
<input type="checkbox" name="hoge_cd" value="2"/>
<input type="checkbox" name="hoge_cd" value="4"/>
こういうので、二番目と三番目をチェックした状態でsubmitしたら['2','4']と
受け取れることを期待してるんですが、
request.POST['hoge_id']すると最後にチェックされた4だけが取れるという状態です。
Validatorが邪魔してるのかと思い、Validator外しても結果は同じでした。

むろん、
<input type="checkbox" name="hoge_cd1" value="1"/>
<input type="checkbox" name="hoge_cd2" value="2"/>
<input type="checkbox" name="hoge_cd3" value="4"/>
こうやれば楽なんですが個数が可変だった際のことを考えるとこの方法は使いたくありません。
どうやったらリストで取得できるのでしょうか。


941 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:28:52 ]
ミス。request.POST['hoge_id']じゃなくてrequest.POST['hoge_cd']でした。

942 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:50:22 ]
nameを共通にしてidを変えたら?
つか、frameworkの問題じゃなくてhtmlの話では?

943 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:58:13 ]
<input type="checkbox" name="hoge_cd[]" value="1"/>
<input type="checkbox" name="hoge_cd[]" value="2"/>
<input type="checkbox" name="hoge_cd[]" value="4"/>

944 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 17:11:42 ]
>>942
ID変えても変化ないですね。
>>943
それでrequest.POST['hoge_cd']で受け取ろうとするとKeyErrorになるんですよ。
先に書くべきでした、すみません。

request.POST.keys()でPOSTを吐かせたら、
hoge_cd
hoge_cd
hoge_cd
とでてきました。popさせて受け取ってみます。

945 名前:940 mailto:sage [2010/01/24(日) 17:19:54 ]
解決。
request.POST.iteritems()でキー探して取得できました。
お騒がせしました。なんか解決方法が泥臭い気はするんですが。



946 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 17:22:00 ]
html は糞だからな

947 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 18:22:32 ]
>>942
これはframeworkの問題
サーバ側でPOSTに格納された変数をどう解釈するかってだけ
Pylonは触ったこと無いけど、フォームの生成からframeworkに則ってやるべきだと思う
手で書いてるから『個数が可変・・・』とか気にすることになる
リストなりdictなりにまとめてPylon側で処理できる・・・んじゃない?

948 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:09:31 ]
処理できる・・・のか?

949 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:35:50 ]
処理できる・・・はず

950 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:36:36 ]
処理できる・・・かもしれない

951 名前:940 mailto:sage [2010/01/24(日) 19:40:32 ]
947の意見はもっともだと思う。
が、個人的には
・たかだかHTMLの部品作るのになんで余計なことを覚えなきゃいけないんだw
・テンプレートだけでデザイン側が成立しないと不便で仕方ない。
という2点を理由に避けたいところ。
それゆえに<li py:for="foo()">${bar}</li>みたいなのがあるわけですし。

952 名前:932 mailto:sage [2010/01/24(日) 20:49:22 ]
>>934
ありがとうございます。2.6から%fがサポートされてるんですね。。
GoogleAppEngineが2.5だったんでなんとか自作してみました。

あんまり需要ないと思いますが晒しておきます。。

def str2datetime(datestr):
''' 日付文字列をdatetimeオブジェクトに変換する
'''
date = datetime.strptime(datestr[0:14], '%Y%m%d%H%M%S')
ms = timedelta(microseconds=int(datestr[15:]))
return date + ms

print str2datetime('20100124123045.001927')
- 結果 -
2010-01-24 12:30:45.001927

953 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 20:49:29 ]
ajax にして pylons + smartclient 使ったら幸せになれるお


954 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 21:15:41 ]
Pythonモジュール用のaproposってないですか?
キーワードを入れると、それに関連するモジュールやメソッドを一覧表示してくれる
というような…

955 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 22:09:21 ]
pydocはちょっと違うか



956 名前:947 mailto:sage [2010/01/24(日) 22:29:58 ]
>>951
どっちがどれだけ歩み寄るかってのは
新規frramework導入時には、必ず、ついて回るからねぇ
そこら辺は、お任せするしかないね

>>952
ちょっとガチガチすぎないか?
俺だったら
def str2datetime(datestr, datefmt):
 if datestr.find(".") == -1:
  return datetime.strptime(datestr, datefmt)
 else:
  datestr, us = datestr.split(".")
  return datetime.strptime(datestr, datefmt) + timedelta(microseconds=int(us))
ぐらいかなぁ・・・あんま変わらんかw

957 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 22:33:40 ]
>>954,955
これよくね?
・anything-ipython.el
www.emacswiki.org/emacs/anything-ipython.el

最近はなんでもanythingにしておけば幸せだよね



958 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 22:36:39 ]
改めて見るとreturnが無駄に2つ有って気持ち悪いな
def str2datetime(datestr, datefmt):
 if datestr.find(".") == -1:
  us = '0'
 else:
  datestr, us = datestr.split(".")
 return datetime.strptime(datestr, datefmt) + timedelta(microseconds=int(us))
微妙だwww

959 名前:デフォルトの名無しさん [2010/01/25(月) 15:21:38 ]
m[a][i] = (m[a][i] == m[b][i]) ? 0:1

Cだとこれでいけるんだがpythonで書くとすればどうすればいいの?
真偽値のやりかたがよくわからん

960 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:34:08 ]
>>959
Pythonには
条件 ? 真の時 : 偽の時
のような三項演算子は無い。
代わりに、
真の時 if 条件 else 偽の時
という形の文を使う。
この場合だと、
m[a][i] = 0 if m[a][i] == m[b][i] else 1
となる。真偽値を代入したいなら、
true,falseの代わりにTrue,Falseを用いて、
m[a][i] = False if m[a][i] == m[b][i] else True
とする。

961 名前:デフォルトの名無しさん [2010/01/25(月) 15:56:38 ]
m[a][i] = (m[a][i] == m[b][i]) ? 0:1
m[a] = map(lambda x, y: 0 if x == y else 1, zip(m[a], m[b]))

962 名前:デフォルトの名無しさん [2010/01/25(月) 15:59:44 ]
m[a][i] = Not (m[a][i] == m[b][i])

963 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:14:48 ]
test

964 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:36:00 ]
↓ここって管理人不在?
ttp://python.rdy.jp/

965 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:42:03 ]
a = [a0, a1, a2]
f.__call__(a) # fは引数を3個とる関数
というように、引数をリストで指定して
関数を__call__したいのですが、どうすればいいでしょうか?



966 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:48:24 ]
f.__call__(*a)

967 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:48:35 ]
f(*a)

968 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:50:56 ]
f.__call__(*a)
つーか
f(*a)
でいいじゃん

969 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:59:11 ]
>>966-968
ありがとうございます!

970 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 00:07:01 ]
>>960
aruyo?

971 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 01:44:00 ]
みんPyまだ半分くらい読んだだけだが…え?だから?って感じです。
全部読めば、それなりのコードなりが書けたりするんですかね(汗
文系の俺には無理な分野なのか(涙

972 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:58:03 ]
「みんpy」は既にpython知ってる人が眺めるための本
初心者は「はじpy」の方が良いと(一部の人に)言われている
なお「恥py」という似非本があるので要注意

973 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 03:04:44 ]
初心者につまらない本を買わせるなよ

974 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 03:08:16 ]
みんpyはかなり初心者向けじゃないの?
はじpyとか意味あるの?

マジレス、初心者にはみんpy以外は無駄な感じ。

975 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 03:19:08 ]
web の tutorial で充分



976 名前:デフォルトの名無しさん [2010/01/27(水) 04:52:47 ]
>>972-975
つまり、もう少し読み進めてみます。
簡単なコードとか見るのも勉強になりますよね
いいサイトとかありますか?

977 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 05:58:38 ]
ない

978 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 07:23:02 ]
もしかして、読んだり見てるだけで
実際にスクリプト書いてないの?

979 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 10:44:40 ]
>>971
つまり、たったこれだけしか内容なくてPythonちょろすぎじゃね?
ではなくて、一体どうしたらいいのかすらわからないみたいなことですか

980 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 11:54:05 ]
>文系の俺には無理な分野なのか(涙

文系かどうかは関係ない
お前がアホなだけ

981 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 12:54:17 ]
ttp://inventwithpython.com/
これでゲーム作って遊んでればそのうち覚えるよ
英語だけど10歳のガキにも読めるように書かれてるから多分大丈夫
無料だしね

982 名前:デフォルトの名無しさん [2010/01/27(水) 15:02:52 ]
>>861のハック入れると、
SyntaxError: unknown encoding: cp932 (<ipython console>, line 0)
が出てしまうんじゃがなぜじゃろう・・・?
cp932のコーデックがないわけじゃないんだが・・・
utf8にしようが何にしようがダメなんだ

983 名前:デフォルトの名無しさん [2010/01/27(水) 15:06:26 ]
自己解決した。すぐ上の
source=source.encode(self.stdin_encoding)
をコメントアウトしたままだったorz

984 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 23:00:19 ]
972と972が存在を主張する一部の人の将来が不安

985 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 02:25:32 ]
>>983
謝罪しろw



986 名前:デフォルトの名無しさん [2010/01/28(木) 14:44:20 ]
>>985
おわびにjython用のms932コーデックでもさらそうと思ったんだが、
ブログとか持ってないんだよな。
どっかいいサイトないかしらん

987 名前:デフォルトの名無しさん [2010/01/28(木) 14:45:46 ]
jythonでIPython動かしたらIJythonになるんだろうか

988 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 19:04:49 ]
>>986
コード貼りたいだけならPastebinとかあるよ。


989 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 21:37:51 ]
次スレを

990 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 21:46:48 ]
じゃあ
次スレは >>992を踏んだ人が。


991 名前:デフォルトの名無しさん [2010/01/28(木) 22:44:05 ]
立てた
くだすれPython(超初心者用) その6
pc12.2ch.net/test/read.cgi/tech/1264686181/

992 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 02:12:57 ]
これはいい早漏乙

993 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 02:18:51 ]
print "うめ"

994 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 02:57:39 ]
>>989
日本は義務教育で基礎法学を教えないからわかってない人が多いみたいだけど、権利と義務は表裏一体、つまりワンセットなんだよ
例えば「生きる」という権利には「働く」という義務が伴なう。これは習っていなくたって誰でも常識で分かると思うけど
社会の中のあらゆる権利にはそれと対になる義務が存在するということ
戦後の日本人はこの表裏一体を勘違いして、自分の権利は相手の側から見ると義務なんだ、などと言う訳の解らない屁理屈を唱えて
相手(多くの場合国家)に対して一方的に権利を主張、すなわち義務の履行を求める者が多い
いわゆるプロ市民と呼ばれる者達だ
日本人が彼らのような人間(一方的に権利を主張するだけの個体がそもそも人間の定義を満たすのかどうかは疑問だが − 個人的見解を述べれば否と断言すべきであろう。
「ヒト」は社会を構成する生き物である。社会の成員となって初めて「人間」なのだ。そのために「教育」が必要なのである)に違和感を覚えないのは
もちろんマスコミの罪でもあるけど元を糾せば教育にも決して原因が無い訳ではない

995 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 03:00:18 ]
どこ誤爆w



996 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 03:08:13 ]
そういえばこないだ本屋でみんPy改訂版見たら>>26がマジで載ってた
他人のピクルスを笑ってる場合じゃないと思った

997 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 08:26:06 ]
> 日本は義務教育で基礎法学を教えないからわかってない人が多いみたいだけど、権利と義務は表裏一体、つまりワンセットなんだよ

デマ乙

998 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 09:16:28 ]
ぼくはパイソンを使っているのですが、どうすれば彼女ができますか?
ちなみにブサイクデブで、ちょっとしたことでイライラします。
あとヘンなメガネかけてます。

999 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 09:24:15 ]
メガネ買い換えろよwwww

1000 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 09:54:11 ]
1000なら一生童貞

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef