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


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

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



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

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

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

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

2 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 13:35:10 ]
PEP-8とか
www.python.org/dev/peps/pep-0008/
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

   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

3 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 13:36:11 ]
     >>774
    とりあえずこれでいい
    www.python.org/ftp/python/2.6.5/python-2.6.5.msi

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

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

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

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

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

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

    インタラクティブモードのエンコード
    python.matrix.jp/tips/compatibility/interact_encoding.html

4 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 13:37:23 ]
        ヘ⌒ヽフ
       ( ・ω・) dd
       / ~つと)

777 デフォルトの名無しさん [sage] 2010/04/09(金) 23:22:52 ID: Be:
    >>775
    Pythonの文字化け対策:sys.setdefaultencodingの謎
    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を変更する
    d.hatena.ne.jp/perezvon/20070715/1184469534

778 デフォルトの名無しさん [sage] 2010/04/10(土) 00:28:18 ID: Be:
    >>775にいたるまでテンプレ消えても誰も指摘しなかったのかw
    おおらかでいいな

5 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 05:40:24 ]
いちおつ

6 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 23:39:22 ]
s = 'abcdefgh'
のとき
['ab', 'cd', 'ef', 'gh']
みたいに2文字ずつ切り出すには
どう書くのがスマートですか?

7 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 23:49:25 ]
it = iter('abcdefgh')
map(operator.add, it, it)

8 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 01:08:12 ]
pythonのインタラクティブシェルで日本語入力できないんだが…どうすれば…
ググたけどもうお手上げ

9 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 01:14:07 ]
ALT+半角全角でとりあえず入力はできるけど・・

10 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 01:25:51 ]
>>8
環境は?



11 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 07:31:09 ]
>>6
>>7のは上手いなぁ。それよりも愚直にはなるが、
[s[2*n:2*n+2] for n in range(len(s)/2)]
って方法もある。

12 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 07:57:40 ]
環境はpython2.6.2でwin32
インタラクティブシェル開くと言語バーが消えてしまうんっすよね
だからalt+半角/全角にしても切り替わってくんない

13 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 09:01:34 ]
方々、すいません
設定が米国語になってましたorz
にぽん語にして再起動したら入力でけるようになりました

おさわがせいたしましたぁ

14 名前:デフォルトの名無しさん [2010/04/26(月) 12:18:59 ]
>>7
びっくりしたあと納得した

15 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 12:37:35 ]
同じイテレータの.next()が呼び出されるからこうなるんだよね
端的だけどすぐには思いつかないから、分かりやすいかは微妙に感じる

operator.add() って引数全部足すのかと思ってたらもちろん違った
3つだったらこんな感じか
map(lambda *a: ''.join(i for i in a if i), *(it, ) * 3)
ワンライナーだな―これは

16 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 12:51:48 ]
>>11
*2はダサイから、
[s[n:n+2] for n in xrange(0, len(s), 2)] かな。

他には、 [t + u for t, u in zip(s[::2], s[1::2])] とか、
map(operator.add, s[::2], s[1::2]) とか

でも、 >>7 はイテレータの神

17 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 12:54:47 ]
>>13
びっくりしたあと納得した

18 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 14:42:47 ]
特にお勧めはしないが
re.findall('..', s)
でもいいよ

19 名前:デフォルトの名無しさん [2010/04/26(月) 15:12:02 ]
>>18 は正規表現の神

20 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:09:21 ]
Cだと互いに影響しあうようなものを引数にするのはタブーだけど
Pythonは関数の引数の呼び出し順は決まってるん?



21 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:37:46 ]
>>20
>>7のことを言っているのなら、何か誤解していると思う
func(expr1, expr2)
CやPythonのような正格な言語では、式expr1, expr2が評価されてから
funcが呼ばれる
expr1とexpr2のどちらが先に評価されてかは(少なくともCでは)決まっていないので、
それに依存するプログラムは邪悪とされる

>>7の場合、式it, itをmap()に渡しているので、iteratorオブジェクトitが
そのままmap()に渡るだけなので、上の問題とは無関係なことに注意して欲しい
勿論map()の実装には依存しているけどね

22 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:52:35 ]
ええっ
map(operator.add, it, it)
のことなら
左のitが先に評価されて右のitが後から評価されているからこそ
それがmapでうまく処理される訳で
右が先で左が後なら正しい結果にならないでしょ?

23 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:53:29 ]
>>22
iteratorオブジェクトitがそのままmap()に渡るだけなので

24 名前:21 mailto:sage [2010/04/26(月) 16:59:54 ]
>>22
言葉が足りなかったかな
it.next()を評価して、itから値を取り出すのは「map()の中」なんだよ

勿論左の引数から先に値を取り出すようにmap()が実装されていなければ
望みの結果にはならないけど、
関数の引数として渡した式が、関数を呼ぶ前にどういう順序で評価されるかが
不定である、という問題とは関係が無いわけさ

25 名前:20 mailto:sage [2010/04/26(月) 17:33:53 ]
>>21
ありがとう。言われてみれば確かにそうだ。
引数で渡した時点では副作用はないね。

26 名前:22 mailto:sage [2010/04/26(月) 18:17:46 ]
>>24
ありがとう。言われてみれば確かにそうだ。
引数で渡した時点では副作用はないね。

27 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 22:24:43 ]
>>7は 約10秒でレスしてる
ウヒョー

28 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 22:38:26 ]
10分

29 名前:27 mailto:sage [2010/04/26(月) 22:53:46 ]
orz

30 名前:11 mailto:sage [2010/04/26(月) 23:38:19 ]
>>15
lambdaでも可変長引数とれたんだ。知らなかった、ありがとう。

>>16
そういやrangeってステップ指定できたなぁ。いつも必要なときに忘れるんだ



31 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 06:06:44 ]
このスレ知らないことがたくさんでてきて勉強になります。
ただ>>15だけ試してみたけど
なんでそうなるのか分からなかったので、
初心者にも分かるように教えてもらえませんか?


map(lambda *a: ''.join(i for i in a if i), *(it, ) * 3)

32 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 06:12:00 ]
すいません、途中でおくってしまいました。

このスレ知らないことがたくさんでてきて勉強になります。
ただ>>15だけ試してみたけど
なんでそうなるのか分からなかったので、
初心者にも分かるように教えてもらえませんか?

よく分かっていない部分
1. map(lambda *a: ''.join(i for i in a if i), *(it, ) * 3)
は構文的に通るのに
print i for i in aが通らない理由

2. map(lambda *a: ''.join(i for i in a), *(it, ) * 3)
ではダメな理由

3. 処理が行われる順番

4. *(it, ) * 3はどんな意味?

以上です。よろしくお願いします。

33 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 06:57:26 ]
1.引数はタプルだから
2.nextじゃなくてforの場合はStopIterationにならないから
    if i はいらないんじゃないの
3.括弧の中からっぽい
4.同じ1つのイテレータの入ったタプルを展開

自分も初心者なんで適当


34 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 06:58:22 ]
訂正
4.同じ1つのイテレータが3つ入ったタプルを展開

35 名前:34 mailto:sage [2010/04/27(火) 07:24:12 ]
すんません

map(lambda *a: ''.join(a), *(it, ) * 3)

これでも同じ結果になるような気がするんですが、
間違っていますか

36 名前:34 mailto:sage [2010/04/27(火) 07:28:08 ]
lambda *a: ''.join(i for i in a)の(i for i in a)はジェネレータ表記になっている必要性がありませんよね
lambdaは*aで、タプルの引数としてイテレータから3つ要素を取ってきてそのままjoinに渡すんですよね
間違っているのかどうかわからん

37 名前:15 mailto:sage [2010/04/27(火) 09:25:24 ]
俺のが一番魔術的だったわけだ
1. 引数に渡すときは()を省略してジェネレータ表記に出来る
2. 余りが出たときのため。例外出すかこういう風に処理するかは場合によるよね
3. どこのこと?
4. >>33の通り

>>33 for は StopIteration で終了してるよ

38 名前:34 mailto:sage [2010/04/27(火) 09:50:31 ]
>>37
引数がタプルになるのは、星があるときだけでしたね
ジェネレータの括弧が省略可能ってことか

forは裏でStopIterationをtry exceptみたいな感じか

>>33は適当すぎましたね
すみません


39 名前:34 mailto:sage [2010/04/27(火) 09:54:44 ]
というかjoinがどうなっているのかわからん以上、
引数のタプルがどうとかは言えないんだった

40 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 10:45:49 ]
要素が足りなくなったときに(itがStopIteration吐いたときに)Noneを補完してるのはどの部分?

it=iter('abcdefgh');map(lambda *a: a, *(it,)*3)

---> [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', None)]



41 名前:40 mailto:sage [2010/04/27(火) 10:54:06 ]
ごめん、自己解決した。mapの仕様ですね。
map(lambda a,b: (a,b), range(3), range(5))

---> [(0, 0), (1, 1), (2, 2), (None, 3), (None, 4)]

42 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 11:22:42 ]
ひょっとしてこのスレは2.6が標準なのかな


43 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 11:31:11 ]
Oh,Yes!

44 名前:デフォルトの名無しさん [2010/04/27(火) 11:55:37 ]
Python2.6、IDLEを使ってGUIアプリを作ろうと目論んでます。
F5でモジュールを起動してチェックしてるのですが、出てきたウィンドウを閉じると次回起動させる時に
Exception in Tkinter callback
中略
AttributeError: ModifiedInterpreter instance has no attribute 'interp'
とでて一度IDLEを閉じてから起動させるハメになります。
自分に何か足りないんだと思いますがいい方法はないものでしょうか?

45 名前:44 mailto:sage [2010/04/27(火) 13:04:11 ]
自己解決デストロイ

46 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 13:14:47 ]
解決方法教えて

47 名前:44 mailto:sage [2010/04/27(火) 13:40:02 ]
ど初心者なので詳しくはわかりませんが、
ttp://www.python.jp/doc/2.4/lib/node701.html
のサンプルコードでできました。
最初は最下段のroot=Tk() , root.destroy()かと思ったけどself.quitな予感も…。
今色々試してます。

48 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 13:43:12 ]
del root

49 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 13:48:13 ]
>>44
2.5 だけどうちはもんだいない

50 名前:44 mailto:sage [2010/04/27(火) 13:57:27 ]
>>48
ありがとうございます。調べてみます。
>>49
マジすか。
普通にウインドウの×ボタン押して閉じてたりdestroyだけした時にこうなるので何かの記述が足りないのかなと。
self.quitだと全部閉じちゃうしなーorz



51 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 14:01:32 ]
自分で調べるより最小限の再現手順(コード含む)と環境貼って
誰かに調べてもらったほうがいいと思うぞ
Tcl/Tk, Tkinter, IDLE と登場人物が多くて切り分けるのが大変だし

52 名前:44 mailto:sage [2010/04/27(火) 14:20:30 ]
ttp://paison.hp.infoseek.co.jp/paison/tkinter/pytk2.html
より下記コードを引用(不要部分は削除)
from Tkinter import *
class App(Frame):
def init(self):
b = Button(self, text="Bye", command=self.cmd_clicked)
b.pack(side=TOP)
def cmd_clicked(self):
self.master.destroy()
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.init()
if __name__ == "__main__":
app = App()
app.mainloop()
このコード(他もですが)でウインドウの×ボタンで閉じた場合とdestroyした場合にもう一度起動する時に>>44のエラーがでてモジュールを起動できません。
OS:Ubuntu9.10 64bit
Python2.6

53 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 14:31:41 ]
モジュールをアンロードしてからリロードするようにしてみたら?

54 名前:44 mailto:sage [2010/04/27(火) 14:39:41 ]
>>53
すみません、どうやればいいかわかりませんorz

55 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 14:43:21 ]
ちょっとは自分で調べろ
オウム返ししてると返事もらえなくなるぞ


56 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 15:00:22 ]
>>44
別ウインドウを出すコードは、WindowsのIDLEから実行すると
おかしくなることが多いね。

普通のコマンドライン版から試してみるといいかも。
matplotlibとかturtleとかはIDLEだと駄目でコマンドラインだといける。

57 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 15:04:14 ]
二回目からは
app = App()
を消して
app.mainloop()
だけにして動かすと動くと思うよww

58 名前:44 mailto:sage [2010/04/27(火) 15:33:47 ]
>>49
今2.5も入れてやってみましたが同じく失敗しました。
何が違ったんでしょう…
>>55
調べましたがimport→reloadのではないですよね?
私の勘違いだと思いますがPython Shellを閉じてもう一度だと本末転倒なので…
>>56
おぉ!一気に楽になりました!
本当にありがとうございます。

59 名前:32 mailto:sage [2010/04/27(火) 19:26:30 ]
>>33,37
答えてくれてありがとうございます。
色々勉強になりました。

ジェネレータ表記はよく分かってなかったので、
これを気に勉強します。

また分からないことがあったらよろしくおねがいします。


60 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 19:45:07 ]
>>58
IDLEを -n オプションをつけた状態で起動したら (Shell に No Subprocess と表示)
そのエラーがでたけど、つけない場合エラーはでなかったよ



61 名前:44 mailto:sage [2010/04/28(水) 09:43:38 ]
>>60
ショートカットを確認したら確かに -nと付いていたので消したら治りました。
ありがとうございます。
今作ってるのが一段落したら何故こうなったのかも調べてみたいと思います。
勉強になりました。

62 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:22:23 ]
>>7
name 'operator' is not defined
>>18も同じく定義してないってエラーが
何かimportせにゃならんとかですか?
>>15は動きました

63 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:29:08 ]
>>7
import operator
>>18
import re
が必要

64 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:38:18 ]
>>63
ありがとうごいます

65 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 16:57:28 ]
親切だな

66 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 17:07:23 ]
大学の図書館にはクックブックとpythonプログラミング入門しかなかったから
それぞれをパラパラ読んで後者を借りてきた。これでGWにCでやったアルゴリズムをpythonで書き直したりしようと思う
情報がかなり薄いけど、不満があるとすればそこじゃなく、変数にやたらと l を使って、わざわざコメントで「←これは小文字のエル」と注意してること

67 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 17:29:38 ]
pyExceleratorを使って、Excelからデータ読みこんで
適当なテキストファイルに書き写したんだけど
データに改行があった場合、\nを削除しても勝手に改行される
どうすればいい?

あと、変数の中身をraw文字には出来ないの?

68 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 17:42:10 ]
>>66
吹いたww
何その糞本w

69 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 17:50:54 ]
small LはPEP8でも使うなって言ってんのに…

70 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 19:52:58 ]
Pythonでアップロードを行った時進行状況を知る方法はありますか?
ダウンロードであればファイルオブジェクトをread(1000)とかでループすることで知ることができるようですが
アップロードの場合がわかりません





71 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:05:28 ]
>>67
\x0D\x0A じゃなくて
\x0D だけのところを消さないといけない

72 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:07:07 ]
>>70
どうやってアップロードをしているのか書いてくれないと答えようがないぞ

73 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:33:42 ]
mime-multipart です

74 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:21:21 ]
>>71
ありがとうございます
でも結局良くわからなくて、別の方法で回避しました
ごめんなさい


75 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 00:41:23 ]
取り込みたいファイルはshift-jis形式のcsvロガーファイル
getdefaultencoding()は'mbcs'のWindows環境

みんなのPythonで勉強しているのですが、コード内部ではなるべくユニコードをってところでつまづいています。
csvファイルの1列目に日本語タグがある為、csv.reader()でユニコードへ変換しつつ取り込もうとすると
リストには対応していないとエラーになり…
open()でreadlines()を使いunicode()でユニコード化しても、リストのインデックス取り出しが1文字ずつになり不便に…
csv.reader()みたいにコンマ区切りにする方法か、csv.reader()でユニコード変換する方法はないのでしょうか;
それともユニコード化は別処理で考えたほうがいいのかなぁ…

76 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 01:12:49 ]
>>75
csvパーサの本体はCで実装されてて、かつstr(char*)を期待してるみたいなんで、
その時点でunicodeにするのは無理
stream = codecs.getreader('cp932')(open('foo.csv'))
みたいなのをcsv.reader()に渡すことは可能ではあるが、
csvパーサに渡るときに、どのみちstrに変換される

なので、uniocdeにしたければ自分で変換すると良いよ
row = [ col.decode('cp932') for col in row ]
程度で済む話だ

77 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 11:26:57 ]
>csvパーサの本体はCで実装されてて、かつstr(char*)を期待してるみたいなんで、

糞だな
こういうあホガイるから Python3 での決断が必要になったんだろうな

78 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 12:40:59 ]
ホガイ の検索結果 約 218 件中 1 - 10 件目 (0.11 秒)

www.nichibun.ac.jp/YoukaiCard/C0410695-000.shtml
この沼は昔大沼で、岸に弁天堂があり、沼は祭につかうホガイという飯びつのような形であった。
若宮八幡宮造営に際し、社殿が落成するころ、むし立ての赤飯が入っているホガイが毎日沼から
現れ、働いている人々がいくら食べても尽きなかったという。

79 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:01:18 ]
ホガイほすい

80 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:02:05 ]
>>76
ありがとうございます。
自分で変換する方法でいきますね。



81 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:26:51 ]
日本語と英語が混ざっている箇条書きの文が書き連ねられた
ファイルinput.txtがあります。

input.txtの中身は

WINDOWS, WINDOWS CE(9X系およびNT系は最新版、WINDOWS 3.1およびMS-DOSは旧版のみ)
MACINTOSH(OS 9以前およびOS X以降ともに)
各種UNIX
LINUX(LINUX STANDARD BASE3.2で標準仕様となった)
PLAN 9(PYTHON 3.Xは未移植)
PALMOS
S60
JAVAプラットフォーム (JYTHON)
.NET FRAMEWORKプラットフォーム (IRONPYTHON)

です。
このinput.txtの書く行に対して, 各英単語の先頭だけを大文字にする処理をしたいのですが、
適当な標準関数などありますでしょうか?

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

82 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:55:49 ]
ありません

次の方どうぞ

83 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:57:10 ]
>>81
無理だったけど(Os, Ironpython, .Net になる)せっかく書いたので

# coding: sjis
import re

for line in open('input.txt', 'rb'):
  line = line.decode('sjis')
  line = re.sub(ur'\b([A-Z(][A-Z]+)', lambda m: m.group(0).title(), line)
  print line,

84 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:00:32 ]
>>83
ありがとうございます。
いただいたコードで大分良くなります。

本番用のテキストに適用して、微妙なヵ所は手動で直します。
大変助かりました。


85 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:09:52 ]
f=open("foo")
x=f.readlines()
myfunction(x)
の様にxを使用した後、もうxはこれから先 一切 使用しないのですが、
fooが巨大なファイルであるとき、メモリ上にx(が指す先のメモリ領域)が残っている
と物理メモリを圧迫しそう(正確にはプロセス毎の領域ですが。)なので、
GCをxに対して発動させる事はできますでしょうか?

実際には上の状況に限らず、一般的に
変数xが巨大なデータ過ぎて、でももう使わない等という時に
そのメモリ領域を開放したいのです。

C++で長年プログラミングしていると無駄なメモリ領域を明示的に開放する
処理を書きたくなってくるのです。

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


86 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:18:12 ]
>>81
import re

def shuffle(xs, ys):
    while True:
        yield xs.next()
        yield ys.next()

toks = iter(re.split(r'(\W+)', open('input.txt').read()))
print ''.join(shuffle((x.capitalize() for x in toks), toks))

87 名前:86 mailto:sage [2010/04/30(金) 01:20:51 ]
書いたはいいが、これはShift JISみたいなエンコーディングだと駄目だな
その場合は、open('input.txt').read()を
codecs.getreader('cp932')(open('input.txt')).read()とでもしてね

88 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:25:04 ]
>>85
Pythonはリファレンスカウントなので、xは誰も参照してなければすぐ消される
が、C++プログラマなら知ってるだろうが、Pythonプロセスのヒープにメモリが
返却されたからと言って、OSにメモリが返却されるとは思わないほうがいい

readlines()で一気に全行読む必要は本当にあるの?

89 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:26:23 ]
>>86-87
ありがとうございます。
活用させていただきます。


90 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:28:13 ]
>>88
>物理メモリを圧迫しそう(正確にはプロセス毎の領域ですが。)なので、
とか
>実際には上の状況に限らず、一般的に変数xが巨大なデータ過ぎて、
とか言っているようだが。

詳細は本人が来るまで知らん。




91 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:32:53 ]
>>86
それだと
you're the best.

You're The Best.
になってほしいのに
You'Re The Best.
になってしまわないか?


92 名前:85 mailto:sage [2010/04/30(金) 01:35:46 ]
>>88
>>90
ありがとうございます。

xを指していた先を指している他のオブジェクトが存在していない時、
明示的にそのメモリを破棄する方法が無いとしても、

参照カウント方式でしたら、
x = None
とすればそれだけでGCが発動してくるって理解でよろしいでしょうか?


93 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:38:11 ]
>>92
いや通常そんな必要は無い

xがローカル変数で、その参照をreturnするなどしなければ、
普通はその関数から抜けるなどすれば、すぐGCされる
明示的に消したい時は
del x

94 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:39:03 ]
>>91
ああ、そういうケースまでは真面目に考えてない

95 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:41:45 ]
pythonで文字列mystrの末尾に改行コードがあったら
削除するっていう操作はどうすれば可能でしょうか?


96 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:45:20 ]
mystr.rstrip(r'\r\n')

97 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:51:11 ]
>>96
ありがとうございます。

98 名前:85 mailto:sage [2010/04/30(金) 01:53:59 ]
>>93
del x
まさにそれが知りたかったです。
ありがとうございます。

99 名前:85 mailto:sage [2010/04/30(金) 02:02:20 ]
>>92
前半のコード
f=open("foo")
x=f.readlines()
myfunction(x)
後半のコード

の形をしている時、C++では{}でくくる事によって
明示的にスコープを新たに作る事ができました。
すなわちC++ライクに擬似コードを書くと

前半のコード
{
File_type f=open("foo") ;
Line_type x=f.readlines() ;
myfunction(x) ;
}
後半のコード

とすれば、{で新しいスコープに入り制御が}に達した瞬間に
ローカル変数であるfとxのデストラクタが発動します。



100 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:03:49 ]
しかしPythonでは上述>>99のC++の{}に相当するような方法が良く分かりませんでした。
例えば

前半のコード
if True :
 File_type f=open("foo") ;
 Line_type x=f.readlines() ;
 myfunction(x) ;
後半のコード

のように意味のないifブロックをわざと作ってみても、
そのifを脱出した後の後半のコードの部分でも x や f が有効なようです。(ですよね?)

