トップページ⇒tech
983コメント276KB

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2009/05/24(日) 19:25:51
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。

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

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

関連スレ
Pythonのお勉強 Part33
http://pc12.2ch.net/test/read.cgi/tech/1240678081/
0002デフォルトの名無しさん2009/05/24(日) 19:32:46
◆関連リンク
Python の Home Page
http://www.python.org/

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

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

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

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

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

インタラクティブモードのエンコード
http://python.matrix.jp/tips/compatibility/interact_encoding.html
0003デフォルトの名無しさん2009/05/24(日) 19:34:48
2get
これはどう見てもおかしいだろ。 まず、主語が2。で動詞がget。
2が単数形だとしたら、getsにしないとおかしい上に、目的語がない。
直訳すると「2が得る」 何を得るんだよ!!!いいかげんにしろ。
それを言うなら
I get 2. だろ。しかも現在形だし。 過去形、いや現在完了形ぐらいまともに使ってくれよ。
I've got 2. 少しはましになって来たが、まだ気に入らない。その2だ。
いったいお前は何を手に入れたんだ?2という数字か?
違うだろ、手に入れたのは2番目のレスだろ。
どうも日本人は数詞と序数詞の区別がよく分かっていない節がある。
これらを踏まえて、正しくは
I've got the second responce of this thread.
ここでtheにも注目してもらいたい。このスレの2ってのは
特定の、このレスだけなんだから。だからaでも無冠詞でも なく、the second responceなんだ。
もう一度おさらいしてやる。

I've got the second responce of this thread.
0004デフォルトの名無しさん2009/05/24(日) 19:48:21
http://www.xrea.com/
ここで Python 使っているかたはいらっしゃいますか?
使いやすいですか?何か気をつけることとかありますか?
0005デフォルトの名無しさん2009/05/24(日) 19:55:23
>>4
バージョン2.3とか2.4.3とかだけどそれでもよければ
ttp://www.value-domain.com/xreaip.php
0006デフォルトの名無しさん2009/05/24(日) 19:58:05
確かビルド済みしてバイナリぶち込んだ猛者がいたような
0007デフォルトの名無しさん2009/05/24(日) 20:01:31
>>5-6
ありがとうございます
2.5 以上を想定していたので
とりあえず >>6 さんの方法で出来たひとのサイトとかがみつかるか調べてみます
0008デフォルトの名無しさん2009/05/24(日) 20:10:29
ぐぐると virtual-python の例が多いみたいですが
好きなバージョン入れてやってるひとがいたのでこれをまねしてみます〜
ttp://inforno.net/articles/2008/07/29/using-any-version-of-python-on-xrea-servers
ttp://inforno.net/articles/2009/01/25/using-any-version-of-python-on-xrea-servers-part2
0009デフォルトの名無しさん2009/05/24(日) 20:57:00
なんでこう、python はレンタルサーバーでの地位が低いんだろう。
0010デフォルトの名無しさん2009/05/24(日) 21:14:53
インストールしても誰も使わないから
0011デフォルトの名無しさん2009/05/24(日) 21:42:04
フィトン?ってパールより簡単ですか??
0012デフォルトの名無しさん2009/05/25(月) 10:48:47
>>11
個人的にはフィトンのほうが簡単だった
ウェブだったらぺへぺのほうがいいけどね
0013デフォルトの名無しさん2009/05/25(月) 12:15:17
個人的には(゚∀゚)ラヴィ!!のがおすすめだよ
0014デフォルトの名無しさん2009/05/25(月) 12:17:04
sysライブラリの
stdin.readlineなど利用して
標準入力からキーボード入力したいのですが
バックスペースで日本語を消すと、半分(1byte)だけ消されて
文字化けします。

1文字は1文字としてバックスペースで消す方法を教えてください。
0015デフォルトの名無しさん2009/05/25(月) 12:34:26
コンソールなに使ってんの?
0016デフォルトの名無しさん2009/05/25(月) 19:47:41
円コーディングは?
0017デフォルトの名無しさん2009/05/25(月) 23:00:57
class A(Foo):
  def func(self, **kwargs):
    super(Foo, self).func(**kwargs)

class B(Foo):
  def func(self, **kwargs):
    Foo.func(self, **kwargs)

AとBの違いはなんでしょうか??
0018デフォルトの名無しさん2009/05/25(月) 23:55:02
今のやり方と、昔のやり方
0019デフォルトの名無しさん2009/05/26(火) 00:54:33
super()を使うと実行時に依存関係から適切なメソッドが得られる
Foo.func()は明示的な指定

type()で動的にクラスを生成したりするときしか考慮する必要はないと思う
何も考えずにsuper()を使うのが楽
詳しく知りたいならmroでググってみてくれ
0020デフォルトの名無しさん2009/05/26(火) 01:03:58
メソッド付き関数とか作れるんだな
かっこよすぎ
def Counter(n=0):
 Counter.cout = n
 def increment():
  nonlocal c
   c += 1
 Counter.increment = increment
 return Counter

c = Counter(2)
c.increment()
c.increment()
c.increment()
print(c.cout)
0021202009/05/26(火) 01:06:09
Counter.countだ
nonlocal cも
なんかに使えますかねこれ
0022202009/05/26(火) 01:11:34
インスタンスは1つじゃないとちゃんと動かないから無理か
0023デフォルトの名無しさん2009/05/26(火) 01:12:36
関数である意味が無い
素直にクラスにしとけ
0024202009/05/26(火) 01:19:36
ですよね・・・
ところで"\u2020"とかいう表記はusc2ですか?
0025デフォルトの名無しさん2009/05/26(火) 01:40:17
みんなのPythonすごく読みやすい。超面白いんですけど、毎日ガンガン読んでます。
0026デフォルトの名無しさん2009/05/26(火) 03:18:29
class を関数の様に呼び出すのってどんなのでしたっけ

class Hoge(object):
def __init__(a):
print a

h = Hoge()
これはただのコンストラクタなんだろうけど
そうじゃなくて

h = Hoge()
h() が出来る香具師のことなんですが
0027デフォルトの名無しさん2009/05/26(火) 04:02:55
>>> class Hoge(object):
... def __init__(self):
... print "init"
... def __call__(self):
... print "call"
...
>>> h = Hoge()
init
>>> h()
call
0028142009/05/26(火) 14:20:57
>>15
コンソールはlinuxのktermとかxtermとかgnome-terminalとか色々試したけど
どれも同じでした

>>16
エンコーディングはUTF-8です

ぐぐっても解消策が出てこないなぁ
0029デフォルトの名無しさん2009/05/26(火) 16:08:15
エンコーディングは?
0030デフォルトの名無しさん2009/05/26(火) 16:11:36
おい!
0031デフォルトの名無しさん2009/05/26(火) 16:26:20
>>28
環境をもっと詳しく。
Linuxのディストリは何?
Python関係なく普通にシェル上で日本語を入力してバックスペース
押したらちゃんと日本語一文字消える?
0032142009/05/26(火) 16:30:10
>>31
ディストリはarchとubuntuで試しました
pythonに関係なくシェル上だとBSで日本語一文字消せます

ということは、皆さんは普通に消せてるんですね
0033デフォルトの名無しさん2009/05/26(火) 16:39:57
シェルの普通の入力状態じゃなくて、
cat (とか)に何か入力しようとした状態のことを聞いている。
0034デフォルトの名無しさん2009/05/26(火) 16:41:49
以下の例で、print a がposixを返すようにすることは可能ですか?

import os
print os.name
> posix

a = 'os.%s' % name
print a
> os.name
0035デフォルトの名無しさん2009/05/26(火) 16:42:27
あと、ターミナル(xterm とか kterm とか rxvt)が何か、というのが
この場合環境として重要、かも。
0036142009/05/26(火) 16:43:45
>>33
あ、catとかでも同じ状態になります
てことはどこを修正すればいいんですかねこれ
0037デフォルトの名無しさん2009/05/26(火) 16:44:28
>>34
eval('os.name')
0038342009/05/26(火) 16:52:40
>>37
�d
0039デフォルトの名無しさん2009/05/26(火) 19:52:31
>>36
質問する場所
0040142009/05/26(火) 22:18:20
ありがとうございました
もう少し調べてLinux板で質問してきます
0041デフォルトの名無しさん2009/05/28(木) 20:34:35
シンプルなソフトウェアキーボードを
作りたいですがpythonだとwxpythonが
良いですかね?

やはりtkinterからおさえておくべき?
0042デフォルトの名無しさん2009/05/28(木) 20:43:32
すでにあったような
0043412009/05/30(土) 11:33:20
このスレの閑散具合からすると
python自体を止めておいた方が
良いってことか
0044デフォルトの名無しさん2009/05/30(土) 12:18:52
君は何やっても同じ
0045デフォルトの名無しさん2009/05/30(土) 18:05:06
無駄なendを嫌うのと同じように
無駄な話を嫌う傾向にあると思ふ
0046デフォルトの名無しさん2009/05/31(日) 11:02:50
filter(lambda x: x % 3 == 0 or '3' in str(x), range(1, 41))
0047デフォルトの名無しさん2009/05/31(日) 20:21:04
filter(lambda x: x % 8 == 0 or x % 3 == 0 or '3' in str(x), range(1, 41))
0048デフォルトの名無しさん2009/05/31(日) 21:07:22
で、実際python使ってみんなはなにをしているの?
なんかプログラムを作ってるのかな?
0049デフォルトの名無しさん2009/05/31(日) 21:13:59
他に用途ないないと思うが・・・
0050デフォルトの名無しさん2009/05/31(日) 21:22:15
どっちかっていうと日々の作業で使うかな
あと最近はウェブアプリに挑戦
0051デフォルトの名無しさん2009/05/31(日) 21:25:07
変顔の自動化かなぁ
0052デフォルトの名無しさん2009/05/31(日) 22:08:44
あたいは3Dソフトウェアのスクリプトで使ってるよ!
0053デフォルトの名無しさん2009/05/31(日) 23:12:22
>>52
blender?
0054デフォルトの名無しさん2009/05/31(日) 23:35:32
いまいちどんなことができるのかわからないんだけど。
例えば�@ファイヤーウォールが反応したら携帯にメールで知らせるとかは?

�Aひとつのフォルダに複数のmp3のデータが入っている。名前はごちゃごちゃ。
それを01.mp3〜0n.mp3にファイル名を変換することは可能ですか?
0055デフォルトの名無しさん2009/05/31(日) 23:51:00
コンピュータならできて当たり前だろ……
0056デフォルトの名無しさん2009/06/01(月) 00:02:51
>>54
1はどんなファイアウォールを使ってるかによる
ログをテキストで定期的に書き出してくれるFWなら頑張れば出来る
そうでない場合は可能だけどちょっと難しいかな

2は余裕。osやos.path見てみるといいよ
0057デフォルトの名無しさん2009/06/01(月) 00:26:33
>>56
ご丁寧にありがとうございます。
見てみますね。
はじめてのpython みんなのpythonあたりを読破すれば�A位は簡単にできますか?
本屋で立ち読みした時に、複雑な電卓をいじってるようで…
いつになったら�A見たいなことができるのかな?って疑問を持ちましたので。
ド素人ですいません。
0058デフォルトの名無しさん2009/06/01(月) 00:54:52
>>57
初めてのPythonなら読破しなくても1/3ほど読めば十分じゃないかな
あとは使えそうなライブラリを探してマニュアルを読む

必要な時間については人それぞれ。数時間、数日、数週間・・・
まあ半年かかるなんてことはないから心配いらないよ
0059デフォルトの名無しさん2009/06/01(月) 01:01:37
「はじめての」と「初めての」にとても大きな違いがあります
>>57はきっと「はじめての」なんでしょうな・・・
0060デフォルトの名無しさん2009/06/01(月) 01:07:37
皆さん親切に本当にありがとうございます。
個人的にちょっと読んだだけですが「みんなのpython改訂版」が読みやすかったのですが
(ちょっとだけしか見てませんが…)
これでもOKですか?これでも1/3くらい読めば、ショボイプログラムが作れますか?
明日買ってきます。
0061デフォルトの名無しさん2009/06/01(月) 01:14:48
それは初心者向けで突っ込んだ解説はしていない本だからすぐに全部読めるよ
しょぼいプログラムを作るのが目的でネットの検索と併用すれば十分かと
0062デフォルトの名無しさん2009/06/01(月) 01:42:36
>>59
「はじめての」人柱になってもらおうとか思って
似たタイトルの本があるとはあえて言わなかった。反省している

>>60
1/3じゃ足りないかも。でもたいして問題にはならないよ
2を書くとしたら骨組みはこんな感じ

import os

for i, filename in enumerate(os.listdir(u'.')):
if filename.endswith('.mp3')
os.rename(filename, '%03d.mp3' % i)
0063デフォルトの名無しさん2009/06/01(月) 02:38:56
みんなのPythonの改訂版ってPython3.0対応版でしょ
その辺に転がってるコードが多いのはPython2.x系
言語仕様が一部変わってるから気をつけな

新しいものをとるか古いのを選ぶかは趣味の問題ではあるが
標準以外のモジュールは3.0にはまだ対応してなかったりもするから気をつけなよ
まあ、仕様の変更点を把握しとかないといけないのはどちらを学ぶにしても同じだがね
本はちょっとしたプログラムを書きたいってだけなら挫折しないように薄いのにしときなw
あとはオンラインドキュメントとかで適当に調べつつ作りたいもの作ればいいさ
0064デフォルトの名無しさん2009/06/01(月) 03:06:12
>>56
元々
03.mp3
02.mp3
01.mp3
というファイルがあったとき
01.mp3
02.mp3
03.mp3
に名前を付け替えるのって簡単?
0065デフォルトの名無しさん2009/06/01(月) 03:34:23
一体どこが難しいんだ?
0066デフォルトの名無しさん2009/06/01(月) 03:36:00
>>64
条件が良く分からないけど、番号を昇順に変えるの?
何とでも出来ると思うよ。
0067デフォルトの名無しさん2009/06/01(月) 04:03:07
いや、お前達64が何言ってるのか理解してないだろう。
64が言ってるのはファイル名の重複でリネームするのに失敗する問題。
0068デフォルトの名無しさん2009/06/01(月) 04:04:55
一度別の名前にリネームすればいいじゃん。
0069デフォルトの名無しさん2009/06/01(月) 06:48:48
邪魔になってる方のファイルを別の名前にするんですね
0070デフォルトの名無しさん2009/06/01(月) 07:12:58
rename前に既存調べて既存だったら飛ばせば医院で内科医?
0071デフォルトの名無しさん2009/06/01(月) 07:22:31
>>70
それが >>64 >>67 の意図する動作になってるかどうかは微妙

>>54 の2ならそれで良さそう

とりあえず >>64 は仕様を明確にすべき
0072デフォルトの名無しさん2009/06/01(月) 07:59:17
さすがくだすれw
0073デフォルトの名無しさん2009/06/01(月) 08:56:03
つーか、パイソンと全然関係ないしw
一般のアルゴリズムが分からないって、言語以前の問題だからw
0074デフォルトの名無しさん2009/06/01(月) 15:17:18
swapなんぞ誰でも思いつくアルゴリズムだろ
0075デフォルトの名無しさん2009/06/01(月) 15:51:51
えっと、
スレ違いですので
こちらへどうぞ
http://pc12.2ch.net/test/read.cgi/tech/1243159710
0076デフォルトの名無しさん2009/06/01(月) 21:12:23
>>62さん