まあPythonを使っていてメモリがどうとか言う方がおかしい(センス無い or C++に毒されすぎ)のかもしれませんが。





101 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:05:26 ]
>>99
Pythonでスコープを作りたければ、明示的にdefで関数にするしかないけど
その例なら、単に
myfunction(f.readlines())
と書けばすぐ回収されると思うよ

102 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:07:05 ]
>>101
ああなるほど、確かに一時的にxを用意する必要はありませんでした。


103 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:22:08 ]
そもそも、メモリ使用量を意識する場合は、リストではなくてイテレータを使う

104 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:30:47 ]
1パスで済まない仕事なら仕方ない
行位置だけ覚えて、要求されたら
ファイルから行を遅延fetchするようなクラスを書くのが理想

105 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 12:08:20 ]
つlinecache

106 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 04:01:37 ]
>>85
del x

107 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 04:05:13 ]
>>100
前半のコード
def block():
 File_type f=open("foo") ;
 Line_type x=f.readlines() ;
 myfunction(x) ;
block()
後半のコード

108 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 12:40:33 ]
def reverse(data):
print 1
print data
for index in range(len(data)-1, -1, -1):
yield data[index]

print 2
reverse("golf")
print 3

と言うのを試してみたのですが、
何故かprint 1, print dataが表示されません。
(2,3は表示されます。)

理由が分からないのですが、教えていただけないでしょうか?

109 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:27:56 ]
print reverse("golf")してみるといい
yieldがあるから呼ばれてない
for inとか明示的に.next()を呼ぶとかlist()とかに渡すとか
ジェネレータを使う処理をしないとダメ

110 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:28:29 ]
そのreverseは普通の関数ではなくてジェネレータだからな

reverse("golf")は、ただgenerator objectを返すだけで
その中身はまだ実行されないんだよ

g = reverse("golf")
g.next()
のように、next()呼ぶと、yield一回分中身が実行されて、yield式の値が
返る

まあ普通は単に
for x in reverse("golf"):
  print x
みたいに書いて、next()を自分で明示的に呼ばないことが多いが



111 名前:108 mailto:sage [2010/05/02(日) 14:07:51 ]
>>109,110
なるほど、next()を行うまでは呼ばれないのですね。
すごくよく分かりました。
ありがとうございます。

112 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 14:16:30 ]
>>108
ちなみに、もし後じゃなくて今表示したいなら、こういう方法もある。
def reverse(data):
def gen():
for index in range(len(data)-1, -1, -1):
yield data[index]
print 1
print data
return gen()

113 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 14:17:54 ]
ごめんよ、インデント崩れた。
def reverse(data):
    def gen():
        for index in range(len(data)-1, -1, -1):
            yield data[index]
    print 1
    print data
    return gen()

114 名前:108 mailto:sage [2010/05/02(日) 15:52:10 ]
>>113
なるほど、関数の中にyieldを入れることもできるのですね。
色々教えて頂きありがとうございます。

115 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 02:14:01 ]
シーケンスから最大要素のインデックスを取得する方法について
seq.index(max(seq))だと無駄がありそうなので
よりいい方法があれば教えてください

116 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 02:25:58 ]
>>115
>>> from operator import itemgetter
>>> max(enumerate([2,5,3,4]), key=itemgetter(1))[0]
1

117 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 09:59:12 ]
numpy.argmax(seq)


118 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 16:30:04 ]
クラスについて教えて欲しいんですが。
恥ずかしいんですが、クラスってなんだろう。

119 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 18:01:11 ]
役職

120 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 20:15:08 ]
オブジェクト指向について解説してある記事を嫁



121 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:28:20 ]
オブジェクト指向信者にはなるなよ
痛いだけだからな

122 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:40:03 ]
オブジェクト指向って名前がカッコイイよな

123 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:50:38 ]
「まさか、後罪(オブジェクト指向)の触媒(パラダイム)を<讃来歌(メタプログラミング)>無しで?」

124 名前:デフォルトの名無しさん [2010/05/04(火) 01:19:51 ]
モジュールの読み込みについて質問です。

dir/
  hoge.py
  package/
      __init__.py
      piyo.py
      fuga.py

とあって、hoge.py の中で

import package.piyo

としてpiyoをインポートしています。さらに piyo.py の中で

import .fuga

としてfugaをインポートしているのですが、この形だと
piyo.pyを直接実行したときに、

ValueError: Attempted relative import in non-package

と怒られます。

hoge.pyとpiyo.pyどちらを実行した場合でも、正常にインポート出来る
ようにするには、どのようなインポート文を書いたらいいのでしょうか?

125 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:28:03 ]
import .fuga でなく import fuga でいいんじゃまいか

126 名前:デフォルトの名無しさん [2010/05/04(火) 01:45:12 ]
ありがとうございます。

import fuga

だとhoge.py実行時に

ImportError: No module named base

というエラーが出てしまいます。

127 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 02:00:17 ]
baseってなんだ?

128 名前:デフォルトの名無しさん [2010/05/04(火) 02:29:57 ]
すみません。base=>fugaです。

129 名前:デフォルトの名無しさん [2010/05/04(火) 03:43:40 ]
sys.path.append

130 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 04:03:25 ]

from package import piyo

としてpiyoをインポート
さらに piyo.py の中で

from . import fuga





131 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:07:46 ]
from . import fuga

だと

ValueError: Attempted relative import in non-package

といわれます。sys.pathについては、ディレクトリ移動したときに
変更が必要になりそうなので使わないようにしてましたが
最終手段として考え直してみます。

132 名前:124 mailto:sage [2010/05/04(火) 13:19:54 ]
とりあえず__name__つかって分岐させてました。
スレは継続してチェックさせていただくので、なにかいい方法があればお願いします。


ありがとうございました。

133 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:40:39 ]
piyoを直接実行って、どうやってる?ちゃんと
python -m package.piyo
ってやってる?

134 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 14:13:47 ]
ケリー・クラークソンって素敵じゃね

135 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 14:21:18 ]
とっくに
おぺvbs炭

136 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:47:00 ]
python超初心者です
つかプログラミング自体超初心者

django使ってwebアプリ作ろうとしているのですが
views.pyの行数がドンドン増える。
サイト配下のアプリを複数にするべきですか?
それともアプリ一つで長いviews.pyでOK?

アホな事聞いてごめん

137 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:59:13 ]
>>136
django使ったこと無いからどんなもんかは分からないが、
一般にファイルの行数がどんどん増えるような実装はしない。
メンテナンスが大変になるから。
容易さにつられて、本来とは違う使い方してるんじゃないの?

138 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:20:38 ]
ありがとう

models.pyでデータベースに格納するデータを
views.pyで処理を
urls.pyでURLを

それぞれ管理するんだけど、今は"ユーザ登録"っていう一つの処理を
views.pyにそれぞれ書いて(defによる宣言)いってる。
つまり"ユーザ削除"とか"ユーザ変更"やその他各種情報に関する処理毎に
関数作ってそれをurls.py経由で読み出すって感じなんだ。

サイト配下のアプリ毎に分ければ、すっきりはするんだけど、アプリ間でのリレーションとかも気にしないといけないから、皆どうしてるんだろうなぁと。
views.pyを分割する事も出来るみたいだけど...

139 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:28:12 ]
>>138
MVCフレームワークのコントローラみたいに機能ごとにアプリで分けるのが恐らく普通

140 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:32:10 ]
とりあえずここ読んでみたら
www.python.jp/doc/release/tut/node8.html
views.pyと同じディレクトリにuserviews.pyとか置いて、from userviews import *とかするの



141 名前:デフォルトの名無しさん [2010/05/04(火) 18:53:04 ]
django
pc11.2ch.net/test/read.cgi/php/1156612854/

142 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:33:42 ]
>>132
バージョンは2.5以降ということで、いいのですよね?
ttp://www.python.jp/doc/2.5/tut/node8.html
ttp://dmsolutions.jp/wp/python/package/
らへん見る限りは、合ってる気がしますが…

143 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 03:38:44 ]
>>139 ありがと!やってみたら全然問題無かったw

>>140 参考になりました。ありがとー
>>141 あっちは過疎ってるぽいすね

144 名前:デフォルトの名無しさん [2010/05/05(水) 10:15:37 ]
    ┌─┐
    │●│
    └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!


145 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 12:47:00 ]
>>133
Pythonスクリプトを直接実行するときは、普通shebangじゃないの
少なくともUnix likeな環境で、スクリプトをそんな風に実行する人は
いないと思うけど

146 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:51:55 ]
>>132
www.python.org/dev/peps/pep-0366/
2.5だと__name__を使うしかないが2.6だと修正されてると思う

147 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 21:08:16 ]
>>145
shebangを使うようなコマンドとして直接実行されることを目的としているファイルは、
そもそもパッケージに入れたりしないよ。
__name__ が '__main__' になってしまうから、例えばどこかで import package.piyo したら、
同じモジュールを別の名前で2重にロードすることになってしまう。

モジュールをスクリプトとして実行する場合は、 Python -m モジュール名 ってする。
例えば、 python -m doctest とするとdoctestができたり、 -m cProfile とか、いろいろ例がある。

モジュール内の main() などを関数をコマンドとして直接起動できるようにしたい場合は、
ブートストラップとなるスクリプトを手動で別に用意するか、setuptoolsの機能を使って
ブートストラップを自動生成する。

148 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 21:14:28 ]
>モジュール内の main() などを関数をコマンドとして直接起動できるようにしたい

だったら os.system("python hogehoge") で起動すればいいんだお
簡単だお

149 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:26:39 ]
だれもそんな話はしとらんぜ

150 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 07:59:37 ]
# -*- coding: utf-8 -*-
import re
data = ur"""1
998.7 1003.1 -- -- -- 6.0 10.9 1.8 36 16 2.6 4.8 北西 9.4 北西 6.9 -- -- 晴後一時曇 快晴
2
1014.6 1019.1 -- -- -- 7.0 12.1 2.7 43 24 2.5 5.0 北西 9.4 北北西 9.0 -- -- 快晴 晴後曇"""
for rec in [reduce(lambda r,(i,v): r + [v] if i in [0,5] else r,
enumerate(line.split()),
[])
for line in
data.split('\n') if not re.search('^\d{1,2}$', line)]:
print rec[0], "\t", rec[1]

分からない事があるので教えてください。
上記のr,i,v変数がよく分かっておりません。
動きから想像するとrは[]で
iはenumerate(line.split())の0,1,2…
vはenumerate(line.split())の998.7,1003,1…
となるような気がするのですが

私のイメージでは
lambdaの引数はenumerate(line.split())の値なので
0,1,2…のシーケンシャルな値と998.7,1003.1等のdataから作成される値
で構成されているのかなと思っていたので
ちょっと分からなくなってしまいました。

お手数ではございますが、解釈の仕方を教えていただけないでしょうか?



151 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 08:40:50 ]
眠いのでまたあとで

152 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 12:38:30 ]
昼飯食って眠いのでまたあとで

153 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 17:56:51 ]
>>150
そのコードは1行に詰め込み過ぎなので、要素ごとに分解してみれば分かるかと。
あと、lamdaの部分を適当な関数にして、r, i, vをprintさせてみるとか。

154 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 18:21:11 ]
>>150
reduce()のことは知ってるの?
reduce(f, xs, init)は、ループで書くと

acc = init
for x in xs:
    acc = f(acc, x)
のような計算を行う

accの初期値はinitで、計算の結果が次々に積まれていくので、
「累積変数」「アキュミュレーター」と呼ばれる

そのコードで言うと、rは累積変数で、
(i, v)にはenumerate(line.split())の要素が最初から順番に渡されることになる
iはenumerateで付加された0からはじまるindex
vのほうが、line.split()で得られる実際のデータ(スペース区切りの語)だね


155 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 04:57:40 ]
pythoner(通称パイソナ)

どうよ?

156 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 09:37:43 ]
>>153,154
なるほど、ありがとうございました。

157 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 20:28:52 ]
アキュム(^^;)


158 名前:デフォルトの名無しさん [2010/05/09(日) 12:25:11 ]
すいません、linux(Ubuntu)のターミナルから
grg
とか
greagerag
とか適当にコマンドを打ったら、

/usr/bin/python: can't find '__main__.py' in '/usr/share/command-not-found'

と表示されるようになってしまったんですが、これ一体なんなんでしょう??
どなたか教えていただけると嬉しいです。

159 名前:158 [2010/05/09(日) 12:28:14 ]
bashの時だけなるようです。zshに変えたら普通に
command not found と出るようになりました。
bashrc見てみたのですが、変な記述は見当たりません。
どなたかおたすけください。。

160 名前:158 [2010/05/09(日) 12:41:26 ]
sudo apt-get install command-not-found
で解決しました。
どうやら打ったコマンドが見つからない時に「sudo apt-get install 〜〜〜」すれば
そのコマンドが使えるようになるよって教えてくれるpythonのプログラムがあったのですが、
python2.6を一回全部アンインストールした時にそのプログラムも削除されてしまっていたのが原因だったようです。
失礼いたしました。



161 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 00:23:58 ]
質問です
背景を黒にしたり文字の色を変えたりってのはtkinterなどのGUIの領域でしょうか?
なにか特別なものをimportすること無しに文字の色変えるなんてことは可能でしょうか?

162 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 00:35:58 ]
質問するときは
OSのバージョン
ツールのバージョン
環境を書けと教わらなかったか?

163 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 07:01:18 ]
>>161
www.shido.info/py/tkinter12.html
www.geocities.jp/m_hiroi/light/pytk03.html
この辺?

164 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 14:45:31 ]
ちょいと質問
例えば"東京"でググったら↓のURLになる
www.google.co.jp/search?hl=ja&q=%E6%9D%B1%E4%BA%AC&btnG=%E6%A4%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=&gs_rfai=

これを代わりに
www.google.co.jp/search?hl=ja&q=東京&btnG=%E6%A4%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=&gs_rfai=
でやっても同じ結果になる

python使って下の方のURLで開きたいんだけど
いい方法ある?

165 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 14:48:44 ]
>>> import urllib
>>> urllib.quote(u'東京'.encode('utf8'))
'%E6%9D%B1%E4%BA%AC'

とかすれ

166 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 14:51:02 ]
ありがとうございます


167 名前:デフォルトの名無しさん [2010/05/11(火) 14:52:03 ]
マルチ

168 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 14:55:13 ]
マルチ死ね
pc12.2ch.net/test/read.cgi/tech/1236529563/

169 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 15:05:59 ]
変換する方法があればそれでいいし、それはpythonに限ったことじゃないから文字コードスレに書いて
それ以外に方法があれば、それはpythonの話になるからこっちに書いたのですが
マルチとみなされたようでしたら、すみませんでした

170 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 15:19:38 ]
>>162
OS、環境など垣根なしの普遍的な質問かと考えましたもので
winxp、python2.6ですが、回答に何か影響あるでしょうか?

>>163
どもです
GUIか。。。どれでいこうか検討します
wxなあ。。。



171 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 15:23:43 ]
>>170
なんの背景なのか>>161からはわからないから環境を聞かれてるんだよ
コマンドプロンプトの背景色なのか、Tkinterで出したウインドウの背景色なのか
それともそれ以外なのか

172 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 15:28:10 ]
>なにか特別なものをimportすること無しに文字の色変える
この時点で少なくともtkinterは消えるわけで

173 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 15:35:07 ]
何が「特別」かは人それぞれだろう

174 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 15:36:51 ]
>>171
OSに限定せずテキスト周りの色変更は可能か否かを聞きたかったのです

175 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 16:16:41 ]
例えばどこに描画されたテキスト?

176 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 16:44:59 ]
>>175
例えば、IDLEとかです


177 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 17:07:56 ]
>>176
訂正
IDLEで実行して出力されるshell上にて現状出力されるのは青一色かと思いますが
それをこの文字は黄、この文字は赤、この文字の背景は黒など変更出来るものか
どうかってことです

178 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 17:08:51 ]
IDLEの使い方の質問ってム板じゃなくてマ板の方だっけ?

179 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 17:09:52 ]
>>177
Options -> Configure -> Hilights


180 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 17:25:23 ]
おまえらわざとだろw
解答者の質低すぎねえか?ww
解答者はとりあえず>>1嫁www



181 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 17:53:59 ]
>>179
それだとshell stdoutで変更できてもさらにその中身を細かく変更はできないですね
とりあえず意思疎通の仕方が難しいんだと言うことはよく分かりました
つまらない水掛け論になりそうなんで去ります さようなら

182 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 18:53:35 ]
おまえら大人げないな

183 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 18:56:42 ]
というか回答者の根気強さに涙した

184 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 19:28:31 ]
最初にプログラムの内の話なのか外の話なのか説明できなかったのが
そもそもの原因だな

185 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 19:41:30 ]
結局いまだに何をしたかったのか理解出来ていないんだけど
みんなは分かったの?

186 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 19:45:16 ]
質問者は知識が少ないのと自分の思い込みがあるから
どうしても説明が足りなかったりその道筋が正しいと
勝手な解釈をしてしまう傾向がある
一方で回答者はあれかもしれないこれかもしれないと
変に気を回しすぎるため質問者がどこで詰まっているかを
深読みすればするほどエスパーするのが面倒になる


187 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 21:26:51 ]
でっていう

188 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 21:55:14 ]
>>185
勝手な想像だが、Pythonでの文字出力に
色々色を付けたいってことじゃね?

【テンプレ】
PC ASUS Eee PC 4G-X (eMobile契約)
OS WindowsXP Professional
Tool Python 2.6 + IDLE
環境 2DK
質問 (40字以内)
検索 ぐぐる × やふー ×
   OKWave × 発言小町 △

189 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:31:05 ]
import sys
from ctypes import *
from ctypes.wintypes import *
GetStdHandle = windll.kernel32.GetStdHandle
GetStdHandle.argtypes = [c_int]
GetStdHandle.restypes = c_int
SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute
SetConsoleTextAttribute.argtypes = [c_int, c_int]
SetConsoleTextAttribute.restypes = c_int
SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition
SetConsoleCursorPosition.argtypes = [c_int, c_int]
SetConsoleCursorPosition.restypes = c_int
def cursor(h, y, x):
  SetConsoleCursorPosition(h, (y << 16) | (x & 0x0000FFFF))
def conattr(h, bg, fg):
  SetConsoleTextAttribute(h, (bg << 4) | (fg & 0x0F))
def puts(s):
  sys.stdout.write(s)
def cls(h, t, b, l, r, c):
  for j in xrange(t, b):
    for i in xrange(l, r):
      cursor(h, j, i)
      puts(c)
def beep():
  puts('\a')
h = GetStdHandle(-11)
cls(h, 0, 25, 0, 80, '.')
conattr(h, 1, 13)
cursor(h, 12, 30)
puts('abc')
cursor(h, 24, 0)
beep()

190 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 09:08:55 ]
オブジェクト指向のクラスのイメージが湧かない…Orz
みんpy買って読んでるけど意外にもわかりにくいな、この本
オレが頭悪いだけなんだろうなw

なんかオススメの入門書ってある?



191 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 09:12:52 ]
>>190
こだわらなくていい。オブジェクト指向信者はうざいだけなので。

192 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 09:15:29 ]
>>190
無理に湧かそうとしなくてもいいから安心すれ
Pythonでは名前空間や属性って考え方のほうがよっぽど大事だ

193 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 09:31:09 ]
>>190
無名の日本人が書いた本とIBMのサイトで記事を書いたりPythonの講習を何年間も行っている人が書いた本とどちらが良いと考えられるかは分かるんじゃない?

194 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 09:43:16 ]
>>193
前者ですねわかります

195 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 10:01:43 ]
虫が瞬殺されてて笑う(www

196 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 12:06:39 ]
>>192-195
ごめんなさい
超初心者なもんで勉強のしかたすらわからなくて…

無理にオブジェクト指向にこだわらなくてもいいんですな



197 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 15:47:33 ]
>>193
名無しのチンカスの言うことを信じる奴は居るの?

198 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 15:53:19 ]
>>196
そう、動いて読めればいいんですよ

199 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 18:51:39 ]
>>190
むしろPythonなんて、ほとんどのライブラリがオブジェクト指向だから
自然に覚えられないかな?

っていうより、オブジェクト指向でないものを知らないから、逆に
オブジェクト指向が何なのか分からないというのはあるかもしれんが。

200 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 21:12:25 ]
むしろPythonって、関数もオブジェクトだし、モジュールもオブジェクトだから、、、
っていうと、クラスとメソッドがオブジェクト指向と考えている人が混乱するなw



201 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 00:53:07 ]
いやーメソッドと関数をわけてみたらなんとなく頭の中で整理できてついでにオブジェクトがなんたるかが理解できてきた

202 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 19:06:49 ]
自分はなんとなくこれがオブジェクト指向かなとは思ってる気分でいるが全然違うかもしれない

203 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 20:51:27 ]
だがイテレータとかジェネレータとか出てきてまた混乱してきたwwww


204 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 22:25:24 ]
考えすぎて頭がイテレータ

205 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 05:41:08 ]
>>190
非オブジェクト指向から考えるといいよ。
例えば住所録の入ったcsvを読み込んで、XMLを吐き出すプログラムをライブラリを使わないで作る場合を考えると、
非オブジェクト指向だと

array = CSV読み込み(fileName)
addressList = アドレスリスト変換(array)
xml = XML生成(addressList)
書き込み(xml)

見たいにメインの入り口を作って、サブルーチンを作っていく感じになる。
またサブルーチンも、必要に応じてもっと細かいサブルーチンに分割していく。
単純明快で分かりやすく、短時間でちょっとしたツールを作るときは大抵このやり方になる。
まずはこのやり方を覚えてからオブジェクト指向の本を読めば、何が違うのかわかると思うよ。

206 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 08:08:09 ]
>>205
横からですまんがありがとう。つかマジ感謝
なんかこーなんだかあと少しで分かりそうな気がする
ちなみにそのXML吐き出すプログラムをオブジェクト指向でやるとするとどんな感じになるんでしょう?
救いの一手をざっくりでおねがいしまする

207 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 09:36:59 ]
>>206
# CSVを読み込んで任意のインスタンス変数に格納
xml = Foo(fileName)
# CSVを変換し任意のインスタンス変数に格納
Foo.アドレスリスト変換()
# XMLを生成して任意のインスタンス変数、self.xmlに格納
Foo.XML生成()
# 処理が終わったFoo.xmlを参照
書き込み(Foo.xml)

みたいな感じで処理を一つのクラスにまとめたりする
こういうのはコーダーによって違うからコード書いたり読んだりした方がいい

208 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 10:07:17 ]
これくらい短いとあんまりオブジェクトの恩恵ないような気がする

209 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 10:08:27 ]
例だw

210 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 11:04:42 ]
SmallTalkについてはどうなのか知らないが、少なくともC++とかLLとかに載ってるオブジェクト指向は
「こうあるべき」って理論から来てるんじゃなくて「こうできたら便利だよね」から来てる。

そこらへんを知らずに、いきなり「犬がワン、猫がニャー」の説明をされても分かるわけが無い。
まずはある程度プログラム組めるようになってからだと、すんなり受け入れられる。
そういう意味で>>205の考え方はすごくわかりやすい。



211 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 13:44:59 ]
>>206
設計は人それぞれだけど、1つ例を挙げるなら

addressList = AddressList(fileName)
xml = addressList.toXML()
xml.write(outputFileName)

こんな感じかな。
住所録っていう実在するもの(エンティティという)に対応したクラスを作って、
そのクラスに必要な操作を追加していく、って感じ。
プログラムの規模が大きくないと、メリットがあまり無いうえ、設計がキモで、
設計によって良いプログラム(再利用性が高い)にも糞にもなりうる。
他に継承やオーバーライドというキーワードがあるので調べておこう。

多少分かったら、次はポリモーフィズムやデザインパターンを勉強するといい。
これがオブジェクト指向が何たるを理解するための最短ルートだと思う。

212 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 15:47:59 ]
どんだけ横文字使いたいんだ
そういう気持ち悪いレスするから食わず嫌いがでるんだろ。

213 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 15:55:09 ]
206です
皆さん感謝
いやもうほんとなんか今ちょっと自分の中で何か分かりそうな
のどから手が出そうな感じになってます
これ見ながら参考書なんぞ片手にコード書きまくることにしまする

214 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 16:10:06 ]
>>211
デザパタはあくまでJavaのものだしなぁ。
C++とかじゃわりと使えるけど、Python的には使えないのも多い。

ポリモーフィズム(多態性)を継承によるものじゃなく、同じ方法でできるかどうかにまで拡張したのがダックタイピングだね。
オーバーライドは、Pythonみたいに変数(やメソッド名)が名前の束縛に過ぎず、ダックタイピングな考え方の言語では
特別なことしてるってよりはむしろ、普通の代入と同じ。


オブジェクト指向って言葉自体が抽象的なものだから、これがオブジェクト指向だ!ってのはない。
けど重要なのは、処理とデータをまとめてしまうこと、似たことは同じ方法でできるようにすること、
似たものを作るには、違う部分だけを作り直せばいいということ。

215 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 16:19:18 ]
>>212
この世界じゃ、横文字の単語が普通に使われてるから、知らないと
苦労するだけだよ。
しかも単語を日本語に直せば分かりやすくなるわけじゃないし。
↓みたいになっても分かりやすくはならないし、一般に使われていない
単語を使っても後々混乱するだけだよ。


住所録っていう実在するもの(実体という)に対応した級を作って、
その級に必要な操作を追加していく、って感じ。
算譜の規模が大きくないと、利点があまり無いうえ、設計がキモで、
設計によって良い算譜(再利用性が高い)にも糞にもなりうる。
他に継承や覆しという重要単語があるので調べておこう。

多少分かったら、次は多態性や設計類型を勉強するといい。
これが物指向が何たるを理解するための最短経路だと思う。

216 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 16:25:56 ]
直訳しかできない英語力でプログラミングするのはどうかと思う

217 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 16:44:39 ]
そんなに難しく考える必要ないよ
Pythonでは構造体やレコード型が無いし、そういうの使いたい時は
クラスだ
(まあ最近はnamed tupleってのがあるけど)

クラスはデータだけでなくデータの操作/手続きを一緒に持てるから、
そうしたほうが自然な手続きは一緒に持たせましょうというだけのことだ

逆に言えば、関数で構わないものは関数でいいんだよ
Pythonで必要も無いのにOOPにこだわる意味はゼロ

218 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 21:07:52 ]
>>215
煽りにも親切

219 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 21:56:40 ]
自演(w

220 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 23:13:38 ]
横文字なら各自好きに翻訳すれば大意は伝わる
犬がワン猫がニャーは翻訳しようがない
どちらがいいかと問われたら前者を推す



221 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 03:32:45 ]
自演(w

222 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 12:32:05 ]
今夜は自然薯でとろろ飯だな・・・


223 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 16:36:54 ]
アルファベットがいいならローマ字にすればいいじゃない
まさにCOBOL!

224 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 18:09:10 ]
自演(w

225 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 22:43:25 ]
import random
def testR():
return random.randint(1, 100)
class Test():
random.seed()
aaa = random.randint(1, 100)

a = testR()
b = testR()
c =Test.aaa
d =Test.aaa
print testR()
print testR()
print testR()
print a
print b
print testR()
print '-------'
print Test.aaa
print c
print d
print Test.aaa

seed()について質問です
def:今までseed置いてましたが今外してみると4つとも違う数字を吐く
初期化は不要ということでしょうか?

class:色んな所にseed置きましたがどの印字も同じ結果
(実行する度に違う乱数を吐く)
4つの結果を違うものにしたい場合何処にseedを置けば良いのでしょう
というかそもそも初期化の考え方が間違ってるのでしょうか?

226 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 22:45:40 ]
import random
def testR():
____return random.randint(1, 100)
class Test():
____random.seed()
____aaa = random.randint(1, 100)

インデントはこんな感じってことで

227 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 23:17:49 ]
>>225
randomはimportするときにrandom.seed()も実行されてるから初期化は不要

228 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 23:30:09 ]
>>227
そうでしたか
classのほうはclassを理解できてないからってことですかね
何から手を付けたらいいのかすら分からない状態でして

229 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 15:05:59 ]
質問です。
キーが全て整数の辞書dがあるとします。
ここでもしfor i in d:とやった場合、iにはキー値が小さい順に入る事が保証されてますか?


230 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 15:20:35 ]
no
試せば分かるだろ



231 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 15:53:54 ]
(i) < そんな大きいの・・・入りません・・・

232 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 17:15:38 ]
dictの取り出し順はランダムだと思って使う
順序関係が欲しいならsorted()に渡すなりなんなりする
2.7/3.1にはodictだかOrderedDictだかが入るらしい

233 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 17:29:15 ]
これで使いやすかった日にはnamedtupleちゃんの立場がなくなるのか

234 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 17:33:48 ]
namedtupleちゃんにはimmutableって存在意義があるだろ

235 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 17:51:38 ]
namedtupleちゃんはimmutableなこと自体に意義があるっていうか
順序保持する辞書のように使えることに意義があったんじゃないのか
本物が出てきたらお役ごめんだろう

と思うんだが素敵な使い方があるのかもしれない

236 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 18:08:58 ]
>>230
保証なしでしたか。
試してみたら順番に出てきたっぽかったので・・・

また別件なんですが、リスト内包で、例えば[str(i) for i in range(10)]とやると、このiは内包の外に出てきちゃうんですね。
内包はスコープ作ってくれた方が良いのに。
for i in...とやってるfor分の中でうっかりこんなことしたらおかしくなりました。


237 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 18:20:16 ]
>>227
228です
となるとseedというのはどういう時に使うのでしょう?
毎度違う乱数を得たいときに使うものだと思ってたのですがこの考え方は間違ってるのでしょうか?

なお、その後継承して新しいクラスを作って実行すればどうにか違う結果が出ました
どうにも遠回りな感じがするのですがこれ以外に解法はないんでしょうか

238 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 18:32:56 ]
>>237
横だが
> となるとseedというのはどういう時に使うのでしょう?
同じseedを与えると乱数を発生させたときにいつも同じ値が返る。
>>> import random
>>> random.seed(100)
>>> random.randint(1, 100)
15
>>> random.seed(200)
>>> random.randint(1, 100)
5
>>> random.seed(100)
>>> random.randint(1, 100)
15
>>> random.seed(200)
>>> random.randint(1, 100)
5

239 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 19:07:30 ]
Pythonの辞書はソートされて出てくるよ

240 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 19:17:20 ]
>>239
具体例



241 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 19:17:31 ]
>>238
自分もそのつもりでいたんですが
>>225において書いた通り
seedを置かなくてもdef testR():は呼び出す度に違う数字を返します
(自分はずっとseed置いて毎回初期化してるつもりでいました)

一方class Test():は何度呼び出しても同じ数字を返してきます
seedの置き場所がまずいのかそもそもなにか根本的に間違ってるのか

seed()はシステム時計から値をとるなら呼び出す度に違う数字になるかと思うのですが

242 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 19:18:38 ]
> python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> d = dict()
>>> d['a'] = 100
>>> d['z'] = 200
>>> d['b'] = 300
>>> d.keys()
['a', 'z', 'b']

('A`)

243 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 19:59:48 ]
デマ乙
>>> d['c'] = 400
>>> d.keys()
['a', 'c', 'z', 'b']


244 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 20:07:18 ]
>>242>>239に対してね

>>241
randomが生成する乱数の列は「決定論的」
例えばseed(1)で初期化したrandomは毎回同じ数列を返す

>>> import random
>>> random.seed(1)
>>> for i in range(10): print random.randint(1, 100),
...
14 85 77 26 50 45 66 79 10 3
>>> random.seed(1)
>>> for i in range(10): print random.randint(1, 100),
...
14 85 77 26 50 45 66 79 10 3

あとクラスの中の文はクラスオブジェクト生成時に「一度」実行される

>>> class Foo(object): print 'in Foo'
...
in Foo
>>> Foo()
<__main__.Foo object at 0x02567490>
>>> Foo()
<__main__.Foo object at 0x0256EF90>

245 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 20:19:08 ]
>>244
なるほど
非常にわかり易い解説ありがとうございます。感謝

246 名前:243 mailto:sage [2010/05/17(月) 20:30:45 ]
>>244
ゴメンよ

247 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 21:50:11 ]
プログラムすら初心者なんですが、最近ようやく勉強の仕方がわかりだした
文献も大事だけどウェブ上のほうが噛み砕いた説明をしてくれてる人が多いから初心者にもわかりやすい


248 名前:デフォルトの名無しさん [2010/05/17(月) 22:11:44 ]
実際みんなのPython半分読んだけど、具体的に役に立つ事ができる気がしなかった(汗
仕事で使うわけではないから、諦めるのもありなんだけど・・・ただセンスないだけか・・・
まだ学習不足?


249 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 22:34:34 ]
みんなのPythonの著者のセンスがないだけ

250 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 22:35:42 ]
スクリプト言語なんて構えて勉強するほどのもんじゃないでしょ
○○作りたいって思いついたらライブラリカジってなれればいつの間にか身についてる



251 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 22:42:23 ]
だよな
趣味ならますますそうだわ
自分のペースで何作ってもいいんだから
本なんて読んでる暇があったら何か作ればいいのに

252 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 23:00:24 ]
>>248
センスが悪いと自分にレッテルを貼るのはやれることを全部やってからにしる

役に立つプログラムを書いてる連中だって
本一冊読んですぐ書けるようになったわけじゃないんだ

253 名前:248 [2010/05/17(月) 23:01:28 ]
マジですか
とっても参考になりました。
ありがとうございます。
基本的なルールだけは身につけて、あとはライブラリで頑張ります。
趣味なのでゆっくりじっくりとやってみます。


254 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 23:01:50 ]
虫が瞬殺されてて笑う(ww

255 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 23:08:41 ]
虫(バグ)は潰されるためにあるのです。

256 名前:デフォルトの名無しさん [2010/05/18(火) 00:06:28 ]
RubyにPythonを仕込みたいのですがどうすればよいのでしょうか

257 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 00:26:23 ]
>>248
自分もみんパイは意味がわからなかったスw
多分著者にセンスがないw

ウェブ上で調べてみんパイ見て自分なりの解釈をする→自分なりにみんパイを元にいろいろ試してみる

を繰り返してボカァなんとか理解してきました

実際に何か作ってみたいんですけどねぇ・・・どんなことができるのかが分からないのが初心者でもアルんですw


258 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 00:50:45 ]
本を買うのは、買うこと自体がモチベーションになる人だけでいいよ
>>250みたいにとりあえず手を動かした方が早い
別に汚くても目的が達成できればいい

259 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 00:57:43 ]
虫が瞬殺されてて笑う(ww

260 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 13:05:22 ]
俺もwxpythonでオブジェクト指向の利便性を理解できたな
pygameなんか関数で作ってたけどクラスにした方が早かった



261 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 14:55:50 ]
学習と実践は別だよね。
Python以前の話ではないでしょうか。

262 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 17:08:15 ]
>>235
namedtupleは順序付き辞書の代わりじゃなくて、構造体の代わりだろ……

263 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 23:27:44 ]
関係ないけどみんpyってなんで評価されてんの?
こんな支離滅裂でまとまってない本が売れてる意味がわからん

日本語の文法おかしすぎすし

264 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 23:56:53 ]
Pythonの手ごろな入門書が手薄なところに
たのしいRubyと同じサイズの版型でソフトバンクから出したから

265 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 23:59:58 ]
>>263
評価されてるように見えるのは
著者の自作自演だからw

266 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 00:26:04 ]
>>263
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし
>日本語の文法おかしすぎすし


267 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 00:27:17 ]
虫が瞬殺されてて笑う(www

268 名前:デフォルトの名無しさん mailto:hage [2010/05/19(水) 00:29:48 ]
日本語の文法がおかしすぎすキチガイはjava-jaとか勉強会詐欺に騙されてろ(WW

269 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 00:40:40 ]
しゃれの解らん人が多すぎてw
そんなに>日本語の文法おかしすぎ寿司を連発しなくてもいいですよw

日本語の文法→おかしすぎ寿司で…まぁいいや
アホは揚げ足と言葉遊びの区別がつかんのだろうからw

そんなこと指摘されると思ってなかったから度肝抜かれた感100ですわw

270 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 00:42:04 ]
虫が言い訳してて笑う(ww



271 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 00:44:42 ]
キチガイは詐欺価格のケーブルでも売ってろ(wWwwwWWwww

272 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 01:21:19 ]
勉強会詐欺とかいう単語、こことお勉強スレでしか見ないんだけど、
誰か1人が頑張ってFUDしているようにしか見えない。

273 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 01:23:43 ]
虫虫言ってるアホとキチガイしか言えないアホ

以上をremoveメソッドで味わってください

274 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 01:24:45 ]
ガチ初心者が見たら気持ち悪がるから本スレでやっておくれ

275 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 01:42:13 ]
うん、キモいね。

276 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 01:48:48 ]
java-jaの出番が訪れたようだな・・・

277 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 02:01:44 ]
このスレはガベージコレクション内蔵してないの?

278 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:25:14 ]
>>273
>以上をremoveメソッドで味わってください

日本語がジューシーすぎる。

279 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 20:09:58 ]
enumerateって、どんな時に使うと便利なの?

280 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 20:28:49 ]
foo = ["bar", "baz", "bax"]
for f, i in zip(foo, range(len(foo))):
  print f, i

enumerate使うとスッキリする



281 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 23:01:48 ]
emumerate使ってないがな!

282 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 23:14:36 ]
>>281
俺は>>280じゃないけど
>>280のコードをenumerate使って書き直すとスッキリ書けるよ、ということだよ

283 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 19:05:33 ]
すみません。ここで聞いていいことかどうか分かりませんが、教えてください(ご誘導ください)。
利用サーバー:さくらインターネット プレミアム(さくら質問スレよりここへ来ました。)

SSH接続して、サイトマップを生成しています。(cronでも毎日一回実行)
<こちらを参考にしました>senrioka-info.net/0_google_sitemap/sitemap_generator.htm

python sitemap_gen.py --config=config.xml

ところが、冒頭に警告メッセージが出るようになりました。ただし、サイトマップは生成できます。
sitemap_gen.py:65: DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5

「md5モジュールは非推奨で、代わりにhashlibを使いなさい」ということだと思うのですが、
具体的にどうすればよいのでしょうか?
確かに、sitemap_gen.pyの65行目には、import md5とあります。

今までずっと気付きませんでしたが、
過去のcronメールを見ると、2009/6/25以降からずっとこの警告メッセージが冒頭につくようになっていました。
サーバーの仕様が変わったのかもしれませんが、よく分かりません。
サイトマップ自体の生成に問題はないような気もしますが、警告が毎回出るのはすっきりしません。

よろしくお願いします。

284 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 19:21:42 ]
import md5 -> import hashlib
md5.new(...).digest() -> hashlib.md5(...).digest()

-> の左を右に変えればたぶん動く
よくわかんなかったら親切な人がパッチくれるのを待って

285 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 19:25:05 ]
import hashlib as md5
ですべて解決

286 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 19:39:53 ]
しないぞ
hashlibとmd5じゃnewの引数がぜんぜん違う

287 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 20:07:17 ]
>>283
問題は解決されないけど、とりあえずエラーをしかとする方法
stackoverflow.com/questions/879173/how-to-ignore-deprecation-warnings-in-python

288 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 20:23:17 ]
じゃあ>>285
md5.new = md5.md5
を追加

289 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 21:21:19 ]
déjavèw?

290 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:07:10 ]
pyscripter1.9.9.7の補完リストのフォントを変更する方法ってわかる方いますか?

できればフォントサイズだけでも大きくしたいんですが…



291 名前:デフォルトの名無しさん [2010/05/28(金) 09:40:27 ]


292 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 11:59:53 ]
デストラクタが呼ばれることと、
名前が無効になることは別問題だな。

デストラクタがやりたいなら少々面倒だが、with statement という構文がある。
名前束縛を消したいならちょっと上で出てる del を明示的に使うしかないかな。
Pythonのスコープはグローバルと関数内ローカルの2つしか無かったと思う。
(クラスメンバはどうだったか忘れた)。
少なくともブロック全てがスコープになるC++と同じにはできない。

293 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 12:10:43 ]
リバースエンジニアリング ―Pythonによるバイナリ解析技法が欲しい

294 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 13:29:38 ]
import re
re.search = 'uhouho'

のように書くとモジュールの中身を破壊できてしまいますが、こういう仕様なんですか?
ちょっと怖いです。

295 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 13:52:55 ]
そんなもんです。書き換える方がおかしいので

296 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 17:29:12 ]
モジュールの中身を書き換えるというのはおかしい。
Pythonの現行プロセスのみだよ、それが有効なのは。
reload すれば元に戻る。

297 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 18:55:40 ]
変更されんの?
モジュールオブジェクトが属性の書き換えを禁止してないだけ
すんなの一言で済むから妙な実装しなかっただけだと思ってる

298 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 19:25:24 ]
>>294
どこが「怖い」のか良く分からない
自分で外部モジュールをインポートしておきながら、
事故やミスでそのモジュールの属性を上書きするようなコードを記述することは
無いと思うんだが

意図的だとして、そういうこと(モンキーパッチ)が「出来る」のは普通に便利だぞ
例えばeventletは、そうやって組み込みのソケットやそれを利用するライブラリに
実行時パッチを当てて、ソケット操作を非同期でコルーチン上で実行するように
している


299 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 19:40:54 ]
だったらその辺のモジュールファイルを全部読み取り専用にしたらどーなんだろ

300 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 03:30:30 ]
>>294 が ruby の Rails なんか見た日には卒倒するだろうな




301 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 09:38:50 ]
rubyは言語の中身を破壊できてしまうのでpythonより上。

302 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 10:11:40 ]
del __builtins__
dir() # NameError

303 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 18:34:52 ]
誘導されたんだけど、
Ubuntu10.04なんだけど

最初 django-admin.py startproject xxxx が実行できなくて
しょうがないから PATH 通して実行したんだけど
今度は作成したプロジェクトフォルダで manage.py runserver ってやっても
実行できない
これって何が原因なの?Pythonスレで聞くような事じゃ無いのかもしれないけど
なんか設定必要?

304 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 18:47:17 ]
django使ってる人ってなんでこんなにバカっぽいの?

305 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:06:16 ]
>>303
どんなエラーが出てるか略さずに書いた方がいいよ

306 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:08:32 ]
>>303
Pythonルートとsite-packagesのPATH通して.pyに関連付けしてあるか確認しろ

307 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:31:33 ]
Djangoスレあるよ
過剃ってるけど

【Python】Webフレームワーク Djangoスレ Part1
pc11.2ch.net/test/read.cgi/php/1156612854/

308 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:33:21 ]
2006年のpart1(x
まぁpygameよりはマシか

309 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:41:15 ]
>>303
質問するときには、「エラー」とか「動かない」とかだけじゃだめ。
実際に実行したコマンドと、表示されたエラーメッセージをそのままコピペして。

310 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 23:58:34 ]
BlenderでPythonを使いたいのですが
おすすめの解説サイトなどございませぬでしょうか。
わたくしは、Blenderのコマンドをどうやって調べるのかすら知らない程の初心者ですが
宜しくお願い致します。



311 名前:310 mailto:sage [2010/05/31(月) 00:04:40 ]
大変申し訳ございませんでした↓↓
blenderのスレに行って自己解決しました↓↓
何も考えずにレスしてしまってごめんなさい↓↓

312 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:08:06 ]
↓↓

313 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:08:27 ]
どういたしまして↑↑

314 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:10:53 ]
↑↑↓↓←→←→

315 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:13:54 ]
ニア必殺技
←→←
キー入力ミス!

316 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:17:38 ]
blenderってネーミングがかっこいいわ

317 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:21:36 ]
planterみたいでかっこわるい
蘭のプランター、なんつって

318 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 10:33:57 ]
蘭のプランター

何それかっこいいいいいいいいいい!!!!!!!!!!!!

319 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:03:55 ]
Pythonダウンロードしました。
最初に打つ基本的なコードを幾つか教えてください!

320 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:12:53 ]
import this



321 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:43:18 ]
>>320
やって見ました!!もう感動です!
ありがとうございます。

322 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:16:09 ]
a = [[0] * 5] * 5
a[0][0] = 1
print a

実行結果
[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]

これが納得いきません
普通の2次元配列なら[0][0]の要素だけが1になるはずだし
*で単純にコピーされてるなら全部1になるはずですよね?

323 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:24:19 ]
自分で分かってるじゃん

aはリストのリストであって2次元配列ではないし
*はディープコピーは行わないから、そうなるんだよ

324 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:27:07 ]
>>> a = [[[]] * 5] * 5
>>> a[0][0].append(1)
>>> print a
[[[1], [1], [1], [1], [1]], [[1], [1], [1], [1], [1]], [[1], [1], [1], [1], [1]], [[1], [1], [1], [1], [1]], [[1], [1],
[1], [1], [1]]]