素晴らしいコードありがとうございます。
勉強中でとても参考になります。完全に理解できていないのが申し訳ありませんが(汗

具体的な例をお願いできますか?
例えば、C:\Documents and Settings\user\デスクトップ\新しいフォルダ
の中に、
abc.mp3
def.mp3
ghi.mp3
jkl.mp3という4つのデータがあります。
これらをソートした順に01.mp3〜04.mp3にリネームする。

宜しくお願い致します。
0077デフォルトの名無しさん2009/06/01(月) 21:36:39
>>76
その前に自分で書いたコードを貼ってみて
動かなくても全然構わないから

いきなり答え見たら実力つかないよ
0078デフォルトの名無しさん2009/06/01(月) 21:47:43
全然そんなレベルじゃないんですよ(汗
すいません。
0079デフォルトの名無しさん2009/06/01(月) 22:16:23
>>76
指定ディレクトリ内のファイル一覧を取得する
os.listdir、glob.glob等

ファイル一覧を並び替え
list.sort()

ファイル名を変更
os.rename

その他
os.path.join、os.path.abspath

このあたりを調べればいけるんじゃない?
とりあえずosとos.pathモジュールは一通りリファレンスに目を通しましょう。
0080デフォルトの名無しさん2009/06/01(月) 22:19:21
>>79さん
本当にご親切にありがとうございます。
今日さっそく「みんpy」買ってきました。
面白いですね。まだプログラムって感じではないんですが…
とても参考になりました。
またわからない事がありましたら宜しくお願い致します。
0081デフォルトの名無しさん2009/06/01(月) 22:36:13
>>62 のコードだと
mp3以外のファイルがあったら番号とばない?
0082デフォルトの名無しさん2009/06/01(月) 22:52:35
>>81
飛ぶね。失礼しました

count = 1
for filename in os.listdir(u'.'):
if filename.endswith('.mp3'):
os.rename(filename, '%03d.mp3' % count)
count += 1
0083デフォルトの名無しさん2009/06/01(月) 22:57:49
>>79さん
ちょっと片言の言語で作ってみましたがrenameでのアイデアが…
なにかヒントをお願いします。

#coding: UTF-8

import os
TargetPath = u'C:\Documents and Settings\user\デスクトップ\Mariah.Carey'
a=FileList = os.listdir(TargetPath)
print u"[曲名一覧]"
for f in a:
print f
else:
print u"以上"
b=len(a)
print u"全部で",b,u"曲"
c=range(1,b+1)
print c,u"までのリストを作成"

ここまででギブ…曲数分の数値をリストで作ってみて対応できればと…その後は…
そもそも間違った考え方なんですかね…ネットで調べながらなのですいません。
0084デフォルトの名無しさん2009/06/01(月) 23:24:31
>>76
#-*- coding: utf-8 -*-
import os, sys, time, shutil
from math import ceil, log
def rename_to_number(srcdir, ext):
    files = filter(lambda x: x[-len(ext):]==ext, os.listdir(srcdir))
    tmpdir = os.path.join(srcdir, 'tmp%s_%s' % (os.getpid(), time.time()))
    while os.path.exists(tmpdir): tmpdir += '0'
    os.mkdir(tmpdir)
    for f in files:
        src = os.path.join(srcdir, f)
        shutil.move(src, tmpdir)
    fmt = '%%0%dd%s' % (ceil(log(len(files),10)), ext)
    for i, f in enumerate(sorted(files)):
        src = os.path.join(tmpdir, f)
        dst = os.path.join(srcdir, fmt % i)
        shutil.copy(src, dst)
    #shutil.rmtree(tmpdir)  # この行を有効にすると作業後テンポラリを削除します。
if __name__ == '__main__':
    srcdir = sys.argv[1]
    ext = sys.argv[2]
    if ext[0] != '.': ext = '.' + ext
    rename_to_number(srcdir, ext)

# 使い方。このスクリプトを hoge.py と保存(UTF-8)した場合。
# python hoge.py ターゲットディレクトリ 対象拡張子
# と入力
0085デフォルトの名無しさん2009/06/01(月) 23:35:15
>>84さん
すごい。。。
レベルが違いすぎました。
出直してきます。
恥ずかしいですわ
0086842009/06/01(月) 23:55:00
要求にあってなかったところを訂正。

ファイル名の先頭が 0 になるようにする。(12行目)
×    fmt = '%%0%dd%s' % (ceil(log(len(files),10)), ext)
○    fmt = '%%0%dd%s' % (1+ceil(log(len(files),10)), ext)

番号を 0からスタートじゃなく、1からにする。(15行目)
×        dst = os.path.join(srcdir, fmt % i)
○        dst = os.path.join(srcdir, fmt % (i+1))
0087デフォルトの名無しさん2009/06/02(火) 00:01:08
ディレクトリの指定は必要ないんですか?
0088デフォルトの名無しさん2009/06/02(火) 00:19:05
けーすばいけーす
0089デフォルトの名無しさん2009/06/02(火) 17:09:47
お勉強スレのほうに書いたのですが、ちょっと質問のレベルが低すぎたみたいなので、こちらで聞かせていただきます;;

初歩的な質問で申し訳ありません。
.pyのついたファイルをウィンドウズで実行したいのですが、どのように設定をしたらいいでしょうか?

python-3.0.1をインストールしてみたのですが、どうしたらいいのかイマイチよくわかりません;;
0090デフォルトの名無しさん2009/06/02(火) 17:16:18
Python2.6.2をインストールして*.pyをダブルクリックしてみるよろし
0091デフォルトの名無しさん2009/06/02(火) 17:32:05
>>89
Python 3.0 はプログラミングの初学者には今のところ向いてないよ
>>90 の言う通りにしてコマンドプロンプトの使い方も併せて調べておくといいと思う
0092デフォルトの名無しさん2009/06/02(火) 18:13:35
ありがとうございます!
2.6.2ですね。
試してみます。
0093デフォルトの名無しさん2009/06/02(火) 23:50:54
>>84
素敵だが初心者にやさしくないなぁ
無駄に丁寧だから本質じゃない部分につい目がいってしまう
0094デフォルトの名無しさん2009/06/03(水) 01:05:17
>>93
本当にそうだな。
ただ、あそこまでやるなら、テンポラリディレクトリ作るのに何故
tempfile.mkdtemp()を使わないのかが非常に謎。
0095デフォルトの名無しさん2009/06/03(水) 07:09:58
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
0096デフォルトの名無しさん2009/06/03(水) 18:04:51
windows xp sp3
python2.5.3

try:
  getattr(obj, 'undefined_method')
except AttributeError:
  pass

だいぶ省略していますが、こんな感じのコードがあり、ここでmain内でエラーが発生すると
UnboundLocalError: local variable 'AttributeError' referenced before assignment

と出てしまいます
AttributeErrorが見つからない理由と、そもそもUnboundLocalErrorがなんなのかよく理解出来ていないのですが、
原因をご存知の方いますでしょうか?
0097962009/06/03(水) 18:24:44
ごめんなさい解決しました
その前に書いてあった
except ImportError, AttributeError:
の括弧忘れでした。
0098デフォルトの名無しさん2009/06/03(水) 18:27:33
UnboundLocalError: ローカル変数名のリストにはあるけどまだ宣言されてないよ
NameError: とにかくそんな名前知らんよ
0099デフォルトの名無しさん2009/06/03(水) 19:14:50
>>97
エラーが出なくなっただけで
解決はしていないと思うよw
0100デフォルトの名無しさん2009/06/03(水) 19:19:47
学生時代に資格試験取得でcは勉強したのですが、
社会人になってからは言語は一切触れてません。

インフラ側の人間だったのですが、
言語もかじっておきたくpythonをと考えています。

web上の入門サイトをいくつかやってる最中ですが、
いまいち手応えがありません。

そこで、勉強になるような課題?に適したものってなにかありますでしょうか。
また、Django、Ploneも気になっているのですが、
そうした勉強というのは市販されているテキストを一通りできれば
掴めるものでしょうか。

*正直、業務でも活かせることができるまでを
 意識した勉強の仕方がわからないのが困っています、、、
0101デフォルトの名無しさん2009/06/03(水) 19:48:45
>>100
まず要点をまとめてわかりやすく説明することを勉強しるw
0102デフォルトの名無しさん2009/06/03(水) 19:59:08
オラ、宇宙一強くなりてえだ!
0103デフォルトの名無しさん2009/06/03(水) 22:17:38
DjangoにしろPlone(Zope)にしろ癖が強いから初めての人には勧められないな
>>100に明確な目的があるなら別だけど
時間に迫られてないけど面倒な作業を自動化してみる辺りからやってみたら?
0104デフォルトの名無しさん2009/06/03(水) 22:41:03
クックブックでも読めば?
そして己の無知を自覚して初めてのPythonに取り組む
まあ、業務で即生かせるようにはならないがな!
0105デフォルトの名無しさん2009/06/03(水) 23:23:42
みんなのPython改訂版のP.119の一番下のサンプルコードおかしくありませんか?
お持ちの方がいましたら、見てみてください。
>>>for cnt in range((len(seq)):
... print seq[cnt]
...

です
0106デフォルトの名無しさん2009/06/03(水) 23:38:25
端から見ると特におかしくないようだが・・・
0107デフォルトの名無しさん2009/06/03(水) 23:52:39
ttp://mixi.jp/view_bbs.pl?id=43236791&comment_count=4&comm_id=1389875
0108デフォルトの名無しさん2009/06/04(木) 00:36:51
カッコ。
0109デフォルトの名無しさん2009/06/04(木) 02:20:26
>>100
ここの課題でもやってみれば?
http://pc12.2ch.net/test/read.cgi/tech/1153585095/

Django, Plone は 「Python 自体の勉強」 にはお奨めしない
0110デフォルトの名無しさん2009/06/04(木) 03:36:56
とりあえずver2.5の日本語ドキュメントでいいから目を通せ。
チュートリアルをひととおりやって、それが終わったらライブラリリファレンスを読む。
用途や意味の分からないライブラリがあったら調べて、どういう時使うのか理解する。

目的ありきでもいいのかもしれないけど、道具を徹底的に理解するのも大事だと思う。
標準ライブラリだけでも、かなり実用的なものが揃ってるから分かってくると楽しいよ。
0111デフォルトの名無しさん2009/06/04(木) 10:01:10
>>105
ひどい書籍ですね!
ぜひとも買って確かめなければ!!!
0112デフォルトの名無しさん2009/06/04(木) 12:55:57
>>100

> web上の入門サイトをいくつかやってる最中ですが、
> いまいち手応えがありません。

手応えがありませんって、
簡単すぎて全部わかっちゃったのか、
基本も理解出来ないのか、
どっちなんだ?

基本がわからないんだったら、何度も読み返して、
くだらない例題だと思っても、
自分で実際にコードを書きまくって理解しろよ。
01131052009/06/04(木) 23:00:47
>>>for cnt in range(len(seq)):
... print seq[cnt]
...
でした。でもこれでもおかしいですよね?
len()への引数で文字列を扱う際は""。
結果的にはどうしたいのか謎ですが、これが正解に近いですか?
>>>a="seq"
>>>b=range(len(a))
>>>b
[0,1,2]
>>>for cnt in b:
... print a[cnt]
...
s
e
q
>>>
ではないですか?

ってか単純に文字列に""が足りないだけで
>>>for cnt in range(len("seq")):
... print "seq"[cnt]
...
s
e
q
でしょうか?上記の例は詳しくやってみました。
0114デフォルトの名無しさん2009/06/04(木) 23:04:44
seqが変数なんだろ?
前で代入されてるんでしょ?
0115デフォルトの名無しさん2009/06/04(木) 23:10:32
105は友達がいないせいでmixi垢を持ってないんだな。
なによりそれが可哀想だ。
0116デフォルトの名無しさん2009/06/04(木) 23:11:47
まあ、2ちゃんに貼ってあるmixiのリンクは普通踏まないがな・・・
01171052009/06/04(木) 23:14:00
>>114
かなり前までさかのぼっても代入された記述はないんですよ

>>115
確かに友達は少ないかな?w
mixi垢ってなに(汗
0118デフォルトの名無しさん2009/06/05(金) 00:09:14
書籍のサンプルコードなんだから一部抜粋なんて
普通にあるだろ。そうでなければタダの誤植。

だいたいseqっていう名前から
何らかのシーケンスを表す変数だって想像しろよ。
"seq"っていう文字列だなんて普通は思わないよ。
0119デフォルトの名無しさん2009/06/05(金) 00:14:38
>>113
range(len(seq))はforで添え字アクセスをしたい場合に使う慣用句
こんな感じに使う

>>> lines = [u'1行目', u'2行目', u'3行目']
>>> for linenum in range(len(lines)):
... print '%d: %s' % (linenum + 1, lines[linenum])
...
1: 1行目
2: 2行目
3: 3行目

後々わかる日が来るから深く悩まず先に進むのが吉
0120デフォルトの名無しさん2009/06/05(金) 00:18:22
>>119
あ、linenumになってないね。
linenum → i に訂正
0121デフォルトの名無しさん2009/06/05(金) 00:29:17
おかしいのは105の脳みそでした
0122デフォルトの名無しさん2009/06/05(金) 02:17:09
>>105 さんの脳みそ本当にだいじょうぶかなぁ
ぜったい普通じゃないよね かわいそう
0123デフォルトの名無しさん2009/06/05(金) 03:11:03
クラスAのなかで[1,2,3]というリストを作ろうとしています。
で、次のようにコーディングしたらselfが定義されてない、って怒られました。
class A:
def __init__(self):
self.x = []
for i in range(1,4):
self.x.append(i)



Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
class A:
File "<pyshell#5>", line 5, in A
self.x.append(i)
NameError: name 'self' is not defined

なにがまずいのかわかりません。どなたかご指摘くださるとありがたいです。
0124デフォルトの名無しさん2009/06/05(金) 03:23:15
>>123
インスタンスメソッドの第一引数(慣習としてselfを使う)は
インスタンスオブジェクトを指す。
その for 文はインスタンスメソッドの外側にあるので、クラスを
生成するときに実行される。その時にselfは存在しない。
解決するにはインデントを修正する。
class A:
  def __init__(self):
    self.x = []
    for i in range(1,4):
      self.x.append(i)
ただし、こちらの方が綺麗
class A:
  def __init__(self):
    self.x = range(1,4)
0125デフォルトの名無しさん2009/06/05(金) 10:02:50
インデントがずれてるんじゃねえの?
スペースを全角に変換してもういちどコード張れや>123
0126デフォルトの名無しさん2009/06/05(金) 11:08:44
>>124
ありがとうございます。
インデントはつけています。投稿時につぶれてしまいました。すみません。

>>125
インデントは次のようにつけています。

class A:
        def __init__(self):
                self.x=[]
        for i in range(1,4):
                self.x.append(i)
0127デフォルトの名無しさん2009/06/05(金) 11:13:27
>>126
バロス(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
01281262009/06/05(金) 11:31:20
あ〜、
for i ...
のインデントは
def __init__ ...
より内側に来なきゃいけないのかな?
どうもselfがよくわからんorz
0129デフォルトの名無しさん2009/06/05(金) 13:20:52
self.x = [] の次の行は
既に別の空間だ
0130デフォルトの名無しさん2009/06/05(金) 15:50:40
コードは
$ sed -e "s/ /\ /g" test.py
みたいに正規表現でhtmlの空白に置換するといいよ
0131デフォルトの名無しさん2009/06/05(金) 19:49:02
すごい初歩のことですみません。
リストでスライスのことですが、

a=range(10)
a[1:3]
1,2

となります。

なぜ、1,2,3にならないのでしょうか?
0からのインデックスという説明がされているのですが、
0,1,2,3,4,5,6,7,8,9
とするのならば、a[1,3]であれば、1,2,3ではないのですか?
こんなところでつまづいてしまっているのですが、どのように理解すればよいのでしょうか?
0132デフォルトの名無しさん2009/06/05(金) 19:56:23
後ろから2行目に間違いがありました。
a[1:3]でした。
0133デフォルトの名無しさん2009/06/05(金) 19:59:19
>>131
スライスにおけるインデックスは文字の隙間と考えるのが定番
http://www.python.jp/doc/release/tut/node5.html#SECTION005120000000000000000
0134デフォルトの名無しさん2009/06/05(金) 20:03:08
>>131
開始点は含み、終了点を含まない範囲を指定している。
記号で書けば、 [begin, end)
こうすると、長さ0の範囲を [n:n] で表せる。
もしくは、長さを end - begin で計算することができる。
C++でも同じ考え方をしているよ。
0135デフォルトの名無しさん2009/06/05(金) 20:04:16
>>133
なるほど。文字と文字の隙間にインデックスが付けられているのですね。
文字自体についているわけではなかったのか。
疑問が解けました。ありがとうございました。
0136デフォルトの名無しさん2009/06/05(金) 20:06:47
何につけ作法は作法で「そういうもの」と覚えてしまう方が早く学習進んで良い
理由付けやルールなんかは言語作者のもんだしさ…
0137デフォルトの名無しさん2009/06/05(金) 20:09:47
134さんもありがとう。
133さんのリンク先の図解で理解できました。
また、計算する際にも利用できるのですね。
今のところ、図解が理解できたので良しとします。
m(_ _)m
0138デフォルトの名無しさん2009/06/05(金) 20:27:42
>>136
確かにそうなのかも知れないですけど、モヤモヤしていて理解できないことって、気持ちが悪いです。
しかも難しくて理解できないことじゃなくて、誰でも疑問を持ちそうな初歩的なことでしたから。
インデックスが、文字自体に付いていないということに気付きませんでした。
0139デフォルトの名無しさん2009/06/05(金) 20:34:20
小学校の算数レベルだろ
0140デフォルトの名無しさん2009/06/05(金) 20:40:24
うーん、そうなのですか?
今の算数は、インデックスが0から始まりそれは文字に割り当てられてのではなく、
隙間に割り当てられているって習うんですか?
私に時には習った覚えはないです。
0141デフォルトの名無しさん2009/06/05(金) 20:42:15
誤字になってしまったので、書き直します。

うーん、そうなのですか?
今の算数は、インデックスが0から始まりそれは文字に割り当てられるのではなく、
隙間に割り当てられているって習うんですか?
私の時には習った覚えはないです。
0142デフォルトの名無しさん2009/06/05(金) 20:46:20
>>141
釣られなくていいから
0143デフォルトの名無しさん2009/06/05(金) 20:58:16
>>142
そっくりそのままお前に返したいw
0144デフォルトの名無しさん2009/06/05(金) 21:46:27
>>143
くりそつ
0145デフォルトの名無しさん2009/06/05(金) 22:37:15
つーか、単に-1に合わせてるだけの希ガス。
0146デフォルトの名無しさん2009/06/06(土) 01:15:51
end - beginで length が取れるのが一番の魅力だと思う
0147デフォルトの名無しさん2009/06/06(土) 09:58:05
>>146
カウンタが1から始まったりendが含まれる系の言語では
あちらこちらに +1 とか -1 が散らばってて、一旦バグると
どの +1 が間違ってるのか判らないもんな。
0148デフォルトの名無しさん2009/06/06(土) 11:47:27
C とかで書くときもやっぱり
for (i = begin; i < end; i++)
だな。
for (i = begin; i <= end; i++)
とか書いてるのみるとイラッとする。
0149デフォルトの名無しさん2009/06/06(土) 12:39:39
>>148
場合によるね。
タグの値を順番になめる場合とか、結構 <= で比較する場合もあると思う。
for (tid = ID_START; tid <= ID_FINAL; ++tid) とか。
01501482009/06/06(土) 12:42:56
>>149
うん 場合によるとおもう 必要なときもあるよね
でも <= を使うときにちょっといやな気分になるのはおれだけかな
0151デフォルトの名無しさん2009/06/06(土) 12:54:49
俺もなる。基本的に序数の場合はそれでいいと思う。
ただ
for (double alpha = 0.0; alpha <= alpha_max; alpha += step)
みたいに実数値の範囲みたいなのは<=じゃないとキモいと思う
0152デフォルトの名無しさん2009/06/06(土) 14:00:30
普通はID_FINALってやつを最後の次の値として定義するけどな。
そうでないと斜め読みしてるときにいちいち目がとまって
本当にただしいか確認しないとといけない。

もちろん、>>151みたいなalpha_maxとかINT_MAXみたいに
どうしようもない場合もあるんだが。

郷にいれば郷に従えみたいな感じかなあ。
0153デフォルトの名無しさん2009/06/06(土) 14:05:25
と思ったけどそうでもないかな。
今のなしで。
0154デフォルトの名無しさん2009/06/06(土) 14:07:10
0〜N-1なら、i<Nで、
A〜Bなら、i<=Bだな。
0155デフォルトの名無しさん2009/06/06(土) 14:14:25
初心者には難しい話しているな(汗
0156デフォルトの名無しさん2009/06/06(土) 15:42:24
>>151
なんで?
0157デフォルトの名無しさん2009/06/06(土) 19:41:22
おまえら、JDBCでも1ベースなのはなぜなんだぜ?
0158デフォルトの名無しさん2009/06/06(土) 22:25:54
Pythonの場合xDBCは不要
0159デフォルトの名無しさん2009/06/06(土) 23:25:49
DBAPI 使う罠
0160デフォルトの名無しさん2009/06/08(月) 10:48:32
>>158

マジすか?
Mac から Microsoft Access データを読み書きする方法教えやがれです。
0161デフォルトの名無しさん2009/06/08(月) 12:04:12
質問です!
最近、BlackJumboDogを使ってWindowsXPでWEBサーバを立てたのですが
PerlとRubyは動くのにPythonが動きません。
cmdから「perl -v」「python -v」「ruby -v」をやるとエラーの雰囲気は無い応答が帰ってくるので
問題ないとおもうのですが、何か原因がわかるかたいますか?
ちなみに「python -v」を打ち込むとperlやrubyではバージョンとかが出るのですが
pythonだけ対話モードみたいなのに入ります。
cgiの中身は以下のようになってます。

#!/python

# -*- coding: utf-8 -*-
import cgi
import cgitb
cgitb.enable()

print "Content-Type: text/html"
print
print "hello world."

アクセスすると真っ白です。
どなたかお助け願います。お願いしますよろしくお願いします!
0162デフォルトの名無しさん2009/06/08(月) 12:17:42
>>161
かなり特殊なサーバーみたいだね。
http://www.kamezoh.net/bjd-doc/bjd-doc/WebCgi.html
これをみると、拡張子とインタプリタの関連付けを一個一個埋め込みで実装している
ような気がする。で、Pythonには対応していないから実行できなさそう。
0163デフォルトの名無しさん2009/06/08(月) 12:29:30
>>162
まま、マジですか!
ありがとうございます。
原因がBlackJumboDogにあるとは考えてなかったので
それを念頭にまたググってみます。
0164デフォルトの名無しさん2009/06/08(月) 13:15:30
>>161
python -V (大文字)
0165デフォルトの名無しさん2009/06/08(月) 15:08:16
>>164
多分bingoだろうな。どうして--helpとか、-hをまずしないのだろうか。
0166デフォルトの名無しさん2009/06/08(月) 15:23:13
ついでに晒しとく

http://6924.teacup.com/kamezoh/bbs
かめぞ〜掲示板
雑談 兼 避難所

げ! 投稿者:かめぞ〜 投稿日:2008年 9月 4日(木)20時34分22秒   返信・引用
勝手に広告なんか入れやがって・・・SPAM業者と変わらんではないか。

掃除掃除。( ´〜`)y-~~


空いた時間を有効活用
バイト探しはお任せ。高時給から短時間バイトまでおすすめ情報を比較。

リフォームしませんか
リフォーム情報が満載。人気のリフォーム会社を徹底比較。

おしゃれ女性かつら情報
ファッションから医療用まで、女性用かつら・ウィッグ情報はコチラ。
0167デフォルトの名無しさん2009/06/08(月) 17:22:26
>>161
特別な事情やこだわりがない限り
WebサーバはApache使ったほうがいいんじゃまいか
0168デフォルトの名無しさん2009/06/08(月) 19:40:31
>>161
俺はANHTTPDを使ってる
これならPythonだろうがなんだろうが動くぞ
0169デフォルトの名無しさん2009/06/08(月) 20:20:46
Winなら、Linuxの仮想環境作ってその中でWeb鯖立てるのが本当はおすすめ
0170デフォルトの名無しさん2009/06/08(月) 22:40:41
あの〜インタラクティブシェルでだらだらコードを書いた後にクリアしたい(今までのコードをを消したい)
時は再起動しかないですか?(プログラムを)
0171デフォルトの名無しさん2009/06/08(月) 23:08:55
wsgiだろ常考
0172デフォルトの名無しさん2009/06/09(火) 00:40:26
>>162
へえ、と思ってソース(TVWeb.cpp)を見たが、以下のようなロジックなので
pythonインタープリターとパラメーターがちゃんと1行目に書いてあれば
大丈夫っぽい。

1行目が#!で始まっている
 →perlという文字があればperl、rubyという文字があればrubyと見なす
 どちらでもなければコマンドへのフルパスと見なす(/は\に置換)
1行目が<?で始まっている
 →phpと見なす

何がcgiモジュールなのかは、設定ダイアログで設定した拡張子で判断する。
ただし、拡張子と実行コマンドが紐付けされるわけではなく、上記のロジックで
判断される。
0173デフォルトの名無しさん2009/06/09(火) 03:47:45
>どちらでもなければコマンドへのフルパスと見なす(/は\に置換)

じゃあ
#!c:/Python26/python.exe
って書かないといけない訳?
0174デフォルトの名無しさん2009/06/09(火) 07:54:25
だっさ
0175デフォルトの名無しさん2009/06/09(火) 22:11:34
/cygdrive/c/IronPython/py2/ipy.exe
0176デフォルトの名無しさん2009/06/10(水) 08:07:17
Python CGI
http://pc11.2ch.net/test/read.cgi/php/1163513344/

いつまで板違いの話をしてんの
0177デフォルトの名無しさん2009/06/10(水) 09:16:42
海の日
0178デフォルトの名無しさん2009/06/10(水) 11:44:06
つゆ入り
0179デフォルトの名無しさん2009/06/10(水) 22:56:31
>>176
他の板に適切なスレがあるからと言って、即スレ違いということにはならん。
誘導自体は否定しないけどね。
0180デフォルトの名無しさん2009/06/11(木) 16:09:25
アフォ毛
0181デフォルトの名無しさん2009/06/11(木) 17:10:28
pythonもオブジェクト指向も初心者です。
次のようなことをしたいと思ってます。

クラスA、クラスB、クラスCがある。
1、クラスBからの出力を、クラスAが入力として受け、クラスAのなんらかのメソッドを実行する。
2、クラスAのメソッド実行終了後、クラスCのメソッド実行に移る。

どうやったらいいか、思考の材料さえ頭の中にない状態です。キーワードだけでも教えてください。
0182デフォルトの名無しさん2009/06/11(木) 18:00:42
>>181
http://pc12.2ch.net/test/read.cgi/tech/1153585095/
0183デフォルトの名無しさん2009/06/11(木) 19:56:01
>>181
まず、何でもいいから
「クラスを定義してインスタンスを作ってメソッドを実行する」
くらいは出来るの?
01841812009/06/11(木) 20:18:11
>>183
ようやくそれができるようになった段階です。
0185デフォルトの名無しさん2009/06/11(木) 21:57:35
前にも出ましたが、「ファイル名の書き換え」
例えばディレクトリ指定はコード内に書く。
フォルダ内のごちゃごちゃ名前のmp3ファイルをa01.mp〜a0n.mp3まで順に書き換える。
参考にさせて頂きたいのですが、サクサク書ける方いましたら宜しくお願い致します。
0186デフォルトの名無しさん2009/06/11(木) 22:15:48
Python何が得意なの?
webサーバーのCIとか得意ですか?
0187デフォルトの名無しさん2009/06/12(金) 00:21:57
>>186
Pythonは、汎用のプログラミング言語だから、大抵の事に適しているよ。

デスクトップアプリ: BitTorrent, DropBoxクライアントなど
Webアプリ: Zope, Django, TurboGears
埋め込み: 各種ゲーム、CG
サーバー: Webサーバー、FTPサーバー、メッセージングサーバー
0188デフォルトの名無しさん2009/06/12(金) 03:17:45
なんか板違いが多いな
web板逝けよ
http://pc11.2ch.net/test/read.cgi/php/1163513344
0189デフォルトの名無しさん2009/06/12(金) 07:28:25
それコピペ
0190デフォルトの名無しさん2009/06/12(金) 08:55:15
それもコピペ
0191デフォルトの名無しさん2009/06/13(土) 22:57:07
関数の戻り値ってのがちょっと理解できないんですが、
これってどういう目的で行うんですか?関数によって返されたオブジェクトを変数に代入すれば同じ
効果ですか?
ちょっとわかり難いので、噛み砕いてご説明いただけると幸いです。
プログラミング自体初心者です。宜しくお願いします。
0192デフォルトの名無しさん2009/06/13(土) 23:31:07
一回スパゲッティを作ってみるといいよ
0193デフォルトの名無しさん2009/06/14(日) 00:20:46
スパゲッティと関係あるんでしょうか
0194デフォルトの名無しさん2009/06/14(日) 01:04:35
引数が入力なら戻り値は結果だよ

例えば足し算の関数 add を作ってみる

def add(x, y):
  return x + y

これを answer = add(2, 3) と使うと、
add さんに 2 と 3 を足してくれーと頼んで、add(2, 3) はその結果の 5 に置き換わると考えてかまわない
つまり answer = 5 みたいになって、answer には 5 が代入される
answer = add(2, 3) * 3 なら answer = 5 * 3 みたいになって 15 が代入される
0195デフォルトの名無しさん2009/06/14(日) 09:46:43
reduceがようわからんのですが
0196デフォルトの名無しさん2009/06/14(日) 10:38:01
>>195
おれもよくわからんのですが、forループで書くよりreduceで書いたほうがカッコいいというのは分かる。
つまり結果が一個になるforループはreduceで書いてる…

おなじく結果の個数が変わらないforループは、mapで書いたほうがカッコいいのでそうしてる。
0197デフォルトの名無しさん2009/06/14(日) 12:08:24
>結果が一個になるforループはreduce

とは限らないんだよねぇ
0198デフォルトの名無しさん2009/06/14(日) 12:30:03
>>197
えー
教えてくだしあ
0199デフォルトの名無しさん2009/06/14(日) 12:35:10
reduce は

x1 ⊕ x2 ⊕ ... ⊕ xn

のこと。
リストx1, ..., xnと2項演算子⊕を与えられればこの計算は定義できるでしょ。
0200デフォルトの名無しさん2009/06/14(日) 12:39:17
>>194
ありがとうございます!
returnを使わないと、戻り値を変数に代入できないのですが、
それを代入できるようにするのがreturnと考えてもOKですか?
0201デフォルトの名無しさん2009/06/14(日) 12:49:58
>>200
Pythonに代入というものはない。
すべてbindingだ。
0202デフォルトの名無しさん2009/06/14(日) 12:51:45
>>200
不思議な頭の構造してる人だなぁ。
returnを使わないと、戻り値がそもそも「ない」。
あなた「戻り値」って何だと理解しているわけ?
0203デフォルトの名無しさん2009/06/14(日) 12:55:10
「戻り値」=「結果」?
>>returnを使わないと、戻り値がそもそも「ない」。
っていうのがよくわからないんですよね
参考書などではreturnのところがprint文で結果を表示するようになってますよね。
その違いってなんですか
0204デフォルトの名無しさん2009/06/14(日) 12:56:30
なんか着眼点がずれてる。
0205デフォルトの名無しさん2009/06/14(日) 12:58:55
えー
newlist = reduce(lambda x,y: x+y, inputlist) リストの内容を全部連結したリスト作る
たとえばこんなreduceもあるかもしれんけど…
結局どういうとこで使うのが一番カッコいいのか良く分からんのですよ。
逆に正直に言うとですね、「コイツこういうとこではreduce使えよバカ」と思われないためには
どうしたらよいでしょうかw
0206デフォルトの名無しさん2009/06/14(日) 13:03:18
>>203
呼び出して任せて何かさせて終わり、なら、戻り値は要らない。
呼び出して結果を報告させるには、戻り値が必要。
0207デフォルトの名無しさん2009/06/14(日) 13:05:49
「関数の呼び出し側の都合」と、
「関数内部の都合」がごっちゃになってるんじゃね?

関数は作る人と使う人がいる。
0208デフォルトの名無しさん2009/06/14(日) 13:06:01
>>205
速度面などで必要ないなら使わなくておk
0209デフォルトの名無しさん2009/06/14(日) 13:06:39
>>205
使う意義がよく分からないものは無意味に使わないのが
Python的にはカッコイイ。
0210デフォルトの名無しさん2009/06/14(日) 13:09:48
高階関数にreduce的な関数を渡す必要があるときは reduceを使う。
わざわざlambda でごちゃごちゃと車輪の再発明するのはカコワルイ。
もっともreduceをとる高階関数なんて、見たことないけど。
0211デフォルトの名無しさん2009/06/14(日) 13:13:29
はっきり言うとreduceはいらない子。
使わなくてよろしい。
0212デフォルトの名無しさん2009/06/14(日) 13:17:14
>>211
非常にすっきりしました。
map/reduceの兄弟、兄は本当に便利な子だけど弟は「はっきり言って要らない子なのよね」
とつぶやく母、それを聞いてしまい泣きながら家を飛び出すreduceくんということですね。
0213デフォルトの名無しさん2009/06/14(日) 13:21:02
関数型プログラミングやろうとするとreduceの出番も出てくるけど、
Pythonの場合、関数型にこだわる意味がないからな。
0214デフォルトの名無しさん2009/06/14(日) 13:28:54
>>203
初心者が対話型プロンプトで標準出力への出力と
関数の戻り値が区別つかなくなるのは典型的な落とし穴

print 'hoge' # 'hoge'を標準出力に書き出す。戻り値もへったくれもない
0215デフォルトの名無しさん2009/06/14(日) 13:29:51
map/reduce/filterは使い始めると際限ないから基本使わない
0216デフォルトの名無しさん2009/06/14(日) 13:36:31
小手先の技は、俺SUGEEだけのために存在する。
そういう奴に限って、アルゴリズムがさっぱりだったりするw
0217デフォルトの名無しさん2009/06/14(日) 13:44:19
抽象化を「小手先の技」とか思っちゃう奴はこの先真っ暗だぞ。
0218デフォルトの名無しさん2009/06/14(日) 13:51:07
これは抽象化じゃないだろw
0219デフォルトの名無しさん2009/06/14(日) 13:56:24
>>標準出力への出力と 関数の戻り値
>>関数は作る人と使う人がいる。
難しいな
0220デフォルトの名無しさん2009/06/14(日) 14:24:22
filterは普通に便利だし。
Cしか知らない人が「何なのこれ??」っていうから、
このmapってのがfor i = 0 to... のループで、filterってのがループの中のif文ですな、
展開してみるとこんな具合です。と説明したら「SUGEEEE」言ってた。
0221デフォルトの名無しさん2009/06/14(日) 14:29:03
>>214
なるほど、式を評価してそのまま表示するから、
かえって分かりにくくなってるってことか。
0222デフォルトの名無しさん2009/06/14(日) 14:38:50
>>212
reduceが兄で
mapが弟ですよ
0223デフォルトの名無しさん2009/06/14(日) 14:40:20
>>214
printの戻り値は無視ですかそうですか
0224デフォルトの名無しさん2009/06/14(日) 14:50:58
printの戻り値?あれはステートメントだろ。
0225デフォルトの名無しさん2009/06/14(日) 15:09:59
printはもう文じゃなくて関数になったよ^^
0226デフォルトの名無しさん2009/06/14(日) 15:12:15
変な煽りは本スレでどうぞ
少なくとも>>214のprintは誰が見ても文
0227デフォルトの名無しさん2009/06/14(日) 21:56:20
print関数も戻り値ないんだよ^^
0228デフォルトの名無しさん2009/06/14(日) 21:58:27
reduceが抽象化じゃないとか、痛い人がいるな。

pythonは処理の構造を抽象化するオツムなんかプログラマに期待していなくて
バカでもちょっとだけ賢い人も同じ処理を書くと同じようなコードになるよう
誘導する言語だから、ループ書けという方向になってる。
reduceとかは、初期に有能なプログラマを魅きつけるためのプログラマホイホイ
みたいなもので、十分普及した今となってはいらん子扱い。
0229デフォルトの名無しさん2009/06/14(日) 22:10:57
えっと
ネタだよね
0230デフォルトの名無しさん2009/06/14(日) 23:38:37
228の要約
forを書くプログラマは馬鹿
0231デフォルトの名無しさん2009/06/14(日) 23:47:00
頭がreduce
0232デフォルトの名無しさん2009/06/15(月) 01:02:07
mapやreduceがなくても実際ほとんど困らないけど
なくなっちゃったらなんか味気ないよねえ
リスト内包表記がなかったら少し困るけどね
0233デフォルトの名無しさん2009/06/15(月) 02:44:24
うちの嫁はreuse
0234デフォルトの名無しさん2009/06/15(月) 10:33:27
mapは複数のリストに演算を適用したいときに使うかな
ベクトルの加算みたいな
+をoperator.addとかタイプせなあかんのはウザいが
0235デフォルトの名無しさん2009/06/15(月) 10:38:54
forよりmapの方が速いんじゃなかったっけか?
0236デフォルトの名無しさん2009/06/15(月) 10:59:50
operator.add と lambda x,y:x+y だとどっちが速いですか
0237デフォルトの名無しさん2009/06/15(月) 11:07:23
http://newworld.ddo.jp/doc/PerformanceTips/
の真ん中あたりに。

バージョン 時間(秒)
基本的なループ 3.47
ドットを取り除いたもの 2.45
ローカル変数&ドットなし 1.79
map関数をつかったもの 0.54
0238デフォルトの名無しさん2009/06/15(月) 13:08:48
リストの項目を文字列に入れたいんだ。

A = [1,2,3]
print "%d, %d, %d" % (A[0], A[1], A[2])

で出来るが、

print "%d, %d, %d" % A

これだと TypeError: int argument required と言われる。
エラーになるのはわかるんだが、そこをなんとか、
Aのインデックスをいちいち指定しないで、
そのまま文字列の場所に入れる方法ってないですか?
0239デフォルトの名無しさん2009/06/15(月) 13:16:36
tuple(a)
0240デフォルトの名無しさん2009/06/15(月) 13:17:46
tuple(A) だろ
もしくは A = (1, 2, 3)
0241デフォルトの名無しさん2009/06/15(月) 13:34:11
ありがとうございます。
タプルの方は出来るのか・・
0242デフォルトの名無しさん2009/06/15(月) 13:34:39
ディクショナリにして使うと、順番も気にしなくていいぞ。
0243デフォルトの名無しさん2009/06/15(月) 18:09:23
print "%d, %d, %d" % *A
0244デフォルトの名無しさん2009/06/15(月) 18:11:16
SyntaxError: invalid syntax
0245デフォルトの名無しさん2009/06/15(月) 18:28:19
print "%d, %d, %d" % (*A)
0246デフォルトの名無しさん2009/06/15(月) 18:53:55
SyntaxError: invalid syntax
0247デフォルトの名無しさん2009/06/15(月) 18:57:05
print A
0248デフォルトの名無しさん2009/06/15(月) 21:24:18
str(A)
0249デフォルトの名無しさん2009/06/15(月) 21:25:06
str(A) .strip('[]')
0250デフォルトの名無しさん2009/06/17(水) 01:51:59
reduce はいらないこだろ。

実際3.0からはreduceは無いわけで。

map、filterもなくなるの時間の問題でしょ。
0251デフォルトの名無しさん2009/06/17(水) 02:03:17
>実際3.0からはreduceは無いわけで。

kwsk
0252デフォルトの名無しさん2009/06/17(水) 02:10:36
>>251
3.0からはbuiltin関数ではなくなって、モジュールへと追いやられた。
Guido は、他のmapやfilterもbuiltinからは外すべしと主張してたが、これらは3.0ではなんとか残った。
4.0になったときには、builtinから外れてもなんら不思議ではない。
0253デフォルトの名無しさん2009/06/17(水) 02:27:00
あと、上の方にあるベンチマークだが、
あれはかなり古いPythonのベンチ。


リスト内包表記はバージョンがあがるたびにスピードアップしてて、
現在では、lambdaなしのmapに準ずるほどのベンチスピード。
一方、mapでlambdaを使ったら、リスト内包表記どころか、
通常のforループと同じかそれより遅いぐらいになる。
0254デフォルトの名無しさん2009/06/17(水) 03:58:35
ということは3.0以上ではreduceは
全部リスト内包に置き換えた方がよい
ということですね
0255デフォルトの名無しさん2009/06/17(水) 05:55:35
>>253
それって、リスト内包では評価対象がイテレータになるんで速い、ってことなの?
0256デフォルトの名無しさん2009/06/17(水) 06:36:32
>リスト内包表記はバージョンがあがるたびにスピードアップしてて、
>現在では、lambdaなしのmapに準ずるほどのベンチスピード。

現在とは3.0ですか2.6ですか
0257デフォルトの名無しさん2009/06/17(水) 07:09:21
>>254
reduceをいったいどういう内包表現に置き換える積もりなんだ?
0258デフォルトの名無しさん2009/06/17(水) 12:42:01
>>4-8
おかげさまでうまくいきました
無料の50MBだとコンパイルに失敗(というかソースの展開ですでに失敗)するので
quota3GBのお試し期間を申し込んだら2.5.4をまるごとコンパイルできました
setuptool/mysqldb等も放り込んでMySQLにもアクセスできました
お試し期間が終わるとquotaが50Mに戻るので放っとくとファイルが壊れるそうで
それまでに必要最小限サイズになるように標準ライブラリを削る必要がありました
結局バイナリCGIのケースとやってることはあまり変わらないかもしれません
0259デフォルトの名無しさん2009/06/17(水) 13:47:20
>>253
mapで使う関数は、defしたほうがいいってことですか?
defしたリスト内包表記>defしたmap≒lambdaで書いたリスト内包表記>lambdaで書いたmap≒普通のfor
てことなんすかね。リスト内包表記はCで実装した部分を実行するのが多いってことなんだろか
0260デフォルトの名無しさん2009/06/18(木) 09:21:38
>>259
普通に自分で def した関数ならば変わらない。
でも、自分で定義しなくても使える関数はC言語で実装されている
事が多いので、同じ事をする lambda よりも高速な事が多い。

速い順に並べると、
1. C関数の内包表記/map
map(str, l)
[str(x) for x in l]

2. Python式による内包表記
[x*2+3 for x in l]

3. Python関数による内包表記/map
def func(x):
  return x * 2 + 3
map(func, l)
[func(x) for x in l]
map(lambda x: x*2+3, l)

なので、mapを使っても悪くは無い場合は、1か、3で既存のPython関数を
使う(map用に用意しなくてもいい)場面のみ。
0261デフォルトの名無しさん2009/06/18(木) 23:38:12
ユニコード文字列に関して質問させて下さい。
python2.6を使用しておりますが、このVerはユニコード文字列は気にしなくてもいいんですか?
例)
#coding: utf-8

a={"abc":"123","bcd":"456"}
b="コード:%(abc)s 局:%(bcd)s"
print b%a                 #コード:123 局:456

ユニコードのu""は必要ないのでしょうか?
むしろu""を使用するとエラーとなります。
0262デフォルトの名無しさん2009/06/19(金) 00:23:39
>>261
>>1
0263デフォルトの名無しさん2009/06/19(金) 01:00:51
>>261
ファイルはちゃんとutf-8で保存してる?
どこに u を付けたの?
なんてエラーがでたの?
それはインタラクティブシェル上?それともファイルに保存したコードを実行したの?
環境はWindows?Linux?Mac?
0264デフォルトの名無しさん2009/06/19(金) 21:45:53
261です。
utf-8の設定ミスでした。お騒がせ致しました。
違うPCでやったのが原因でした。
0265デフォルトの名無しさん2009/06/20(土) 21:17:00
くだらない質問で悪い
文字列フォーマットで
>>>print "%+010.2f" % 100.123
+000100.12
となりますが、この10桁ってのは、符号と小数点(.)も含まれるってことでいいんだよね?

0266デフォルトの名無しさん2009/06/20(土) 23:58:48
>>265
桁というか、文字数、と思ってたわ。
"前に符号付き0埋め10文字、小数点以下2桁の小数点表示"
とおれは理解してた。
0267デフォルトの名無しさん2009/06/21(日) 01:25:44
C とはちがうんだっけ?
0268デフォルトの名無しさん2009/06/21(日) 01:51:43
みんなのPython改訂版って誤字脱字多くね?
0269デフォルトの名無しさん2009/06/21(日) 02:56:07
>>268
多い。かなりイラッときた。
0270デフォルトの名無しさん2009/06/21(日) 03:05:18
みんパイ(笑)
0271デフォルトの名無しさん2009/06/21(日) 03:27:22
はじめてのPython3も誤字脱字が多いですね
正誤表もいまだ出ていません
0272デフォルトの名無しさん2009/06/21(日) 16:53:32
やっぱりみんなも気づいてた?
電話してやろうかと思ってたw
日本語どころかコードも怪しい
変な太字のところとかあるしw
0273デフォルトの名無しさん2009/06/22(月) 01:14:16
定期的にウジ虫が沸くな。
0274デフォルトの名無しさん2009/06/22(月) 01:24:03
よう、ウジ虫!
0275デフォルトの名無しさん2009/06/22(月) 11:41:02
馬鹿にすんな、今成長してハエになったところだぜ?
0276デフォルトの名無しさん2009/06/22(月) 12:23:54
迷惑度急上昇だな。
0277デフォルトの名無しさん2009/06/22(月) 13:21:08
>>274
ウジ虫に失礼だ。ゴキブリと呼べ。
0278デフォルトの名無しさん2009/06/22(月) 14:27:22
>>277
呼んだ?

       、       /⌒ヽ, ,/⌒丶、       ,
       `,ヾ   /    ,;;iiiiiiiiiii;、   \   _ノソ´
        iカ /    ,;;´  ;lllllllllllllii、    \ iカ
        iサ'     ,;´  ,;;llllllllllllllllllllii、    fサ
         !カ、._  ,=ゞiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii!! __fカヘ.
       /  `ヾサ;三ミミミミミミ彡彡彡ミヾサ`´ 'i、
       i'   ,._Ξミミミミミミミ彡/////ii_   |
       |  ;カ≡|ヾヾヾミミミミミミ、//巛iリ≡カi  |
        |  iサ  |l lヾヾシヾミミミミミ|ii//三iリ `サi  |
       |  ,カ ,カll|l l lヾリリリリリ川川|爪ミミiリllカ、カi  |
        |  ;iサ,サ |l l l リリ川川川川|爪ミミiiリ サi サi  |
        |   iカ ;カ, |l l リリリリ川川川川l爪ミミilリ ,カi カi  |
       |  iサ ;サ, |リ リリ川川川川川l爪ミミiリ ,サi サi  |
       |  iサ ;iカ, | リ彡彡川川川川|爪ミミiリ ,カi :サ、 |
       ,i厂 iサ, |彡彡彡彡ノ|川川|爪ミミリ ,サi `ヘ、
      ,√  ,:カ, |彡彡彡彡ノ川川|ゞミミミリ  ,カi   `ヾ
     ´    ;サ,  |彡彡彡彡川川リゞミミリ  ,サi
         ;カ,  |彡彡彡彡リリリミミミシ   ,カi
         ,;サ,   |彡彡ノリリリリミミミシ    ,サi
        ;メ'´    i彡ノリリリリリゞミミシ     `ヘ、
       ;メ      ヾリリリリノ巛ゞシ       `ヘ、
      ;メ        ``十≡=十´         `ヘ、
                 ノ    ゞ
0279デフォルトの名無しさん2009/06/22(月) 23:15:49
IDLEをコンソールから呼び出すにはどうすりゃいいの。
vimと連携させようと思っているんだけど、IDLEショートカットのプロパティを
みても普通のショートカットと違うみたいで呼び出し方がわからないんだわ。

ちなみに、普通のpythonプロンプトなら
nmap <silent>;py :!"C:\python30\python.exe"<CR>
と_gvimrcに書いておけば;pyと書くだけで呼び出せて便利。
0280デフォルトの名無しさん2009/06/22(月) 23:17:05
『書く』じゃなかった、『コマンド』したら。
0281デフォルトの名無しさん2009/06/23(火) 12:34:36
うじ虫のAA
↓
0282デフォルトの名無しさん2009/06/23(火) 12:36:48
0
0283デフォルトの名無しさん2009/06/23(火) 18:36:18
∞
0284デフォルトの名無しさん2009/06/24(水) 23:03:37
ファイル名の変換で困ってます。アドバイスをお願いします。

# -*- coding: utf-8 -*-

import os

TargetPath = r"C:\test"

FileList = os.listdir(TargetPath)

for i in FileList:
print i

for cnt in FileList:
c=1
os.rename("%03d.mp3"%c,cnt)
c+=1

※インデントは消えてると思います。。。
WindowsError: [Error 2] 指定されたファイルが見つかりません。
というエラーが出てしまいます。どういうことでしょうか
0285デフォルトの名無しさん2009/06/24(水) 23:10:41
よくわからんが、cをforの前に持ってこないとずっと1のままじゃね?
0286デフォルトの名無しさん2009/06/24(水) 23:28:52
俺だったらenumerate使うけど
まぁいいか
0287デフォルトの名無しさん2009/06/25(木) 00:28:37
>>284
なんかいろいろまちがっててよくわからんけど
こうしたかったんじゃないか?

# -*- coding: utf-8 -*-

import os

targetpath = r"C:\test"

filelist = os.listdir(targetpath)

for filename in filelist:
    print filename

c = 1
for filename in filelist:
    oldpath = os.path.join(targetpath, filename)
    newpath = os.path.join(targetpath, '%03d.mp3' % c)
    os.rename(oldpath, newpath)
    c += 1
0288デフォルトの名無しさん2009/06/25(木) 18:43:09
>>287
スマートな正解をありがとうございます。
とても参考になりました。
renameへの引数はこのようにするんですね!
0289デフォルトの名無しさん2009/06/25(木) 23:07:30
このプログラム添削してください。

animal = [dog,cat,pig,lion,deer]
num = [1,2,3,4,5,6]

print animal[0] "は"num[0]"番可愛いです。

print animal[2]"は"num[5]"番可愛いです。

あってますか?

ちなみに
dogは1番可愛いです
pigは6番可愛いです
と表示させたいです
0290デフォルトの名無しさん2009/06/25(木) 23:32:36
>>289
1から勉強しなおせ

animal = ["dog", "cat", "pig", "lion", "deer"]
num = [1, 2, 3, 4, 5, 6]

print "%sは%d番可愛いです。" % (animal[0], num[0])
print "%sは%d番可愛いです。" % (animal[2], num[5])
0291デフォルトの名無しさん2009/06/25(木) 23:58:38
>>289
おまえセンス無いわ
0292デフォルトの名無しさん2009/06/26(金) 02:27:36
センスとか関係ないし
釣りの可能性はあるが
0293デフォルトの名無しさん2009/06/26(金) 02:36:29
でも具体的なコード貼って添削してくれってのはアリだね
初心者に説明してもらってもイミフなケース多いし
0294デフォルトの名無しさん2009/06/26(金) 06:18:15
スレと関係ないんだけどさ、俺「釣り」とか「釣り師」っていうのは、

 釣り師 ↓     
.            /| ←竿
     ○  /  |
.    (Vヽ/    |
    <>     |
゙'゙":"''"''':'';;':,':;.:.,.,__|_________
             |
  餌(疑似餌)→.§ >゚++< 〜
                 の組み合わせだと思ってたんだけど、

最近自称釣り師がダイレクトで自分の本音を攻撃されて「釣れた!」とか
言ってるの多いよね。
 これは、どっちかというと、



          ,〜〜〜〜〜〜 、
|\     ( 釣れたよ〜・・・)
|  \    `〜〜〜v〜〜〜´
し   \
゙'゙":"''"''':'';;':,':;.:.,.,  ヽ○ノ
          ~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 ト>゚++<
              ノ)

かと思うんだけど、どうよ?
0295デフォルトの名無しさん2009/06/26(金) 23:25:30
>>294
そんなコピペで
0296デフォルトの名無しさん2009/06/27(土) 00:15:10
他にも添削希望いないのかな
0297デフォルトの名無しさん2009/06/27(土) 14:04:04
Pythonは、あることを書くときに「なるべく誰でも書き方が同じになるようにしよう」
というのはいいです。

でもあることをしたい時に「ライブラリがすごいたくさんあっちゃって混乱してるけど
すきなの選んで」って勘弁してほしいんですが
0298デフォルトの名無しさん2009/06/27(土) 16:49:36
勘弁します
0299デフォルトの名無しさん2009/06/27(土) 22:27:43
>>297
それはPerlのCPANじゃね?
Pythonは標準ライブラリが充実している分、たくさんのサードパーティー
ライブラリの中からマトモなのを探す手間が省けることが多いよ。
0300デフォルトの名無しさん2009/06/28(日) 02:25:50
つきなみだけど
同意
0301デフォルトの名無しさん2009/06/28(日) 09:18:41
FTPで対象のファイルがディレクトリかどうかはどう判断すればいいでしょうか?
マニュアルを見ましたが、該当のコマンドが見つかりませんでした.
http://www.python.jp/doc/2.4/lib/ftp-objects.html

nlst() で片っ端から試して例外処理で取得する方法を思いつきましたが
もっとスマートな方法はありませんか?
0302デフォルトの名無しさん2009/06/28(日) 11:42:42
ls -lR
0303デフォルトの名無しさん2009/06/30(火) 22:07:59
すいません添削ってわけではないですが、質問させて下さい。
1から100までの数字で不定期に続くリストがあります。
cnt=[2,3,5,9,12,23,56,62,68,75,85,95]
でどの数値が抜けているのかを調べる。

#coding:utf-8
cnt=[2,3,5,9,12,23,56,62,68,75,85,95]
num=range(1,101)

for i in cnt:
#numから繰り返し変数iを引きたいんだけど、何が一番スマートだろ…

print num
0304デフォルトの名無しさん2009/06/30(火) 22:13:41
書き忘れました。

#coding:utf-8

cnt=[2,3,5,9,12,23,56,62,68,75,85,95]
num=range(1,101)


for i in cnt:
    num.remove(i)

print cnt

がベストかと思うんですが…間違ってますか?
0305デフォルトの名無しさん2009/06/30(火) 22:15:36
最後はprint num でした。度々すいません
0306デフォルトの名無しさん2009/06/30(火) 22:16:13
setでも使え
0307デフォルトの名無しさん2009/06/30(火) 22:19:36
[ x for x in range(1,101) if x not in [2,3,5,9,12,23,56,62,68,75,85,95]]
0308デフォルトの名無しさん2009/06/30(火) 22:22:16
set(num) - set(cnt)
0309デフォルトの名無しさん2009/06/30(火) 22:28:35
そういうのも可能なんですね
ありがとうございます。
どーしょーもない質問ですいませんでした
0310デフォルトの名無しさん2009/07/02(木) 18:25:23
ちんこ生えてきた
0311デフォルトの名無しさん2009/07/03(金) 02:41:46
>>310 今度は大事にしろよ。
0312デフォルトの名無しさん2009/07/03(金) 05:25:27

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

0313デフォルトの名無しさん2009/07/03(金) 11:39:22
if文で一度に複数の変数、たとえば
if a>0 and b>0 and c>0:
みたいなのは無理ですか?
0314デフォルトの名無しさん2009/07/03(金) 11:48:17
>>313
そんなの聞くよりやった方が早いだろ。
普通に対話型でもできるし。
0315デフォルトの名無しさん2009/07/03(金) 11:48:33
可能です
0316デフォルトの名無しさん2009/07/03(金) 13:00:10
if 0 < a < 5:
と書いてもエラーにならない処理系はありますか
0317デフォルトの名無しさん2009/07/03(金) 13:02:38
ある
0318デフォルトの名無しさん2009/07/03(金) 13:07:23
Pythonにはない。
あと、エラーにはならなくとも、おもいがけない意味になることもある
(C言語とか)。
0319デフォルトの名無しさん2009/07/03(金) 13:12:13
>>318
>>318
>>318
0320デフォルトの名無しさん2009/07/03(金) 13:22:05
(回答者が)超初心者用
0321デフォルトの名無しさん2009/07/03(金) 13:27:42
Rubyなら全部できるよ^^
0322デフォルトの名無しさん2009/07/03(金) 13:32:12
>>318
0323デフォルトの名無しさん2009/07/03(金) 14:47:17
>>318
0 < (a < 5)
または
(0 < a) < 5
ということですか?
0324デフォルトの名無しさん2009/07/03(金) 14:53:34
#include <stdio.h>
int main(int ac, char *av[]){
  int a;
  for(a = 0; a <= 5; a++)
    if(0 < a < 5) printf("%d: true\n");
    else printf("%d: false\n");
  return 0;
}

# if(0 < a < 5)
0: true
1: true
2: true
3: true
4: true
5: true

# if(0 < (a < 5))
0: true
1: true
2: true
3: true
4: true
5: false
0325デフォルトの名無しさん2009/07/03(金) 15:05:43
>>318
0326デフォルトの名無しさん2009/07/03(金) 16:24:50
じゃあ、俺も一応

>>318
0327デフォルトの名無しさん2009/07/03(金) 17:11:57
0: false
1: true
2: true
3: true
4: true
5: false
になるようにするにはどうすればいいですか
0328デフォルトの名無しさん2009/07/03(金) 17:18:01
>>324
C/C++スレに帰れ

0 < a && a < 5
0329デフォルトの名無しさん2009/07/03(金) 17:21:22
Cはa < b < cはどうやってもダメだけどPythonは意図通りに動くだろ、確か
>>324はきちんと動いてないし
0330デフォルトの名無しさん2009/07/03(金) 17:24:13
きっちり正しく動いていて、書いたほうがアホと言う方が正しい
0331デフォルトの名無しさん2009/07/03(金) 17:28:31
>>318
0332デフォルトの名無しさん2009/07/03(金) 17:43:56
>>330
0333デフォルトの名無しさん2009/07/03(金) 17:44:45
まいんまいん
0334デフォルトの名無しさん2009/07/03(金) 17:47:34
>>318
0335デフォルトの名無しさん2009/07/03(金) 22:17:47
lispで
(< 0 a 5)
当然Rubyなんかには出来ません
0336デフォルトの名無しさん2009/07/03(金) 23:07:38
(setq a 3)
3
(< 0 a 5)
t


>>> a = 3
>>> 0 < a < 5
True
0337デフォルトの名無しさん2009/07/03(金) 23:22:22
a > b > c > dは

t = b
u = c
a > t and t > u and u > d
ってことか。これはきもいなー。
Python3でも変わってないのね。
まあ、気にしないことにしよう。
0338デフォルトの名無しさん2009/07/03(金) 23:27:34
Cをはじめた初心者がうっかりやりがちなぐらい自然な記法なのに!
0339デフォルトの名無しさん2009/07/03(金) 23:31:57
Pythonの三大ステキ機能のひとつにケチをつけるとはいい度胸だ
0340デフォルトの名無しさん2009/07/03(金) 23:45:06
bが最大であることをテストするのに
a < b > c #これはいただけないよね?だからと言って
b == sorted((a, b, c))[2] #これは頭がおかしい
0341デフォルトの名無しさん2009/07/03(金) 23:50:58
Python > Ruby > C
0342デフォルトの名無しさん2009/07/04(土) 00:05:09
(a and c) < b
0343デフォルトの名無しさん2009/07/04(土) 00:09:40
a, b, c, d のなかで bが最大であることをテストするのに
a < b > c に d を加えられない
sorted の方が正解
0344デフォルトの名無しさん2009/07/04(土) 00:11:34
>>342は何がしたいんだ
0345デフォルトの名無しさん2009/07/04(土) 00:12:11
max(a, b, c, d) == b
0346デフォルトの名無しさん2009/07/04(土) 00:15:07
reduce(lambda x, y: y if x < y else x, [5, 2, 7, 3])
0347デフォルトの名無しさん2009/07/04(土) 00:16:53
reduce は 2.6 以上では使えないんだっけ
0348デフォルトの名無しさん2009/07/04(土) 00:19:19
functools.reduce に移動しただけだから問題ないよ
0349デフォルトの名無しさん2009/07/04(土) 00:20:23
any(x < b for x in (a, b, c))だろ、常識的に考えて……
0350デフォルトの名無しさん2009/07/04(土) 00:24:28
つーか、もう比較アルゴリズムの話だろ。
0351デフォルトの名無しさん2009/07/04(土) 00:50:00
web から取ってきた HTML を食わせて、XPath でデータを取り出したい。
正書式でなくても適当によしなに計らってくれるとなお嬉しい。
Ruby だったら Nokogiri みたいだけど、Python では何?
0352デフォルトの名無しさん2009/07/04(土) 00:55:37
>>351
- BeautifulSoup
- lxml
0353デフォルトの名無しさん2009/07/04(土) 01:44:26
>正書式でなくても適当によしなに計らってくれるとなお嬉しい。

lxml だと無理?
0354デフォルトの名無しさん2009/07/04(土) 02:18:39
lxmlもがんばってくれるよ
0355デフォルトの名無しさん2009/07/04(土) 06:15:05
any(x < b for x in (a, b, c))だろ、常識的に考えて……
0356デフォルトの名無しさん2009/07/04(土) 10:06:22
any(b<=x for x in (a, b, c))
0357デフォルトの名無しさん2009/07/07(火) 11:50:56
class Hogeがあったとして、
"Hoge"からはどうやってアクセスするんだっけ?

あと、こういうのを一般的に言って、どんな専門用語でしたっけ?
0358デフォルトの名無しさん2009/07/07(火) 11:53:48
>>357
globals()["Hoge"]
0359デフォルトの名無しさん2009/07/07(火) 12:01:54
>>358
ありがとうございます。
0360デフォルトの名無しさん2009/07/07(火) 12:11:41
イントロスペクションとかリフレクションとかそのへんの用語を求めてる?
0361デフォルトの名無しさん2009/07/07(火) 12:43:47
>>360
イントロスペクションってのは初めて聞いたので、調べてみます。

単に、eval("Hoge")みたいなのと勘違いしていた模様。
0362デフォルトの名無しさん2009/07/07(火) 13:21:52
Hoge.py 内に
class Fuga があったとして、
"Hoge", "Fuga" からはどうやってアクセスするんだっけ?
0363デフォルトの名無しさん2009/07/07(火) 13:23:23
Hoge.py 内に
class Fuga, method Hage があったとして、
"Hoge", "Fuga", "Hage" からはどうやってアクセスするんだっけ?
0364デフォルトの名無しさん2009/07/07(火) 13:31:07
 
0365デフォルトの名無しさん2009/07/07(火) 13:34:51
 
0366デフォルトの名無しさん2009/07/10(金) 09:36:03
age
0367デフォルトの名無しさん2009/07/10(金) 09:49:45
おはようございます。
わたし16歳の女子高生ですけど
Python始めるにあたって最初に読むべき本は
ありますか?
0368デフォルトの名無しさん2009/07/10(金) 10:08:35
ないよ
0369デフォルトの名無しさん2009/07/10(金) 13:44:13
こんにちは。
わたし15歳の巨乳グラビアアイドルなんだけど
みんなでPythonやろうよ。
0370デフォルトの名無しさん2009/07/10(金) 13:59:45
みんなでPython www
0371デフォルトの名無しさん2009/07/11(土) 05:24:24
Good Morning, Everyone!!!!
I am a thirteen years old girl.
I will start learning Oppaithon Programming.
Please teach me chome-chome.
0372デフォルトの名無しさん2009/07/11(土) 05:35:52
chome-chomeとか団塊レベルじゃないと使わないだろう普通
0373デフォルトの名無しさん2009/07/11(土) 06:18:10
コメコメ?アスタリスクのこと?
0374デフォルトの名無しさん2009/07/11(土) 09:33:34
いつもの英語下手なひとか
0375デフォルトの名無しさん2009/07/11(土) 12:39:50
OptionParserについて質問です


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

from optparse import OptionParser

parser = OptionParser()
parser.add_option('-f', '--fuga', action='append', type='string', dest='fugaList', help='fugafugafuga')
(options, args) = parser.parse_args()
print options.fugaList


※上記のスクリプト名を仮にfugaとする

実行例1:
$ ./fuga -f hoge piyo
['hoge']

実行例2:
$ ./fuga -f hoge -f piyo
['hoge', 'piyo']

複雑なオプション指定による処理分岐を行いたくてOptionParserを使い始めました
実行例1のように一つのオプションに多数の引数を渡して、
実行例2の結果['hoge', 'piyo']のように"options.fugaList"に
引数を代入したいのですが、可能でしょうか?
可能ならアドバイスをお願いします
0376デフォルトの名無しさん2009/07/11(土) 12:55:13
一つのオプションに対して複数のオプション引数を許したら
後に続くであろう固定引数が存在するかしないか確認する術がない気がする

なので素人考えだけど -f"hoge,piyo" でごまかすとか
0377デフォルトの名無しさん2009/07/11(土) 13:22:26
>>376
レスありがとうございます

>>275にこのスクリプトの使用目的を書いていなかったので
後出しになってしまいますが

$ ./fuga hoge_*

のようにコマンドラインからワイルドカードを使用して、
複数のファイル名をオプション引数に渡して利用するのがメインなので
-f"hoge,piyo" ではちょっとごまかせないです。。。
0378デフォルトの名無しさん2009/07/11(土) 17:38:38
そういう場合-fオプションがあったらどういう動作をする、という風に作るものであって
-fオプションにパラメータをぞろぞろ渡すという風にはしないだろ、普通。
0379デフォルトの名無しさん2009/07/11(土) 20:33:47
A/B/__ini__.py で変数を定義
hoge = 'hogehoge'
A/B/module_x.py というモジュール内でhogeを使いたい場合、どうすればいいのかを教えてください。

import hoge
ではダメなんですか?
0380デフォルトの名無しさん2009/07/11(土) 21:02:00
>>379
コピーでよけりゃ
from . import hoge
03813752009/07/12(日) 02:57:27
>>378
確かに普通はそうかもしれませんね。。。



という訳でOptionParserではワタシがしたいことが出来なさそうなので
自分でモジュールをつくることにしました
どうもありがとうございました
0382デフォルトの名無しさん2009/07/12(日) 03:26:51
どういたしまして
0383デフォルトの名無しさん2009/07/12(日) 07:40:36
>>377
OptionParserなりgetoptで "hoge_*" を文字列として受け取ってから
glob でワイルドカードを展開すればいいんじゃまいか。

ためしてないけど Linux/Unix 環境だとワイルドカードはシェルによって
展開されてからプログラムに渡されるので

./fuga -f "hoge_*"

のようにコマンド引数をクオートして書く必要がある。
0384デフォルトの名無しさん2009/07/12(日) 09:37:55
きたああああああああああああああ
UnicodeDecodeError出なくなった!
0385デフォルトの名無しさん2009/07/12(日) 10:08:02
>>384
どうやった?
まさか setdefaultencoding() じゃないよな?

from __future__ import unicode_literals
して、テキストファイルのファイル入出力は
import codecs
codecs.open('foo', encoding='cp932')
のようにエンコーディングを指定してファイルを開くのが正しい方法だぞ。
0386デフォルトの名無しさん2009/07/12(日) 11:45:18
リスト型で日本語を扱う場合一個ずつ取り出さないと文字が化けちゃうんですが
スライスで一度に複数の要素を扱えるようになる方法はないんでしょうか
0387デフォルトの名無しさん2009/07/12(日) 11:54:03
>>386
実際に化ける場合のコードと、「一個ずつ取り出す」のコードを見せてみりゃれ
0388デフォルトの名無しさん2009/07/12(日) 12:11:28
辞書を

hoge = {'fuga': 1}
print hoge.fuga

とJSの連想配列のようにキーをプロパティみたいにして
アクセスしたいんですがどうにか実現できないですか?
0389デフォルトの名無しさん2009/07/12(日) 12:38:09
>>385
フッ…txtをUTF-8で保存することを覚えただけさ

ついでにだけどunicode_literalsって何?
2.5だとimportできなくていいのか?
0390デフォルトの名無しさん2009/07/12(日) 12:48:52
>>389
うん、2.6からしか使えない。
たとえば、
#coding: utf-8
open("あいうえお")
ってやると、"あいうえお"はutf-8のバイト列だから、Windowsとかでは
"あいうえお" という名前のファイルを開けない。
open(u"あいうえお")
と書くと普通にファイルが開ける。

で、 Python 3.0 以降では普通に "あいうえお" と書くと Python 2系の u"あいうえお"
相当になるんだけど、Python2系でもu無しにUnicode文字列を書けるようにするのが
unicode_literals
0391デフォルトの名無しさん2009/07/12(日) 12:51:59
>>388
例えば、
>>> class JSObject(dict):
... def __init__(self, o):
... self.__dict__ = o
...
>>> o = JSObject({'foo': 1})
>>> o.foo
1

他にも __getattr__, __setattr__ を使った方法とかもある。
0392デフォルトの名無しさん2009/07/12(日) 13:10:28
>>387
こんな感じです
#ファイルの2行目からの文字列を3行ずつリストの1要素にまとめて扱いたい
fhnd = open('spam.txt','r')

lines = []
add_up = []

line_start = 2
line_end = 5

for temp in fhnd:
 lines.append(temp)

for temp in lines:
 if (line_start > line_max) or (line_end > line_max):
  break
 add_up.append(lines[line_start] + lines[line_start+1] + lines[line_end-1]) #←化けない
# add_up.append(lines[line_start:line_end]) #←上の代わりに実行すると化ける
print str(add_up[0]) + str(add_up[1]) + str(add_up[2])#←上のfor文内のうち上の行を実行なら化けない
print str(add_up[0:3])#←上のfor文内のいずれでも化ける
0393デフォルトの名無しさん2009/07/12(日) 13:12:35
抜けてたけど
line_max = len(lines)
です
0394デフォルトの名無しさん2009/07/12(日) 13:13:17
>>391
おお!ありがとうございます!
勉強になりました!
0395デフォルトの名無しさん2009/07/12(日) 13:58:36
>>392
>  add_up.append(lines[line_start] + lines[line_start+1] + lines[line_end-1]) #←化けない
> # add_up.append(lines[line_start:line_end]) #←上の代わりに実行すると化ける
上の場合、appendの引数は文字列だけど、下の場合はリスト
なので下を上と同じくするならadd_up.append( ''.join( lines[line_start:line_end]))じゃまいか

> print str(add_up[0:3])#←上のfor文内のいずれでも化ける
リストをstrしたときに得られるのはprintできる文字列

>>> L = [1, 2, 3]
>>> str(L)
'[1, 2, 3]'
0396デフォルトの名無しさん2009/07/12(日) 15:24:04
>>392
まずはstr()とrepr()の違いが判らないとな。

>>> astr = 'あいう'
>>> alist = [astr]
>>> print astr
あいう
>>> print alist
['\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86']

リストを文字列にしようとしたら、リストの要素にはstr()ではなくてrepr()が適用される。
repr()されると、文字列のうちASCII文字以外は\xでエスケープして表示される。

三行分の文字列を配列にして add_up を2重配列にしたい?
それとも三行分の文字列を一つの文字列に連結したい?
lines = open('spam.txt').readlines()
add_up = []
for i in range(1, len(lines), 3):
    add_up.append(lines[i:i+3]) # 2重配列にしたい場合
    add_up.append(''.join(lines[i:i+3])) # 連結したい場合
0397デフォルトの名無しさん2009/07/12(日) 16:36:49
エンコーディング方面の問題かと思って
見当違いな方向に進むところでした
ありがとうございました
0398デフォルトの名無しさん2009/07/13(月) 05:48:35
>>390
ありがとう
0399デフォルトの名無しさん2009/07/13(月) 22:41:07
[1,2,3,1,4,5]のようなリストの重複した要素を削除して[1,2,3,4,5]のようなシーケンスを作る。
※並び順は問わない。

set型を使わず、for文とif文を組み合わせるなどして作成する。
模範解答をお願い致します。
0400デフォルトの名無しさん2009/07/13(月) 22:50:35
とりあえず、初歩的にはこんな感じだろう。

ListA = [1,2,3,1,4,5]
ListB = []

for x in ListA:
 if not x in ListB:
  ListB.append(x)

print ListB
0401デフォルトの名無しさん2009/07/13(月) 22:53:49
>>400
レスありがとうございます。
削除する方法ばかり考えてましたが、追加するって考え方もあるんですね
すごく参考になりました。スマートな回答どうもです!
0402デフォルトの名無しさん2009/07/13(月) 22:56:05
a = [1,2,3,1,4,5]
print list(set(a))
0403デフォルトの名無しさん2009/07/13(月) 22:56:27
最初に空リスト作るってのはよくある
0404デフォルトの名無しさん2009/07/14(火) 00:44:04
>>399
set型を使わない理由は?
0405デフォルトの名無しさん2009/07/14(火) 00:52:50
宿題だからでは・・・
あれ、だとすると宿題スレだなw
0406デフォルトの名無しさん2009/07/14(火) 21:09:18
2ちゃんに書き込みたいけどcookieがよく分からん
どうやってResponseから取り出してrequestに追加するの?
0407デフォルトの名無しさん2009/07/14(火) 21:42:01
firefox使えばok
0408デフォルトの名無しさん2009/07/14(火) 21:45:22
というかwgetだけでできるじゃん
0409デフォルトの名無しさん2009/07/15(水) 06:59:12
インスタンスに勝手に属性をつけられないようにはできませんか?
クラスの定義に書いてある属性だけで打ち止めにしたい・・・
0410デフォルトの名無しさん2009/07/15(水) 08:56:43
def __setattr__(self, name, value):
    if hasattr(self, name):
        object.__setattr__(self, name, value)
    else:
        raise AttributeError(name)
0411デフォルトの名無しさん2009/07/15(水) 09:10:10
そうか!
__setattr__ をオーバーロードすればよかったんですね.
0412デフォルトの名無しさん2009/07/15(水) 09:23:09
__slots__ とどこが違うの?
04134102009/07/15(水) 09:58:48
>>409的なことはやらないから忘れてた
0414デフォルトの名無しさん2009/07/15(水) 10:18:58
>>412
何か文句でも?
04154062009/07/15(水) 13:29:32
いやPythonから書き込みたいんだけど
0416デフォルトの名無しさん2009/07/15(水) 13:32:20
>>415
spam業者乙!
0417デフォルトの名無しさん2009/07/15(水) 13:34:45
過去スレに(r
0418デフォルトの名無しさん2009/07/15(水) 13:51:46
from cookielib import CookieJar

cj = CookieJar()
cj.extract_cookies(res,req)
cj.add_cookie_header(req)
0419デフォルトの名無しさん2009/07/15(水) 15:44:39
これだな
http://pc11.2ch.net/test/read.cgi/tech/1226830195/14
0420デフォルトの名無しさん2009/07/15(水) 15:52:29
フォルダの中にあるtxtファイルを全て読み込むことってできますか?
0421デフォルトの名無しさん2009/07/15(水) 15:54:12
>>420
import glob
for i in glob.glob('*.txt'):
  d = open(i).read()
0422デフォルトの名無しさん2009/07/15(水) 15:58:45
>>421
ありがとうございます
os.walk使って無理矢理やってました
0423デフォルトの名無しさん2009/07/15(水) 16:02:41
glob() はサブディレクトリ見に行かないぜ
0424デフォルトの名無しさん2009/07/15(水) 16:54:45
paverいろいろおすすめ

from paver.path import path
for f in path('.').walkfiles('*.txt'):
    print f
0425デフォルトの名無しさん2009/07/16(木) 05:05:09
くそう・・・なんで俺のコードじゃpickleが使えないんだ・・・
もう寝る
0426デフォルトの名無しさん2009/07/16(木) 15:49:26
gzip解凍できねえぞくそお
0427デフォルトの名無しさん2009/07/16(木) 15:59:39
ttp://blog.kzfmix.com/entry/1187087731
これだ!
0428デフォルトの名無しさん2009/07/16(木) 16:49:39
文章の中から単語の数かぞえんのどうやんの?
countを使ってどうやんのさ
0429デフォルトの名無しさん2009/07/16(木) 16:56:15
wc --words
0430デフォルトの名無しさん2009/07/16(木) 17:16:57
pythonって何のために使うの?
0431デフォルトの名無しさん2009/07/16(木) 17:51:28
汎用です
0432デフォルトの名無しさん2009/07/16(木) 21:46:48
夜のお供に使ってみるか・・・
0433デフォルトの名無しさん2009/07/17(金) 02:41:08
perlをわすれるため
0434デフォルトの名無しさん2009/07/17(金) 07:14:30
雑用を処理させていますよ。
gMailを読んでDBに格納しておいて月末にExcelにまとめさせるとか
0435デフォルトの名無しさん2009/07/17(金) 16:20:12
グラフ描くのに色々モジュールあるみたいだけど何がいいかな
0436デフォルトの名無しさん2009/07/17(金) 18:56:36
今os.systemを使ってUNIXコマンドを組み込んでるんですが
bashとかでお馴染のリダイレクトやパイプを
Pythonでも使いたいのですが可能ですか?
0437デフォルトの名無しさん2009/07/17(金) 19:02:23
os.system は system(3) 経由 sh 経由でコマンドを起動するはずだからできると思うが、
subprocess モジュールを勉強したほうがいいと思う。
0438デフォルトの名無しさん2009/07/17(金) 19:13:07
>>437
。。。すまんm(_ _;)m

勘違いして別のコマンド実行してたみたいです。。。
確認したらちゃんとできました。
回答ありがとうございましたm( __ __ )m
0439デフォルトの名無しさん2009/07/17(金) 19:44:54
しかし乗り換えるにはsubprocessは面倒くさい罠
0440デフォルトの名無しさん2009/07/17(金) 19:53:55
popen2.popen3()
0441デフォルトの名無しさん2009/07/18(土) 05:44:16
4コアでガンガンまわしてるつもりになってても、
実は1コアしか動いていないのが悲しい
スタックレスなんとかをかんとかすればアレなのかな?
0442デフォルトの名無しさん2009/07/18(土) 06:57:04
つmultiprocessing
スレッド回すよりは好きだわ
0443デフォルトの名無しさん2009/07/18(土) 10:58:43
unko = [1, 3, 5, 7, 11, 13]
for i in unko:
 if i < 10:
  unko.remove(i)
for i in unko:
 print str(i)

3 <---?
7 <---?
11
13

なして?
0444デフォルトの名無しさん2009/07/18(土) 11:19:11
ループ中に回してるリストをいじるのはやめましょうという話
どうしてもやりたければ for i in unko[:]: unko.remove(i)
0445デフォルトの名無しさん2009/07/18(土) 11:21:12
リストについて舐める操作をしながら、そのリストに副作用が起きる操作をしてるから。
リストの1番めを見て、1を削除。その次はリストの2番めを見るので、1番めに入った
3は無視されちゃう。
0446デフォルトの名無しさん2009/07/18(土) 17:05:09
unko.remove(i) ワロス
0447デフォルトの名無しさん2009/07/18(土) 21:28:25
ちんこ
0448デフォルトの名無しさん2009/07/18(土) 22:13:35
フルーチャートを書けばすぐわかることだろうに
0449デフォルトの名無しさん2009/07/18(土) 22:14:17
フローチャートを書けばすぐわかることだろうに
0450デフォルトの名無しさん2009/07/18(土) 22:17:00
flo'u tʃɑ':(r)t
0451デフォルトの名無しさん2009/07/19(日) 00:14:08
クラスの中で変数を宣言したいのですが、

self.unko = 0

で、いいんでしょうか?
0452デフォルトの名無しさん2009/07/19(日) 00:15:18
はいそれで大丈夫です
外部アクセスを防ぎたい場合はself.__unkoとしてください
0453デフォルトの名無しさん2009/07/19(日) 00:31:21
ありがとうございます!

外部アクセスを防ぐ、ということは宣言した後予期せぬ状況で中身が書き換わるのを防ぐ、ということでしょうか?
0454デフォルトの名無しさん2009/07/19(日) 01:45:38
no
0455デフォルトの名無しさん2009/07/19(日) 02:03:46
うーんどういうことなんでしょう。
内容を事ある毎に変化させていくパラメータとして使いたいので普通に宣言すれば良いと思っているのですが、それで問題ないでしょうか?
0456デフォルトの名無しさん2009/07/19(日) 02:18:34
no
0457デフォルトの名無しさん2009/07/19(日) 02:21:19
>>455
余計なことを言って混乱させてすいませんでした
self.__unko
のように先頭に__を付けると外部アクセスのできないいわゆるprivate変数の様な感じになります
0458デフォルトの名無しさん2009/07/19(日) 02:36:23
C言語で言うとstaticをつけたりつけなかったりという話なのでしょうか?
0459デフォルトの名無しさん2009/07/19(日) 04:27:42
no
0460デフォルトの名無しさん2009/07/21(火) 20:34:26
python楽しいお
0461デフォルトの名無しさん2009/07/21(火) 22:20:03
python 面白いよね
ショボイのしかまだ書けないけど、(きっと今後もw)
日々の作業が楽で、楽しくなるようなコードが書けるまで勉強するのだ
インタラクティブシェルだけで勉強してたら、ショボーンだけど、ファイルに書き出しとかになると
ちょっとプログラムって感じで楽しい
0462デフォルトの名無しさん2009/07/22(水) 11:39:00
Python、神のごときライブラリが色々あって面白いすね。
0463デフォルトの名無しさん2009/07/22(水) 12:51:38
python組み込みのhash関数って完全ハッシュ関数ですか?
衝突しませんか?
0464デフォルトの名無しさん2009/07/22(水) 14:25:58
>>462
新参の俺にbeautifulsoup意外詳しく
0465デフォルトの名無しさん2009/07/22(水) 15:00:29
_mssql、VisualBasic.netでADO.netとか何だったんだろうと。
pyExcelerator、Excelネイティブのファイルが簡単に出来たですよ。
reportlab、PDFが(ry
Barcode for Python、bzr branch lp:barcodesforpython/beta、バーコードが(ry
最近、データベースからの書類生成は全部Pythonで書いてます。
0466デフォルトの名無しさん2009/07/22(水) 16:45:56
searchとmatchの挙動の違いを詳しく解説してくれる方いませんか?
0467デフォルトの名無しさん2009/07/22(水) 16:52:14
re.match("foo", s) == re.search("\Afoo", s)
0468デフォルトの名無しさん2009/07/22(水) 18:29:48
match(r'foo',unko)のようにrオプション付けるとどういう効果があるのでしょうか?
0469デフォルトの名無しさん2009/07/22(水) 18:34:06
http://www.python.jp/doc/release/lib/module-re.html
0470デフォルトの名無しさん2009/07/22(水) 18:34:22
>>468
http://www.python.jp/doc/release/tut/node5.html#SECTION005120000000000000000
0471デフォルトの名無しさん2009/07/22(水) 18:43:29
findを忘れないで
0472デフォルトの名無しさん2009/07/22(水) 19:00:55
よくわかりました!
ありがとうございます''
0473デフォルトの名無しさん2009/07/22(水) 23:42:42
>>463
なわけないだろ。
0474デフォルトの名無しさん2009/07/23(木) 09:00:30
>>473
明確に記載されている資料があればお願いします
0475デフォルトの名無しさん2009/07/23(木) 09:06:50
http://www.python.jp/doc/release/lib/module-hashlib.html
0476デフォルトの名無しさん2009/07/23(木) 09:08:54
どのソースに書いてあるかドキュメントに書かれていればいいんだがなー
組み込み関数だとgrepしてもノイズ多くてゲンナリ
0477デフォルトの名無しさん2009/07/23(木) 09:11:08
memo
ttp://mail.python.org/pipermail/python-dev/2003-June/036556.html
ttp://stackoverflow.com/questions/793761/built-in-python-hash-function
ttp://www.unixuser.org/~euske/doc/python/python-lisp-j.html
0478デフォルトの名無しさん2009/07/23(木) 09:23:01
>>475
それじゃないww
0479デフォルトの名無しさん2009/07/23(木) 09:29:32
help(hash)したら書いてあるだろうが
04804762009/07/23(木) 10:22:52
>>479
俺へのレスじゃなくて>>463へのレス?
やってみたけど、どちらにしても書いてなかった
0481デフォルトの名無しさん2009/07/23(木) 10:28:17
Summer holidays
0482デフォルトの名無しさん2009/07/23(木) 10:47:47
機能性文盲はつらいよ
0483デフォルトの名無しさん2009/07/23(木) 10:52:46
いいからやってみろよ
上で求められてるような情報は出てこないから
0484デフォルトの名無しさん2009/07/23(木) 11:00:18
求められてるのって、完全hashかどうかだよな?
> Return a hash value for the object. Two objects with the same value have
> the same hash value. The reverse is not necessarily true, but likely.
明快に書いてあるよな、「逆は真とは限らない」って。
0485デフォルトの名無しさん2009/07/23(木) 11:08:54
hash()の入力の値域と出力の値域を比較すれば見当がつくじゃまいか
出力は整数なんだから衝突せずにすむ入力の範囲はせいぜいそれと同程度だ

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on
win32
>>> hash(0)
0
>>> hash(1)
1
>>> hash(-1)
-2
>>> hash(-2)
-2
0486デフォルトの名無しさん2009/07/23(木) 11:39:32
>>484
完全ハッシュって双方向に一意なんだっけ
って複数のキーで同一の値が取れたら完全ハッシュじゃないもんな
0487デフォルトの名無しさん2009/07/23(木) 11:41:55
>完全ハッシュって双方向に一意なんだっけ

no

>って複数のキーで同一の値が取れたら完全ハッシュじゃないもんな

no
0488デフォルトの名無しさん2009/07/23(木) 12:00:32
えっ
0489デフォルトの名無しさん2009/07/23(木) 12:42:36
>> 完全ハッシュって双方向に一意なんだっけ
>
> no
>

no

>> って複数のキーで同一の値が取れたら完全ハッシュじゃないもんな
>
> no

no
0490デフォルトの名無しさん2009/07/23(木) 12:44:34
> no
no

なんだよおまえらww
0491デフォルトの名無しさん2009/07/23(木) 12:55:19
> なんだよおまえらww
neet
0492デフォルトの名無しさん2009/07/23(木) 13:22:51
なんなんだこのスレ
0493デフォルトの名無しさん2009/07/23(木) 13:23:49
衆議院議員をめざしている人が、
本当のところどう思っているのか、
きいてみよう。
ttp://moderator.appspot.com/?hl=ja#16/e=9df89
"名前を連呼するだけの選挙宣伝カーを、「スパム認定」して禁止しませんか?"
Lambda  
0494デフォルトの名無しさん2009/07/23(木) 16:24:25
>>474
Python 自体のソースを見るのが確実かと。
http://svn.python.org/view/python/trunk/Python/bltinmodule.c?revision=73776&;view=markup
の builtin_hash() が組み込み関数の hash() に相当する。
http://svn.python.org/view/python/trunk/Objects/object.c?revision=73076&;view=markup
に PyObject_Hash() の定義がある。
0495デフォルトの名無しさん2009/07/23(木) 23:07:08
ソースやドキュメントなんて読むまでもないだろ。

もし仮に完全ハッシュだとしたとしたら
論理的に考えてhash関数の引数はシーケンスでないとならない。
そうなってないんだから当然hashは完全ハッシュじゃない。
たまには頭使わないと腐るぞ。
0496デフォルトの名無しさん2009/07/23(木) 23:10:25
そもそも「ハッシュ」の意味さえ知っていれば、あんな疑問は湧かないはず
0497デフォルトの名無しさん2009/07/23(木) 23:31:09
>>495
> 論理的に考えて
Python的に考えて、でしょ
型によって全く扱いが違う関数なんて
他の言語ではありふれてるわけで。
スレタイ読める?
0498デフォルトの名無しさん2009/07/23(木) 23:35:19
例えば数値なら桁毎のシーケンスの生成なんて簡単なことだし
0499デフォルトの名無しさん2009/07/23(木) 23:43:40
スレタイ読めるなら
いちいち「Python的に」なんて書かなくても補完できるはずなのにね。
0500デフォルトの名無しさん2009/07/24(金) 00:12:47
>>498
桁毎のシーケンスって何?
整数型のbit数毎に異なるテーブルを用意する"なら"
整数型の完全ハッシュが作れるってこと?
条件を絞れば完全ハッシュなんていくらでも作れるに決まってるだろ?
たとえば同一性を判定するためだけのハッシュとか、
ある種のFSでファイル名をキーとするハッシュとか。

自分こそスレタイ読めるなら、型によってとか他の言語ではとか
勝手に条件付け加えないでくれ。
0501デフォルトの名無しさん2009/07/24(金) 00:15:53
釣り針でかいなw
0502デフォルトの名無しさん2009/07/24(金) 00:18:49
そんなもんがあるとして、少なくとも、引数の範囲とかも引数にしないと無理なんじゃまいか?
0503デフォルトの名無しさん2009/07/24(金) 00:27:01
引数の範囲?bitwidth?
0504デフォルトの名無しさん2009/07/24(金) 00:28:27
朝生はじめるよー
0505デフォルトの名無しさん2009/07/24(金) 19:38:43
    ┌─┐
    │●│
    └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
0506デフォルトの名無しさん2009/07/25(土) 15:51:39
Output folder: C:\DOCUME~1\user\LOCALS~1\Temp
Install dir for actual installers is C:\DOCUME~1\user\LOCALS~1\Temp
"Target CPU handles SSE2"
"Target CPU handles SSE3"

XPにnumpyインストールしようとしたらこうなったんだけどどうしたらいいんだ?


0507デフォルトの名無しさん2009/07/25(土) 16:04:23
あーインストーラー保存せずにそのまま実行したらできました
0508デフォルトの名無しさん2009/07/25(土) 16:22:10
おれ、C:\temp\downloadsになんでもダウンロードして実行する癖あるんだけど、
俺の場合そうはならなかった気がするな?
0509デフォルトの名無しさん2009/07/26(日) 22:07:06
Mac OS X + Python2.5です
ファイルの出力なのですが、
f = open('hoge', 'w')
f.write('line 1\n')
としても改行されません・・・
なにか間違って理解しているのでしょうか?
0510デフォルトの名無しさん2009/07/26(日) 22:10:45
> write( str)
>
> 文字列をファイルに書き込みます。戻り値はありません。
> バッファリングによって、flush() または close() が呼び出されるまで
> 実際にファイル中に文字列が書き込まれないこともあります。
0511デフォルトの名無しさん2009/07/26(日) 22:13:29
失礼しました。
close() はしているのですが、
ファイルには
line 1\n
と出力されてしまいます・・・
0512デフォルトの名無しさん2009/07/26(日) 22:17:15
f = open('hoge', 'w')
f.write('line 1\n')
f.close()

こちらでは再現できない。
0513デフォルトの名無しさん2009/07/26(日) 22:19:47
原因が少しわかりました・・・
PyDev(Eclipse)を使っていたのですが、\がバックスラッシュにならないようですorz
コンソールからvi で編集しなおして\(バックスラッシュ)で改行されました。
これはPyDevの挙動がオカシイんですかね、それとも仕方ないんでしょうか?
0514デフォルトの名無しさん2009/07/26(日) 22:27:11
>>509
脊髄反射でバッファリングだと思ってしまった。ごめん

macのyen signには癖があるって話を聞いたことがある
% od -tx1 hoge して結果を貼ってみて
05155112009/07/26(日) 22:29:39
解決しました
Macに不慣れなので知らなかっただけで、通常に¥キーを押すと円記号、バックスラッシュを入力する場合はOption + ¥キーを押すようです。
ターミナルの場合は強制的にバックスラッシュなのかな?
0516デフォルトの名無しさん2009/07/26(日) 22:35:46
pythonで皆さんどんなことしてるんですか?
具体的に何をしてるか教えて下さい。
0517デフォルトの名無しさん2009/07/26(日) 23:40:35
pass
0518デフォルトの名無しさん2009/07/27(月) 00:10:59
ナニしてるんだろうねぇ
0519デフォルトの名無しさん2009/07/27(月) 01:55:52
>>516
お仕事に使えるよ?
ユーティリティ色々、前はVB.NETだったけど今は大概Pythonで書いてる。
この間は、ftpサーバーの状態をチェックして警報ショートメッセージ出すのを書いた。
0520デフォルトの名無しさん2009/07/27(月) 02:39:53
Windowsアプリ作ってるよ。
Thinkpadとか、ツール類がPython使ってるから検索するとPython関連ファイルが
沢山入ってる。
バージョン古いし、ツール類の大半要らないからアンインストールして自分で最新の
Python入れるけど。
0521デフォルトの名無しさん2009/07/29(水) 09:48:56
Python のコマンドラインシェルや、iPython 等で
タブ幅(tabstop)を指定するにはどうすればよいですか?
0522デフォルトの名無しさん2009/07/29(水) 16:54:50
a = [' ','a',' ','b',' ','c',' ']
のように空白を要素に持つlistがあります.
このlistから空白要素を全部削除するのに,
for a in range(a.count(' ')):
a.remove(' ')
と書いているのですが,もっとスマートに書けないでしょうか.
0523デフォルトの名無しさん2009/07/29(水) 17:01:33
a = [i for i in a if a != " "] とか?
0524デフォルトの名無しさん2009/07/29(水) 17:02:34
a = [' ','a',' ','b',' ','c',' ']
print filter(lambda x: x != ' ', a)

or

a = [' ','a',' ','b',' ','c',' ']
print [x for x in a if x != ' ']
0525デフォルトの名無しさん2009/07/29(水) 17:02:52
[e for e in a if e != ' ']
filter(lambda x: x != ' ', a)
0526デフォルトの名無しさん2009/07/29(水) 17:04:35
>>524
ケコーンしようぜ
0527デフォルトの名無しさん2009/07/29(水) 17:05:28
filterって関数があるんですね.ありがとうございました.
0528デフォルトの名無しさん2009/07/29(水) 17:06:31
全然スマートにみえないんだが気のせいかな?
0529デフォルトの名無しさん2009/07/29(水) 17:22:53
リストそのものの書き換えと、リストから要素を除いた新しいリストを作るののどちらをやりたいんだ?
0530デフォルトの名無しさん2009/07/29(水) 17:25:32
>>528
filterとかlambaとかスマートというか自己満足だよね
0531デフォルトの名無しさん2009/07/29(水) 17:27:06
lambdaはともかくfilterはできる子
0532デフォルトの名無しさん2009/07/29(水) 17:33:19
>>531
>filterはできる子

そういうことにしたいのですね。
0533デフォルトの名無しさん2009/07/29(水) 17:36:59
全然スマートにみえないんだが気のせいかな?
0534デフォルトの名無しさん2009/07/29(水) 17:38:18
全然スマートにみえないんだが気のせいかな?
0535デフォルトの名無しさん2009/07/29(水) 17:44:34
reduce(lambda x, y: x + ([y] if y != ' ' else []), ' a b c ', [])
0536デフォルトの名無しさん2009/07/29(水) 17:45:22
reduceって関数があるんですね.ありがとうございました.
0537デフォルトの名無しさん2009/07/29(水) 17:52:20
[i for i in ''.join(a).split(' ') if i]

or

filter(lambda x: x, ''.join(a).split(' '))
0538デフォルトの名無しさん2009/07/29(水) 18:01:52
filter(' '.__ne__, [' ','a',' ','b',' ','c',' '])
0539デフォルトの名無しさん2009/07/29(水) 18:17:50
それいいね
0540デフォルトの名無しさん2009/07/29(水) 18:53:54
一行野郎め
0541デフォルトの名無しさん2009/07/29(水) 20:18:26
Tkinterで書いたものをwxで書き直してます。DnDが要件にあったので。
wxは初めてです。

wxってウィジェットの位置とかサイズを指定しますが、
あれって環境によってフォントサイズが変わったりした場合、
重なったり、端が切れちゃったりしないんですかね。

TKライクに並べて行けば自動的にサイジングしてくれる
配置のやり方があれば教えていただけないでしょうか。

sizerでどうにかするんだろうとは思うのですが、具体的なや
り方に行き当たっていない状態です。

あと、TKでいうところのLabelFrameってwxにはないんでしょうか。
現状StaticBoxとStaticTextで似たようなことしてます。

よろしくお願いします。
0542デフォルトの名無しさん2009/07/29(水) 20:20:36
XRCed
0543デフォルトの名無しさん2009/07/29(水) 20:21:18
Sizer
0544デフォルトの名無しさん2009/07/29(水) 21:13:43
>>540
なんてすばらしい日本語訳かと思ったら
こんなに市民権を得てるとは。。。
http://www.google.co.jp/search?q=%88%EA%8Ds%96%EC%98Y
0545デフォルトの名無しさん2009/07/29(水) 22:19:10
python 一行野郎ってジャンルはまだ無いのな
0546デフォルトの名無しさん2009/07/29(水) 22:56:33
インデントのおかげで一行で書くのはむずかしいからな
0547デフォルトの名無しさん2009/07/30(木) 01:06:56
>>544
いつ頃、どこで生まれた訳なんだろうな。
俺が初めて知ったのは『Effective Perl』の邦訳版で、これが10年前の本だけど。
0548デフォルトの名無しさん2009/07/30(木) 01:12:39
Rubyしかないよなあ
0549デフォルトの名無しさん2009/07/30(木) 02:46:47
>>516
C言語で書いたシミュレーションプログラムに Python で GUI を付けたり、シミュレーションの
一部で新しいことを試したいとき(例えばある方程式を解く時にニュートン法が有効かどうか確か
めたいときなど)に Python で試作プログラムを書いてみたりしています。

先日、線形計画問題を解く必要があって Python でシンプレックス法を書きました。線形計画問題
というのは、「製品Aには材料Sが3個、材料Tが2個必要で、製品BにはSが1個、Tが4個必要です。
Aは100円、Bは150円で売れます。手元にはSが40個、Tが30個あります。売上金を最大にするには
AとBを何個ずつ作るのが最適でしょうか?」というような問題のことです。この場合、未知の変数は
Aの個数とBの個数の2つなので手作業で解いてもいいのですが、未知の変数が増えるとたいへん
なので適当な計算方法で解きます。シンプレックス法はその1つです。で、Python の float 型で
計算したら計算誤差のせいか問題によっては計算が収束しませんでした。そこで、アルゴリズム
本体はそのままで、入力値(シンプレックス表の要素)のデータ型を fractions.Fraction クラス
に変えたところ、うまく解けるようになりました。Fraction クラスは有理数(分子と分母が整数で
表された分数)を実装したクラスで、float に比べて遅いですが計算誤差がありません。アルゴ
リズムはそのまま変更なしで、入力値のデータ型を変えただけで収束が改善されたので感激しま
した。他の言語(たとえばC言語)でも計算に使うデータ型を変えられるようにプログラムを作る
ことはできますが手間がかかります。その点で Python ははるかに手軽で強力だと思いました。
05505222009/07/30(木) 09:14:17
結局a = [i for i in a if a != " "] が分かりやすいので使わせて貰います.
ありがとうございました.
0551デフォルトの名無しさん2009/07/30(木) 09:49:48
filterとかlambdaを無駄に使いたがるヤツには気をつけた方がいい
0552デフォルトの名無しさん2009/07/30(木) 13:36:25
>>550
それで良いのかよw
if i != ' ' だろ?
0553デフォルトの名無しさん2009/07/30(木) 16:48:22
俺はlispいじってたもんでホイホイlambdaやfilterを使っちゃうな
0554デフォルトの名無しさん2009/07/30(木) 17:04:20
クラス皆無で関数だらけのスクリプトを量産する漏れみたいなもんだな
0555デフォルトの名無しさん2009/07/30(木) 17:41:54
[e for e in a if e != ' ']
filter(lambda x: x != ' ', a)

どっちが速い?
要素が1000万個くらいあっても大丈夫?
0556デフォルトの名無しさん2009/07/30(木) 18:34:06
>>555
速さなら前者の方が(たぶん倍以上)速い
要素の大きさは、速度よりもメモリの問題が発生する。
リストではなくジェネレータの利用を考慮するといい。
(e for e in a if e != ' ') もしくは itertools.ifilter
0557デフォルトの名無しさん2009/07/30(木) 20:26:35
速さなんて考えたこともないぜ
0558デフォルトの名無しさん2009/07/31(金) 03:18:40
> 要素が1000万個
PyCUDAとか使うべきだぜ!
0559デフォルトの名無しさん2009/07/31(金) 08:43:10
(e for e in a if e != ' ')
[e for e in a if e != ' ']

1000万文字ほど用意して比べたら、
後者が圧倒的に遅く、前者はほぼ一瞬で終ったのですが
なんでここまで差がつくの?
0560デフォルトの名無しさん2009/07/31(金) 10:12:51
ジェネレータ
0561デフォルトの名無しさん2009/07/31(金) 22:08:13
そういえば、
1桁〜9桁くらいの数字だけで構成された文字列が大量に格納されたリストって
全部をint型に変換してソートするよりも
全部を文字列のままzfillで0埋めしてソートした方が速かったんだが
そういうもんなの?
0562デフォルトの名無しさん2009/07/31(金) 22:12:48
今ジェネレータの意味がわかったw

関数系だとデフォで全部かYOって思ってわけわかめだったが、
こういう遅延評価ならわかりやすいな。俺でも使えそうだ。
0563デフォルトの名無しさん2009/08/01(土) 07:40:35
>>561
kwsk
or
source
0564デフォルトの名無しさん2009/08/02(日) 10:55:54
そりゃ文字列だったのをそのままソートと
文字列だったのを数値に変換してソートだと
数値変換の処理が余計なステップになるよね
0565デフォルトの名無しさん2009/08/02(日) 12:56:06
みんなエディタ何使ってるの?
0566デフォルトの名無しさん2009/08/02(日) 13:00:11
zfillで0埋めする処理は余計なステップにならないのか
0567デフォルトの名無しさん2009/08/07(金) 14:05:01
Pythonぐらい簡単でゲーム作るのに適した言語ない?
0568デフォルトの名無しさん2009/08/07(金) 15:11:23
sqliteで、最後に挿入した行のrowidを取得する方法ってないのでしょうか?
c/c++なら「sqlite3_last_insert_rowid」というAPIがあるのですが・・・
0569デフォルトの名無しさん2009/08/07(金) 15:28:13
cursor.lastrowid
0570デフォルトの名無しさん2009/08/07(金) 17:36:57
>>561
そりゃ少なくとも2倍以上メモリ消費してるしな
0571デフォルトの名無しさん2009/08/07(金) 22:09:46
>>567
RPGツクールに内蔵されたRubyだな。
0572デフォルトの名無しさん2009/08/09(日) 16:01:12
質問なんですが

Linux上のPyGTK + Gladeで作ったアプリを
Pythonなどがインストールされていない
まっさらの状態のXPで動くようにしたいんですが
一緒にライブラリとかを同梱させれば可能になるんでしょうか?

可能ならそういった情報が乗ってるサイトとかを
教えてください
0573デフォルトの名無しさん2009/08/12(水) 23:28:50
py2exeじゃダメなん?
0574デフォルトの名無しさん2009/08/17(月) 14:06:43
3.1.1 の Windows インストーラ版はまだかな〜
0575デフォルトの名無しさん2009/08/17(月) 21:19:27
Pythonの属性について。

モジュールオブジェクトやインスタンスオブジェクトobjに対して、
obj.x = x
のように、新しい属性をつけることはできますが、
文字列オブジェクト等でこれをやると、AttributeErrorが発生します。

これは文字列オブジェクト等の__setattr__()メソッドがエラーを発生するように定義してある、
という理解で良いのでしょうか?
0576デフォルトの名無しさん2009/08/17(月) 23:02:27
>>575
組み込みオブジェクトは実装上そうなってる。
実際
class myStr(str): pass
と継承すれば望みのことが可能。
Pythonはそのへんの美しさは二の次なので好き嫌いが分かれるかも。
0577デフォルトの名無しさん2009/08/17(月) 23:06:48
文字列はimmutableだし美しさを損なってるってほどでもないような
0578デフォルトの名無しさん2009/08/17(月) 23:50:14
>>576
理解力が悪くてすみません。
strを継承したクラスのインスタンスには属性を追加できる
→ __setattr__()は関係ないってことで良いでしょうか?
05795752009/08/18(火) 00:14:45
連続で申し訳ないです。
今いろいろいじっていたら、そもそも組み込みオブジェクトが
__dict__属性を持っていないことがわかりました。

オブジェクトの属性は__dict__に格納されているみたいなんですが、
じゃあこの__dict__自身はどうなっているのでしょうか。
混乱してきましたw
0580デフォルトの名無しさん2009/08/18(火) 13:21:44
>>579
__dict__ は dict型のオブジェクトだよ。
属性の管理方法は、組み込み型ならC言語で自由に管理できるし、Pythonのclassで
__setattr__ を定義しない場合はデフォルトの __setattr__ が __slots__ か __dict__ を使って
管理する。
05815752009/08/18(火) 15:50:11
>>580
ああ、なるほど__slots__ですか。
これを定義しておくと、これに格納されていない名前の属性は付けられなくなるんですね。
ありがとうございました。
0582デフォルトの名無しさん2009/08/18(火) 17:49:09
# main.py
import mymodule
print mymodule.getmypath()

# mymodule/__init__.py
def getmypath():
  return __file__

引数等に何も渡さずにgetmypath()でmain.pyのファイルパスを取得する方法はありますか?
python2.5を使ってます
0583デフォルトの名無しさん2009/08/18(火) 18:06:27
os.fullpath(__FILE__)
0584デフォルトの名無しさん2009/08/18(火) 18:35:37
これでいいの?
sys._getframe().f_back.f_code.co_filename
05855822009/08/18(火) 20:25:52
>>584
できました!ありがとうございます。
05865862009/08/19(水) 21:17:25
はじめまして。

BeautifulSoupを使っていて、
<class 'BeautifulSoup.NavigableString'>をstrに
変換するにはどうすればよいのでしょうか?
05875862009/08/19(水) 21:42:58
メソッドencodeを使ってもエラーになります。
<class 'BeautifulSoup.NavigableString'>オブジェクトから
1文字ずつとりだすとunicodeになるので、
無理やりunicodeに変換することはできました。
なので解決といえば解決なのですが、美しくないです…
0588デフォルトの名無しさん2009/08/20(木) 02:06:21
unicode(s)
str(s)
0589デフォルトの名無しさん2009/08/20(木) 02:09:18
unicode(s.prettify(), s.originalEncoding)
0590デフォルトの名無しさん2009/08/20(木) 05:33:30
Pythonでは「文字列」と「ユニコード文字列」と「バイト列」
は異なるオブジェクトとして明確に区別されてるのでしょうか?
0591デフォルトの名無しさん2009/08/20(木) 07:41:29
2でも3でも文字列とバイト列は同じ
文字列リテラルとしてソースに書く場合はやや注意が必要
0592デフォルトの名無しさん2009/08/20(木) 07:49:52
>>591
いや違う
2: バイト列=文字列≠ユニコード文字列
3: バイト列≠文字列=ユニコード文字列
05935902009/08/20(木) 08:40:32
>>592
なるほど,その説明はわかりやすい

encode とか decode とかのメソッド見たとき,
何から何へなんだよ〜元と先が指定できなきゃ
だめなんじゃね?って悩んだ.
0594デフォルトの名無しさん2009/08/20(木) 10:59:28
urllib.urlopenで読んできたHTMLをBeautifulSoupに渡すとunicodeにしてくれますが、
その中に囲み数字みたいな機種依存文字があるとencodeでeuc-jpとかにしようとすると
例外が発生しますよね?
これってみなさんどうしてます?
0595デフォルトの名無しさん2009/08/20(木) 12:37:08
unicode-escape
0596デフォルトの名無しさん2009/08/20(木) 12:40:43
encode('euc-jp', errors='replace')
encode('euc-jp', errors='ignore')
encode('euc-jp', errors='strict')
0597デフォルトの名無しさん2009/08/20(木) 12:57:40
ttp://www.python.jp/doc/release/lib/string-methods.html
ttp://www.python.jp/doc/release/lib/codec-base-classes.html
0598デフォルトの名無しさん2009/08/20(木) 14:13:08
euc_jis_2004
0599デフォルトの名無しさん2009/08/20(木) 14:47:56
ttp://www.python.jp/doc/release/lib/standard-encodings.html
06005942009/08/20(木) 19:51:48
ヒントありがとうございます。
色々試してみましたが、文字コード回りは今一つ良く分かりませんね。
みなさんのヒントとウェブ情報を参考にとりあえず次のようにしてみました。

html = urllib.urlopen(url).read()
html_coding = chardet.detect(html)['encoding'].lower()
soup = BeautifulSoup(unicode(html, html_coding, 'replace').encode('utf-8'))
text = soup......
print text.encode('euc-jp', 'replace')

単純にprintの時に text.encode('euc-jp', 'replace')とかだと、何故か全体がわけわからないコードになりました。
2.5.4でやってるんですが、3.xになるとこの辺もっとスッキリするんでしょうか。

0601デフォルトの名無しさん2009/08/20(木) 22:08:07
「Python 3.1.1」リリース
http://pc11.2ch.net/test/read.cgi/pcnews/1250773470/
0602デフォルトの名無しさん2009/08/21(金) 07:36:16
>>600

html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
text = soup......
print text.encode('euc-jp', 'replace')
0603デフォルトの名無しさん2009/08/21(金) 07:38:11
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
text = soup......
print unicode(text, soup.originalEncoding).encode('euc-jp', 'replace')
0604デフォルトの名無しさん2009/08/21(金) 14:22:39
あのLinux使ってる人が一行目に書くのはなんだ?
0605デフォルトの名無しさん2009/08/21(金) 14:42:43
shebang
0606デフォルトの名無しさん2009/08/23(日) 22:49:29
はじめまして。
最近、pythonを始めました。 ipythonをとても便利に使っています。
ipythonに関して、一つ質問なのですが、代入式の場合に、評価の値が表示されるようにすることはできないでしょうか?
0607デフォルトの名無しさん2009/08/24(月) 13:03:36
「はじめてのpython」で勉強しています
下記スクリプトを実行したとき、

Winで実行する場合とUbuntuで実行する場合とで
結果が違う(Ubuntuの場合はエラーになる)のですが
どうしてですか?
Ubuntuでエラーを解消するにはどうすればいいですか?

文字エンコード部分を変えたり消したりするのはやってみました。

#! /usr/bin/env python
# coding:shift_jis
while True:
str=input('> ')
print( str )
if str=='bye':
break
0608デフォルトの名無しさん2009/08/24(月) 13:27:59
raw_input() にすれば動くよ。たぶんwinのはpython3なんだろう。
その本がどちらを使ってるかわからないけど、個人的にはまだ2.xを使ったほうがいいと思うよ

python2のraw_input() == python3のinput()
python2のinput() == python3のeval(input())
0609デフォルトの名無しさん2009/08/24(月) 23:54:44
改行コード
0610デフォルトの名無しさん2009/08/25(火) 16:17:27
win32api を使いたいです
ctypes から、windll.[DLL名].[関数名] で呼べるのはわかったのですが、
引数が要求したり、関数が返してくるような定数(?)の実際の値は普通どう確認するものなんでしょうか

他言語から win32api を使った経験は無いです
0611デフォルトの名無しさん2009/08/25(火) 16:29:15
ttp://www.python.jp/doc/contrib/ctypes/tutorial_jp.html
ttp://www.python.jp/doc/release/lib/module-ctypes.html
ttp://www.ueblog.org/blog/entry/ctypesunlha/
ttp://moco.sakura.ne.jp/python/ctypes%E3%81%AEstructure%E3%81%AB%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B3%E3%83%94%E3%83%BC/
06126102009/08/25(火) 17:27:33
えーと WM_CLOSE とかそういったものが定義されてないので、
その実際の値がわからないとそれを要求したり返したりする関数が使えないんです
それで、普通はどうするものなのかと思って質問しました
0613デフォルトの名無しさん2009/08/25(火) 17:31:15
少しぐらいならヘッダファイルから拾ってくれば済むけど
GUIまでやろうとするとものすごく大変な気がする
0614デフォルトの名無しさん2009/08/25(火) 17:34:19
MSDNでしらべる。Mingwのw32apiとかみる
0615デフォルトの名無しさん2009/08/25(火) 17:45:43
>>813
たまたま目に付いたものを書いただけで、今のところは GUI をやろうとしてるわけではないです

ヘッダファイル名でググって、定数名で検索掛けてコピペしてくればいいんですかね
他のコードからコピペして著作権的に大丈夫なんでしょうか

>>614
関数と、対応するDLLは、ググって出てきたMSDNのページを見てるんですが、定数が見つからないです
どこに何があるかいまいちわからない……

Mingwは調べてみます
0616デフォルトの名無しさん2009/08/25(火) 20:25:48
pywin32 の win32con.py
0617デフォルトの名無しさん2009/08/25(火) 20:50:24
>他言語から win32api を使った経験は無いです
0618デフォルトの名無しさん2009/08/25(火) 21:41:44
>>616
おお、大抵の場合はこれで大丈夫そうです

というよりctypesじゃなくてpywin32でwin32apiを呼べるみたいですが、その方がいいんでしょうかね
でもpywin32のヘルプ読んでもどこに何があるのかわかりづらい……

>>617
一応書いておいた方がいいかなと


これから先、どのapiを使うかわからないのであえて書かなかったのですが、
DDEクライアントを書いてました
win32conにddeml.hの定数が見当たらなかったので、
Google先生にお願いしてヘッダファイルからコピペしたところ、とりあえず動きました
(コピペして大丈夫なんでしょうか)

pywin32にddeなるモジュールがあるようですが、使い方がさっぱりなので見なかったことにします
みなさん回答ありがとうございました
今回の件とは別ですが、>>611も参考になりました
0619デフォルトの名無しさん2009/08/25(火) 22:00:04
>DDEクライアント

win32com
0620デフォルトの名無しさん2009/08/25(火) 22:58:40
COMはDDEとは別物じゃないですか?
0621デフォルトの名無しさん2009/08/25(火) 23:05:06
それはMSに言っといてくれ
死語だけでもWindows DNAとかChromeEffectsとかいくらでも出てくる
0622デフォルトの名無しさん2009/08/25(火) 23:34:06
>>619を読んで、win32comとDDEクライアントの関係がわからなかったので>>620を書いたのですが……
0623デフォルトの名無しさん2009/08/26(水) 01:55:48
COMはOLEクライアント
0624デフォルトの名無しさん2009/08/27(木) 04:10:26
拡張子は opyで
0625デフォルトの名無しさん2009/08/27(木) 21:05:40
.pyoのほうがいい
0626デフォルトの名無しさん2009/08/28(金) 08:19:35
そのうち2.xようと3.xように
.pyo2とかになるのか
0627デフォルトの名無しさん2009/09/01(火) 22:46:42
Windows環境でもPyreadlineをインストールしていれば
cmdモジュールのデフォルトでbash-like動作が有効になると思ってたんですが
普通に“^A”などと表示されてしまいます。
IPythonでは補完が効くので、cmdモジュールの使い方が間違ってるんだと思いますが
公式サイトのリファレンスではCmd.cmdを継承したクラスを作って
引数無しでインスタンスを作成するだけのように読めます。

何が間違ってるんでしょうか?
0628デフォルトの名無しさん2009/09/03(木) 07:39:13
助けてください・・・
これからPythonを勉強しようと思ってるのですが、それ以前に「パスを通す」
ということができません。
Windows XP で、Python2.6.2 をインストールしたんですけど、初心者用の
サイトにある「パスの設定」というのを見ながらやっても
[操作可能なプログラムまたはバッチ ファイルとして認識されていません]と
でてしまい困っています・・・。どうすればパスを通せるのか教えていただけ
ないでしょうか。よろしくお願いします。
0629デフォルトの名無しさん2009/09/03(木) 08:12:03
了解
0630デフォルトの名無しさん2009/09/03(木) 08:33:11
スレ違い
パソコン入門スレとかにいってこい
0631デフォルトの名無しさん2009/09/03(木) 09:24:33
↑
PATHの通し方すら教えられない。
しょせんPyヲタなんて、この程度。
0632デフォルトの名無しさん2009/09/03(木) 09:51:29
逃げた?
0633デフォルトの名無しさん2009/09/03(木) 09:53:19
>>628
autoexec.bat あたりを弄ったのかな?それはWindows98時代のやり方で、
Windows2000以降ならGUIで設定できる。
ttp://www.daikichi.net/books/lecture_java/setting_jdk.html
0634デフォルトの名無しさん2009/09/03(木) 10:08:32
言っちゃった…。

俺はあほの相手するのは疲れるんでぐっとこらえたんだけど。
0635デフォルトの名無しさん2009/09/03(木) 14:15:51
>>628
>>633が答えてくれてるけど
うまくいかなかったらまた聞いてくれ
06366282009/09/03(木) 19:12:06
>>629 ?
>>630
すみません。スレ違いという事すら気づきませんでした...。
>>631
ごめんなさい..。私が悪いんです。
>>632 ?
>>633
ご親切に答えてくれて、ありがとうございます。教えて頂いた
ttp://www.daikichi.net/books/lecture_java/setting_jdk.html も、見てみた
のですが、ダウンロードし直したら無事にパスが通りました。本当に、
ありがとうございました。
>>634
ごめんなさい、ほんとに私はアホです。
>>635
ありがとうございます。結局、何が原因だったのかわからないのですが
どうにかパスの設定はできました。
0637デフォルトの名無しさん2009/09/03(木) 21:35:11
>> 607
一行目の指定宣言ですが?

#! /usr/bin/env python

/* man env 引用 */

NAME
env -- set and print environment

余り どの様な形式の基礎かが理解 出来ないのですが…
この部分の基礎宣言の説明をして頂けますか?
0638デフォルトの名無しさん2009/09/03(木) 21:51:11
ピートンっておぼえたほうがいいかな
0639BBS戦士ジョソコイダーGID@愛をください2009/09/03(木) 21:52:46
ジョソコイダーを遊園地に連れてってって
0640デフォルトの名無しさん2009/09/03(木) 22:08:29
>>637
その一行目は shebang という
二行目以降を入力として shebang に指定したコマンドを実行する

ややこしい話をすると
shebang に指定されたコマンドを実行するのはシェルでなくカーネルの仕事
シェルは環境変数PATHを知っているけど、カーネルは知らないので
原則 #!/usr/bin/python などではなく #!/usr/bin/python のように書く必要がある

ただこの方法だと他のマシンでの python インタプリタの場所が
/usr/local/bin/python だった場合に動かないので
env コマンドに環境の設定と python の実行をお願いする
0641デフォルトの名無しさん2009/09/03(木) 22:09:26
o 原則 #!/usr/bin/python などではなく #!/usr/bin/python のように書く必要がある
x #!python などではなく #!/usr/bin/python のように書く必要がある
0642デフォルトの名無しさん2009/09/03(木) 22:33:38
>>607

/* Line 2 */
# coding: 'Shift_JIS'

これで 通りますが… 何をする Program ですか?
0643デフォルトの名無しさん2009/09/03(木) 22:38:14
>>642 plus
失礼…
>>640 を読めずに書き込んだので…
0644デフォルトの名無しさん2009/09/03(木) 22:48:02
>>640
読んだのですが?
文字列を入れても Syntax Error に為りますが?
直接 打ち込んでの作業では無いと云う事か…
0645デフォルトの名無しさん2009/09/03(木) 23:12:28
まずは日本語の構文をマスターしてからのほうが
いいと思うんだ・・・
0646デフォルトの名無しさん2009/09/03(木) 23:17:30
>>644
shebang を使うのはファイルに保存したスクリプトを
% python scriptname
ではなく
% chmod +x scriptname
% ./scriptname
のように実行したい場合
対話型プロンプトではそもそも必要ない

よくわからなかったら、慣れるまで
* スクリプト内でASCII文字だけ使うようにする
* 実行する際は % python scriptname
* 対話型プロンプトは使わない
そうすれば #!/usr/bin/env python や # coding: sjis を書く必要が無くなる

あとできればメール欄に sage って入れて
0647デフォルトの名無しさん2009/09/04(金) 00:16:11
>>646 本人がレスして居るのでしょうか?
# coding: Shift_JIS
は 始めから省略が出来たと思いましたが…
書く必要性 1: どの coding: を使用して居るかを明確にする為
記憶では二行目は かなり about に書く事が出来る でしたか?
prompt を使用しないですか…
script が まだ入力待ちの状態だったと理解して居りますが?

>>607
「はじめてのpython」で勉強しています
下記スクリプトを実行したとき、
Winで実行する場合とUbuntuで実行する場合とで
結果が違う(Ubuntuの場合はエラーになる)のですが
どうしてですか?
0648デフォルトの名無しさん2009/09/04(金) 01:01:52
どんなエラーが出たのか書けよ
0649デフォルトの名無しさん2009/09/04(金) 01:05:22
OSが違うからです
0650デフォルトの名無しさん2009/09/04(金) 01:06:22
>下記スクリプト

???
0651デフォルトの名無しさん2009/09/04(金) 01:12:46
異なる環境で動かすことを考えているなら、 coding指定は必ず書いておけ。

標準入力も、inputに頼らず、codecs.getreader()で、
エンコード指定して、sys.stdinからファイル入力として扱うほうが、
トラブルは少ないかもしれない。
0652デフォルトの名無しさん2009/09/04(金) 01:13:36
その変な日本語どうにかしてよ
0653デフォルトの名無しさん2009/09/04(金) 01:20:28
str = codecs.getreader('UTF-8')(sys.stdin)
0654デフォルトの名無しさん2009/09/04(金) 01:23:08
str = codecs.getreader('UTF-8')(sys.stdin).read()
0655デフォルトの名無しさん2009/09/04(金) 01:25:03
っつーかstrをへんこうしたらなにがおこるんだ?

0656デフォルトの名無しさん2009/09/04(金) 01:56:11
うちゅうのほうそくがみだれる
0657デフォルトの名無しさん2009/09/04(金) 01:57:50
変更というよりは邪魔して見えなくしてるだけだ

__builtins__.str
0658デフォルトの名無しさん2009/09/04(金) 06:27:01
py3なら文字コード余裕でした。
0659デフォルトの名無しさん2009/09/04(金) 13:46:11
拙もはじめてのpython3で勉強してます。
本に載ってた下記スクリプトが、WinでもLinuxでも動きませんでした。

本のミスでしょうか?

■エラー内容:
print( gcd(int(sys.argv[1]),int(sys.argv[2])) )
IndexError: list index out of range

■スクリプト:
#!usr/bin/env python
# coding:shift_jis

import sys

def gcd(m,n):

if n>m: m,n=n,m
while n>0:
m,n=n%m
return m


if __name__=='__main__':
print( gcd(int(sys.argv[1]),int(sys.argv[2])) )
06606592009/09/04(金) 13:47:43
カキコしたらインシデントがなくなってしまいました。修正します。

■スクリプト

#!usr/bin/env python
# coding:shift_jis

import sys

def gcd(m,n):

 if n>m: m,n=n,m
  while n>0:
   m,n=n%m
  return m


if __name__=='__main__':
 print( gcd(int(sys.argv[1]),int(sys.argv[2])) )
0661デフォルトの名無しさん2009/09/04(金) 14:08:36
>>660
sys.argv[1] と sys.argv[2] はそれぞれ、
python gcd.py 3 5 (もしくは ./gcd.py 3 5) としたときの 3 と 5 が入ります。
引数をつけずにプログラムを実行されたのではないでしょうか?
06626592009/09/04(金) 16:00:32
>>661

そのとおりでした。ありがとうございます。
0663デフォルトの名無しさん2009/09/04(金) 16:15:57
WindowsでPython 2.6.2を使って機種依存文字を処理しようと思ったんですが、
cp932でエンコードして書き出すとき、PythonはNEC選定IBM拡張文字を優先して使うようなんです。
(例えば「�ケ」の場合、fbb9ではなくee9d)

できたらIBM拡張文字の方で書き出せるようにしたいんですが、何かいい方法があるでしょうか?
0664デフォルトの名無しさん2009/09/04(金) 16:48:19
>>663
Text 文書を保存して その儘 特定機種で Text を読み込むと どの様に為りますか?
0665デフォルトの名無しさん2009/09/04(金) 16:53:22
>>> u"�ケ".encode("mbcs")
'\xfb\xb9'
>>> u"�ケ".encode("cp932")
'\xee\x9d'
0666デフォルトの名無しさん2009/09/04(金) 17:03:13
>>664 plus
否… 表現が悪かった様で… 片方の機種で その文字を Text に保存して
もう片方の機種で その Text を読み込むと どの様に為りますか?
0667デフォルトの名無しさん2009/09/04(金) 17:19:25
>>665
どうもありがとうございます。
何となく、Windowsではcp932を選べばいいのだと勝手に思い込んでました。

>>666
すみません、勉強不足でよく理解できていないんですが、cp932はWindows以外の環境も考慮してああなっているということでしょうか? もっとよく調べてみます。
0668デフォルトの名無しさん2009/09/04(金) 17:32:22
うにcode か… 素晴らしいな…
0669デフォルトの名無しさん2009/09/04(金) 18:33:07
>インシデント
0670デフォルトの名無しさん2009/09/04(金) 22:10:56
>>665
なんなのその顔文字ふざけてんの?
0671デフォルトの名無しさん2009/09/04(金) 22:18:51
u('-')

たまに出てくるけどかわいい
0672デフォルトの名無しさん2009/09/04(金) 23:06:05
>>670
NEVADA
0673デフォルトの名無しさん2009/09/05(土) 00:12:56
>>671
心の汚れた環境では見れないらしい…
0674デフォルトの名無しさん2009/09/05(土) 22:02:15
osごとに異なるモジュールをインポートするにはどうしたらいいのでしょうか?
C言語で言うifdefみたいなことがしたいのですがうまくいきません・・
0675デフォルトの名無しさん2009/09/05(土) 22:03:45
import sys
sys.platform
0676デフォルトの名無しさん2009/09/05(土) 22:18:03
>>675
ありがとうございます
sys.platformで取り込むモジュールを振り分けられました
importは先頭に書くものだと思っていました。。
0677デフォルトの名無しさん2009/09/06(日) 00:20:31
普通はtry: import hoge except ImportError: import fugaみたいにするんじゃなかったっけ?
0678デフォルトの名無しさん2009/09/06(日) 00:36:49
異なるシステムでもImportErrorでない書き方できるからsys.platform使う方が無難
0679デフォルトの名無しさん2009/09/06(日) 00:42:55
sys.platformというのは初耳だわ
os.nameよりも詳しいのかな
0680デフォルトの名無しさん2009/09/06(日) 00:45:20
platformモジュールとか初めて知った
0681デフォルトの名無しさん2009/09/06(日) 01:05:04
>>680
そういえばそんなのもあったね。程度にしか使われてないよな

sysはビルトインの標準モジュールだから絶対に読み込めるという理由もあるかも
osはパス通ってないとimportできないし
0682デフォルトの名無しさん2009/09/06(日) 18:33:13
スクリプトでテキストを立ち上げたり、IEを起動させたりは可能ですか?
0683デフォルトの名無しさん2009/09/06(日) 18:40:20
yes you can
0684デフォルトの名無しさん2009/09/06(日) 23:46:18
いろいろ試したんだけどwindowsでparamikoが使えない。
これは使えないでOK?
0685デフォルトの名無しさん2009/09/06(日) 23:50:05
Windowsでparamikoつかえるよ?
bazaarなんてWindows用のデフォルトのsshクライアントがparamikoだよ。
0686デフォルトの名無しさん2009/09/07(月) 00:08:23
>>685
俺にとってあんたは神様だ。
設定しかたを教えてくれ!
0687デフォルトの名無しさん2009/09/07(月) 00:51:13
>>685
1. paramiko-1.7.5.zip をダウンロード
2. 適当なディレクトリに解凍
3. コマンドプロンプト開いて 2 のディレクトリに cd で移動する
4. python setup.py build
5. python setup.py install
これを順にやっていって、どこで引っかかるか教えて。

今やってみたら、依存ライブラリのpycryptoが手元の環境でインストール済みだったから
すんなりインストール終わった。
ひょっとしたらpycryptoインストールするときに拡張モジュールのコンパイルが必要かも
知れないから、Pythonのバージョンに対応するコンパイラをもっていない場合は
http://mirror.cameronbergh.com/pycrypto-win/
から対応するパッケージをダウンロードするといいよ。
0688デフォルトの名無しさん2009/09/07(月) 00:54:35
親切にありがとう!
paramiko-1.7.4でやったらすんなりとおった。
0689デフォルトの名無しさん2009/09/10(木) 16:31:07
n(適当な自然数)次元の実数値関数fを定義するときに
f = lambda x : (x**2).sum()
とか書いてあるコードがあって、意味がわかりません。

lambda式がわからないのではなくて、後ろについてる.sum()がわかりません。
インタプリタで上記定義をして、f(x=1.0)とかf(x=[1.0,2.0])とかやってみると、
sum()についてのattribute errorが出ます。

よろしくお願いします…。
0690デフォルトの名無しさん2009/09/10(木) 16:33:31
xがnumpyのarrayなんじゃない?
06916892009/09/10(木) 16:43:10
>>690
それでした!
どうもありがとうございました。
0692デフォルトの名無しさん2009/09/11(金) 22:49:04
BitTorrent以外でpythonで実装されたクライアントソフトあるいはスタンドアローンソフトって何がありますか?
砕けた言い方をすると、pythonで実装されていて拡張子がexeなそれなりに有名なソフトって何がありますか?
0693デフォルトの名無しさん2009/09/11(金) 22:59:58
BTはPythonやめたんじゃなかったっけ?
0694デフォルトの名無しさん2009/09/11(金) 23:03:43
ttp://wiki.python.org/moin/Applications
0695デフォルトの名無しさん2009/09/12(土) 15:52:44
拡張子がexeである必要がよくわからないけど、
bzr, mercurial といったVCSもそうだし、
Editra, Dropbox, TaskCoach, 他にもいろいろあるぞ。
LinuxにいったらさらにPython製デスクトップアプリだらけ。
0696デフォルトの名無しさん2009/09/12(土) 18:57:53
yum
0697デフォルトの名無しさん2009/09/12(土) 18:59:20
とりあえず2chviewerでも作って公開すれば有名になれるんかな
0698デフォルトの名無しさん2009/09/14(月) 05:56:06
>684
これかも
ttp://d.hatena.ne.jp/lolloo-htn/20090801/1249085650
0699デフォルトの名無しさん2009/09/14(月) 09:44:16
http://bugs.launchpad.net/paramiko/+bug/411910
へぇ。
0700デフォルトの名無しさん2009/09/15(火) 12:47:58
>>692
portage, samuraix
0701デフォルトの名無しさん2009/09/15(火) 21:14:28
wikipediaのPythonのページに
「多くの異なる言語で書かれたモジュールをまとめるグルー言語」
とありますが、これは複数のプログラミング言語で書かれたモジュールを
まとめられるということでいいのでしょうか?
0702デフォルトの名無しさん2009/09/17(木) 08:06:50
>>701
文章を途中で切るよな。
0703デフォルトの名無しさん2009/09/17(木) 09:50:28
ワロタ
0704デフォルトの名無しさん2009/09/24(木) 03:21:16
lambda : 1 + 2
が良くて
lambda : print "hoge2"
がダメな理由って何故ですか?
0705デフォルトの名無しさん2009/09/24(木) 03:35:29
lambda式には式(expression)しか書けないから。printは文(statement)。
0706デフォルトの名無しさん2009/09/24(木) 03:43:40
lambda : sys.stdout.write("hoge2\n")
07077042009/09/24(木) 04:34:27
ありがとう
・・・Pythonってそう言うのを区別するのか・・・先は長そうだ orz
0708デフォルトの名無しさん2009/09/24(木) 06:08:10
python3ではprintは関数だよ^^
0709デフォルトの名無しさん2009/09/24(木) 07:27:03
Pythonで
print "x=#{x}\n" if DEBUG (Rubyの例)
みたいに1行で完結させる書き方って可能ですか?
同じ物をPythonで書くと
if DEBUG:
print "x="+str(x)
となると思いますが出来ればデバッグメッセージごときに2行は使いたくない・・・
0710デフォルトの名無しさん2009/09/24(木) 08:07:41
if DEBUG: print "x="+str(x)
だが、logging使え。
0711デフォルトの名無しさん2009/09/24(木) 10:34:36
if DEBUG:
print "x="+ str(x)
0712デフォルトの名無しさん2009/09/24(木) 10:36:08
>>711 ミスったので見なかったことに
0713デフォルトの名無しさん2009/09/24(木) 11:42:46
logging.logger
0714デフォルトの名無しさん2009/09/24(木) 13:37:14
http://pythonjp.sourceforge.jp/dev/library/functools.html
ここにある
def partial(func, *args, **keywords):
という書き方に出てくるCのポインタみたいな記号(*args,**keywords)ってどういう意味ですか?
0715デフォルトの名無しさん2009/09/24(木) 13:43:23
http://pythonjp.sourceforge.jp/dev/tutorial/controlflow.html#tut-keywordargs
0716デフォルトの名無しさん2009/09/24(木) 13:53:55
ありがとござます
0717デフォルトの名無しさん2009/09/24(木) 17:46:57
PILのpython3対応はまだか!
0718デフォルトの名無しさん2009/09/24(木) 22:47:32
>>712
え?どこどこ?
0719デフォルトの名無しさん2009/09/24(木) 23:06:30
Python的には字下げだろう。
0720デフォルトの名無しさん2009/09/27(日) 04:43:59
一度定義した変数を消去することは可能ですか?

python3.0で、
print = 5
とするとprintという名前の変数に5が代入されたのですが、
そのあと元のprintという関数を使いたい場合はどうすればよいのでしょうか?
0721デフォルトの名無しさん2009/09/27(日) 04:53:34
__builtins__.print

もしくは

del print
07227202009/09/27(日) 05:15:58
>>721
ありがとうございました。
0723デフォルトの名無しさん2009/09/27(日) 11:24:07
urllib2でkeep-alive出来ない。助けて

policy = cookielib.DefaultCookiePolicy( rfc2965=True, strict_ns_domain=cookielib.DefaultCookiePolicy.DomainStrict)
cj = cookielib.LWPCookieJar(cookie_jar_path, False, policy)
cjhdr = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cjhdr, RefererAddHandler())
opener.addheaders = [
 ('User-agent', 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)'),
 ('Connection','Keep-Alive')
 ('Keep-Alive'','300')
]
r = opener.open( uri )
rinfo = r.info()
for key in rinfo.keys() :
 print h, rinfo[key]

## Referer を Autoでつける為のハンドラ ########
class RefererAddHandler (urllib2.BaseHandler) :
 def http_request(self, req) :
  req.add_header("Referer", req.get_full_url())
return req

---------------------------
firefoxなんかでレスポンスヘッダを見ると、
 Connection: Keep-Alive
と出てる。でも上記コードでは
 Connection: Close
になる。なにか足りないですか?
07247232009/09/27(日) 11:26:39
訂正:
 ('User-agent', 'User-Agent: Mozilla/5.0 〜略)
の箇所は
 ('User-agent', 'Mozilla/5.0 〜略)
0725デフォルトの名無しさん2009/09/27(日) 11:31:06
HTTPヘッダでkeep-aliveするようにしても
urllib2がそれを想定してないからうまく動かなかったような
ソース読んで絶望した記憶がある

urllib2 keep-alive でぐぐってみるといいんじゃないか
07267232009/09/27(日) 11:34:14
>>725
ありがとう。ここのサイトのをやってみる!
http://python.blog-slime.com/function/urllib/
07277232009/09/27(日) 11:36:47
↑はurllibだった。下のサイトのを拝借するのが一番楽そうですね。�d
http://memo.jj-net.jp/18
07287232009/09/27(日) 12:03:05
ちなみに・・・

urllib2だとcookieの自動処理が容易に出来るけど、keep-aliveが出来ない
urllib だとcookieの自動処理を容易に出来ないが、keep-aliveは出来る
(http://www.python.jp/doc/2.4/lib/cookielib-examples.html見ると、cookielibはurllib2での使用を想定している?)

HTTP/HTTPSをやる上で、比較的高機能で知られたライブラリってありますか?
(PerlのLWP、JavaのCommons/HttpClientみたいな)
0729デフォルトの名無しさん2009/09/27(日) 18:42:43
参考になるかどうかわからんけど2.6, 3.0系列の構成は

http://urllib-gsoc.blogspot.com/2008/06/urllib-package.html
http://www.python.org/dev/peps/pep-3108/#http-package
http://www.python.org/dev/peps/pep-3108/#urllib-package

こんなかんじらしい…
0730デフォルトの名無しさん2009/09/27(日) 18:45:28
一番下の example が参考になるかも試練

http://docs.python.org/dev/3.0/library/http.cookiejar.html
0731デフォルトの名無しさん2009/09/27(日) 18:53:41
おまいらおちつけ
>>723のコードはPython2系列だ
0732デフォルトの名無しさん2009/09/27(日) 19:01:48
https://fisheye.toolserver.org/browse/~raw,r=6953/pywikipedia/branches/rewrite/pywikibot/comms/threadedhttp.py

Bingo? 直感で
実は keep-alive の意味がよくわからないw
07337232009/09/27(日) 23:14:59
みんな、アドバイスありがとう!
python 2.4 に拘っている訳ではないんだ。
v3.0に上げて >>730のurllibとhttp.cookie_jarでやってみる。

>>732
ありがとう!参考にさせてもらうぜぃ
07347232009/09/28(月) 01:08:16
python3.1 ってif,for,printが式になってて、今まで書いてたコードが動かねーおwww
なんかLISPっぽいね。
2.6と変わりすぎててわらってしまったw
07357232009/09/28(月) 01:13:56
ひとりごと多くてすまん
>>734は気にしないでくれ。勘違いだったお
0736デフォルトの名無しさん2009/09/28(月) 02:44:31
Twitterでやれ
0737デフォルトの名無しさん2009/09/28(月) 14:47:48
Tkinterについて質問です

from Tkinter import *

root = Tk()
sub_win = None

def button_callback(event):
global sub_win
print 'button down'
sub_win.destroy()

def message_window():
global sub_win
sub_win = Toplevel()
button = Button(sub_win, text='window close')
button.pack()
sub_win.bind('<Escape>', button_callback)
button.bind('<Button-1>', button_callback)

Button(root, text='about', command=message_window).pack()

root.mainloop()

以上のようなコートなのですが、ESCキーを押してもコールバック関数が呼ばれません
何故でしょうか?よろしくお願いします
0738デフォルトの名無しさん2009/09/28(月) 15:28:31
フォーカスの合ってるウィジェットにしか
イベントは送られない。
07397372009/09/28(月) 16:00:47
レスありがとうございます
>>738
>フォーカスの合ってるウィジェットにしか
>イベントは送られない。
もうちょっと単純にしてみて

from Tkinter import *

root = Tk()

def esc_down(event):
print 'esc key down'
root.destroy()

button = Button(root, text='close')
button.pack()
button.focus_set()
button.bind('<Button-1>', esc_down)
button.bind('<Escape>', esc_down)

root.mainloop()

こういう事ですよね?
これの「button.bind('<Escape>', esc_down)」を「root.bind('<Escape>', esc_down)」
としてもきちんとコールバック関数は呼ばれます。
上のコードのTkをToplevelにしてもESCキーのイベントの補足は成功するようです
>>737みたいな形にするとうまく行かないです。よろしくお願いします
0740デフォルトの名無しさん2009/09/28(月) 18:59:50
UTF-8にエンコードする方法を教えて下さい。
例えばx = "あいうえお"のときyに"%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A"を代入したいんですが
どのようにすればいいでしょうか?
0741デフォルトの名無しさん2009/09/28(月) 19:15:31
元の文字列がShift_JISだと仮定

import urllib
x = 'あいうえお'
y = urllib.quote(x.decode('sjis').encode('utf8'))
07427402009/09/28(月) 20:07:56
>>741
ありがとうございました、出来ました。
0743デフォルトの名無しさん2009/09/28(月) 21:03:12
>>737
好きなのをどうぞ

- 2つ目のウィンドウをクリックしてからEsc押す
- sub_win.focus_set()
- root.bind('<Escape>', button_callback)
0744デフォルトの名無しさん2009/09/29(火) 03:25:29
複数行の文字列xからどうすれば中身を1行ごとに分割して1つずつリストに代入させることが出来ますか?
0745デフォルトの名無しさん2009/09/29(火) 03:40:05
複数行の文字列をどういうデータ形式で持っているのかによる。
0746デフォルトの名無しさん2009/09/29(火) 03:42:06
"abc\ndef\nghi".split("\n")
07477372009/09/29(火) 03:59:51
>>743
レスありがとうございます
2枚目のウインドウは作っただけではフォーカスは動かないのか・・・il||li ○| ̄|_
真ん中の方法を使わせて貰いました
0748デフォルトの名無しさん2009/09/29(火) 04:04:20
Tkinterについての質問です。
何らかのイベントが起きたときにフレームの内容を
丸ごと入れ替えるようなプログラムはどの用にする
ば書くことができますか?
0749デフォルトの名無しさん2009/10/01(木) 12:00:05
virtualenvとpip
0750デフォルトの名無しさん2009/10/02(金) 02:35:44
質問です。
環境はvine5.0 Python 2.5.4 です。

>>> from turtle import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named turtle

と出ました。
turtleが入ってないということでしょうか?
またその場合どうすればいいのでしょうか?
どうかご教授お願いします。

0751デフォルトの名無しさん2009/10/02(金) 04:17:28
Tkinterが入ってないんじゃないか
vine tkinter でぐぐってみて
0752デフォルトの名無しさん2009/10/02(金) 14:49:59
>>751
できました!
ありがとうございました!
0753デフォルトの名無しさん2009/10/03(土) 13:16:23
os.startfileも、subprocess.Popenに置き換えたほうがいいのかな。
0754デフォルトの名無しさん2009/10/03(土) 14:30:28
いちいち関連付けを調べなくてもいいもなら
それでおk
0755デフォルトの名無しさん2009/10/03(土) 21:07:21
ふと思ったんだけど、Pythonてドイツ語だとピュトンみたいな読みになるの?
0756デフォルトの名無しさん2009/10/03(土) 22:16:29
ぴゅちょん
0757デフォルトの名無しさん2009/10/03(土) 22:39:25
webからの情報取得とメール(これはモジュール利用)を使ってプログラム開発を考えておりますが
アドバイスをお願い致します。
・為替のレートを取得(特に決めていないが、リアルタイムレート)
・特定のレートになったところでメール通知
これなんて簡単でしょうか?
webからリアルタイムに情報を取得するには?
0758デフォルトの名無しさん2009/10/03(土) 22:49:08
あんまPythonに関係ないような。
HEADで定期的にポーリングで間に合う?
0759デフォルトの名無しさん2009/10/03(土) 22:55:57
 webで取れるのは殆ど20分お倉だけどそれで良いの?
07607572009/10/03(土) 22:58:51
>758
pythonしかわかりません(涙
勉強してみます。

>759
リアルタイム希望です。
urllibだとリアルタイムはできないですよね?
0761デフォルトの名無しさん2009/10/03(土) 23:03:22
そういう問題じゃないし
0762デフォルトの名無しさん2009/10/03(土) 23:08:43
http://q.hatena.ne.jp/1169293743
0763デフォルトの名無しさん2009/10/04(日) 14:24:38
Tkinterで動きのある表示をしたいのですが,
それほど重要な表示でもないので「暇な時」に
描画を更新したいと思っています.

「暇な時にコールバックして」というような
コールバックの枠組みは Tk にあるのでしょうか?
今は強引にループを回してますが,それだと他の処理に
対して影響が出るし(主処理はmultiprocessingで
いくつかのプロセスに投げてます),かといって
ウェイトを入れるとしても動的に調整したいし・・・

gtkを使うときには

import gobject
gobject.idle_add(update_graph)

のようにしています.
07647632009/10/04(日) 14:54:21
manager = pylab.get_current_fig_manager()
def run(*args):
    shori()
    manager.window.after(50, lambda : manager.window.after_idle(run))

こんな感じにしてみました.
単純なループよりは穏やかになりました.
0765デフォルトの名無しさん2009/10/04(日) 23:44:48
cygwinでpyファイルを実行しようとすると
from pylab import *
No module named pylab
とエラーが出てしまいます。
ipython で
from pylab import *
としてもエラーが出ないので、Matplotlibはインストールされてるはずなのですが・・・。
どうしたらいいしょう?
0766デフォルトの名無しさん2009/10/05(月) 00:40:00
>>765
Cygwin内のPython(/usr/bin/python)にインストールされてないのでは
0767デフォルトの名無しさん2009/10/06(火) 01:50:22
コードから実行中のPythonのバージョンを得るにはどこから取り出せばいいでしょうか?

レンタルサーバのOSにインストールされていてCGIとして一応使えるようなので
使ってみたいのですが、わりと古いバージョンのようなので、
(webから)確認したいと思っています。
RUBY_VERSIONのような定数を期待したのですが、どうにも・・・
0768デフォルトの名無しさん2009/10/06(火) 01:52:05
import sys
sys.version
0769デフォルトの名無しさん2009/10/06(火) 01:56:16
import cgi
cgi.test()
07707672009/10/06(火) 02:10:04
>>768-769
確認できました!
バージョンは2.3.4でした。もっとずっと古い予感がしてたので少し安心・・。
ありがとうございました。cgi.test()の方も大助かりです!
0771デフォルトの名無しさん2009/10/06(火) 02:13:08
2.3.4は古い
0772デフォルトの名無しさん2009/10/06(火) 02:18:37
日本語codecすらない
0773デフォルトの名無しさん2009/10/06(火) 18:54:48
web上で直接Pythonのコマンドが入力出来て反応が帰ってくる
サイトが有れば教えてください

Rubyとかは見たことある気がするのですが
0774デフォルトの名無しさん2009/10/06(火) 18:58:18
http://shell.appspot.com/
http://codepad.org/
0775デフォルトの名無しさん2009/10/06(火) 19:52:32
urlからファイル名を取り出したいのですがurlparse.urlsplit(url).path.split('/')[-1]しか方法はありませんか?
0776デフォルトの名無しさん2009/10/06(火) 20:16:50
たぶん。URLってどれがいわゆるファイルか字面だけ見ても判別できない気がする
http://www.example.com/foo/bar/cgi.py/path_info/path_info2
みたいになる場合もあるから
0777デフォルトの名無しさん2009/10/06(火) 20:53:00
os.path.basename(url)
0778デフォルトの名無しさん2009/10/06(火) 20:56:56
URLのカオスっぷりったら半端ない
0779デフォルトの名無しさん2009/10/06(火) 21:01:05
ファイル名で終わってるとは限らないよw
0780デフォルトの名無しさん2009/10/06(火) 21:03:00
http://www.example.com/foo/bar/blog/2009/10/06/0001
0781デフォルトの名無しさん2009/10/06(火) 21:21:41
ウリ
07827732009/10/07(水) 06:15:51
>>774

遅くなりましたが ありがとうございます
0783デフォルトの名無しさん2009/10/07(水) 15:06:54
TkinterのLabelに貼り付けた画像を親Widgetの大きさによって
拡大縮小させるにはどうすればいいですか?
0784デフォルトの名無しさん2009/10/08(木) 05:38:44
expand
0785デフォルトの名無しさん2009/10/08(木) 06:22:19
テキストファイルに保存した
◯◯.py
と言うファイルを

IPythonで実行することは出来るのでしょうか?
出来るのならその方法を教えてください
0786デフォルトの名無しさん2009/10/08(木) 11:50:35
importすりゃいいんじゃね?
0787デフォルトの名無しさん2009/10/08(木) 12:57:12
http://d.hatena.ne.jp/code46/20090531/p1

ここに書いてあるcreateDict.pyで
#日付スキップ等があり、アルファベットだけの文字列もスキップしたいのですが、
何を加えれば良いのでしょうか。
0788デフォルトの名無しさん2009/10/08(木) 13:33:40
# -*- encoding: utf-8 -*-
import sys
import re

#数字四桁が入ったキーワードは役に立ちませんので検出して飛ばします。
year = re.compile("[0-9]{4}")

#驚くべきことにはてなキーワードには%00というキーワードがありますが、
#これがcsvとして提供されているダンプではヌル文字になっているのでシステム制御文字を非許可にします。
ng = [chr(i) for i in range(0,32)]

def main():        
        for x in sys.stdin:
                if re.search(year,x):
                        continue #日付スキップ
                k = x.split("\t")[1].strip()
                if len(k) < 2:
                        continue #一文字スキップ
                for word in ng:
                        if word in k:
                                continue #システム制御文字スキップ
                k = k.lower() #MeCabはケースセンシティブなので小文字に統一して辞書作成
                cost = int(max(-36000, -400 * len(k)**1.5)) #コストについては後述
                print "%s,0,0,%s,名詞,一般,*,*,*,*,%s,*,*,はてなキーワード," % (k,cost,k) #0については後述
if __name__ == '__main__':
  main()
0789デフォルトの名無しさん2009/10/08(木) 15:55:39
for x in range(3):
pass

みたいな感じでループを回すのに range を使っているんですが,
Eclipse + PyDev 1.5 では x が Unused Variable だって
警告が出ます.無視すればいいんですが,なんか気持ち悪い.
単純にループを回す時こんなことするのはアホですか?
0790デフォルトの名無しさん2009/10/08(木) 16:45:39
>>789
"x"のかわりに"_"をつかうとか、Ctrl+1で警告を消すとか
0791デフォルトの名無しさん2009/10/08(木) 16:56:48
ループの中身がpassだけのときって最適化されてループがなくなったりはしないの?
0792デフォルトの名無しさん2009/10/08(木) 17:13:46
バイトコードを見る限り、最適化されてない。
イテレータの中で何かやってるかもしれないので
安易に削れないのかもしれない。
0793デフォルトの名無しさん2009/10/08(木) 17:43:28
>>784
expandではできませんでした
0794デフォルトの名無しさん2009/10/08(木) 18:22:40
できる
がんがれ
0795デフォルトの名無しさん2009/10/08(木) 19:51:16
>>794

#このようにしてもできません
from Tkinter import *

root = Tk()
p = PhotoImage(file = "hoge.gif")
Label(root,image = p).pack(expand=True,fill=BOTH)
root.mainloop()
0796デフォルトの名無しさん2009/10/08(木) 23:49:26
from Tkinter import *
import PIL.Image, PIL.ImageTk
EDGE = [-6, -4, -2][1]
class Root(Tk):
  def __init__(self):
    Tk.__init__(self)
    self.p = PIL.Image.open('hoge.gif')
    self.i = PIL.ImageTk.PhotoImage(self.p)
    self.l = Label(self, image=self.i, relief=RAISED)
    self.l.pack(expand=True, fill=BOTH)
    self.l.bind('<Configure>', self.change_size)
  def change_size(self, ev):
    (w, h) = (ev.width + EDGE, ev.height + EDGE)
    self.i = PIL.ImageTk.PhotoImage(self.p.resize((w, h)))
    self.l.configure(image=self.i)
    print 'resized %d %d' % (w, h)
Root().mainloop()

縁の幅を間違うと勝手にサイズが・・・orz
0797デフォルトの名無しさん2009/10/09(金) 13:00:06
>>796
ありがとうございます。
縁の幅と言うのはどこを指しているんですか?
0798デフォルトの名無しさん2009/10/09(金) 16:24:51
wxPythonの話題はここでいいですか?
wxPythonにおけるコントロールやパネルという用語の概念が整理できていません
Appは複数のFrameを抱えることができて
FrameはPanelを持ちPanelはControlを持つということでしょうか?
0799デフォルトの名無しさん2009/10/09(金) 20:31:57
中身が全て半角英字である正規表現はどー書けば良いのでしょうか?
0800デフォルトの名無しさん2009/10/09(金) 21:17:40
[a-zA-Z]+
0801デフォルトの名無しさん2009/10/09(金) 21:24:07
こんなん?

^[a-zA-Z]*$
0802デフォルトの名無しさん2009/10/09(金) 21:36:47
それは空文字列にもマッチするぞ
0803デフォルトの名無しさん2009/10/10(土) 01:59:03
GUIを使うと関数だらけになってコードが見にくくなる・・・
Tkinterも例外じゃない・・・(TT
0804デフォルトの名無しさん2009/10/10(土) 02:14:06
wxPython + XRCed で快適生活
0805デフォルトの名無しさん2009/10/10(土) 07:29:06
コンストラクタをオーバーロードしたいんだけど、どうやればいい?
Baseクラスを継承してて、ctorの引数をそのままBaseのctorに渡したい
def __init__( self, argv4Base ):
 Base.__init__( self, argv4Base );
def __init__( self ):
 Base.__init__( self );
こんなことをやりたいんだけど、
def __init__( self, *argv ):
 if len(argv)>0: Base.__init__( argv[0] );
0806デフォルトの名無しさん2009/10/10(土) 07:30:19
途中で書き込んだ。続き。
def __init__( self, *argv ):
 if len(argv)>0: Base.__init__( self, argv[0] );
else: Base.__init__( self );
なんてctorの中でifで切り分ける方法以外ない?
メタプログラミング使うようなcoolな方法おしえてくだしあ
0807デフォルトの名無しさん2009/10/10(土) 08:20:44
**kwargs
0808デフォルトの名無しさん2009/10/10(土) 12:54:24
>>800-802
正解はなんでしょうか?教えてください。
0809デフォルトの名無しさん2009/10/10(土) 13:56:34
>>808
コードがお望み?

import re
def isallalpha(s):
    return re.match(r'^[a-zA-Z]+$', s) != None

ついでに正規表現じゃなかったら

def isallalpha(s):
    return all([ c.isalpha() for c in s ])
0810デフォルトの名無しさん2009/10/10(土) 14:58:16
関数呼び出しの中で直接内包表記を使えるぜ。
def isallalpha(s):
  return all(c.isalpha() for c in s)
0811デフォルトの名無しさん2009/10/10(土) 19:28:09
コードの中で次のような順番で書くとNameErrorになります。
some_method()
def some_method:
 pass

このときCのプロトタイプ宣言のような書式はありますか?
それとも先に関数定義してから
if __name__ == '__main__':
 some_method()
のように書くのがPython流でしょうか。
習慣的に、短いテストコードのようなときなど、関数定義を後の方にしておきたい気もして・・・
よろしくお願いします。
0812デフォルトの名無しさん2009/10/10(土) 19:33:41
>>811
>>Cのプロトタイプ宣言のような書式
ない
>>先に関数定義
してから実行するのが普通
doctest.testmod() とか調べるといいよ
08138122009/10/10(土) 19:52:50
>>812
ありがとうございます。開発ツールも標準でいろいろ揃ってるんですよね。
だんだん試したいと思います!
0814デフォルトの名無しさん2009/10/10(土) 21:28:20
質問です。
私は9月頃から『みんなのPython改訂版』(初版)で習得中の初心者です。
14章のToDo管理アプリケーションが起動しないのですが、
そのままのコードで起動した人はいますか?
(一瞬だけインタラクティブシェルが起動、エラー表示はありません)
また、何が起動しない原因と考えられますか?
初歩的な原因かもしれません。PATHは設定してます。
環境は、WindowsXP Python2.6 Eclipse3.5 Pydev1.4です。
ご回答よろしくお願いします。

スクリプトファイルです。
chapter14.zip (todoapp.py todoitem.py todocontainer.py)
ttp://www1.axfc.net/uploader/Sc/so/44301
キーワード: python

0815デフォルトの名無しさん2009/10/10(土) 22:19:10
>>811
class Test(object):
  def __init__(self):
    self.some_method()
  def some_method(self):
    pass
Test()
0816デフォルトの名無しさん2009/10/10(土) 22:26:37
>>814
root = Tk()
frame = ToDoApp(root)
frame.createwidgets()
root.mainloop()

入力ミスってるっぽいので、あとは自分でよろ。
0817>>8142009/10/11(日) 03:57:03
>>816
ありがとうございます。
本にそのコードは書かれていませんでした。
後で追加します。
0818デフォルトの名無しさん2009/10/11(日) 09:55:00
conn=open('2mega.txt')
data=conn.read()
save=open('save.txt', 'a+')

for line in data.splitlines():
 save.write(line.decode('sjis').encode('utf-8'))
 print line.decode('sjis').encode('utf-8')

文字コード変換を書いてみたら、なかなか終わらず
おかしいなとは思ったのですがそのまま一日放置

今日起きて処理を止めて確認してみるとそこには
12Gigaのテキストファイルがありました…

save.write(data) で書き込もうとするとハング状態になるから
ジェネレータで回して書き出す方針でやろう => なぜか無限ループorz

正しく書くにはどうかけば良いのでしょうか?
0819デフォルトの名無しさん2009/10/11(日) 10:26:26
conn=open('2mega.txt')
data=conn.read()

for line in data.splitlines():
 print line.decode('sjis').encode('utf-8')

うまくいく時とうまくいかない時があるみたいだ
というか上手くいってもこれだと順番に書き出せないのか…
0820デフォルトの名無しさん2009/10/11(日) 10:46:55
infile=open('2mega.txt')
outfile=open('save.txt', 'a+')
for line in infile:
  outfile.write(line.decode('sjis').encode('utf-8')

import codecs
infile=codecs.open('2mega.txt', encoding='sjis')
outfile=codecs.open('save.txt', 'a+', encoding='utf-8')
outfile.writelines(infile)
0821デフォルトの名無しさん2009/10/11(日) 11:14:14
2MBのファイルの中身を読み込んでまるごと
decode -> encodeしたぐらいじゃハングしないだろう
いちいち標準出力に吐いてるから遅かったとかじゃない?

出来上がったファイルが12GBなのは謎
0822デフォルトの名無しさん2009/10/11(日) 12:20:10
Python2.6/XP/512MBで何も考えずにreadしたら400MBくらいでMemoryError吐いたなぁ
どーしてもオンメモリで処理しなきゃいけないとき以外はイテレータ回すべきだね
0823デフォルトの名無しさん2009/10/11(日) 15:36:30
MemoryError の前になんか予兆を検出できないもんかねぇ
0824デフォルトの名無しさん2009/10/11(日) 17:25:08
出来た気がする
0825デフォルトの名無しさん2009/10/11(日) 17:26:26
なんつー曖昧な…
0826デフォルトの名無しさん2009/10/11(日) 17:27:04
エラー:メモリが足りないかもしれないけど足りるかもしれません。
0827デフォルトの名無しさん2009/10/11(日) 18:03:22
>>> for x in range(10000000):
...  pass

1)rangeの数字が充分小さいとき->無事実行完了
2)rangeの数字が充分大きいとき->実行前にMemoryErrorですぐに終了
3)rangeの数字がちょっと大きいとき->時間はそれなりにかかるがちゃんと実行されて終了
4)rangeの数字が限界ぎりぎりの大きさのとき->swap起こしまくってハングアップw
(辛うじてリモートからsshでkill出来たので助かった)

4)が起きないようにしたいんだけど
0828デフォルトの名無しさん2009/10/11(日) 18:17:18
直接OSのシステムコール呼び出せばスラッシングって検出できる?
vmstatとかwindowsならパフォーマンスカウンタでわかるから
当然出来るのか…
0829デフォルトの名無しさん2009/10/11(日) 20:05:34
自分ならめんどいからThreadつくって動かして見込んだ時間に終わらなければkillするな
0830デフォルトの名無しさん2009/10/11(日) 20:10:22
>>827
range->xrangeはどうなん
0831デフォルトの名無しさん2009/10/11(日) 20:18:17
>>830
xrangeは知ってるけど
問題の目的と違うから

っつーか空気嫁w
0832デフォルトの名無しさん2009/10/11(日) 22:57:57
所持期目的がわからない
0833デフォルトの名無しさん2009/10/12(月) 01:25:41
要領を得ない質問して空気嫁とか
思わず吹いてしまったよ
0834デフォルトの名無しさん2009/10/12(月) 11:36:56
wxPython にはHTMLのレンダラが付いてますがこれは何ベースなんでしょうか?
WindowsでIEのエンジンを使って表示させることはできますか?
0835デフォルトの名無しさん2009/10/12(月) 12:36:01
demo の ActiveX_IEHtmlWindow.py が IE 使ってる
0836デフォルトの名無しさん2009/10/12(月) 16:13:52
wxPython、PyGTK、Tkinter、PyQt
GUIってどれ使えばいいかな?
0837デフォルトの名無しさん2009/10/12(月) 16:27:43
PyQtでおk
0838デフォルトの名無しさん2009/10/12(月) 16:32:54
PyScripterでUTF-8(BOM無し)の.pyファイルを開くと、ソース内の日本語部分が文字化けしてしまいます。

PyScripterのバージョンは1.9.9.7、エディタ設定で日本語フォントの指定・文字セットに日本語の指定はしてあります。
一通りググってみたのですが解決には至りませんでした。

既知の現象でしたらアドバイス頂けませんでしょうか。
スレ違いでしたら申し訳ありません。
0839デフォルトの名無しさん2009/10/12(月) 16:41:11
え〜
俺は wxPython がすき
0840デフォルトの名無しさん2009/10/12(月) 16:47:52
>>838
ファイルの頭に # -*- coding: utf-8 -*- はある?
0841デフォルトの名無しさん2009/10/12(月) 17:30:35
PyQt > wxPython > Tkinter > PyGTK

俺は wxPython がすき
0842デフォルトの名無しさん2009/10/12(月) 17:32:15
>>840
申し訳ありません。言葉が足りず語弊がありました。

まず扱っているのはPython3.0で、更に.pyファイルを実行した時の日本語表示に関する問題ではなく、
エディタ内でのファイル読み込み->ソースコード表示時、文字化けが発生するという問題です。

恐らくUTF-8(BOM無し)のファイルを開くときの文字コード認識がおかしいのだと思いますが、
やはりこれはPythonというよりPyScripterの問題の様なのでスレ違いですね…
0843デフォルトの名無しさん2009/10/12(月) 17:36:42
>>840

仰るとおりファイル先頭に文字コード宣言を付加したら、ちゃんと表示されました。

通常ならエディタはファイル自体の文字コードから自動判断してくれるものだと考えていましたが、
PyScripterはファイルの文字コード判断方法が特殊なのですね…

ありがとうございました。
0844デフォルトの名無しさん2009/10/12(月) 17:37:37
>>837>>839>>841
ありがとう
PyQtとwxPython両方共少し使ってみて決めてみる
0845デフォルトの名無しさん2009/10/12(月) 17:41:33
>>843
特殊というか、Pythonのやり方と同じにしただけでしょ。
Python以外のファイルは自動判定するとヘルプに書いてある。
0846デフォルトの名無しさん2009/10/12(月) 17:46:18
>>844
やっぱ標準モジュールは強いって事でTkinter
まあwxの方が楽だけど
xulrunner使いたいけどビルド環境整える時点で面倒になった
0847デフォルトの名無しさん2009/10/12(月) 21:39:22
>>843
UTF-8は自動判定は難しいよ。
だからMSはBOMを付けてるんだよ。
0848デフォルトの名無しさん2009/10/12(月) 23:21:11
>>846
楽ってのはwxの方が最初から色々用意されてるって意味?
0849デフォルトの名無しさん2009/10/12(月) 23:39:06
>>848
VisualStudioとかDelphiとか使ったことある人にはwxは触りやすい
Tkinterはtcl/tk使ったことないと取っつきにくい気がする
0850デフォルトの名無しさん2009/10/12(月) 23:45:38
windowsでpy2exeでexe化するとき
wxPythonだとすっきりまとまるのに
Tkinterだとサブディレクトリが出来て使っていない色んなモジュールまでいっぱい付いてくるのが嫌
0851デフォルトの名無しさん2009/10/13(火) 00:06:49
ほんとユニコード仕様はうんこすぎる。
0852デフォルトの名無しさん2009/10/13(火) 00:16:48
理由を示さずたたいてるのは大抵Ruby厨
0853デフォルトの名無しさん2009/10/13(火) 00:33:24
rubyって最近まで$CODE代入するしかなかったんだよね
やっと
# -*- coding: utf-8 -*-
って書けるようになった
0854デフォルトの名無しさん2009/10/13(火) 14:25:06
why wxgtk is used in dropbox client?
0855デフォルトの名無しさん2009/10/13(火) 14:29:41
DropBoxクライアントはwxPythonだと思ってたけど、wxgtkだっけ?
wxWidgetsのいいところは、GPLでもLGPLでもないところだね。
exeひとつにまとめても、クローズにしたい部分のソースはクローズのままにできる。
0856デフォルトの名無しさん2009/10/13(火) 21:24:30
Tkinterのタイトルバーを非表示にすることって可能ですか?
0857デフォルトの名無しさん2009/10/14(水) 15:48:56
ほかの人の書いたコードをメンテナンスしています
リストからのアイテムの削除で del 文を使うとき
(おそらくそう意図していると思われる)

del mylist[1]

じゃなくて

del (mylist[1])

という書き方に出会ったんですが
効果は同じでしょうか?
文なのに () を付ける意味が分からん…のですが
0858デフォルトの名無しさん2009/10/14(水) 16:05:03
関数だと思ったんだろ
0859デフォルトの名無しさん2009/10/14(水) 20:53:28
Rubyのpに相当する関数/メソッドってありますか?
非可視コードを確認するのにいちいちファイルに書き出すのは
非常にめんどくさいのですが・・・
0860デフォルトの名無しさん2009/10/14(水) 20:58:19
http://pc12.2ch.net/test/read.cgi/tech/1232055225/303
0861デフォルトの名無しさん2009/10/14(水) 21:21:37
> 303 :デフォルトの名無しさん:2009/02/05(木) 23:37:17
> >>302
> p?
> http://docs.python.org/library/functions.html?highlight=repr#repr
> http://docs.python.org/library/repr.html#module-repr
>
> pp?
> http://docs.python.org/library/pprint.html#module-pprint
0862デフォルトの名無しさん2009/10/15(木) 01:12:16
p = print
p 3*9
0863デフォルトの名無しさん2009/10/15(木) 05:56:45
Python用のプロファイラというとどんなものがあるのでしょうか?
できれば PyDev から便利に使えるとありがたいのですが・・・
0864デフォルトの名無しさん2009/10/16(金) 01:11:51
http://menu.2ch.net/bbsmenu.html
ここのhtmlを1行ずつ開くコードを書きました。

<A HREF=http://xxx.2ch.net/yyy/>;zzz</A>
となってるのからxxx,yyy,zzzを抜き出して配列に格納したいです。
どのように書くべきでしょうか?
0865デフォルトの名無しさん2009/10/16(金) 01:28:38
俺も自家製2chブラウザ作ってる
>>> content = '<A HREF=http://xxx.2ch.net/yyy/>;zzz</A>'
>>> import re
>>> for r in re.finditer('<A HREF=(http://(\w+?)\.2ch\.net/(\w+?)/)>(.*?)</A>', content, re.I):
... r.groups()
('http://xxx.2ch.net/yyy/', 'xxx', 'yyy', 'zzz')
0866デフォルトの名無しさん2009/10/16(金) 01:29:25
>>865
ありがとうございます。。
0867デフォルトの名無しさん2009/10/16(金) 02:55:47
クロールは控えめになw
0868デフォルトの名無しさん2009/10/16(金) 10:12:26
雑談やノイズをスルーする機能と
ぬるぽにがっする機能をおながいします
0869デフォルトの名無しさん2009/10/16(金) 13:11:02
ネットワークを利用するアプリケーションで
twisted.internet.reactor.registerWxApp
をリアクタとして使っているのですが
Qtを対象としたイベントループ兼リアクタはあるのでしょうか?
0870デフォルトの名無しさん2009/10/16(金) 13:12:11
http://pc12.2ch.net/test/read.cgi/tech/1254366507/
0871デフォルトの名無しさん2009/10/16(金) 13:15:21
PythonとTwisitedが絡んでるのにQtスレ行けって鬼畜すぎる
0872デフォルトの名無しさん2009/10/16(金) 13:40:04
http://twistedmatrix.com/documents/8.2.0/api/twisted.internet.html
これ見ると各種のリアクタがあり,
Windows では win32eventreactor とか使うんだろうなと思うんですが
qtreactor が undocumented で何も記述がなく
使ってる人がいたら情報求むということで…
よろしくお願いします.

正直私はネットワーク処理の部分をtwistedで書くのがメインなので
PyQtと相性が良ければQtに明るいプログラマにGUIを任せたいと思っています.
0873デフォルトの名無しさん2009/10/16(金) 13:42:11
ttp://twistedmatrix.com/trac/wiki/QTReactor
twistedは大分前に窓から投げ捨てたのでどうなるか知らん
0874デフォルトの名無しさん2009/10/16(金) 13:59:45
>>871
QtスレいくとwxPythonスレに行けとかいわれそうで・・・
0875デフォルトの名無しさん2009/10/16(金) 14:03:56
Qt4 Reactor
https://code.launchpad.net/qt4reactor
0876デフォルトの名無しさん2009/10/16(金) 14:17:36
一つのリアクタでやらずに
別々のスレッドでやってもいい気もしてきましたが…
まぁあるものなら使ってみようか
0877デフォルトの名無しさん2009/10/16(金) 14:30:29
http://github.com/ghtdak/qtreactor
0878デフォルトの名無しさん2009/10/16(金) 15:05:23
Qtはシグナルによるイベントの伝播
wxPythonはコールバックによるイベント処理
ってことだと思うのですが
どちらの方がデバッグしやすいものなんでしょうか?
特に大規模なGUIになってきた場合
0879デフォルトの名無しさん2009/10/16(金) 15:35:46
Qt4reactorくらいなら自分で書いても大したことが無いような気がしないでもない
0880デフォルトの名無しさん2009/10/16(金) 15:37:23
>>878
たぶんsignal
0881デフォルトの名無しさん2009/10/16(金) 16:15:00
Pythonのクラス定義を下記の様にして、valueアトリビュートを表示するとエラーになってしまいます。

>>>class□Myclass:
def□_ini_(self):
self.value = 0
print "make"

□は半角スペースを表し、インデントで次の行に行く際はエンターを一回押しています。

>>>i = Myclass()
>>>i.value
AttributeError: m instane has no attribute 'value'

まずi = Myclass()を実行しても"make"という行が出てきません。
次の行のi.valueを実行すると上記のエラーがでてしまいます。
クラス定義の仕方で間違っている個所があればお教えください。
よろしくお願いします。
0882デフォルトの名無しさん2009/10/16(金) 16:23:17
_ini_
↓
__init__
0883デフォルトの名無しさん2009/10/16(金) 16:41:24
Windows版のpython2.6にos.mknodが入ってないのはなぜ?

しょうがないからos.systemで代用したが。
0884デフォルトの名無しさん2009/10/16(金) 16:46:38
>>882さん
できました! ありがとうございました!!
0885デフォルトの名無しさん2009/10/16(金) 19:17:11
pythonからmysqlにinsertしたいのですが、どう書けばいいですか?
ググりまくったんですがセレクトしか出てこなくて。
0886デフォルトの名無しさん2009/10/16(金) 19:36:43
ぼくらを乗せてしゅぽしゅぽしゅぽぽ
0887デフォルトの名無しさん2009/10/16(金) 19:45:52
すいません質問です。御助言をお願いします。以下はWindows Vista SP1 のコマンドプロンプト上で行いました。
http://pyinline.sourceforge.net/をインストールし、ここに書いてあるサンプルをexample.pyとして
実行しようとしましたら、エラーとなりました。
----example.pyここから
import PyInline, __main__

m = PyInline.build(code="""
double my_add(double a, double b) {
return a + b;
}""",
targetmodule=__main__, language="C")

print my_add(4.5, 5.5) # Should print out "10.0"
----ここまで
C:\src>python example.py
running build
running build_ext
Traceback (most recent call last):
File "C:\src\example.py", line 7, in <module>
targetmodule=__main__, language="C")
File "C:\Python25\Lib\site-packages\PyInline\__init__.py", line 38, in build
return b.build()
File "C:\Python25\Lib\site-packages\PyInline\C.py", line 45, in build
self._compile()
File "C:\Python25\Lib\site-packages\PyInline\C.py", line 265, in _compile
raise BuildError(e)
PyInline.BuildError: error: Python was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.

そのためbuildフォルダと、site-packagesフォルダにできたファイルを削除してから、(続きます)
0888887の続きです2009/10/16(金) 19:47:12
そのためbuildフォルダと、site-packagesフォルダにできたファイルを削除してから、

C:\src\PyInline-0.03>python setup.py build -c "mingw32"
C:\Python25\lib\distutils\dist.py:247: UserWarning: 'licence' distribution optio
n is deprecated; use 'license' warnings.warn(msg)
running build
running build_py
creating build
creating build\lib
creating build\lib\PyInline
copying PyInline\C.py -> build\lib\PyInline
copying PyInline\c_util.py -> build\lib\PyInline
copying PyInline\__init__.py -> build\lib\PyInline


C:\src\PyInline-0.03>python setup.py install --skip-build
C:\Python25\lib\distutils\dist.py:247: UserWarning: 'licence' distribution option is deprecated; use 'license' warnings.warn(msg)
running install
running install_lib
creating C:\Python25\Lib\site-packages\PyInline
copying build\lib\PyInline\C.py -> C:\Python25\Lib\site-packages\PyInline
copying build\lib\PyInline\c_util.py -> C:\Python25\Lib\site-packages\PyInline
copying build\lib\PyInline\__init__.py -> C:\Python25\Lib\site-packages\PyInline
byte-compiling C:\Python25\Lib\site-packages\PyInline\C.py to C.pyc
byte-compiling C:\Python25\Lib\site-packages\PyInline\c_util.py to c_util.pyc
byte-compiling C:\Python25\Lib\site-packages\PyInline\__init__.py to __init__.pyc
running install_egg_info
Writing C:\Python25\Lib\site-packages\PyInline-0.03-py2.5.egg-info

として、再びサンプルを実行したところ、上記と同じエラーになってしまいました(続きます)
08898872009/10/16(金) 19:53:54
実行時のフォルダに新しいフォルダが作られ、そこに

_PyInline_a5843fcd5b05a69bb7ab356b82740227.c 
----ここから----
// Generated by PyInline
// At Fri Oct 16 19:33:58 2009

#include "Python.h"

/* User Code */

double my_add(double a, double b) {
return a + b;
}

static PyObject *
_a5843fcd5b05a69bb7ab356b82740227_my_add(PyObject *self, PyObject *args)
{
(後略)
----ここまで----
のようなファイルが作られていました。

環境は、
\src>mingw32-gcc --version
mingw32-gcc (GCC) 3.4.5 (mingw-vista special r3)
です。またCygwinは入ってますがVisual Studioはインストールされておりません。
Pythonは2.5.4です。
長々とスレを汚してしまい申し訳ありません。
0890デフォルトの名無しさん2009/10/17(土) 04:34:51
>>887-889
PyInline.build() の引数に distutils_args=["-c", "mingw32"] を加えてみたらどうかな。
0891デフォルトの名無しさん2009/10/17(土) 07:29:54

ttp://www.nishiohirokazu.org/archived_coreblog/585
PyInlineを学ぶのに要する労力をCで拡張ライブラリを書く方法を学ぶのに回したほうがいいのではないかと思うが…。
0892デフォルトの名無しさん2009/10/17(土) 07:33:46
>>891
手段が目的なんだ、目的のための手段じゃないんだ
08938872009/10/17(土) 11:15:55
みなさんレス有難うございます。

>>890さん
成功しました!
running build
running build_ext
building '_PyInline_a5843fcd5b05a69bb7ab356b82740227' extension
creating build
creating build\temp.win32-2.5
creating build\temp.win32-2.5\Release
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python25\include -IC:\Python25\PC -c _PyInline_a5843fcd5b05a69bb7ab356b82740227.c
 -o build\temp.win32-2.5\Release\_pyinline_a5843fcd5b05a69bb7ab356b82740227.o
writing build\temp.win32-2.5\Release\_PyInline_a5843fcd5b05a69bb7ab356b82740227.def
creating build\lib.win32-2.5
C:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.5\Release\_pyinline_a5843fcd5b05a69bb7ab356b82740227.o build\temp.win32-2.5\Release\_PyInline_a5843fcd5b05a69bb7ab356b82740227.def
 -LC:\Python25\libs -LC:\Python25\PCBuild -lpython25 -lmsvcr71 -o build\lib.win32-2.5\_PyInline_a5843fcd5b05a69bb7ab356b82740227.pyd
10.0

PyInline自体のビルドではなくてPyInlineが行うビルドが問題になっていたという認識でいいのでしょうか。

>>891さん、>>892さん
Cの簡単なテストに使おうかとおもいましたが、
ステップ実行して身の丈を思い知らされました・・
distutilsなど、もっと勉強しようとおもいます。
0894デフォルトの名無しさん2009/10/17(土) 13:59:49
pythonで時間差を置いて処理をしていきたいのですが、何かいいアイディアはありますか?
0895デフォルトの名無しさん2009/10/17(土) 14:01:59
Tkinterで「ボタンを押すとファイルを開くダイアログが表示される」と
いうよくあるファイル選択画面をを作りたいのですが、
http://d.hatena.ne.jp/Cassiopeia/20070819/1187479725にある例文を
無理矢理関数にしてボタンを押したときの処理にその関数を指定しても、
関数は呼び出されるものの、関数内の tk = Tkinter.Tk() が処理されません。
初心者的な内容かもしれませんが、アドバイス頂けませんでしょうか。


from Tkinter import *
from tkFileDialog import *
import Tkinter
import tkFileDialog

root = Tk()
root.option_add("*font", ("FixedSys", 14))
root.title("テスト")

def load_file():

tk = Tkinter.Tk()
tk.withdraw() # 小ウィンドウを表示しないようにする。
args = { "initialdir" : "/home/",
"filetypes" : [("テキストファイル", "*.txt")],
"title" : "テスト"
}

botton01 = Button(root, text = "ボタン",command = load_file)
botton01.pack()
root.mainloop()
0896デフォルトの名無しさん2009/10/17(土) 15:29:55
>>894
cron
0897デフォルトの名無しさん2009/10/17(土) 19:40:46
>>895
tk = Tk()
0898デフォルトの名無しさん2009/10/17(土) 20:59:27
>>895
釣られたの鴨試練が
def load_file():
args = {
'initialdir': '/home/',
'filetypes': [('テキストファイル', '*.txt')],
'title': 'テスト'}
filenames = tkFileDialog.askopenfilenames(**args)
print 'selected: [%s]' % ','.join(filenames)


#※ load_fileの中で
# tk = Tkinter.Tk()
# tk.withdraw() # 小ウィンドウを表示しないようにする。
#は不要

#※ tkFileDialog.askopenfilenamesを呼ぶのを忘れている
08998952009/10/17(土) 21:52:29
>>897
>>898
ありがとうございます。
>>898で教えていただいたやり方でできました。ありがとうございます!
まだまだ勉強したてで、根本的な理解が足りないようなので勉強しなおしてきます。

0900デフォルトの名無しさん2009/10/18(日) 21:53:24
オライリーのpythonクイックリファレンスってどうですか?
0901デフォルトの名無しさん2009/10/18(日) 22:04:33
kuso
0902デフォルトの名無しさん2009/10/18(日) 22:10:13
本のいいリファレンスってないですかね?
0903デフォルトの名無しさん2009/10/18(日) 22:17:39
あえて長いURL
http://www.amazon.co.jp/Python-Essential-Reference-Developers-Library/dp/0672329786/

旧版みたいに日本語版も出るといいね
0904デフォルトの名無しさん2009/10/18(日) 22:46:07
>>903
ありがとう。
読めなくもないがめんどいw
0905デフォルトの名無しさん2009/10/19(月) 15:41:37
py2exeはPython3.x系に未対応らしいですが、
Python3.x系のソースコードをWindowsの実行ファイル形式に変換する方法はありますか?
0906デフォルトの名無しさん2009/10/19(月) 15:59:39
py32exe
0907デフォルトの名無しさん2009/10/19(月) 16:04:30
pyinstaller
0908デフォルトの名無しさん2009/10/20(火) 03:16:50
うがー日本語を使うなと言わんばかりの糞仕様は何とかならんのか・・・
ただでさえ文字コードがらみはめんどくさいのにencode/decodeでコードが冗長になるし
さらに変換を間違うと表示が化けるどころか例外で止まるってもう勘弁してヽ(`Д´)ノ
デバッグがめんどくさいPython組み込み系のコードとかコンソールに何も出したくなくなる
0909デフォルトの名無しさん2009/10/20(火) 03:49:26
>表示が化けるどころか例外で止まる

コンソールじゃなくてログファイルに
codec 経由せずに出すのが正解
ログは tail -f で見てれば良い
0910デフォルトの名無しさん2009/10/20(火) 03:50:24
ちなみに使ってる Python のバージョンに寄ってかなり違うからね
0911デフォルトの名無しさん2009/10/20(火) 07:59:55
何も検出せずにただ文字化けするよりも、きちんと不正な処理を
検出してエラーを出してくれるほうが何倍も楽だと思うんだけど。
0912デフォルトの名無しさん2009/10/20(火) 08:03:55
DSでpython動かしてるひといませんか?
forとかifがどうやってもエラーになってしまう
0913デフォルトの名無しさん2009/10/20(火) 12:48:56
改行コードの問題じゃないかとエスパーしてみる。
もっともCPythonはCRLFでもLFでも行けたはずだが。
0914デフォルトの名無しさん2009/10/20(火) 13:10:56
:
0915デフォルトの名無しさん2009/10/20(火) 15:54:20
self.combo = XRCCTRL(self, 'Combo')←wxComboBox
とした場合、self.comboのchoicesにlist=["a","b","c"]を設定することは出来ますか?
0916デフォルトの名無しさん2009/10/20(火) 16:31:14
#self.combo.Clear()
self.combo.AppendItems(["a","b","c"])
09179152009/10/20(火) 16:50:20
>>916
出来ました。ありがとうございました。
09189152009/10/20(火) 18:40:19
すいません、もう一つだけ質問させてください。
同じくwxComboBoxのchoicesにlistを追加することについてですが
listに日本語が含まれた瞬間デコードエラーが出てしまいます。
日本語の追加は出来ないのでしょうか?
0919デフォルトの名無しさん2009/10/20(火) 18:42:27
unicodeでおk
09209152009/10/20(火) 19:21:24
すいません、出来ました。ありがとうございました。
0921デフォルトの名無しさん2009/10/21(水) 01:56:51
50までの素数をリストに入れたいんですけどうまくいきません。
アドバイスよろしくお願いします。

ls = range(3,51)
for a in ls:
for b in range(2,a):
if (a%b) != 0:
continue
else:
del ls[a-3]


0922デフォルトの名無しさん2009/10/21(水) 02:12:48
>del ls[a-3]
はなにをやろうとしてるんだろう?
ループ中にリストの要素削除とかめんどいことはやんないほうがいいと思うよ

普通に考えれば結果のリストを用意して、
ある数字が素数と判定出来たらそこに入れるとかでいいはずだろ?
0923デフォルトの名無しさん2009/10/21(水) 02:26:21
>>921
エラトステネスの篩(ふるい) Python でぐぐっちゃいなよ
0924デフォルトの名無しさん2009/10/21(水) 03:29:35
from itertools import ifilter, count
def primes():
  g = count(2)
  while True:
    p = g.next()
    yield p
    g = ifilter(lambda n, p=p: n % p, g)

l=[]
for p in primes():
  if p <= 50: l.append(p)
  else: break
0925デフォルトの名無しさん2009/10/22(木) 00:52:26
すいません、出来ました。ありがとうございました。
0926デフォルトの名無しさん2009/10/22(木) 10:39:16
どんどん出来て行く





それに比べて俺と言ったら…
0927デフォルトの名無しさん2009/10/22(木) 18:06:08
初心者です。>>921を考えて見ました。
もっと短くするにはどうしたらいいですか?

#coding=utf-8
def primenumber(n):
for c in range(2, n):
if n%c == 0:
break
if c == n-1:
return n
else:
return u"素数ではない"
ls = [2]
for n in range(3, 51):
ls.append(primenumber(n))
if u"素数ではない" in ls:
ls.remove(u"素数ではない")
print ls
09289272009/10/22(木) 18:10:09
すみません。
コピペでインデントが外れました。

#coding=utf-8
def primenumber(n):
for c in range(2, n):
if n%c == 0:
break
if c == n-1:
return n
else:
return u"素数ではない"
ls = [2]
for n in range(3, 51):
ls.append(primenumber(n))
if u"素数ではない" in ls:
ls.remove(u"素数ではない")
print ls
0929デフォルトの名無しさん2009/10/22(木) 18:13:51
全角スペースか &amp; でインデントすれ
09309272009/10/22(木) 18:15:17
何回もすみません。
半角空白でインデントができないので全角にしました。

#coding=utf-8
def primenumber(n):
  for c in range(2, n):
    if n%c == 0:
      break
  if c == n-1:
    return n
  else:
    return u"素数ではない"
ls = [2]
for n in range(3, 51):
  ls.append(primenumber(n))
  if u"素数ではない" in ls:
    ls.remove(u"素数ではない")
print ls
0931デフォルトの名無しさん2009/10/22(木) 18:31:14
>半角スペース消える
半角でインデントして置換するか、
もしくは専ブラの機能使えば意外といけたりする

>>930
primenumber関数の戻り値がカオスなので単に素数かどうか判定する関数にして、
名前もそれらしいものにしたほうがいいかと。
出力はリスト内包表記を使えばシンプルになる。

def is_prime(n):
for c in range(2, n):
if n%c == 0:
return False
return True

print [x for x in range(2,51) if is_prime(x)]
0932デフォルトの名無しさん2009/10/22(木) 18:32:41
言った端からインデント消えててマヌケなので。

def is_prime(n):
    for c in range(2, n):
        if n%c == 0:
            return False
    return True

 print [x for x in range(2,51) if is_prime(x)]
09339272009/10/22(木) 20:05:08
>>932
ありがとうございます!15行が7行になりました!
(補足:5行目コードと、リストに2を追加しました。)

def is_prime(n):
  for c in range(2, n):
    if n%c == 0:
      return False
  if c == n-1:
    return True
print [2] + [x for x in range(3,51) if is_prime(x)]
0934デフォルトの名無しさん2009/10/22(木) 22:09:28

import cgi,re

q=(正規表現)
line=(1行のデータ)
for r in re.finditer(q,line):
print r.group(0)
print r.group(1)
print r.group(2)
print r.group(3)
のように書いて正規表現でマッチさせたいのですがうまくいきません。
コマンドプロンプトで動かすとうまくいきますが、cgiにしてやるとダメです。
上から1行ずつ動かしていって、どうやら
for r in re.finditer(q,line):
を書くとエラーがでました。
原因はなんでしょうか?
0935デフォルトの名無しさん2009/10/22(木) 22:18:51
>>934
>>768
0936デフォルトの名無しさん2009/10/22(木) 22:21:53
>>935
ありがとうございます。

やってみたところバージョンは2.4.3らしいです。
もしかして対応していないのでしょうか?」
0937デフォルトの名無しさん2009/10/22(木) 22:53:55
11.3 cgitb -- Traceback manager for CGI scripts
http://www.python.org/doc/2.4.3/lib/module-cgitb.html
0938デフォルトの名無しさん2009/10/22(木) 22:59:53
正規表現かCGIについて根本的に勘違いしているに一票
0939デフォルトの名無しさん2009/10/22(木) 23:38:17
>>934
>を書くとエラーがでました

本当に助けてほしいんだったら、
まず、そのエラーの内容をそのままコピペしてくれ。
0940デフォルトの名無しさん2009/10/23(金) 00:03:14
cgitb 使ってないみたいだし、
internal server error が返ってくるだけのような
0941デフォルトの名無しさん2009/10/23(金) 08:25:24
ソースとURL貼るのがマナー
0942デフォルトの名無しさん2009/10/23(金) 20:52:16
cgitb使っているのですが、うまく機能してくれません。
AddHandler cgi-script-debug .cgiでやっているのですが、これで見たところエラーは無いようですが
実行してみるとスクリプトエラーがでます。どうしたらいいでしょうか?

ちなみにxreaです

Script Error
The script did not produce proper HTTP headers.
Please see the error log to see the detail of the errors.
Depending on the server configuration, you can also run thisscript under CGIWrap debugging.
Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file.
0943デフォルトの名無しさん2009/10/23(金) 20:54:25
クロージャなんですが
def func1():
i = {'cnt': 0}
def _func1():
i['cnt'] += 1
return i['cnt']
return _func1

def func2():
i = 0
def _func1():
i += 1
return i
return _func1

func1みたいにリストもしくは辞書を使って書くと思った通りに動くんですが冗長に見えます
しかしfunc2みたいに書くとUnboundLocalErrorになってしまいます
もうちょっとすっきり書く方法って無いですかね?
0944デフォルトの名無しさん2009/10/23(金) 21:18:38
nonlocal in Python 2.6
http://www.velocityreviews.com/FORUMS/t678908-nonlocal-in-python-26.html
0945デフォルトの名無しさん2009/10/23(金) 21:21:05
>>942
content-type
0946デフォルトの名無しさん2009/10/23(金) 21:24:15
>>945
content-typeは記述していますが、うまくいきません・・・
0947デフォルトの名無しさん2009/10/23(金) 21:36:07
ソース貼れよ
0948デフォルトの名無しさん2009/10/23(金) 21:38:38
次、shebang
0949デフォルトの名無しさん2009/10/23(金) 21:59:21
>>943
def func2():
   def _func2():
     _func2.i += 1
     return _func2.i
   _func2.i = 0
   return _func2
0950デフォルトの名無しさん2009/10/23(金) 22:02:54
content-typeの\nを書き忘れてました。
お騒がせしました
0951デフォルトの名無しさん2009/10/23(金) 22:31:55
zuko----
09529432009/10/24(土) 01:47:38
>>949
なるほど・・・ありがとうございました
0953デフォルトの名無しさん2009/10/24(土) 11:24:27
くだすれPython(超初心者用) その5
http://pc12.2ch.net/test/read.cgi/tech/1256350845/
0954デフォルトの名無しさん2009/10/24(土) 18:22:25
sql = "SELECT id,name FROM testnet WHERE user_id=user_id AND board_id=board_id AND year=year"
mysqlでこのようなselect文からヒットした結果をrow[0],row[1]に入れたいのですがいい方法はありますか?
0955デフォルトの名無しさん2009/10/24(土) 18:34:28
普通の方法で十分だと思う。
0956デフォルトの名無しさん2009/10/24(土) 19:19:45
だよね
0957デフォルトの名無しさん2009/10/24(土) 19:36:59
>>955
すいません。
教えてください
0958デフォルトの名無しさん2009/10/24(土) 19:42:43
MySQL-pythonを入れたのか?
ひょっとしたらODBCだったりするのか?
あるいは?

面倒糞いので答えない
0959デフォルトの名無しさん2009/10/24(土) 19:46:30
クレクレ厨にエサを与えては逝けません

データ取れた後は
文字コードの質問や
データ型の質問が
出て来ると予想
0960デフォルトの名無しさん2009/10/24(土) 19:49:48
MySQLです。
データがとれればそれでいいのでお願いします
0961デフォルトの名無しさん2009/10/24(土) 20:02:47
>>960
>>958
0962デフォルトの名無しさん2009/10/24(土) 23:49:43
import sqlite3

con = sqlite3.connect('testsqlite3.sl3')
con.row_factory = sqlite3.Row
cur = con.cursor()
cur.executescript('''create table test (id integer, val varchar(8));''')
con.commit()
s = '''insert into test (id, val) values (%d, '%s');'''
cur.executescript(s % (3, 'abc'))
cur.executescript(s % (2, 'xyz'))
cur.executescript(s % (1, 'def'))
con.commit()
cur.execute('''select id, val from test order by val;''')
for row in cur:
  print row['val'], row['id']
cur.close()
con.close()
0963デフォルトの名無しさん2009/10/25(日) 00:09:44
ありがとうございました!!!
0964デフォルトの名無しさん2009/10/25(日) 08:53:35
実行効率を測定するツールは有りますか?
0965デフォルトの名無しさん2009/10/25(日) 12:45:20
27.6. timeit ? Measure execution time of small code snippets
http://docs.python.org/library/timeit.html
32.12. dis ? Disassembler for Python bytecode
http://docs.python.org/library/dis.html
0966デフォルトの名無しさん2009/10/25(日) 14:08:14
ありがとうございました
0967デフォルトの名無しさん2009/10/26(月) 02:06:24
32bit整数の範囲で
nとn^2+2がともに素数となるnを求めてください
素数テーブル
ビッグエンディアン ttp://www.opendogs.org/pub/pn_be.dat.gz
リトルエンディアン ttp://www.opendogs.org/pub/pn_le.dat.gz
0968デフォルトの名無しさん2009/10/26(月) 02:15:17
n < 2^32 なのか n^2+2 < 2^32 なのか、どっちなのかな
前者ならPythonじゃ現実的な時間内に終わらないような
0969デフォルトの名無しさん2009/10/26(月) 04:01:49
素数テーブル見て素数かどうか調べるので
n^2+2が素数テーブルの最大値以下
ということでよろしくおながいします
0970デフォルトの名無しさん2009/10/27(火) 16:50:42
pass
0971デフォルトの名無しさん2009/10/27(火) 21:40:03
m>=0

n=3m, (3m)^2+2 = 9m^2+2 = 3の倍数+2  ({3m: m>1} != 素数)
n=3m+1, (3m+1)^2+2 = 9m^2+6m+3 = 3の倍数 != 素数
n=3m+2, (3m+2)^2+2 = 9m^2+12m+6 = 3の倍数 != 素数
0972デフォルトの名無しさん2009/10/28(水) 01:54:38
pass
0973デフォルトの名無しさん2009/10/29(木) 11:34:04



岡田外務大臣キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
h‍ttp‍:‍/‍/‍q‍b5.2‍ch.net/t‍est/rea‍d.cgi‍/sak‍u2ch/1256‍630318/1



早く記念カキコしないと埋まっちゃうwww
0974デフォルトの名無しさん2009/10/30(金) 21:35:30
日本語をmysqlにinsertしたいのですが、UnicodeEncodeErrorとなってしまいます。
調べてみると日本語をアスキーとして扱っている事から起きるエラーとのことですが、
どうしたらエラーを回避できるのでしょうか?
0975デフォルトの名無しさん2009/10/30(金) 22:50:07
>>974
.encode('utf-8')
0976デフォルトの名無しさん2009/10/31(土) 01:17:35
mysql> show variables like '%char%'; の結果は?

my.ini の中で
[mysql]
default-characterset = utf8
[mysqld]
default-characterset = utf8
0977デフォルトの名無しさん2009/10/31(土) 19:58:26
>>975
エンコードしてもダメみたいです。。
0978デフォルトの名無しさん2009/10/31(土) 20:56:07
>>977
utf8を使うとして、>>976のようにMySQLを設定
python側は、MySQLdb.connectのところでcharset= "utf8"
入れる文字列もutf8にエンコードで問題ないと思う。
db.execute("SET NAMES utf8")とかも意味あるかも
0979デフォルトの名無しさん2009/10/31(土) 22:52:50
>>978
ありがとうございます

charset='utf-8'
c.execute("SET NAMES utf8")
q.encode('utf8')
したのですが、

q.encode('utf8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x92 in position 76: ordinal not in range(128)
だそうです。
ちなみにqはselect文です。
0980デフォルトの名無しさん2009/10/31(土) 23:02:57
もし
q = 'select ほげほげ from ふがふが where はげ=True;'
なら
ソースの2行目に
# -*- coding: utf-8 -*-
を書いた上で
c.execute(q)

あるいは
# -*- coding: cp932 -*-
を書いた上で
c.execute(q.decode('cp932').encode('utf-8'))

そうじゃなくて
q = u'select ほげほげ from ふがふが where はげ=True;'
なら
c.execute(q.encode('utf-8'))
0981デフォルトの名無しさん2009/10/31(土) 23:39:00
>>980
ありがとうございます。何度もすいません。
*selectじゃなくてinsertでした。。
修正して実行すると、
q=u"INSERT INTO menu(name,id,name_j) VALUES (%s,%s,%s)"%(l_name,l_id,l_name_j)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x92 in position 0: ordinal not in range(128)
となってしまいます。
l_name、l_idは英数字のみの変数、l_name_jは日本語を含む変数です。
それぞれ、shift-jisのhtmlファイルから正規表現で抜いたものです。
コーディングは# -*- coding: utf8 -*-としています。
0982デフォルトの名無しさん2009/11/01(日) 00:11:05
こんなんかな
db = MySQLdb.connect(host= DB_HOST, user = DB_USER, passwd = DB_PASS, db= DB_NAME, charset= "utf8")
db_cursor = db.cursor()
db_cursor.execute("SET NAMES utf8")

l_name_j_utf8 = l_name_j.decode("Shift_JIS").encode("UTF-8")
db_cursor.execute("INSERT INTO menu(name,id,name_j) VALUES (%s,%s,%s)", (l_name,l_id,l_name_j_utf8))
0983デフォルトの名無しさん2009/11/01(日) 01:33:05
>>982
おおおおおおおおお
いきました!!サンクスですwwww
本当に大感謝です。。
レス数が950を超えています。1000を超えると書き込みができなくなります。