325 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:53:19 ]
んむむ…

326 名前:323 mailto:sage [2010/05/31(月) 20:20:25 ]
よく読んでなかったw
それ、本質的には以下と同じだよ

a = 0
b = a
a = 1
(bは0のまま)

a = [ 0 ]
b = a
a[0] = 1
(b[0]は1になる)

a = [ 0 ]
b = a
a = [ 1 ]
(bは変わらず)

327 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 20:29:28 ]
理解するには図を書くといいとおもう
a -> [ b, b, b, b, b ]
b -> [ c, c, c, c, c ]
c -> 0
こうなってるのが、

a -> [ b, b, b, b, b ]
b -> [ d, c, c, c, c ]
c -> 0
d -> 1
こうなる

328 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 20:35:50 ]
a = [[0] * 5 for _ in range(5)]
これでよくね?

329 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:12:47 ]
どっちを値渡し・参照渡しと呼ぶべきかいつも一瞬わかんなくなる…

330 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:17:30 ]
>>> x = [ set()] * 5
>>> x
[set([]), set([]), set([]), set([]), set([])]
>>> x[0].add(1)
>>> x
[set([1]), set([1]), set([1]), set([1]), set([1])]



331 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:26:38 ]
仕方ないから
b = [[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
これ使います

332 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:27:37 ]
行列計算みたいなのやりたければ
numpy超オススメ
無理に標準のlistでやることないよ

333 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:06:58 ]
>>329
Pythonは全て参照渡し
変更不能オブジェクトなら>>322の(a[0][0] = 1)とかできないから
問題が起きないだけ

334 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:49:09 ]
入門書嫁。

335 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:50:39 ]
チュートリアルの該当ページのURL貼ってよ

336 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:00:53 ]
>>333
それどこに書いてあったのか教えてくれ
intに収まる範囲なら即値でやってると思うんだが

337 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:06:11 ]
intobject.c

338 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 01:11:47 ]
うーむ横からだが
上の話でなんとなく理解した気でいたが
>>>a = [[0] * 5] * 5
>>>a[3][4]=5
>>>a
[[0, 0, 0, 0, 5], [0, 0, 0, 0, 5], [0, 0, 0, 0, 5], [0, 0, 0, 0, 5], [0, 0, 0, 0, 5]]
なんでこーなるのかが分からん
list index out of rangeならまだ何となく納得出来るんだが

339 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 01:30:30 ]
>>> map(id, a)

340 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 01:54:53 ]
>>338

>>>a = [[0] * 5] * 5

>>>b = [0] * 5
>>>a = [b] * 5

>>>a[3][4]=5

>>>b[4] = 5



341 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 04:10:32 ]
>>339
なんか混乱したけどなんかわかってきた!
>>340
なるほど納得トン

なんかややこしいなあw
結論としては俺もnumpy入れるわ

342 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 04:23:54 ]
Enthought Python Distribution入れてるから重いのかな

343 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 09:28:05 ]
全くのプログラミング素人なのですがPythonを勉強してみようと思い、
チュートリアルの和訳や書籍「初めてのPython」を読み始めてから
いろいろ調べてみますと、Pythonに関わらず言語の習得前には
C言語の習得が基本のような気がしてきました。
遙か以前、学生の頃購入し挫折したC言語の入門書を開いてみたのですが、
どの程度までC言語を勉強したあとPythonに移行すれば良いのでしょう?

Python等はメモリ管理や変数の型など、C言語に比べ自動化されて
便利になっているが、初心者はC言語によるPCの動作原理を知っておけと言う
意味だと解釈しているのですが・・・

344 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 09:50:40 ]
無理にC言語を覚えるのもあれだけど
PCのリソース関連だったり基本的な仕組みくらいは知っておいた方がいい
もしC言語やってからPythonに挑みたいなら、構造体あたりまでは学習した方がいい。
なぜならそこら辺まではPythonにも似てる所が結構あるし、C言語より使い易くて感動したりできる。

345 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 10:35:14 ]
>344

なるほど、構造体ですか。
手持ちの入門書の最終章一つ前が構造体の章でした。
とりあえずC言語の入門書一冊分を読んで理解できてから
Pythonを勉強してみようと思います。
レスありがとうございました。

346 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 14:45:32 ]
効率の良いプログラムを書くのにメモリのことを把握しておいた方が良い
それで静的型付けでポインタもあるCの学習は最適
でもPHPやJavascriptの方が見た目はCっぽい

347 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 16:07:37 ]
買う本間違えると,遠回りをするだけでなく変な虫まで付いてくるという例。

348 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 17:45:02 ]
>>343
「プログラミング言語C」
この一冊マスターしとけばオケ。


349 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 17:49:25 ]
普通PythonなんてASMやらCやらJAVAやらマスターしてから使うよな。


350 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 18:22:24 ]
マスターはしなくてもいいと思うがその言語での考え方とかは知っておいたほうが良いよね。



351 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 18:45:43 ]
プログラム言語全般に言えることだろ
使えないより使えた方がいいし、たまに応用の知識も得られてお得

352 名前:デフォルトの名無しさん [2010/06/01(火) 20:37:42 ]
別にCやってからPythonじゃなくて
いきなりPythonで良いと思うが
Cも理解出来ないような頭じゃ
遅かれ早かれPythonでも挫折するだろうな

353 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 20:43:52 ]
Rubyでいいよ

354 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 20:58:14 ]
>>348
K&Rを初心者に勧めるのはやめたほうがよさげ。
あれの場合Unixの知識まで必要になるし、内容も初心者向けではない。

355 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 21:05:04 ]
なるほど、勉強になる
オレもCから入ることにする

356 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 21:23:06 ]
Pythonの本って読んだこと無いんだけど、あんましっかり書かれた本が無いのかね
昨日の>>322のような問題は、他言語経験者なら簡単に理解できるだろう
(ポインタや参照型、といった概念を通して)

でもPythonでプログラミングに触れる本物の初心者が理解するには、
Lispの本でよく出てくるconsセルのボックス表記みたいな図を通して
Pythonの変数とオブジェクトのモデルを理解させる必要があるように思う

そういうしっかりした学習ルートが無いのなら、確かに他の言語から入ったほうが
近道かも知れないね

357 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 21:27:35 ]
いや、Cから入るのは多分望ましくない気がする。

Cで「コンピュータ・アーキテクチャ」を知っておくというのならお勧めできるのだが。

『プログラムはなぜ動くのか』という本にあるような事柄を知るためにね。

まあ、PythonとCを並行して勉強するのが理想なのかもしれない。



358 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 21:27:46 ]
前の質問を引き合いに出すとかタチ悪いわ

359 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 21:42:18 ]
>>356
その辺りのことは、

『初めてのPython』www.amazon.co.jp/dp/4873113938
の「6章 ダイナミックな型付け」に図も含めて詳しく書かれてあった。




360 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 21:45:01 ]
>>357
こういう風にやたらと改行するやつなんなの?



361 名前:357 mailto:sage [2010/06/01(火) 21:48:52 ]
>>360
すまん。普段折りたたみ表示で書いているので、コピペミスでこうなった。

362 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 22:12:25 ]
>>359
ありがとう、その辺がちゃんと書いてあるんなら、問題ないかも知れないね

363 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 23:43:47 ]
ありゃー…wxPythonの日本語解説サイト消えちゃったのか…


364 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 02:49:21 ]
>>360
空行が多いのは、ほぼ携帯と思っていい


365 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 02:53:48 ]
       /:::/::::::::;: --- 、:::::::::|::::::::ヽ
        |::::|:::::::├――┤:::::::l::::::::::|
        |:::」.ィ ┴――┴‐- L::::::::|
       |´ : | , -‐ 、   ‐- 、| `T ト、     ありゃー
       l: : : |{  じ   じ  }: : :V::::::}     解説サイトとうとう死んじゃったのか・・・
        〃!: : | ー      ー | i: : }_/
      / |:i ; | u   '     jイ : ハ
          l:ト、:ト .  ^TTIト .イ/: /: :ヽ
       | ヾ ィ>イl川´}∨∠ェー ´
       _.. ヘ ヽ 川||/  ハー- ._
    , ィ''´    }  ンrtく  {      /ヽ
   /  l 、\ {_/ |o| \_}     /  ,
   {、 l  >--\   |o|     、 ,′   、
   ハ_} / _二ヽ \ Ll       V/     ヽ
   {  /   -- 、ン‐ヘ         {i   __}
   に7  ‐ァ-一'’_¨二\二二¨ `Y⌒ヾ_-―‐ノ
  //  /ヽ、<´ ミ=三ゝ=ミ `>ノ ノ  `ヽ |

366 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 08:57:19 ]
>>356
間接参照の概念の理解という点に関しては、、Cが一番理解しづらい(というか面倒くさい)と思う。
ポインタの本はいっぱい出てるのに間接参照の本が出てるのは見たことがない。
ポインタには余計な機能がいっぱいついてる分、理解しづらい側面があるんだろう。

367 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 15:06:09 ]
機械語の知識があれば一目瞭然だからだろ

368 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 16:12:12 ]
まあ具体的物理的メモリレイアウトの理解無しでは結局Cのコードは書けんし
そういう意味でアセンブラからやった方が早いぜと考える人は多いかも知れんね
別にCから入るのも「無理」ではないけど
Cの場合は具体と抽象の両面を理解する必要がある

369 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 17:30:13 ]
いや、普通はCから入るから。識者ぶって意味不明なこと言わないように

370 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:11:59 ]
別に意味不明なことは書かれてないようだが?

まあ、たしかに電子系・組み込み系の人なら普通はCからだろうね。
あと、段階的にカリキュラムを進めていける大学の授業とか
(それでもあのMITとかでも最近はPythonから教えるみたいだけど)。

それにしても、(超?)初心者用にしては厳しすぎる
コメントが多いなあこのスレって。
こんなんじゃ>>353みたいなのに客を取られてしまうぞ。






371 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:16:14 ]
本スレ(?)が荒らされてるから
初心者以外がここで暇つぶしてるんでしょ

372 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:20:31 ]
実際、日本の初心者はRubyで良いよ。MITで教えるとか言ってる方が寒いから

373 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:36:44 ]
プログラミング自体初心者で日本語しか読めない人はそうかもね

374 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:37:52 ]
    R    し!     _  -── ‐-   、  , -─-、 -‐─_ノ  R
  小 u     // ̄> ´  ̄    ̄  `ヽ  Y  ,  ´     )  u え
  学 b     L_ /                /        ヽ  b  |
  生 y     / '                '           i y  マ
  ま が    /                 /           く !? ジ
  で 許    l           ,ィ/!    /    /l/!,l     /厶,
  だ さ   i   ,.lrH‐|'|     /‐!-Lハ_  l    /-!'|/l   /`'メ、_iヽ
  よ れ   l  | |_|_|_|/|    / /__!__ |/!トi   i/-- 、 レ!/   / ,-- レ、⌒Y⌒ヽ
  ね る   _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ      ,イ ̄`ヾ,ノ!
   l の  「  l ′ 「1       /てヽ′| | |  「L!     ' i'ひ}   リ
    は   ヽ  | ヽ__U,      、ヽ シノ ノ! ! |ヽ_、ソ,      ヾシ _ノ _ノ
-┐    ,√   !            ̄   リ l   !  ̄        ̄   7/
  レ'⌒ヽ/ !    |   〈       _人__人ノ_  i  く            //!
人_,、ノL_,iノ!  /! ヽ   r─‐- 、   「      L_ヽ   r─‐- 、   u  ノ/
      /  / lト、 \ ヽ, -‐┤  ノ  キ    了\  ヽ, -‐┤     //
ハ キ  {  /   ヽ,ト、ヽ/!`hノ  )  モ    |/! 「ヽ, `ー /)   _ ‐'
ハ ャ   ヽ/   r-、‐' // / |-‐ く    |     > / / `'//-‐、    /
ハ ハ    > /\\// / /ヽ_  !   イ    (  / / //  / `ァ-‐ '
ハ ハ   / /!   ヽ    レ'/ ノ        >  ' ∠  -‐  ̄ノヽ   /
       {  i l    !    /  フ       /     -‐ / ̄/〉 〈 \ /!

375 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 18:38:28 ]
>>370
お前こそ2ch初心者か?ここは合わなさそうだな、さっさと出て行け。

376 名前:370 mailto:sage [2010/06/02(水) 19:13:12 ]
>>371
そうか。教えてくれてありがとう。

>>375
すまん。書き込み内容が寒い、ここに合わないことは確かだ。
いや、初心者ではないのだが久々だったので。
さっさと出て行くことにする。どうか、これ以上荒れないように頼む。

377 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 19:21:57 ]
本スレでやれ

378 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 19:52:55 ]
とりあえずみんなのPythonだけは超初心者には意味が解らなかった
オライリーの初めてのPythonのほうがまだ意味が解る

379 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:28:29 ]
チュートリアルはC++知らなかったら多分投げてた

380 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:32:21 ]
>>333

じゃあこれは嘘書いてるの?

The actual parameters (arguments) to a function call are introduced
in the local symbol table of the called function when it is called; thus,
arguments are passed using call by value (where the value is always
an object reference, not the value of the object).

docs.python.org/tutorial/controlflow.html




381 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:58:12 ]
>>380
文脈的に、どうみても関数呼び出しとは何の関係も無い話だったから
「全ての型が参照型である」というつもりの話なんだろうと
スルーしてたな俺は

関数呼び出しは参照渡しか値渡しかで言えば勿論値渡しが正しいけど
参照型の値渡しって独特だから
call by sharingとかいう呼び方もあるみたいだね
ttp://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing

382 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 23:28:38 ]
いわゆる「すべてはオブジェクト」ってやつだろ

383 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 03:54:11 ]
参照を理解している人 = >>7を理解できる人

384 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:05:53 ]
>>383 はヤレば出来る子

385 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:31:58 ]
>>7
map(add, it, it)
>it.next() + it.next()
ab
cd
ef
gh
>StopIteration

どこに参照がでてくるの?

386 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:49:20 ]
>>> map(operator.add, it, it)
['ab', 'cd', 'ef', 'gh']
>>> map(operator.add, iter('abcdefgh'), iter('abcdefgh'))
['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg', 'hh']

387 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:51:17 ]
>>385
>>383ではないが
itと、mapに渡ってくる第2、第3実引数が同じオブジェクトインスタンスを
「参照」してるから、そういう動きになるんだろ

388 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 15:05:05 ]
Python使うとなんでも参照になっちゃうな
この程度なら小学生でもわかるだろうし、いちいち意識してたらやってられんぞ

389 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 15:26:35 ]
薄いCのラッパーで参照が絡むとイケてないよね

390 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 21:55:36 ]
>>385はあんまり分かっていない子



391 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 23:52:05 ]
俺は分かっている子!
そう思っていた時期が(ry

392 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:43:40 ]
import csv
reader = csv.reader(file("a.csv", "rb"))
for name, body in reader:
 print name, body

csvモジュールを使ってcsvファイルからデータを読み込んでprintするプログラムですが、
130行以上のファイルだと下記のエラーが出ます。

ValueError: too many values to unpack

130行以上のcsvファイルの場合はどう対処すればいいんでしょうか?

393 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:51:58 ]
んー、それは129行ずつに分割するしかないなー

394 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:55:08 ]
130行以上でなくてa.csvの130行目が2要素以上あるんでしょ
for row in readerみたいに一つの変数で受けて len でチェックすれば?

395 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 01:29:10 ]
>>394
ありがとうございます。
ちゃんと確認したらcsvファイルの130行目のデータが間違った形式になってました。
直したら問題なく処理できました。

396 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 07:50:00 ]
>>393はあんまり分かっていない子?

397 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 08:33:11 ]
お前はなんも分かってないおっさん

398 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 09:29:19 ]
>>397
そんな顔真っ赤にすんなよw

399 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 12:11:33 ]
>>383辺りから馬鹿な流れ作ってる奴なに?>>7本人?

400 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 12:37:18 ]
別に7は単純なコードだけどとても参考になるのは違いない
だからといって強引に流れに絡めるのは低脳Ruby厨に違いない



401 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 09:41:09 ]
>>383 = >>11こそが真理。本人が言うんだから間違いない。

402 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 10:37:16 ]
>>11からずっと>>7にこだわってるわけ?いい加減にしてくれ

403 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 11:17:54 ]
こだわってるわけじゃなく深い感銘を受けたってことじゃないの

404 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 12:11:18 ]
>>402
そこから400近くなるまで、ずっと出てこなかったのに?
関連してる話が出てきたら、前の方で出た良レスを引っ張ってくるのはごくごく当たり前のこと。

405 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 12:53:07 ]
じゃあ>>7をテンプレ化して次スレにも貼りつけることだな

406 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:14:00 ]
>>405
お前自分で言ってることがおかしいってわかってるんだろw
それともあれか>>385あたりの理解できずに文句いわれた人?
だったら完全にお門違いだろ

>>399
別に馬鹿な流れじゃない
むしろ今こそ馬鹿な流れだ

407 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:29:01 ]
○○は出来る子とか○○は理解してる人とか、つまりいかにも自画自賛する幼稚な流れを馬鹿だと言ったんだが

408 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:38:05 ]
おまいらほかでやってくれよ

409 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:40:27 ]
本スレが腐り過ぎてこっちにも浸食してきたか

410 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:50:45 ]
いろんな言語のスレあるがpyてょnは間違いなくひどい部類だな
天下のググるが使ってるって本当なのかと疑いたくなる



411 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:54:34 ]
まずは自分の頭がひどくないかを考えてみた方が良いよ

412 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 15:08:50 ]
Ruby最強ということでFA?

413 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 15:10:52 ]
それはない

414 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 15:11:33 ]
つーか結局、このスレを荒らしてた奴はRuby厨かよ。敵対心強過ぎw

415 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 15:29:57 ]
ここで颯爽とjava-jaが登場

416 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:24:40 ]
java-jaって何?

417 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:26:51 ]
そういうコミュニティがあるんだが
まあ気にするな

418 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:37:24 ]
ジャバじゃ

419 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:43:27 ]
ジャルーザダマジャの兄さんかなんかじゃね

420 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:49:29 ]
Come Cleanの人か
なつかしいな



421 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:42:26 ]
pygameを使いたいんだけど。
idle ではコード補完が利いたり効かなかったりするんですけど
pygame. の後に候補が出てほしい
わかるひとおしえてください

422 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:21:06 ]
はじめまして 他言語からPythonをちょっとかじってつまづいてます。

def get_location():
if self.is_gps:
str = 'これはGPS'
else:
str = 'これはGPSなし'
return str

def is_gps(self):
list = ('841SHs','942SH','943SH')
return self.model in list

のような関数を内蔵したクラスを外部から呼んでmodelに'V801'を代入してからget_location()を呼ぶと
これはGPSって言われます。なにかまずいことやってますでしょうか?教えてください。
よろしくお願いします。

423 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:22:24 ]
あ・・・インデントが消えてしまった・・・ すみません脳内補完お願いします。orz

424 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:39:22 ]
>>422
self.is_gps 関数オブジェクトなので True
self.is_gps を呼びたいのなら self.is_gps()

ほかの言語使えるなら公式チュートリアルお勧め

425 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:20:30 ]
>>424
うあああ ありがとうございます!! 文化の違いってほんとたいへんですね・・・

426 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:24:49 ]
なんだ、括弧が省略できる方面の人か

427 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:12:15 ]
一目でわかるだろって思ったが、そんな方面があるのか


428 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:26:40 ]
正しくは、括弧を省略できるようにしたばっかりに呼び出し可能オブジェクトが変数に代入できなくて困ってた方面の人だね

429 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:26:56 ]
関数呼び出しで括弧が省略できるのなら関数そのものを指したいときってどうするんだろ

430 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:13:02 ]
前に何か記号つけんじゃね?



431 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:26:01 ]
呼び出し可能オブジェクトなんてないから。
関数そのものもないから。

さすが Python 初心者スレだなw

432 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:59:10 ]
>>431
楽しそうだね

433 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 01:40:13 ]
>>431
Python 初心者スレなんてないから。

434 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 07:32:25 ]
431が自分の世界にひたっていて羨ましい。

435 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 08:50:11 ]
ここでは ruby ってワードはタブーなのですか?


436 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 09:13:00 ]
あるとかないとか初心者の俺は混乱するんですけど
初心者向きのスレで誤情報はホント勘弁して欲しいんですけど

437 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 09:40:24 ]
だよね

438 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 12:09:41 ]
したらば辺りに避難所作ることを考えんといけない時期かもね
>>431は俺も何言ってるか分からない。Rubyの話なのか?

439 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 12:25:10 ]
自治気取り死ねカス

440 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:06:39 ]
リアルの鬱憤ここで晴らすなよ
迷惑だし不愉快だわ
飯食って屁こいてとっとと寝ろ



441 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:06:58 ]
どんだけ効果あるか正直怪しいと思うが、それでもID欲しいなー

442 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 00:58:46 ]
IDって有って困るものじゃないと思うんだけど、なんか問題でもあるのかね
他のIDない板でも、あった方が良いって話題は必ず出る

443 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:16:22 ]
>>436
細かいことなので、初心者のうちは気にしなくていい。

>>431の内容についてまともに答えるなら、
呼び出し可能オブジェクトって名前だったかどうかはさておき、オブジェクトの後ろに()って付けて__call__メソッド呼び出せるオブジェクトはいくらでもある。
関数だって所詮、__call__メソッドを持ってるオブジェクトにしか過ぎないって意味では、純粋な関数なんてない。
ということなんだけど、細かいことは詳しくなるにつれて自然についてくる。

444 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:20:08 ]
詭弁

445 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 03:58:07 ]
体言止め

446 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:31:16 ]
>443
友達いないだろ?

447 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:26:25 ]
ともだちならあたりまえ

448 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:44:29 ]
おしえてください。
rssで取得したデータなんですが、titleの中を日本語にパースする方法がわかりません。

<item>
<title>kabuwakitahama: イラン人たちが国内で
覚醒剤を製造していた
というニュース。警察
の話では終戦直後はと
もかくその後国内では
製造されていないとい
うことです。でも私が
昔覚醒剤について取材
した時には国内で製造
していました。国内で
の製造はないと信じて
いるためいつまでも根
絶出来ないのでは。株
以外の話でした。</title>


449 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:47:19 ]
英語なら出来んの?

450 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:06:14 ]
すいません、勘違いしてました。
そのままでいいみたいでした。
"北"ってそのままマルチバイトなんですね



451 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 17:16:03 ]
>"北"ってそのままマルチバイト
どういう事か分からんです

452 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 17:32:02 ]
中国漢字に置き換えられるらしく1バイトもあるんだって

453 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 20:13:31 ]
SJISの半角カナみたいなものじゃろか

454 名前:デフォルトの名無しさん [2010/06/14(月) 23:35:09 ]
ctypesのソースを見ると

Python-2.6.5/Lib/ctypes/__init__.py
383 if _os.name in ("nt", "ce"):
384
385   class WinDLL(CDLL):
386     """This class represents a dll exporting functions using the
387     Windows stdcall calling convention.
388     """
389     _func_flags_ = _FUNCFLAG_STDCALL

Python-2.6.5/Modules/_ctypes/callproc.c
777 #if defined(MS_WIN32) && !defined(MS_WIN64) && !defined(_WIN32_WCE)
778   if ((flags & FUNCFLAG_CDECL) == 0)
779     cc = FFI_STDCALL;
780 #endif

みたいな感じでcygwinでSTDCALLなWin32API呼出しはできないようにされてる風に見えるのですが
>>> import ctypes
>>> user32 = ctypes.CDLL('user32.dll')
>>> user32.MessageBoxW(0, u'波浪ワールド', u'てすと',0,0)
で呼び出せています。

私のPCはメッセージボックスを表示させるたびに死へと近づいてるのでしょうか?
それとも私の知らないなにかが良きに計らってくれて安全が保たれてるのでしょうか?
教えてください

455 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 14:04:58 ]
良きに計らってくれて安全

456 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 16:59:39 ]
死ぬよ
win版だと普通にエラーでるよ

457 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 18:20:23 ]
win版はcdeclとstdcallの両方サポートしてなかったっけ?

458 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:36:41 ]
サポートはしてるけどcdllとwindllを使い分けないといけない

459 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:56:44 ]
ctypesの使い方をよく見ろ

460 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 23:26:30 ]
libffi的には問題なしだと思うのだけど、どういう理由なのだろう



461 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 19:37:15 ]
java-ja の宣伝してたひと居なくなって良かった

462 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 07:58:23 ]
月間PythonとかPyCon Japanとか,一過性のネタが多くなってきた。
java-jaと似てる。

463 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 08:16:18 ]
Actually, there is the Python Japan User's Group like java-ja
I said don't make User's Group were slepted in Japan

464 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 08:20:32 ]
>>463
怪しい外人はウザいからなんとかしたほうがいいよね。

465 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 08:22:22 ]
英語がおかしい日本人も一緒になんとかなってくれ

466 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 08:36:08 ]
slepted(wwWwwwWWWwwwWwwww

467 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 08:44:40 ]
間違ってはないだろ
おかしいだけで

468 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 10:39:45 ]
高卒でも許されないレベルの間違い

469 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 11:39:40 ]
You is fool.

470 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 11:41:08 ]
soo fuulish you are



471 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 12:05:12 ]
Wherever it is, we is, I love it truly

472 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 19:33:22 ]
本スレでやれ

473 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 03:50:42 ]
java-jaの出番だな・・・

474 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 11:09:38 ]
この粘着さんとjava-jaのあいだでなにがあったん?

475 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 11:47:14 ]
寂しがり屋さんなんあぢょ

476 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 13:05:55 ]
なかまにいれてもらえなかった

477 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 13:39:41 ]
低学歴の粘着がひどすぎる

478 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 13:41:58 ]
preferred.jp/co_member.html
高学歴

479 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 13:46:09 ]
あまりに高学歴過ぎても低学歴過ぎても
視野の狭い経験で語っちゃうとプログラマとして終わり

480 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 13:49:29 ]
プログラマ(笑)



481 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 13:57:01 ]
プログラマを笑ってるようじゃ、IT土方以下ですね。

482 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:00:13 ]
ドカタのみなさん、低賃金で土日もお仕事ご苦労様です。

483 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:02:19 ]
はい

484 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:04:16 ]
賃金低いの?

485 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:05:53 ]
土方
www.ndl.go.jp/portrait/JPEG_L/423-457/s0218l.jpg

486 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:10:01 ]
本スレ巡回から外したのにここでもやんのかよ…

487 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:12:10 ]
巡回しなくていいよ。いやマジで

488 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:13:53 ]
くだすれではやんないでほしいわ

489 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:14:07 ]
Python巡礼の地

490 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:15:02 ]
反省しろよ低学歴



491 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:15:51 ]
相手してるのも低学歴?

492 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 14:24:21 ]
低学歴のために学歴板があるんだよ

493 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 00:31:43 ]
thinkの発音は「進化」に似てて、
アメリカだと(端折られて)「しんっ」になる。
イギリスなら(淡白に)「しんく」
thankは「みっつのキウイ」って感じで、
アメリカなら「さんきう」
イギリスならもちろん「さんきうい」
問題のthrillerは
アメリカなら「左様なら」みたいに「さやぅぬらー」でいい
イギリスなら「サウナなら」みたいに「さうぬあーら」

494 名前:493 mailto:sage [2010/06/20(日) 00:33:12 ]
すいませんすいません英語板と間違えましたすいません!

495 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 01:15:32 ]
pycryptoで作った公開鍵をpickle.dumps(key)して送りたいんだけど、
linux→windowsだとpickle.loads(key)したときにこける。
_fastmathがwindowsにないのが問題みたいなんだけど、どうしたらいいかな?
・・・って書いてる途中にpycryptoのソースを覗くことを閃いた。

import Crypto.PublicKey.RSA
Crypto.PublicKey.RSA._fastmath = None
Crypto.PublicKey.RSA.generate = Crypto.PublicKey.RSA.generate_py
Crypto.PublicKey.RSA.construct = Crypto.PublicKey.RSA.construct_py
送る側のimportのところに3行追加。

_slowmathってのがあるらしいけど、インストールしたpycryptoにはなかったんで。
他に悩む人がいるかどうかわからないけど、
解決してうれしいのでとりあえず書いときます。

496 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 17:44:05 ]
pgr

497 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:10:56 ]
飛ぶ鳥おとす勢いのGOOGLEが採用してるからさぞかしここも盛り上がってるの
かと思って覗いてみたが随分寂しいことになってるんだな
業務に携わる人達ってのはこんな所には来ないってことなんだろうか

498 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 20:45:53 ]
ニューカス民さんお勤めご苦労、帰っていいよ

499 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 22:53:11 ]
ニューカスって何?

500 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 22:54:57 ]
人間の屑が集まる所



501 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:17:13 ]
人間の屑ってあの人のことでしょ?

502 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:19:15 ]
σ(゚∀゚ )

503 名前:デフォルトの名無しさん [2010/06/23(水) 20:59:28 ]
Windows XP Service Pack 3
Python 2.6.4
です。

 str1="ディレクトリのパス"
 str2=".jpeg"
 str3="piyo"
となっている時、
str1の中およびそのサブディレクトリ以下のファイルで、
ファイル名がstr2で終わる物、ファイル名にstr3が含まれる物
を一気に削除するようなpythonプログラムは
どう書けばよいでしょうか?

str3の方はファイルを1つずつ回って、
if str3 in ファイル名 :
で行けそうですが、str2はどうすればよいでしょうか。

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

504 名前:503 mailto:sage [2010/06/23(水) 21:13:56 ]
あ、endswithなんてものがあるのですね。

505 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 21:15:47 ]
>>503
if ファイル名.endswith(str2):

506 名前:503 mailto:sage [2010/06/23(水) 21:20:04 ]
>>505
ありがとうございます。


507 名前:デフォルトの名無しさん mailto:sage [2010/06/25(金) 05:41:58 ]
仕事上の関係者が個人で作った module を使用すると、
内部的に C++ の例外が投げられます。
python で C++ の例外を適切に catch するにはどうしたら良いのでしょうか。

try:
hoge()
except HisEception, e:
print e

とすると、
~~~~~~~~ (C++ exception)
のように表示されて、そのまま abort します。

try:
hoge()
except:
pass

だと問題ないのですが。

508 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 10:01:54 ]
C++のコードの方で例外が発生していて、バグが原因ならC++側で対処する。
適切な例外ならC++側で例外を拾って、Pythonの例外でくるんで返す。
ttp://www.python.jp/doc/release/ext/errors.html

509 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 20:32:14 ]
>仕事上の関係者が個人で作った module を使用すると、
>内部的に C++ の例外が投げられます。

って書いてあるのに・・・


510 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 22:07:47 ]
C++部分のソースコードを一切改造できないと仮定するなら
1. C++製Python用モジュールとPythonインタプリタの間に1つ噛ませて
そちらでC++例外を処理して、Python例外にする。
2. PythonインタプリタをC++の例外を処理できるように改造する。




511 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 22:33:17 ]
>>507
それで問題なくなるならPythonも例外を投げてるはずなんだけど、何投げてる?
それか、諦めてexcept:で受けてしまうのがいいのかも。

512 名前:デフォルトの名無しさん [2010/06/27(日) 03:09:43 ]
なんでpassがいるのですか?
空の関数でも、コンパイラはインデントで判断できるのでは?


513 名前:デフォルトの名無しさん [2010/06/27(日) 03:26:30 ]
最初に実行される.pyファイルも
モジュールと呼んでいいのでしょうか?
それとも他のプログラムから読み込まれることを前提としたファイルのみがモジュールでしょうか?

514 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 09:26:42 ]
win,linuxで動くGUIアプリで作るなら、tkinter, pyqt, pygtk, wxpythonどれがいいの?

515 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 09:35:42 ]
手軽さからtKinterを使ってたけど、DnDできないのでwxに移行した。
最初大変だったけど、慣れてしまえばどってことない。
デモが便利で助かる。webにもサンプルいっぱい落ちてるし。

516 名前:デフォルトの名無しさん [2010/06/27(日) 09:39:44 ]
Blender.exe中にパイソンのスクリプトを使うのですが
Blender.exeのフォルダにGANGu.dllを入れてBlender.exe中でそれを使うスクリプトを使うと
pyのパス line 15 in <module>
import GANGu
Import Error : No module named GANGu
と出ます。これはGANGu.dllのパスが間違っていて見れないと言う意味でしょうか?
Python25です。どうすればできますか?


517 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 10:20:41 ]
>>515
tkinterだとdndできないんだ・・
参考にさせてもらいます

518 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 11:05:49 ]
>>516
スクリプトと同じ場所に置いとけ

519 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 12:58:30 ]
>>512
一行で書ける

520 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 13:10:58 ]
>>512

def func1(hoge):
  fuga

def func2(hoge):

def func3(hoge):
  hige

どうだろう



521 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 15:10:26 ]
PythonでWebプログラミング覚えるのに良い本ありますか?

522 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 15:57:52 ]
質問が漠然としすぎだろ
Pythonはどの程度できるのか
Webプログラミングって具体的にはどんなことがしたいのか
そういうこと書かないとまともな答えは返ってこないと思うよ

523 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 16:05:37 ]
>>522
そうですね。
まだちょっと勉強不足なので>>521
無視して下さい。
ありがとうございました

524 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 17:54:46 ]
djangoでもやっとけ

525 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 18:07:54 ]
>>521
みんなのパイソン webアプリ編

526 名前:デフォルトの名無しさん [2010/06/28(月) 16:49:57 ]
オーナーがrootのpythonのライブラリを
/usr/local/に配置して、
一般ユーザで実行したら、
pycファイルが生成される時に問題になりますよね。
pycファイルが生成されるディレクトリは一般ユーザにも書き込み可にしておくのでしょうか?
それともrootで一度全部実行してpycファイルを生成しておくのでしょうか?

527 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 19:05:39 ]
>>526
事前にコンパイルするもの。
python -m compileall /path/to/lib
で、再帰的にコンパイルできるはず。

528 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 22:42:12 ]
>pycファイルが生成される時に問題になりますよね。

ならない
毎回pycが作られずに実行されるだけ

529 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 01:11:20 ]
python3はいつごろ主流になりますか

530 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 01:14:12 ]
>>529
3-5年後



531 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 04:04:15 ]
>>527
>>528

よく分かりました
ありがとうございました。

532 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 06:53:28 ]
>>530
去年も同じこと聞いた。
来年も同じこと聞くのかな。

533 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 07:17:26 ]
python4はいつごろ?

534 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 07:20:14 ]
3-5年後

535 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 08:47:09 ]
>>532
ちゃんと前進しているよ。
PyQt、CherryPy、Cython、lxml、docutils、etc... がPython3対応しているし、
今年のGSoCでもいろいろな有名プロダクトがPython3対応プロジェクトを
上げてるし、Python2最後となるPython2.7のリリース目前で、すでに開発者
MLはPython3への移行をどうやって加速するかの話題で一杯。

536 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 08:48:50 ]
>>533
10年後くらいに登場して、15年後くらいに普及するんじゃない?

537 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 09:49:31 ]
月間Pythonはいつ出ますか?

538 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 09:52:12 ]
月間

539 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 23:04:53 ]
月刊「桃井かおり」の次

540 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 12:34:00 ]
>>535
おれも自分のプログラムをいくつか、3.1で動くようにしてみた。
が、やってみて、ふと思ったのは、3.1に対応するメリットって
なんだろう?ってこと。
3.1で欲しい機能のほとんどは、2.xにバックポートされてるし、
対応ライブラリもとぼしいのにって考えたら、何のためにやって
んのか、よくわからなくなってしまった…



541 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 00:16:33 ]
>>540
でも、それは2.7で終わりで、これからは新しい機能はPython3にしか導入されない。
New GIL はPython3.2から搭載されるし、unladen swallowで開発されたLLVM JITは
Python 3.3 で configure オプションになるべくPython3用に開発が継続している。

542 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 10:46:13 ]
context.Dr7 |= condition << ((available * 4) + 16)
これは
context.Dr7とconditionで論理和をとり、その値をcontext.Dr7に
代入してさらに((available * 4)+16)分だけ左にビットシフトするという
意味ですよね?

543 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 10:55:52 ]
プログラミングの知識もないのにttp://www.oreilly.co.jp/books/9784873114484/読んだりするなよ(wWwwwWWwww

544 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 11:07:12 ]
>>542
context.Dr7 |= condition << ((available * 4) + 16)

context.Dr7 = context.Dr7 | condition << ((available * 4) + 16)
と等価

<< と | の優先順位は << のほうが先なので
condition を avaialbe * 4 + 16 で左シフトしてから
context.Dr7 と論理和とって context.Dr7 に代入するって意味

545 名前:544 mailto:sage [2010/07/02(金) 11:08:05 ]
typoがひどいが煽られても泣かない

546 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 11:11:21 ]
>>543
サーセン;; c言語ちょっとかじったレベルで挑戦してます;;

>>544
ああ なるほど優先順位が高いんですね ありがとうござます><

547 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:07:02 ]
>>544
結果的に正しいけど、
context.Dr7 = context.Dr7 | (condition << ((available * 4) + 16))
とした方がいいと思うよ。

a *= 2+1 と等価なのは、
a = a * 2+1 じゃなく
a = a * (2+1) だから。

548 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:09:55 ]
いちいち()が面倒だから
a *= 2 + 1
で言いと思うぞ
っつーかここらは C でも同じはずなんだが

549 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:48:13 ]
なんでpythonにビット演算子入れようとしたんだろう
高級言語だとそこまで需要高くないと思うし、関数かメソッドで十分じゃね?

550 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:51:46 ]
>>548
ちょwちゃんと嫁w



551 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 00:58:48 ]
>>550
さすがに
a *= 2 + 1

a = a * 2 + 1
と解釈するアホはおらんだろ

552 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:00:08 ]
>>549
なんでSQLにビット演算子入れなかったんだろう

553 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:30:34 ]
>>551
的外れなレスだな。

554 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:33:49 ]
>>551
じゃあ
context.Dr7 |= condition < ((available * 4) + 16)
だったら?

555 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:39:22 ]
>>554
>>544

556 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:49:38 ]
>>555
え?ほんとに?

557 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 01:58:00 ]
>>555
class context:
    Dr7=7
condition=100
available=0
context.Dr7 |= condition < ((available * 4) + 16)
# ==> context.Dr7 = 7
context.Dr7 = context.Dr7 | condition < ((available * 4) + 16)
# ==> context.Dr7 = False

558 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 03:34:10 ]
PyScripterで実行を停止するにはどうしたら良いかわかりますか?
止め方がわからないと無限ループに入ったときに為す術がないので聞きたいです。

559 名前:544 mailto:sage [2010/07/03(土) 06:20:16 ]
>>547
ああ本当だ。考え方が完全に間違っていた
<< と | の優先順位を云々するまでもないね
指摘ありがとう

560 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:00:30 ]
>>> import cairo

Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
import cairo
File "C:\Python26\lib\site-packages\cairo\__init__.py", line 1, in <module>
from _cairo import *
ImportError: DLL load failed: 指定されたモジュールが見つかりません。


???



561 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:33:38 ]
エラーメッセージを書かないのは論外だが、エラーメッセージだけをかくのもいかんだろ。
どうやってインストールしたかぐらいは書け。

562 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:17:09 ]
python初めて三日の俺にも指定されたモジュールが見つからなかったっていうエラーなのはわかる
どこが???なんだ

563 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:21:39 ]
ここまで答える気が失せる質問も珍しい

564 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:30:21 ]
GTK+がインストールされてないと予想してみる

565 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:33:11 ]
GTKは糞

566 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:07:57 ]
あっはい
python2.6.5を使っていて、pycairoを使おうとしまして
「pycairoモジュールについて python.matrix.jp/modules/pycairo.html
ここのインストーラへのリンクが切れてたりするので、適当にpy2.6用を探してきました↓
sourceforge.jp/projects/sfnet_ecell/downloads/Third-party%20Packages/Windows/pycairo-1.8.8.win32-py2.6.exe/
sourceforge.jp/projects/sfnet_ecell/downloads/Third-party%20Packages/Windows/pygtk-2.16.0.win32-py2.6.exe/

gtkのインストールは
gtk+-bundle_2.20.0-20100406_win32でで、
kyle-in-jp.blogspot.com/2009/03/pycairowindows.html
ここの
pkg-config --cflags gtk+-2.0
このコマンドを実行しただけなんですが、普通にインスコしないと駄目なんでしょうか
バージョンのミスマッチとかですか?一体どうすればいいのやら

567 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:22:13 ]
gtkのbinフォルダが環境変数のPATHに加わってないんじゃない?

568 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:25:11 ]
>>566
_cairo.dllも入ってるはずなのに、どういうわけか入ってないって内容のエラー。
身に覚えがないなら、よそからpycairo拾ってきたらいいと思う。

569 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:57:19 ]
_cairo.pyd が依存している DLL (多分 libcairo-2.dll) が見つからないってエラーでしょ

570 名前:568 mailto:sage [2010/07/04(日) 01:57:39 ]
>>569
ごめん。俺が間違ってた。
>>568なら
ImportError: No module named _cairo
って出るはずだな。



571 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 08:06:15 ]
>>569
そのdllがあればいいんですか?

572 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 23:41:32 ]
プログラム自体超初心者です。ある入門書に下記のように書いてありました。
何度も読み返し、丸二日自力で考えたのですが、どうしても書いてある意味が分かりません。
特に”実際のデータ”、”実体”が何なのか分かりません。
結局”初期化メソッド”、”インスタンス”とは何なのでしょうか?

datetime.date(2030,4,14)
ところで、dateはデータ型の名前そのものですが、見方を変えると、datetimeが持っているdateという関数のようにも解釈できます。
つまり、ある型”の実際のデータ”を用意するには、その型と同じ名前のメソッドを呼び出せばいいのです
この”型と同じメソッド”の事を、特に初期化メソッドと呼びます。また、このように生成されたデータ型の”実体”の事を、特に、インスタンスと呼びます。



573 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 00:24:31 ]
>ある入門書

さっさと捨てろ

574 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 00:41:35 ]
インスタンスは型を具象化させたもので、具象化させるプロセスが初期化メソッドかな
まあその本はさっさと投げ捨ててプログラム書いてみた方が早いよ

575 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 00:48:40 ]
>>572
ほんとはオブジェクト指向なんて、初心者のうちから叩き込まれても何が嬉しいのか分からないんだよ。
だから今はあっさり流して、いつかプログラムが自分でも結構かけるようになった日に見返して、
なるほど、そういう意味だったんだと気づけたらそれでいいのだけど。

※上級者の方へ: 以下、厳密でないのは分かっている。間違いの指摘や補足は、初心者を困らせないような前置きをしてから頼む。

君は、日付を扱いたい。
君が簡単に日付を扱えるように、Pythonの作者たちが日付を扱うための「型」としてdateを用意してくれている。
「データ型」と「型」は同じものと考えていい。

そして、date型を作るためにはどうすればいいか? datetime.dateを関数呼び出しのように使えばいい。
それが「見方を変えると、datetimeが持っているdateという関数のようにも解釈できます」の意味。

別に、makeDate()でもdateFactory()でも名前なんて何でもよかったんだけど、
Pythonでは、型の名前を関数呼び出しのようにすると型を作れる、というルールになっている。
(他にもそういうルールになってる言語も結構あるから、そこそこメジャーなルールと言えるけど)

date()を呼び出しのようにすると、Pythonでは、
1. date型を作り出す
2. date.__init__()って関数を、最初の引数に1で作り出した型、第二引数以降にdate()の引数を入れて呼び出す
ということが行われる。
ここで、date.__init__()関数は、dateを使うための準備をするための関数で「初期化メソッド」と呼ばれている。

ところで、dateがどういう風にできているのか、というのを見ると、
dateはこんな関数を持ってるよ、といった内容の「クラス定義」だけが書いてある。

実際に日付のデータを持っているのはdateそのものではなく、「date()で作り出したもの」のみ。
そういう「クラス定義」から作り出したものを「インスタンス」と呼んでおり、インスタンスが日付のデータを実際に持っている。
つまり、「クラス定義」という作り方マニュアルを使って、作り出した「実体」が「実際のデータ」を持っているインスタンス、ということだ。

……って、わっかんねーよなぁ。

576 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 01:24:42 ]
140字以内でお願いできますか

577 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 02:06:04 ]
その本は漏れも捨てたほうがいいと思うけど、それはさておき

>>572
datetimeはモジュールで、その中にはdateというクラスが入っている
クラスは「呼び出し可能」であり、関数のように呼び出すことができる
呼び出すことでクラスはインスタンスを生成して返す

下はdateクラスからインスタンスd1, d2を生成し、属性の参照とメソッド呼び出しをする例
>>> import datetime
>>> d1 = datetime.date(1945, 8, 15)
>>> d2 = datetime.date(2000, 1, 31)
>>> d1.year, d2.year
(1945, 2000)
>>> d1.isoformat(), d2.isoformat()
('1945-08-15', '2000-01-31')

初期化メソッド(たぶん__init__のこと)については自分でクラス定義するようになったらわかるよ

578 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 02:10:57 ]
とりあえずプログラムを書け。小難しいことは後で必要があったら考えろ

579 名前:572 mailto:sage [2010/07/05(月) 02:20:25 ]
>>575,577
本当に本当にありがとうございます!!!
クラスやinitなどまだ勉強していない部分なので詳細は理解できませんが、中で何をやっているのか仕組みは分かってきました。
明日早いのに感動して色々調べてたらこんな時間に・・
入門用の本はやさしい書き方なのですが、自分のように論理的に納得できないと前に進めないタイプは
ちょっと難しくても詳しく書いてある本の方がいい気がしてきました。



580 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 02:23:01 ]
何のためにコンストラクタが一つと決まってるのか分からん。Javaはいくつもできるじゃん



581 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 02:54:46 ]
>>580
理由1(実装による理由)
Pythonでは名前空間がname manglingもしない単純な辞書になってるから、それをしようと思ったらすごく面倒になるし、
関数の引数に型をつけないから、引数の数でしか曖昧性を排除する手段がない。
けど、引数の数だけでいいんだったら、可変数引数をとればいいだけのこと。

理由2(ややPython信者めいた理由)
そもそもコンストラクタを複数作る必要はない。
どうせどれも似たような処理だったり、似てはいなくても共通部分が多く存在することは多い。
C++やJavaで、別のコンストラクタを呼び出すだけのコンストラクタを作ったことがある人も多いのでは?

もともとコンストラクタ(に限らず、同名の関数)を複数作らなければならないのは、
型に縛りがあることや、可変長引数が扱いにくい/扱えないことにあるので、
それが可能なPythonには、コンストラクタ(や関数)をいくつも作る必要がない。

582 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 03:22:04 ]
俺もCを学校で習った程度の者なんだけど
>>572の"初期化メソッド"ってつまり、コンストラクタの事?

583 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 03:27:02 ]
そう取るのが妥当じゃね?
コンストラクタに複雑な引数渡すくらいならclassmethodからインスタンス返した方がいいよ
win32apiみたいなのはごめんだ

584 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 12:39:00 ]
いわゆるファクトリ関数だな

585 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 11:34:21 ]
最適化アルゴリズムをpythonで組んでるのですが
10000回反復し、10〜100回くり返し試行するため
実行時間が数時間かかります
無駄な処理を省き8時間かかっていたものを4,5時間までに短縮できましたが
まだまだ遅すぎます。
そこでcythonなどを使おうと調べてるのですが、
解説サイトが少なく(英語読めませんごめんなさい)、使い方がほとんどわかりません
わかりやすい解説サイトもしくは使い方を教えてください。
まずは、簡単なやつから作ろうと思ってます。
その次の段階としてルーレット選択は全てcythonなどで実行できるようにしたいです。
ちなみにpython3使っていて、2.xにする気はほとんどないです。

586 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 12:21:42 ]
>>585
そのルーレット選択とかいう、Cythonで書きたいコードの元になるPythonコードを貼って。

コードを一切見せずに日本語でやりたいことだけ言われても、どう返していいかわからない。

587 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:11:22 ]
>>586
# 次の都市決定
def next_city(self,tau,eta):
""" 評価値計算 """
val_L = [ (tau[self.pre][omega]**self.alufa)*eta[self.pre][omega] for omega in self.omega_list ] # 未訪問評価値リスト作成
s = sum(val_L) # 評価値の合計
""" 評価値が0の時 """
if not s: # 評価値の合計が0なら
val_L = [ eta[self.pre][omega] for omega in self.omega_list ] # 距離の評価値のみでリスト作成
s = sum(val_L) # 評価値の合計更新
""" 相対値 """
val_L = [(i/s) for i in val_L] # 相対的な評価値
#s = sum(val_L) # 評価値の合計更新

""" ルーレット選択 """
tmp_sum = 0 # 合計
val_prob_L = [] # 評価値の確率リスト
for val in val_L: # 評価値リスト
tmp_sum += val # 評価値加算
#tmp_sum += val/s # 評価値加算
val_prob_L.append(tmp_sum) # 評価値確率リスト作成

self.pre = self.omega_list[bisect.bisect(val_prob_L,random.random())] # 次の都市

とりあえずはこの部分をcythonで書きたいです
tau,eta は、n*nの二次元リストです。 今、nは51です。
self.pre:現在の場所,omega未訪問の場所
eta:現在地と未訪問の場所との距離(の逆数)
あとわかりづらい部分あったら言ってください

基本的に独学なので変なコードですいません
コメントは自分でわかりやすいように書いてあるやつなので表現が間違ってることもあります

588 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:13:54 ]
インデント…

  # 次の都市決定
  def next_city(self,tau,eta):
    """ 評価値計算 """
    val_L = [ (tau[self.pre][omega]**self.alufa)*eta[self.pre][omega] for omega in self.omega_list ] # 未訪問評価値リスト作成
    s = sum(val_L) # 評価値の合計
    """ 評価値が0の時 """
    if not s: # 評価値の合計が0なら
      val_L = [ eta[self.pre][omega] for omega in self.omega_list ] # 距離の評価値のみでリスト作成
      s = sum(val_L) # 評価値の合計更新
    """ 相対値 """
    val_L = [(i/s) for i in val_L] # 相対的な評価値
    #s = sum(val_L) # 評価値の合計更新

    """ ルーレット選択 """
    tmp_sum = 0 # 評価値の合計
    val_prob_L = [] # 評価値の確率リスト
    for val in val_L: # 評価値リスト
      tmp_sum += val # 評価値加算
      #tmp_sum += val/s # 評価値加算
      val_prob_L.append(tmp_sum) # 評価値確率リスト作成

    self.pre = self.omega_list[bisect.bisect(val_prob_L,random.random())] # 次の都市

589 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:46:06 ]
糞どうでもいいけど、Cythonってなんて発音すんの?

590 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:50:41 ]
サイソンでしょ



591 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:53:48 ]
アメリカ:サイソン
イギリス:シーソン
ロシア:スサン
ドイツ:サイスン
イタリア:シッスナ
フランス:スーさん
中国:シェンシゥン
韓国:サアソン
日本:なんて読むの?

592 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 18:31:22 ]
カイソン

593 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 21:46:26 ]
docs.cython.org/src/quickstart/build.html
英語わからないっつってもこれくらいならなんとかなるんじゃないの?

594 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 22:02:01 ]
ちぃちぃょん

595 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:01:16 ]
糞どうでもいいけど、数あるプログラミング言語がある中で、

Pythonを選んだ理由を教えてください。

596 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:03:35 ]
名前がかわいい

597 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:06:22 ]
Guidoさんが好みのタイプなので

598 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:13:29 ]
括弧が少ないから

599 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:15:23 ]
2タブが気に食わなかったから

600 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:18:19 ]
$があまり出てこないから



601 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:19:39 ]
インストールとかモジュールの追加が楽だから

602 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 01:29:25 ]
Perlが嫌いだったから

603 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 01:40:18 ]
インデント強要ウザいとかいうバカがいないから

604 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 03:36:56 ]
hello.pyx
def say_hello_to(name):
  print("Hello %s!" % name)

C:\Users\test\>python C:\Python31\Scripts\cython.py hello.pyx

Error converting Pyrex file to C:
------------------------------------------------------------
...
def say_hello_to(name):
^
------------------------------------------------------------

C:\Users\test\hello.pyx:1:23: Unrecognized character

こんなエラーが出るんですがどうしたらいいですか?

605 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 07:54:04 ]
>>604
BOM付きUTF-8で書いてるんじゃない?

606 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 10:28:55 ]
>>605
ありがとうございます
どこで、BOM付きUTF-8に設定しているのかわからずに、
とりあえず、適当にエンコードしてみたら、

UTF-8 - Win(CR +LF)  にしたら、同じエラー
UTF-8 - Unix(LF)    にしたら通りました。

で新たなエラーが

thon setup.py build_ext --inplace
running build_ext
cythoning hello.pyx to hello.c
building 'hello' extension
error: Unable to find vcvarsall.bat

調べた結果
pythonlife.seesaa.net/archives/200909-1.html
>MSVCかMinGWまたはCygwin上のgccが必要となる。
とあり、MinGWは入っているので、これを利用し、

>後で判ったことだが、PythonでMinGWをdefaultで使いInstallする場合には、Python26/Lib/distutilsに
>次の内容distutils.cfgとして作成しておくと良いそうだ。今後は概ね「setup.py install」だけで大丈夫かもしれない。
>[build]
>compiler=mingw32
Python31/Lib/distutils/distutils.cfgを追加し、エラーもなくコンパイル出来ました。
import helloとし、実行した結果なんとかできました。

あとは、setup.pyの書き方がいまいち理解してないので、もう少し勉強してみます。

607 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 10:58:54 ]
まずBOM有無が決められるエディタを探すのが先じゃないかな?

608 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 11:31:25 ]
tmp.py
----
import hello
----

C:\Users\test>python tmp.py
Traceback (most recent call last):
File "tmp.py", line 1, in <module>
import hello
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte
対話モードだと出来るのですが、テキストで.pyを作成して実行すると上記のエラーが起きます
これは何が問題になっているのでしょうか?

C:\Users\test>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
>>> hello.say_hello_to()
Hello!
>>>

609 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 12:03:22 ]
>>607
emacs23使ってます
.emacs.elを書き換えて
デフォルト保存をutf-8から,utf-8-auto-unixにしたらコンパイルは問題なくなりました

610 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 20:53:18 ]
>595
マジレスすると、numpyとmatplotlibが使いたかった

そんだけ



611 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 01:57:53 ]
>>608
エラーメッセージはちゃんと読んだ?

612 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 13:00:11 ]
cursesでstdscrの画面右下(24 x 80のコンソールなら23, 79)に書き込もうとすると
ERRが返ってくるんだけど、うちだけ?

import curses
stdscr = curses.initscr()
maxy, maxx = stdscr.getmaxyx()
stdscr.addch(maxy - 1, maxx - 1, 'A')
curses.endwin()

File "bugtest.py", line 4, in <module>
stdscr.addch(maxy - 1, maxx - 1, 'A')
_curses.error: addch() returned ERR

stdscr.addstr()でも同じ。

Cからだといけるんだけど、Pythonで回避法ってある?
Python 2.5.1と2.6.1で確認済。Macです。


613 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 14:31:15 ]
うちもなる。
Cの方は単に返り値を無視してるだけでは?
scrollokとかするとエラーでないっぽい。

614 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 14:45:27 ]
Cでは確かに返り値をチェックしてない。
try:〜except: passでとりあえず回避。Thx。

615 名前:デフォルトの名無しさん mailto:sage [2010/07/10(土) 01:09:38 ]
>>611
unicodeデコードエラー
解読出来ませんでした。

どうやったら直るのでしょうか・・・・?
文字コードをいくつか変えて実行してもダメで、どうすればいいかわからないです。

616 名前:デフォルトの名無しさん mailto:sage [2010/07/10(土) 01:14:06 ]
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte

要点は
utf8' codec can't decode byte 0x8d

unexpected code byte

617 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 12:34:54 ]
対話モードで、
>>> repr(open('tmp.py', 'rb').read())
を実行してみて。

618 名前:名無しさん@そうだ選挙に行こう [2010/07/10(土) 20:36:35 ]
window.pyという名前で保存したのに、ダブルクリックで起動できません
何が原因でしょうか?

619 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:39:49 ]
>>618
コマンドプロンプトから起動してね

620 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:40:50 ]
>>619
それしかないんでしょうか



621 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:45:18 ]
>>620
というか起動はしてるんだけど
処理を終えたかエラーで止まったかでプロンプトが閉じちゃってるんだと思うよ

これ以上はwindow.pyの内容と何がしたいのか(どういう結果がほしいのか)が
わからないとなんともいえない

622 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:46:47 ]
>>621
なるほど、解決しました

623 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 23:55:07 ]
お礼は?

624 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 00:24:47 ]
三行以上で?

625 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 01:26:35 ]
>>617
C:\Users\test>python tmp.py
Traceback (most recent call last):
 File "tmp.py", line 1, in <module>
  import hello
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8d in position 22: unexpected code byte

C:\Users\test>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] onwin32
Type "help", "copyright", "credits" or "license" for more information.
>>> #utf-8 Win
>>> repr(open('tmp.py', 'rb').read())
"b'import hello\\r\\nhello.say_hello_to()\\r\\n'"
>>> #utf-8 Unix
>>> repr(open('tmp.py', 'rb').read())
"b'import hello\\nhello.say_hello_to()\\n'"
>>>

でした。

>>616
>UnicodeDecodeError: 'utf8'コーデックは位置22でバイト0x8dを解読できません: 予期していなかったコードバイト

>'utf8'コーデックはバイト0x8dを解読できません。
0x8d がどれを指してるのかが・・・
>予期していなかったコードバイト
0x8dがダメなんですよね?
utf8自体がダメなんですかね

飯食って、グレープフルーツゼリー作って、そのあと意識があれば調べてみます

626 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 02:18:16 ]
なんだ中学生か

627 名前:625 mailto:sage [2010/07/11(日) 02:20:59 ]
う〜ん・・・
結局よくわからないです

hello.pydがいけないんですか?
この中なら\x8d は何回か出てきてます
でもそしたら、対話モードでもimport出来ないはず...?

今度こそ飯を

628 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 02:33:41 ]
バイト数が問題なんですか><

629 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 04:30:08 ]
まずBOM有無が決められるエディタを探すのが先じゃないかな?

630 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 04:42:33 ]
>>629
そのためにpyscripter入れたけどダメでした



631 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 04:49:59 ]
馬鹿には無理

632 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 07:45:36 ]
notepad++オヌヌメ

633 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 09:23:34 ]
結局どうしたいいんですか?

634 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 10:08:13 ]
>>627
pycじゃなくてpyd?
よくわかんないから関連ファイル全部まとめてzipでうpしてくれると話が早い

635 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:46:52 ]
>>627
対話モードと直接実行時でロードしている hello モジュールが違ってる気がする。

tmp.py で
try:
  import hello
except UnicodeDecodeError as e:
  print(repr(e.object), (e.start, e.end))
import os, imp
print(os.path.abspath(imp.find_module("hello")[1]))

636 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:47:38 ]
BOMって関係あんの?

637 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:51:54 ]
>>604 の Unrecognized character のエラーは codecs.open 使ってるのに
'\r' を読み取る事を考慮していない Cython のバグ

638 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:59:03 ]
俺が体験してきた中で
一番最初に出会って、頻繁に出るのはBOM関連のエラーだな
たまにBOM付きじゃないとダメってのがあるけど基本なしですれば問題ない
まずBOM無しUTF-8を既定にできるエディタをさがすべき

639 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 13:38:55 ]
>>638
で、そのBOM関連エラーでどうやって0x8dが出るんよ。

640 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 13:54:11 ]
ソースコードエンコーディング絡みなら SyntaxError が出るはず



641 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:03:33 ]
こんなprintの段階でググる能力すらないのが終わってる
どうしても答えが欲しいなら別言語に移ったほうがよさそう
恐らく、このまま甘やかすとこのスレに日記帳のように書き込まれる

642 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:20:06 ]
cythonのことよく知らなくて変なレスつけちゃった
>>634はスルーしてね

>>637のとおり、CPythonでコード書くときには\rを落としとけってことなのね

groups.google.com/group/pinoy-python-users/browse_thread/thread/f558512bdf42134b
> Just remember to replace CR/LF endings in Windows to LF. Use Notepad+
> +'s Edit > EOL Conversion to convert line-endings or else Cython will
> argue about invalid characters when compiling.

643 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:21:01 ]
訂正。CPythonじゃなくてcython

644 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:57:16 ]
PyQt4を試してるんですが
Qt4(C++)の方でQHogehogeクラスを継承して定義したQHagehageクラスを
PyQt4から使用するにはどのような使い方をすればよいのでしょうか?

645 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:59:19 ]
PyQTは糞なので
WxPythonかGTK使ってください。

646 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:09:31 ]
おっPyQT

647 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:17:53 ]
おっPyQTとはどういう意味ですか?

648 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:30:45 ]
QHagehageをラップしたC拡張ライブラリを作らないと駄目じゃないの?

649 名前:648 mailto:sage [2010/07/11(日) 15:32:22 ]
C拡張ライブラリ => C拡張モジュール

650 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 18:03:43 ]
俺も>>644知りたいわ。



651 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 18:21:16 ]
sip使って自分で拡張モジュール作る。

652 名前:625 mailto:sage [2010/07/11(日) 21:38:48 ]
>>635
ありがとうございます

C:\Users\test>python tmp.py
b'C:\\Users\\test\\hello.pyd' (22, 23)
C:\Users\test\hello.pyd
でした

653 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 22:25:08 ]
Python3とPython2が混じってるのかな?
Python2はインストールしていない?

654 名前:デフォルトの名無しさん mailto:sage [2010/07/11(日) 23:50:12 ]
ウィンドウズのコマンドプロンプトだと↑キーを押すと以前入力した文字が入力されますが
Python Shellで、同じような事は出来ないでしょうか?

655 名前:デフォルトの名無しさん mailto:sage [2010/07/11(日) 23:56:47 ]
漏れも知りたい鯛

656 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:06:25 ]
IDLE だったら Options -> Keys の history-next, history-previous で Alt+n, Alt+p じゃない

657 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:07:19 ]
つrlwrap

658 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:13:30 ]
>>656,657
ありがとうございます!

659 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:57:43 ]
>>654
ipython便利だよ。windowsだとpyreadlineといっしょにいれるとよろし。

660 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 01:05:00 ]
>>657
横からですが
ttp://stat001.ameba.jp/user_images/ba/be/10124970142_s.jpg



661 名前:デフォルトの名無しさん [2010/07/12(月) 01:18:27 ]
ズバリtwitterクライアント作ろうと思ったら、何が必要ですか?

右も左も分からない初心者です

662 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 01:29:26 ]
189 デフォルトの名無しさん [] 2010/07/12(月) 00:13:57 ID: Be:
    Twitterクライアント
    クリップボード監視に向いてる言語は何ですか?

663 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 01:57:28 ]
お前の頭骨に入ってる塊より百段上等な脳みそ

664 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 02:14:34 ]
つ ttp://usy.jp/twitter/index.php?Twitter%20API

665 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 03:22:15 ]
Python3.12 の Windows 版で日本語を含むフォルダ内のC拡張モジュールを
インポートするスクリプトを実行するとUnicodeDecodeErrorが発生するみたい。
おそらく Python3 のバグ。
(importdl.c の _PyImport_LoadDynamicModule => _PyImport_FindExtension => PyDict_GetItemString等
=> ... => PyUnicode_DecodeUTF8 の流れで cp932 のバイト列が utf8 で変換されてエラーになる)

再現例:
D:/ほげほげ/winsound.pyd, D:/ほげほげ/a.py の状態で a.py を実行する。
winsound.pyd は Python31/DLLs のをコピー a.py の中身は import winsound のみ

666 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 03:25:36 ]
>>625 のエラーはこのせいだと思う

667 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 05:40:41 ]
>>653
混じってます
Vista HomeBasicSP1とwindows7の2台で利用していますが
VistaはCygwinの中にPython2.4と2.5が入っています。
cygwinは普段利用していなく、コマンドプロンプトを利用しています。
windows7では、最近2.7と2.6を入れました。
このエラーが起きてから入れたような気もします。定かではないですが・・・

Vista
C:\Python31 , C:\cygwin\lib\Python2.4 , C:\cygwin\lib\Python2.5
windows7
C:\Python31 , C:\Python27 , C:\Python26
こんな感じの場所にいます

668 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 06:08:14 ]
>>665
ありがとうございます
直りました

>>653
色々教えていただきありがとうございます
時間を取らせてしまって、ごめんなさい。
ここにレスするときに、ディレクトリ名が乗せられなくて、勝手に手で消してからレスしていました。
そのディレクトリ名の中に日本語が含まれていました。
申し訳ありません
一言、消していることを明記すべきでした。
b'C:\\Uers\\test\\******\\\x8d(ry
ごめんなさいごめんなさい....orz

669 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 06:50:27 ]
センスないな

670 名前:デフォルトの名無しさん [2010/07/14(水) 17:34:50 ]
クラスにメソッドを後付けすることはできますか?
継承せずに、メソッドを定義したいのですが



671 名前:デフォルトの名無しさん mailto:sage [2010/07/14(水) 20:06:45 ]
>>670
できます。
class Foo(object):
    pass
def _bar(self):
    pass
Foo.bar = _bar

672 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 01:05:22 ]
>>671
そんな簡単にできるのですね
ありがとうございました

673 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:18:16 ]
けどbuiltinなクラスには後付けできないという...
これって、できないようにする積極的な理由あるの?

674 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:21:16 ]
継承すれば済む話だろ

675 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:29:31 ]
builtin typeに追加できてもカオスになるだけだと思うわ

676 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:33:04 ]
それどこの Ruby on Rails www

677 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 02:52:55 ]
>>673
変更不可能にすることで、メモリ消費量を削減したり、呼び出しを高速化したりできる。
基本的に変更可能な属性は dict 型のオブジェクトを使って管理されているので、
その呼び出しはハッシュテーブルからの検索とかオーバーヘッドが少し大きい。

あと、基本型を弄るとどこに副作用が起こるかわからないという理由もあるな。
基本的に直接弄るんじゃなくて継承しろという方針。

678 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 03:29:16 ]
>>677
なんだ、実装上の都合なのか。

Pythonは理想追い求めるより現実的な落としどころ見つける言語だってのは知ってるけど、
それでも一貫性のなさを感じる。

679 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 03:35:59 ]
読解力のなさに絶望した

680 名前:デフォルトの名無しさん [2010/07/16(金) 05:00:38 ]
builtinクラスに後付けしたいケースってありますか?
ちょっと思いつかないな



681 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 07:36:12 ]
list.joinしたいんだろ

682 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 23:26:13 ]
file.foo = 1 はできないのに、
StringIO.StringIO.foo = 1 ができる合理的理由が見当たらない。

683 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 23:44:22 ]
>>682
ttp://mail.python.org/pipermail/python-dev/2008-February/077167.html

684 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 00:14:02 ]
>>682
お前には cStringIO をやる

685 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 14:34:23 ]
__slot__

686 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 03:35:53 ]
aiueo = input()
import aiueo

みたいに読み込むモジュールを入力して与えることって出来るの?

687 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 04:01:21 ]
Yes, we can.

688 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 05:05:59 ]
>>686
__import__()

689 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 11:49:25 ]
imp モジュールもあるよ

690 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 04:15:36 ]
質問です
dictが入れ子になってるdictの構造だけをコピーしたいのですが
copyで浅いコピーをしているつもりが、入れ子の中までは担保されません

In [2]: a = {"a":{"b":"con_b","c":"con_c"}}
In [3]: b = a.copy()
In [4]: a
Out[4]: {'a': {'b': 'con_b', 'c': 'con_c'}}
In [5]: b["a"].update({"b":"hoge"})
In [6]: b
Out[6]: {'a': {'b': 'hoge', 'c': 'con_c'}}
In [7]: a
Out[7]: {'a': {'b': 'hoge', 'c': 'con_c'}}

これを a["a"]["b"] == "con_b" としたいのですが
updateというアプローチは間違っているのでしょうか



691 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 04:37:26 ]
>>> a = {"a":{"b":"con_b","c":"con_c"}}
>>> b = a.copy()
>>> b["a"].update({"b":"hoge"})
>>> a
{'a': {'c': 'con_c', 'b': 'hoge'}}
>>>

692 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 04:40:31 ]
>>> import copy
>>> a = {"a":{"b":"con_b","c":"con_c"}}
>>> b = copy.deepcopy(a)
>>> b
{'a': {'c': 'con_c', 'b': 'con_b'}}
>>> b["a"].update({"b":"hoge"})
>>> b
{'a': {'c': 'con_c', 'b': 'hoge'}}
>>> a
{'a': {'c': 'con_c', 'b': 'con_b'}}

693 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 05:07:31 ]
>>692
おー、ありがとうございます
こういうケースはcopy.deepcopy()しないといけないんですね

694 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 05:12:43 ]
>dictが入れ子になってるdictの構造だけをコピーしたいのですが
>copyで浅いコピーをしているつもりが、入れ子の中までは担保されません

質問の仕方が変だ

695 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 10:08:58 ]
>>693
浅いコピーってのは、
b = {}
for key in a:
  b[key] = a[key]
と同じだから、この場合
b["a"] = a["a"]
ってしたことになる。ここで、 a["a"]は辞書型なのでmutable。

浅いコピーでも完全にコピーされるのは、
・要素が全部immutable(int, float, str, tupleなど)
・要素の要素、要素の要素の要素、...が全部immutable
のときのみ。
もちろん、完全にコピーされないことを知った上で大丈夫だと分かっててコピーするのはOK

要素の要素がmutableで浅いコピーがうまくいかない例:
a=(1,(2,[3,4]))
b=a
b[1][1][1]=0
print b
# ==> (1, (2, [3, 0]))
print a
# ==> (1, (2, [3, 0]))

696 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 12:32:02 ]
pythonの初心者参考本を見て、elseを使おうとしたのですが
SyntaxError: invalid syntax
というエラーが出てしまいます。何か間違ってるところがあったら教えてください。コードはこんな感じです。

color = '緑'
score = 20
if color == '赤':
bonus = 0
  
ここでelseを入れるとエラーが出ます。あとインデント幅も妙です。
参考本ので説明に使われているpythonのバージョンと今使ってるバージョンが違うので
書き方に違いがあるのかと思ってぐぐってみたんですが分かりませんでしたorz

697 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 14:26:45 ]
>>696
こんな感じで普通に動くと思うけど。
インデントは全角スペースにしてるから気をつけてね

color = '緑'
score = 20
if color == '赤':
 bonus = 0
else:
 bonus = 20
print bonus


elseの後に:を入れ忘れているんじゃないかと予想。


698 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 16:56:13 ]
>>697
if color == '赤'
bonus = 0
この後改行するとbonusの"b"と同じ列から入力するようになっていてelseを入れてみると
   bonus = 0
    else:

SyntaxError: invalid syntax
というエラーが出てしまいます。丸々コピーしてみても駄目でしたすみません。
何かすごい根本的な問題のような気がするのでこのままスルーして頂いても結構です。ありがとうございました。

699 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 17:10:01 ]
>>698
elseを打つときはデデント(インデントの反対)して
ifと同じ桁から始めなきゃだめだよ

あともし統合環境使ってるのであればPythonに慣れるまでは凍結して
シンプルなテキストエディタとコンソール(コマンドプロンプト)を使ったほうがいい

700 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 17:53:47 ]
>>699
デデントしたらできました!ありがとうございます。



701 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 20:31:18 ]
なんだ自演か

702 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 03:25:51 ]
なんだかうまい方法を思いつかない

before =[
{"id":"0","aaa":"fdafdsadafdas"},
{"id":"0","bbb":"dafdgdfagdfsg"},
{"id":"0","ccc":"dafdgdfagdfsg"},
{"id":"1","aaa":"gdfagdfsgdsaf"},
{"id":"1","bbb":"dgfagdsdaffsg"},
{"id":"1","ccc":"dadfgdfddfasg"},
{"id":"1","ddd":"dadfgdfddfasg"}
]

という要素として辞書を持ったリストを

after =[ {"id","0","aaa":"fdafdsadafdas","bbb":"dafdgdfagdfsg","ccc":"dafdgdfagdfsg"}, {"id":"1","aaa":"gdfagdfsgdsaf","bbb":"dgfagdsdaffsg","ccc":"dadfgdfddfasg","ddd":"dadfgdfddfasg"}
]

のように"id"を共通のキーにしてまとめたい
どのようにすればいいだろうか

703 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 03:50:43 ]
[dict(reduce(operator.add, map(dict.items, b))) for a, b in itertools.groupby(before, operator.itemgetter("id"))]

704 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 05:44:08 ]
>>703
動きました。いいワンライナーですね!
itertools と reduce、 まだ怖くて使ったことがないです…
自分も使いこなせるようになろう

705 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 07:22:19 ]
ワンライナーにおしこめないで判りやすくするにはこんな感じかな。
t = defaultdict(dict)
for item in before:
    t[item['id']].update(item)
after = t.values()

706 名前:デフォルトの名無しさん mailto:sage [2010/07/21(水) 05:11:58 ]
>>704
>怖くて

どういう意味?

707 名前:デフォルトの名無しさん mailto:sage [2010/07/21(水) 10:29:25 ]
でもそういう便利機能を使いこなしちゃうとあとで読みにくかったりするわな

708 名前:デフォルトの名無しさん mailto:sage [2010/07/21(水) 23:16:18 ]
>>688
出来ましたありがとうございます。

709 名前:デフォルトの名無しさん mailto:sage [2010/07/22(木) 02:24:28 ]
コンパイル済ヘルプ chm (win) 形式の日本語言語リファレンスの
新しいのはないでしょうか。
2.5 まではあったんですが。
www.python.jp/pub/doc_jp/

710 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 16:55:06 ]
tkinterの良い勉強サイトや本ってない?
可能ならば3に対応してる奴で、英語か日本語のもの



711 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:01:14 ]
あるよどっかに

712 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:29:23 ]
pythonを勉強してたんだが全く意味がわからんのでまずはプログラムのイロハを学びたいと思います

LINUXでC言語でも勉強したいと思います

713 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:32:24 ]
こう言っては何ですがプログラミング自体を諦めたほうがいいのではないでしょうか

714 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:38:39 ]
pythonで学ぶプログラム作法おすすめ

715 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:51:31 ]
どうでもいいけど、このスレに居る奴って英語読めなさそうだな

716 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 17:53:37 ]
英語読めれば>>714もただで読めるのにね

717 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 17:16:57 ]
#!/usr/bin/python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
 print 'java-ja great!!!'

718 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 17:48:11 ]
>>717
特定されました

719 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 19:00:33 ]
classを作って、アトリビュートaを設定してるつもりなのですが
インポートしてaを開こうとするとそんなアトリビュート無いと言われます
何が間違っているのでしょうか
www.dotup.org/uploda/www.dotup.org1051891.jpg.html


720 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 19:14:35 ]
>>719
1. class は import しない。 import test としたら、 class test と全く別の test モジュールが import され、 test クラスは消え去る。
2. self.a = 0 では、クラスではなく、クラスのインスタンスに属性を追加しているので、インスタンスを作らないと a は見えない。

class test:
    def __init__(self):
        self.a = 0

t = test()
t.a




721 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 19:15:24 ]
>>719
importはモジュールを読み込み、初期化する文。
classとは関係ない。

その例だと、testという名前でクラスを定義した後に、
testというモジュールをimportしている。

722 名前:デフォルトの名無しさん mailto:sage [2010/07/25(日) 19:20:46 ]
>>720,721
なるほど!ありがとうございます。



723 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 16:36:07 ]
askopenfilenameって3.0以降でどう書けばいいの?
tkFileDialogのimportの変更点も分かってないから誰か解説してくれ

724 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 17:09:13 ]
2to3.py

725 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 17:11:10 ]
neetossan.py

726 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:17:58 ]
助かった、tkinterも変えてくれるのね
アスキーコード云々もsitecustomize.pyに2行足しただけですんなり行った

727 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 00:34:17 ]
__init__
とか__がやたら目につくのはなぜ?
気持ち悪いんだけど

728 名前:デフォルトの名無しさん [2010/07/27(火) 01:51:47 ]
誰かいる??

729 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:00:45 ]
(゚Д゚≡゚д゚) 今ぱいスレには俺様しかいない!

730 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:00:51 ]
居ないけど何よ?



731 名前:デフォルトの名無しさん [2010/07/27(火) 02:03:38 ]
pythonでmsecまでを表示したいんですが、
何か良い方法は無いでしょうか??

例えば

2:00:44.009727 の時だと

7244.010 みたいなかんじです。

マイクロsecをとって//1000すると、9 とかになるので、
マイクロsecから丸める方法でも3桁にしたいです・・

お知恵をお貸し下さい。

732 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:07:07 ]
俺じゃ答えはわからないけど一緒に考えることなら出来るよたぶん

733 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:07:22 ]
>>731
>>> sec = 12345.12345
>>> print "%.3f" % (sec,)
12345.123


734 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:09:02 ]
python] ミリ秒まで表示させる
■[python] ミリ秒まで表示させる 00:35 ミリ秒まで表示させる -
With skill and creativeness を含むブックマーク はてなブックマーク - ミリ秒まで表示させる - With skill and creativeness ミリ秒まで表示させる - With skill and creativeness のブックマークコメントCommentsAdd Star

参考URL

import datetime
now = datetime.datetime.now()
print now.strftime("%Y%m%d%H%M%S.") + "%04d" % (now.microsecond // 1000)
→ '20081118003037.0479'

これは?
ttp://d.hatena.ne.jp/shohu33/20081117/1226936130

735 名前:デフォルトの名無しさん [2010/07/27(火) 02:11:21 ]
ありがとうございます。

datetime.datetime.now()とかで、
秒換算して取得することって出来ますか?

それと、>>733を組み合わせると、完璧の予感!

736 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 02:15:28 ]
>>> datetime.datetime.now()
datetime.datetime(2010, 7, 27, 2, 14, 21, 705000)

日本語が理解できない
これで秒取って、足したり引いたりじゃだめなの?

737 名前:デフォルトの名無しさん [2010/07/27(火) 02:27:16 ]

d = datetime.datetime.now()

sec = ((d.hour*60 + d.minute)*60 + d.second)

print sec
print "%.3d" % (d.microsecond // 1000)

数値型で sec.msec にするには、あと、どうしたらいいですか・・・
行き詰まってしまいました

738 名前:デフォルトの名無しさん [2010/07/27(火) 02:39:45 ]
d = datetime.datetime.now()
sec = ((d.hour*60 + d.minute)*60 + d.second)
msec ="%.3d" % (d.microsecond // 1000)
print sec + float(msec)/1000
これでいいか。

739 名前:デフォルトの名無しさん mailto:sage [2010/08/01(日) 23:52:56 ]
readで引数を細かくとったり、urllib.urlretrieveを使うことで
ダウンロードの進捗状況を知ることができるのは分かったのですが

アップロードの進行状況(POST)を知る方法は標準ライブラリでありませんか?
urllib2とかurllibを使って

740 名前:デフォルトの名無しさん [2010/08/02(月) 00:12:41 ]
windowsでeasy installを使いたいのですが、
c:\Python25\Scriptディレクトリ自体がありません
どうしたらいいでしょうか



741 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:19:55 ]
>>740
なくてもインストールできるからさっさと入れればいいだろ

742 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:26:52 ]
は?

743 名前:デフォルトの名無しさん [2010/08/02(月) 00:29:38 ]
>>739
その方法で本当にDL進捗状況がわかるのか気になる
socket使えばアップ・ダウン両方できる

744 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:30:31 ]
easy install自体が見あたらないのです
www.python.jp/Zope/download/pythoncore
ここのpython-2.5.2.msiを使用しました。

745 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:42:46 ]
>>744
そうじゃない
まずeazy_installをいれろよアホがっつってんだよカス

746 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:45:18 ]
えっ、easy installは最初から入ってるものではなかったのですか?
その方向で調べてみます
ありがとうございます。

747 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 00:57:01 ]
>>743
すいません後出となって申し訳ないのですが、ソケットを直接つかうの以外で
無いだろうかと探していました



748 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 01:12:31 ]
eazy_installをeazy_installでインストール出来ないのは大問題だな

749 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 01:59:53 ]
今はsetuptoolsじゃなくてdistributeだから気をつけなよ>easy_installの入手

750 名前:デフォルトの名無しさん [2010/08/02(月) 03:17:27 ]
一度タイムゾーンを設定したら
以後、時刻関係の関数は一律そのタイムゾーンで値を返してくるようにしたいのですが
そういうことできますか?



751 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 03:32:50 ]
環境変数で TZ=hoge する

752 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 20:46:35 ]
'''
プログラム超初心者です
↓のようなことをするときにbreakは書いたほうがいいのでしょうか、、、
あともっとスマートに書ける方法があったら教えてください。

ユーザーから続けて数字の入力を受け付け
合計が100に近づくまでその数値を足し続けるプログラムを書きなさい
'''
hundred = 100
value = 0
def numint(x):
  while True:
    try:
     y = raw_input(x)
     z = int(y)
    return z
    #break ←ブレイクは書いたほうがいいのでしょうか?
    except ValueError:
      print u'Error : 文字ではなく数値を入力してください'

value += numint('数値を入力してください>> ')

while value < hundred:
  print value, u'まだ足りないみたいです'
  value += numint('もっと大きな数字を入力しましょう>> ')
print value, u'合計が100以上になりました'



753 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 20:49:01 ]
また突っ込み所満載のネタを・・・

754 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 22:06:48 ]
>> 752 です
www.python.jp/Zope/intro/instant_hacking_jp
プログラムの練習に↑のInstant hacking をしていたのですが
例外処理を加えようとして pylint が到達不能code を警告していたので
どうしたもんかなぁと思って書き込みしてみたところです

ぐぐったところ while True はあまり書かない方がいいみたいなので
他の手を使ってみます、、、

while True したら break を書くものとばかり思っていたので
頭が混乱してしまいました…

755 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 00:26:47 ]
昔PHPにループからreturnするとメモリリークするというバグがあった

756 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 03:24:01 ]
>>752
質問に答えるなら、returnの後の行はどうせ実行されないのだから、breakは不要。
けれどこれ、except節はtry節が終わった直後に置かないといけないからSyntaxError出ると思うよ。

そしてお説教。
> hundred = 100
こういう名前の付け方は意味が無い。
変数は、
・いちいち書くと長ったらしい/処理を分けたいから名前をつけたい
・今後変更される可能性に備えて、名前をつけておきたい
ときに使うものだから。仮に200に変更したとき、
hundred = 200
にするわけにはいかないでしょう。
これもあんまりいい名前じゃないけど、俺ならNにしちゃうかな。

numintの引数xも、一目でxが何か分からないから問題あり。

例外が出なかったときに処理したいのなら、Pythonでは例外の後のelse節でそれができる。

N = 100
value = 0
def numint(msg):
  while True:
    y = raw_input(msg)
    try:
     z = int(y)
    except ValueError:
      print u'Error : 文字ではなく数値を入力してください'
    else:
      return z

757 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 07:03:55 ]
>>756
ありがとうございます!!! めちゃくちゃスッキリしました!!
なぜかerrorを出さずに実行できてしまっていたのでどうしよう…ってなっていたところでした

みんなのPythonを1/3ほど読み終えたところですが、変数の名前は適当でいいのかなぁとか思っていました、、、

もっと基礎を勉強したほうがいいですねorz
多謝です!!


758 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 10:08:33 ]
>>757
>みんなのPythonを1/3ほど読み終えたところですが、変数の名前は適当でいいのかなぁとか思っていました、、、

そんなことが書いてあるの!?
酷い本だ。

759 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 10:13:52 ]
今までプログラムを触ったことがないならまずはC言語からの方がいいと思う、教材の良とか質とかもあるし。
オライリーのヘッドファーストシリーズお勧め

760 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 10:15:59 ]
handred = 100は教材以前の問題じゃないだろうか。
自分の子供に「息子」という名前を付けるのと同じだ。



761 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 11:27:02 ]
なんとかjr

762 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 11:30:31 ]
handredってなに、手が赤いの?

763 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 12:40:08 ]
>>762
半分ドレッドな臭い頭のひとのことです

764 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 12:41:39 ]
>>758
いえ、変数の名前のつけ方とかはみんなのPythonには書いてなかったので、、、
読んでみた感想は、なんとなくプログラムを大雑把に理解できる感じでした
ビット演算の項でつまずいてますけどorz

変数の名前にhundredを使ったのは私ですのでみんパイは悪くないです
図書館で借りたので文句のつけようがないです、、、

>> 759
「みるみるプログラミングがわかる本」掌田津耶乃
「 C言語プログラミング入門―C99対応―」田中敏幸
[改訂新版] これからはじめるプログラミング基礎の基礎]谷尻 かおり
あたりを図書館で借りて勉強しようと思います

「エキスパートPythonプログラミング 」Tarek Ziade
「Head First JavaScript」Michael Morrison
は買ってみます





765 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 21:40:06 ]
確かに
みんパイ読んだけどちんぷんかんぷんだった
で、Cの本を適当に読んだら非常に解りやすい
やっぱプログラム初心者にパイソンはむついのかなーと何気に感じた今日この頃

766 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 21:43:43 ]
みんなのPythonは前半は実践編が無いからな〜

767 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 23:36:04 ]
Webにあるチュートリアルじゃむずいの?

768 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 00:24:30 ]
数千円でプログラミングのエッセンスが身につくと思っているとかおめでたいな。

769 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 00:28:01 ]
6千ちょいだせばなんとか
www.amazon.co.jp/dp/0262062798/

770 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 00:39:28 ]
ビッド演算で躓く子が、ポインタを理解できるのかい?



771 名前:デフォルトの名無しさん [2010/08/04(水) 00:42:50 ]
>>770
整数はbit幅が固定じゃないからcよりも理解しにくいんじゃない?

772 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 00:58:45 ]
>>770
ビッド演算とか言ってないからたぶん大丈夫だろう

773 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 01:22:47 ]
>>764
命名規約だけで大議論が起こるくらいにはネーミングは重要だよ。
Pythonの命名規約は「PEP8」でググれば出てくるから調べてみな。


774 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 09:24:20 ]
>>773
bitbucket.org/tavisrudd/pylint_etc_wrapper.py/src/tip/pylint_etc_wrapper.py
上のエラーチェックを使っているのですが、defaultにpep8を追加して使えるようにしました

「l」「0」「I」は使わない、関数名は小文字、classは先頭大文字などとても参考になります

ビット演算は否定のところでつまづいてます。
26(10) 11010(2) の否定は 100101(2) のはず?なのに
26 11010 -27 -11011
と出るので…考えれば考えるほどわからないorz
自分の書いたスクリプトが悪いのでしょうか…
スレ違いすいません、、、

775 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 09:45:37 ]
「2の補数」でぐぐれ

>>> ~26
-27

26(10) = 11010(2)
-27 = ~26(10) = 1111...(ここの1が論理的に無限に続く)...111100101(2)
これで 26 + (-27) = -1 になることを考えてみるとわかりやすい
111111 = -1
111110 = -2
111101 = -3
111100 = -4
...
100111 = -25
100110 = -26
100101 = -27

776 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 15:58:27 ]
>>775
ありがとうございます!! めちゃくちゃ助かりました!!
なんとなくですけど、理解できたような気がします!

~(not)はビットを反転させて、1の補数をとっているんですよね。
>>format(26, 'b')
11010
>> ~ 26
-27
>>format(-27, 'b')
-11011

単行演算子 - は2の補数をとるので、表示は1111..(32列)..1100101ではなく
-11011となっていたのですね!

この理解であっているでしょうか、、、


777 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 16:46:19 ]
血が牛

778 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 18:41:38 ]
>>776
format(n, 'b')はnを2進表記にした文字列を返すってだけだよ
整数の内部表現を返すわけではない

779 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:00:07 ]
一応補足しておくと b って意味は、
2進数表記の際に、頭につける 0b からきてる。
これは16進数の0xと一緒の意味。
format(num, 'b')は単純に
数字を変換、どんな物かというとb、bの意味は2進数。

780 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:04:39 ]
それは補足じゃなくて蛇足



781 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:06:23 ]
なんでbなんだ

782 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:10:20 ]
binary

783 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:14:02 ]
なんでxなんだ

784 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 19:25:38 ]
hexともしました

785 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 23:23:55 ]
つまり6進数か。

786 名前:デフォルトの名無しさん [2010/08/05(木) 01:01:11 ]
2進数16進数はわかるけど8進数の存在意義がよくわからん.
言語によっては数値リテラルを0から始めると8進数として扱ったり
16進数で十分じゃん

787 名前:デフォルトの名無しさん [2010/08/05(木) 01:18:52 ]
chmod 755

788 名前:786 [2010/08/05(木) 03:25:08 ]
そういえばそれは8進数だな

けどソースコードを書く上での存在意義がよくわからんのだよ>8進数
わざわざ8進数を記述する文法があるわけだから何かしら意義はあるのだろうけど

789 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 03:31:47 ]
分かった。16進だと記号が入ってウザいから

790 名前:デフォルトの名無しさん [2010/08/05(木) 03:46:54 ]
10進数のつもりが8進数でした・・・になるより記号付きの方がいいと思うんだけど



791 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 06:11:08 ]
8進数は64bitと相性が良い

792 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 06:14:00 ]
>>790
2進数 0B01234567
8進数 0O01234567
16進数 0X01234567

793 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 06:20:07 ]
>>792
このおねぼけさん

794 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 07:59:55 ]
>>793
2進数 0b01111111
8進数 0o01234567
16進数 0x01234567

795 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 08:03:08 ]
ぶっちゃけ Python から Ruby の ActiveRecord に相当するものを使いたいときって
どんな ORM があるの?
takaki-web.media-as.org/blog/archive/2007/02/19/pythonactiverecord
とか
SQLAlchemy とか
Elixir とか



796 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 14:24:33 ]
すみませんGAEでpythonいじってます。
サンプルコードにconfig.pyってのがあって、グローバル変数の初期化をしています。
そこにBASE_URL =とあってURLを設定します。

で、これだとローカルテストとデプロイでいちいちURLを変えないといけないので改造したいわけです。

しかし、grepしてみてもどこからもconfig.pyを明示的に呼び出したりしてません。
pythonはアプリケーション起動時にアプリケーションディレクトリ以下のすべてのpyファイルを読み込むのでしょうか?
だとするとself.request.urlの戻り値が期待できないタイミングだと予想されます。

requestのタイミングで毎回セットするならグローバル変数にする意味ない気がするし・・・

こんなとき、自分のドメインを調べてグローバル変数にセットする一番標準的な方法を教えていただければ幸いです。

よろしくお願いします。

797 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 17:11:34 ]
BASE_URL = os.path.split(os.path.abspath(__file__))[0]

798 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 18:00:02 ]
>>797
これはローカルのパス・・・・ですよね?

799 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 22:02:49 ]
>サンプルコード

どこの?

800 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 22:56:55 ]
「新規」という名前のフォルダを作りたいのですが以下だとダメでした。
アドバイスいただきたいです。

import os
dir_name = '新規'
os.mkdir(dir_name)




801 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:16:26 ]
普通に作れると思うけどソースにencoding指定がないとかだろうか

とりあえずOSとPythonのバージョン
実行形態(スクリプトとして実行、あるいは対話型シェルから等)
あとエラーメッセージとどう「ダメ」だったのかをどうぞ

802 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:17:17 ]
import os
dir_name = u'新規'
os.mkdir(dir_name)

803 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:24:16 ]
作れなかったから例外が発生すると思うのだが

804 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:29:18 ]
コンソールからでなくアイコンをダブルクリックで起動してるとかかも

>>801にソースコードの文字コードも追加で

805 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 23:35:08 ]
作成権限ある?

806 名前:デフォルトの名無しさん [2010/08/06(金) 04:18:42 ]
組み込み関数のソースコードを見ることはできないのでしょうか?

807 名前:デフォルトの名無しさん [2010/08/06(金) 04:56:46 ]
>>806
www.python.org/dev/

808 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 07:47:33 ]
エロリおかず用HDDが逝ってからどうでもよくなった
エロサイトのブクマ外したり内臓HDDのエロ全消去して
エロ禁&オナ禁初めて現在14日目
最近ではIVやティッシュはもちろん、テレビでもエロイ事してる人がいるから
テレビも部屋から出した。
徹底してるぜ俺

809 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 08:06:02 ]
実況乙

810 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 09:59:17 ]
>>799
すみません個人ブログなので貼れません



811 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 10:09:57 ]
なんで?

812 名前:デフォルトの名無しさん [2010/08/06(金) 10:36:01 ]
Windows XP SP3
Python 2.6.4
です。

ファイルのフルパスを受け取った文字列があります。
これを
ディレクトリパスとファイル名(拡張子なし)と拡張子名に分割し、再び結合する
というPythonプログラムはどうかけるでしょうか?

例えば
full_p_str = "D:\Dir1\Dir2\Dir3\filename.html"
のようにファイルのフルパスを受け取ってfull_p_strに格納し、
full_p_str_result = os.path.join(ディレクトリパス, 拡張子のないファイル名 + "." + 拡張子名)
のようにしたいのです。

よろしくお願いいたします。

813 名前:812 [2010/08/06(金) 10:40:33 ]
os.path.split
でフルパスをフルパス名を分割できるようですが、
ファイル名を拡張子とそうでない部分に分割するにはどうしたらよいでしょうか?

814 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 10:43:55 ]
それ専用なものは無いので正規表現をつかえばいいんじゃないですか?

815 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 10:51:56 ]
>>814
正規表現ですか。
ありがとうございます。

816 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 11:08:02 ]
>>> import os
>>> fullpath = r'D:\Dir1\Dir2\Dir3\filename.html'
>>> dirname, filename = os.path.split(fullpath)
>>> filename_wo_extension, extension = os.path.splitext(filename)
>>> os.path.join(dirname, filename_wo_extension + extension)
'D:\\Dir1\\Dir2\\Dir3\\filename.html'

>>> 'hoge.piyo.fuga.html'.rsplit('.', 1)
['hoge.piyo.fuga', 'html']

817 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 11:09:09 ]
os.path.basepath
os.path.filepath

818 名前:デフォルトの名無しさん [2010/08/06(金) 12:13:47 ]
みなさんありがとうございます。
それで解決できました!!

819 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:16:49 ]
ttp://imagepot.net/image/128106448608.jpg
このようなコードを書くと、
インデントがおかしいと言われてしまいます。

このコードでコメントを全部消して一行につなげれば
通りますが、そうなると可読性が下がってしまいます。

どうすればこのような一見して分かる可読性を維持しながら
インデントで怒られないでしょうか?

よろしくお願いいたします。

820 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:27:40 ]
#bbb から#eeeの話だよな?
+ で繋ぐ部分はインデントどうやっても構わなくなるはずなんだけど

怒られてるの違う部分じゃないの?



821 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:28:24 ]
TypeError: bad operand type for unary +

って言われます・・・。


822 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:31:44 ]
s = 'aaa' + \
 ', ' + foo + \
 ', ' + bar + \ ...

文字列リテラルだけなら

s = ('aaa'
 'bbb'
 'ccc')

823 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:32:25 ]
+ \
ですか。
ありがとうございます。

それで解決します!

824 名前:819 mailto:sage [2010/08/06(金) 12:34:57 ]
+ \
で解決するかと思ったのですが、

SyntaxError: unexpected character after line continuation character

と言われてしまいました。
各行にコメントを後ろに付けたいので、そういう場合はどうすればよいでしょうか?


825 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 12:46:12 ]
a = (1 +  # one
     2 +  # two
     3)  # three

826 名前:819 mailto:sage [2010/08/06(金) 12:56:08 ]
>>825
ありがとうございます。
それで完全解決いたしました。

感謝申し上げます。

827 名前:812 [2010/08/06(金) 13:05:43 ]
>>812です。

環境は
Windows XP SP3 Python 2.6.4です。

Shift-JISのファイルを読み込んでUTF-8に変換し、
そのファイルを加工した後
再びShift-JISに戻したいのですが、どのようにすればよいでしょうか?

import codecs
f = codecs.open(ファイルのフルパス,"r", "utf_8", "ignore")
とすると元のファイルがUTF-8でないと開けず、
かといって
f = codecs.open(ファイルのフルパス,"r", "shift-jis", "ignore")
とすると開いたファイルがShift-JISのままです。

どなたか解決策を教えていただけますでしょうか?


828 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 13:23:07 ]
codecsの挙動わかってる?
f = codecs.open(ファイルのフルパス,"r", "shift-jis", "ignore")
この状態でreadすればUnicode文字列として読み込まれるから普通に加工できる。書き出すときも
w = codecs.open(ファイルのフルパス,"w", "shift-jis")
とやってwriteにUnicode文字列を渡せば、shift_jisに変換して書き込んでくれる
UTF-8相当のstrにして何かやりたいならencodeメソッドなりご自由に

829 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 13:27:17 ]
似たような質問をどこかで見たぞ??

830 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 13:32:36 ]
>>828
ありがとうございます。
codecsってそういう動作なのですね。
助かりました。




831 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 17:50:32 ]
s = 'aaa' + \ # hoge
 ', ' + foo + \ # fuga
 ', ' + bar + \ # hage ...

s = 'aaa' + # hoge \
 ', ' + foo + # fuga \
 ', ' + bar + # hage \ ...

どっちもだめなのか

832 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 17:53:35 ]
>>828

f = codecs.open(ファイルのフルパス,"r", "cp932", "replace")
w = codecs.open(ファイルのフルパス,"w", "utf-8", "replace")

が良くね?


833 名前:デフォルトの名無しさん [2010/08/06(金) 19:22:15 ]
>>831
何スレか前に似たような内容を書き込んだ覚えがある
前者のような書き方は許して欲しいんだけどねぇ

834 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 23:28:38 ]
Python 2.6.4です。
<tab>単語1<tab>単語2
という形式の文字列が延々と羅列されてるtxtファイルで、
単語1の部分が以前の行で既出で重複している場合に、その行を消すにはどうしたらいいでしょう?

835 名前:デフォルトの名無しさん mailto:sage [2010/08/06(金) 23:56:52 ]
>>834
もう少し具体的に

836 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 00:00:18 ]
tsvファイルからデータを読み込んで重複除去したいんでしょ
順序は維持しないとだめ?

837 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 00:08:45 ]
>その行を消す

この場合消すのは今見ている行なのか
既出で重複していた方の行なのか
あと2行じゃなくて3行以上の複数行が既出だったらどうするのかとか

838 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 00:10:08 ]
既出の単語1が単語2の位置にあっても既出とみなすのか
同じカラムのときだけ既出扱いするのか

839 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 03:51:47 ]
単語1同士の重複を処理するだけでいいなら、単純に:

fr = open("sample.txt", "r")
fw = open("output.txt","w")
catch = []

for line in fr:
 if line[1] not in catch:
  catch.append(line[1])
  fw.write(line)

840 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 08:23:23 ]
レスありがとうございます。
>>839さんの試してみます。

<tab>*STD_PAUSED<tab><tab><tab>"一時停止"
<tab>*STD_GAME<tab><tab><tab>"ゲーム"
<tab>*SYS_SHADERMODE0<tab><tab>"Auto"
<tab>*SYS_SHADERMODE1<tab><tab>"0.5"
<tab>*SYS_SHADERMODE2<tab><tab>"1.1"
<tab>*SYS_SHADERMODE3<tab><tab>"1.1"
<tab>*STD_PAUSED<tab><tab><tab>"Paused"
<tab>*STD_GAME<tab><tab><tab>"Game"

こういう感じの形式で、タブ、*から始まるタグ、不定数のタブ、"文字列"という行が延々と続いています。
上記の例だと*STD_PAUSED、*STD_GAMEのタグが重複しているので、
<tab>*STD_PAUSED<tab><tab><tab>"Paused"
<tab>*STD_GAME<tab><tab><tab>"Game"
の2行を削除したいのです。
行にあるタグが既出の場合その行を消すと言ったらいいのでしょうか。



841 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 08:52:06 ]
>>839さんのうまくいきませんでした・・・

842 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 09:25:26 ]
import sys

tags = []
for line in sys.stdin:
  tag = line.split('\t')[1]
  if not (tag in tags):
    tags.append(tag)
    print line,

C:\tmp> type src.txt | python hoge.py > dest.txt

843 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 10:00:28 ]
>>842
ありがとうございます。
ですがエラーが出てしまいます。

C:\Users\HOGE>type src.txt | python hoge.py > dest.txt
Traceback (most recent call last):
File "hoge.py", line 5, in <module>
tag = line.split('\t')[1]
IndexError: list index out of range
プロセスが、存在しないパイプに書き込もうとしました。

となります。
ここまで来たら自分でやれよ!ってレベルなんでしょうがほんとすいません・・・

844 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 10:21:48 ]
\tがない行がある
最後の行とか大丈夫か?
何行もあるなら例外処理だな

845 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 10:38:00 ]
なるほど\t(タブ)でsplitしようにもTabがねーよってエラーメッセージですか。
改行しか無い行が割とあってその最初でエラーが出てます。
他にもコメントだけの行などあるので、
行頭のタブと*付きのタグから始まらない行は例外処理したほうがよさそうですが
その処理も書けませんのでお願いします・・・

情報を後出しにしちゃってすいません。
txtファイルは5000行くらいで*付きのタグは3000種類くらいあると思います。
行によっては
<tab>*tag<tab><tab><tab>"str"
のstrが長く200文字くらいの場合もあります。

846 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 10:44:32 ]
あらほんとだ。ごめん

for line in sys.stdin:
  if not line.startswith('\t*'): continue
  tag = line.split('\t')[1]
  ...

こんな感じでひとつ

847 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 11:03:09 ]
tags = []
じゃなくて
tags = set()
とでもしたほうがいいと思うよ
ほかは同じでいいけど

毎回わざわざリニアサーチする必要は無い

848 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 11:15:28 ]
ごもっともです
痛いところをつかれたので書き直しますね

import sys

tags = set()
for line in sys.stdin:
  if not line.startswith('\t*'):
    continue
  tag = line.split('\t')[1]
  if not (tag in tags):
    tags.add(tag)
    print line,

849 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 11:30:41 ]
できました!!長々とありがとうございました!
例外の行はそのまま残したかったので以下のようにしました。

import sys

tags = set()
for line in sys.stdin:
 if not line.startswith('\t*'):
  print line,
  continue
 tag = line.split('\t')[1]
 if not (tag in tags):
  tags.add(tag)
  print line,

850 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 11:51:40 ]
The winner takes it all.



851 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 12:28:02 ]
すいませんまた質問させてください。

>>840のようなタブ、*から始まるタグ、不定数のタブ、"文字列"の形式で書かれている(例外もある)ファイルが2つあって、
例えばfile_en.txtには

<tab>*STD_PAUSED<tab><tab><tab>"pause"
<tab>*STD_GAME<tab><tab><tab>"game"

のように、file_jp.txtには

<tab>*STD_PAUSED<tab><tab><tab>"一時停止"
<tab>*STD_GAME<tab><tab><tab>"ゲーム"

となっている場合に、タグが同じところから文字列を引っ張ってくるといった処理は
どうやったらできるでしょうか。

852 名前:デフォルトの名無しさん [2010/08/07(土) 12:36:40 ]
ちったぁ自分で考えろやボケ

853 名前:デフォルトの名無しさん [2010/08/07(土) 12:48:40 ]
>>851 まず二つのファイルを1つに合わせて、ライン別に処理。
重複を見つけたらその行を " で割って文字列の部分だけ取り出す
やりたい事がわからんので違ってたらスマソ

854 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 13:14:13 ]
>>851
records_en = dict()
fields = '<tab>*STD_PAUSED<tab><tab><tab>"pause"'.split('\t')
tag, text = fields[1], fields[-1]
records_en[tag] = text

あとはがんがれ
いちいち質問してたら時間もったいないよ

855 名前:851 mailto:sage [2010/08/07(土) 14:00:09 ]
その通りです、楽しようとしすぎだ俺。
Pythonの初歩としてちょうどよさそうだから勉強がてらやってみます

856 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 14:28:31 ]
>>827
2.6以降でファイルを加工するなら、codecs.openより、ioモジュールの
io.openを使ってみるのはどうかな。
文字列とバイト列の扱いがPython3と同じでわかりやすくなっているし、
ファイルオブジェクトと同じように扱えて全改行文字サポートもある。
こっちの方が便利なんじゃないかな。

857 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 15:03:29 ]
質問する側がちゃんと質問できてればそうはならんと思う
ちょっと煽るくらいで情報引き出さないと想定できる問題点が多すぎて回答できないとかどうなのよ?

質問者は
素人判断で問題点を想像してそれを根拠に質問するな
大本の判断材料からすでに間違ってることが多すぎる
素直に最終的にやりたい事と現状どうなってるかを明確書け

858 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 15:17:36 ]
それが書ける奴なら質問しねーよバーカ

859 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 15:18:38 ]
質問者は回答するのに必要な情報を小出しながらも的確に提示し
エラーの原因を特定する能力もあったね

問題は単に丸投げしようとしてたこと

860 名前:デフォルトの名無しさん mailto:sage [2010/08/07(土) 15:27:57 ]
質問者は、とりあえず
挙げた内容でわかる範囲の答えが欲しいだけ。

それで望む答えが得られなけば、掘り下げて
質問を続ける。または打ち切る。

いたって普通の2chの使い方じゃねーの。



861 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 20:12:55 ]
>>845
> \t(タブ)でsplitしようにもTabがねーよってエラーメッセージですか。
それは違う。

tag = line.split('\t')[1]

fields = line.split('\t')
tag = fields[1]
に変更すると、どの行でエラーが出るだろうか。

>>851は、俺ならこんな感じで実装するけど、こういうのって正直どうよ?
def add_dict(dic, item, value, overwrite=False):
  if overwrite or item not in dic:
    dic[item] = value

tags = dict()
for line in sys.stdin:
 if not line.startswith('\t*'):
  print line,
  continue
 line_sp = line.split('\t')
 if not (tag in tags):
    add_dict(tags, fields[1], fields[-1])

862 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 21:26:16 ]
>>834,840,851とかです。
今やってることをはっきり言うとThe Chronicles of Riddick Escape from Butcher Bayという
PCゲームの日本語化ファイルが公開されているのですが、
私が買ったThe Chronicles of Riddick Assault on Dark Athenaでそれを流用したいのです。
AoDAにはEfBBの内容も含まれているのでそのままでも一応日本語化は出来ますが完全ではありません。
なのでAoDAの字幕ファイルにうまいことEfBB日本語化の成果をマージ出来ないかとやっていたんです。

しかしいろいろいじっているとそういう作業をしなくても割と綺麗に表示されるようになってしまいました。
Pythonの勉強はまた今度だな・・・!

ちなみのこのゲーム
store.steampowered.com/app/9860/

863 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 21:49:08 ]
リディックって映画で見たような。なつかしす
つかほかのゲームでもPythonはよく使うから勉強続けなさいYO

864 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 23:39:10 ]
Pythonの悩みはjava-jaがなんとかしてくれるよ。

865 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 01:13:46 ]
以下のアドレス、

yasu1987.blogspot.com/2010/06/simple-twitter-bot-on-google-app-engine.html

から落としてきたソースをパスとユーザー名だけ書き換えてGAEにupすると以下のようなエラーが出ます。
<type 'exceptions.UnboundLocalError'>: local variable 'recent_tweet' referenced before assignment
Traceback (most recent call last):

python2.5、App Engine SDK 1.3.5です。ちなみに他の、あらかじめ指定した
言葉をポストするだけのプログラムはちゃんと動きました。どこをチェックするべきでしょうか。

866 名前:デフォルトの名無しさん [2010/08/09(月) 01:51:26 ]
>local variable 'recent_tweet' referenced before assignment
ローカル変数「recent_tweet」に値が代入されるまえに参照されています.

recent_tweetまわりを確認

867 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 02:03:49 ]
板違い
hibari.2ch.net/test/read.cgi/php/1267057923/

868 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:13:22 ]
>>866
ありがとうございます。ほぼいじり始めたばかりなので理解があやふやなのですが、
「recent_tweet」は def run(name, pswd, search_term): の中で初めて出現し、
36行目で出現と同時にs.textが代入されています。値が代入される前に参照されていると
言うことはないように思うのですが…

>>867
最初、webプログラミングのあるスレで聞いてたんですが
いくらなんでもレベルが低いかな、と思ったのでこちらで…
エラーメッセージもpythonに一般的なことかと思ったので。
GAEに本質的に関わることは向こうで聞くつもりですがダメでしょうか?

869 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:20:38 ]
半年ROMってろ

870 名前:デフォルトの名無しさん [2010/08/09(月) 03:25:48 ]
くだらない質問スレなんだからpython関係ならとりあえずいいっしょ
だから>>868ぐらいでいいんでねーの?



871 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:52:24 ]
>>865
そのコードだと、statusが空もしくはRTから始まるデータが1つもないときに
recent_tweetが初期化されない。

872 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:53:38 ]
# for s in status:
# if s.text.startswith("RT"):
# recent_tweet = s.text
# break
# else:
# print "The following tweet would be posted by hand, so skipped it."
# print "Tweet: " + s.text.encode('utf8')
# print
#
# print "Recent Tweet: "+recent_tweet.encode('utf8')

status の中で s.text.startswith("RT") が 真 のものがひとつもなければ
referenced before assignment になるだろう

873 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 03:55:08 ]
かぶった(笑
しかもこんな時間に orz

874 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 04:50:49 ]
>>871
>>872
あ、そうか…なるほど。ありがとうございます。
つまりfor文の前にrecent_tweetに適当なダミーの値でも入れておけばいいですか?
作法としてはどうすべきなんでしょうか。

875 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 06:06:48 ]
python 的にはこんなんでどうか

for s in status:
   if s.text.startswith("RT"):
      recent_tweet = s.text
      break
   else:
      print "The following tweet would be posted by hand, so skipped it."
      print "Tweet: " + s.text.encode('utf8')
      print
else:
  recent_tweet = 'None'
     
print "Recent Tweet: "+recent_tweet.encode('utf8')


876 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 23:47:14 ]
ちょっと力を貸して欲しいんですけど
linuxでbash scriptからpython scriptを起動しようとしてます。

すると、print()行でIOErrorが出てpython scriptは終了しちゃうんです。
IOError: [Errno 5] Input/output error

terminalで実行すると問題ないので、出力先が無いためのエラーだと
思うんですが、print()行を消さなくちゃ解決できない問題でしょうか?

877 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 02:27:23 ]
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

878 名前:デフォルトの名無しさん [2010/08/10(火) 02:53:46 ]
print関数だよな?

def print(*args, **keys): pass
で関数を上書き

879 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 07:11:15 ]
printは関数じゃなくね?3系列ならできるんだろうか
import sys
sys.stdout = open('bbbb, 'a')
print "aaa bbbb ccccc"
的なものではどうだろうか



880 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 11:29:32 ]
もしくは起動するときに >/dev/null しておけ。



881 名前:876 mailto:sage [2010/08/10(火) 12:32:24 ]
>>878, 879
確かに上書きできませんでした。
879はログを作るってことですよね。

IOError現象は初めて気づいたのですが、
結局アウトプット先を明示する処理を挟まないと
エラーになるってことなんですかね。

そこらへん自動でやってくれる方法があるものだと
思い込んでました。

なぜかバックグラウンドでプログラムが落ちまくるので
変だなーと思ってました。

>>880
自分も/dev/nullでイケるかと思ってたんですが
なぜか、同じ結果になりました。

882 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 02:30:44 ]
>>875
ありがとうございます!ダミーでもよさそうでしたけど
そっちの方が綺麗なのでそうします。






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

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

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