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

このエントリーをはてなブックマークに追加
396デフォルトの名無しさん
現在実行中のモジュール名は__file__で取得できますが、
メソッド名を取得する方法があれば教えて下さい。
397デフォルトの名無しさん:2012/08/21(火) 11:09:46.13
self.__class__.__name__,traceback.extract_stack()[-1][2]
398デフォルトの名無しさん:2012/08/21(火) 11:17:59.29
>>397
ありがとうございます。
オブジェクトではないので、
import traceback
traceback.extract_stack()[-1][2]
でいけました。
399デフォルトの名無しさん:2012/08/21(火) 15:08:11.33
http://toro.2ch.net/test/read.cgi/tech/1328714043/592-
sys._getframe(0).f_code.co_name
sys._getframe(1).f_code.co_name
400デフォルトの名無しさん:2012/08/21(火) 15:13:55.82
行番号は traceback の方が精確だな
401デフォルトの名無しさん:2012/08/21(火) 15:37:19.16
>>396
便乗。
log(__file__,traceback.extract_stack()[-1][2],self.__class__.__name__ )
みたいに使って、クラス名を入れたいんだけど、
class宣言していない場所で使うとエラーになるので、
そういった箇所でもエラーにならない方法があれば教えてください。
402デフォルトの名無しさん:2012/08/21(火) 15:47:47.66
log(__file__,traceback.extract_stack()[-1][2],self.__class__.__name__ if dict().has_key('self') else None)
403デフォルトの名無しさん:2012/08/21(火) 15:49:57.39
dict() じゃなかった
log(__file__,traceback.extract_stack()[-1][2],self.__class__.__name__ if locals().has_key('self') else None)
404デフォルトの名無しさん:2012/08/21(火) 15:59:51.63
>>403
サンクス!
引数の中でifが使えるのね。
405デフォルトの名無しさん:2012/08/21(火) 19:05:45.83
>>397
log()を埋め込むメソッド毎にimport tracebackを入れないといけないようですが、
これを省略する方法がないでしょうか?
406デフォルトの名無しさん:2012/08/21(火) 19:59:44.59
そのifはステートメントじゃなく演算子だから勘違いすんなよ
407デフォルトの名無しさん:2012/08/21(火) 22:08:27.98
実行時情報からクラス名を所得する *完全な* 方法はなかったはず、
loggingモジュールでもサポートされてないし。

基本的なクラス・メソッドでは期待通りでも、その他の細かな状況で期待通りにならない。

例えば、メソッド内で作った内部関数では期待しない表示になる。
http://ideone.com/j41yD

# 3.3だと qualname 導入で、ネストした場合の名前表示にも対応できるかもしれない。
408デフォルトの名無しさん:2012/08/21(火) 22:08:30.17
>405
log()の中の方で
import traceback
traceback.extract_stack()[-2][2]
409デフォルトの名無しさん:2012/08/21(火) 22:35:02.06
>>408
流れを知りたいモジュールA〜K.pyと
log表示用モジュールZ.pyは別ファイルです。
なのでAのメソッドaaaに入れるには
import traceback
import Z
log(__file__,traceback.extract_stack()[-1][2],self.__class__.__name__ if dict().has_key('self') else None)
と3行必要ですよね。
その他のメソッドbbb等沢山あるので、これを一行にできないでしょうか?
410デフォルトの名無しさん:2012/08/22(水) 01:31:46.90
Cythonで関数をインライン展開する場合ってどうすればいいんですか?
411デフォルトの名無しさん:2012/08/22(水) 02:10:08.70
>>409
馬鹿には無理
412デフォルトの名無しさん:2012/08/22(水) 03:27:20.19
413デフォルトの名無しさん:2012/08/22(水) 14:51:34.97
先日よりPythonの勉強をしております。
Pythonの前はPHPの勉強をしていたのですが、その時にPHPにあった便利な機能と同様なものがPythonにないか調べていたのですが、わからなかったので質問させて頂きます。

PHPではHTMLのformの値を受け取る際に、
<input type="text" name="ckdata[]">
のようにすると、ckdataを配列として受け取れるのですが、Pythonではそのようなことはできないでしょうか?


<input type="file" name="file[1]">
<input type="text" name="text[1]">

<input type="file" name="file[2]">
<input type="text" name="text[2]">

<input type="file" name="file[3]">
<input type="text" name="text[3]">

のように、ファイルとファイルの説明文をユーザが自由な数追加して送信できるようにしているのですが、それをどのように処理すればいいか悩んでおります。

宜しくおねがいします。
414デフォルトの名無しさん:2012/08/22(水) 15:09:59.40
datetimeとdateを比較する方法って、どうするのがいいんですかね。
now = datetime.now()
today = date.today()
now.year == today.year and now.month == today.month and now.day == today.day
やっぱりこんな方法しかない?
415デフォルトの名無しさん:2012/08/22(水) 15:27:00.55
>409
log()の中の方で
^^^^^^^^

import traceback
traceback.extract_stack()[-2][2]
                ^^^^
416デフォルトの名無しさん:2012/08/22(水) 15:32:09.00
>>414
now.date() == today
417デフォルトの名無しさん:2012/08/22(水) 15:46:38.32
事故れす
>>414
datetime型にdate()というメソッドがありました。
now.date() == today
これだけ。
418デフォルトの名無しさん:2012/08/22(水) 15:47:43.35
>>416
thx
419デフォルトの名無しさん:2012/08/22(水) 18:57:32.37
パイソンはマジでオワコン
初心者は別の言語を習得することをオススメする
PHP辺りがオススメだ

今からパイソンやるのは時間を無駄にするようなもんだ
420デフォルトの名無しさん:2012/08/22(水) 19:16:13.41
saltだけでどうやってセキュリティ確保するんですか?
リリース前にテストすらしてない馬鹿作者さん。
421413:2012/08/23(木) 12:48:56.53
そういった機能がないときはどのように処理をしようかと自分で考えてみて以下のようなコードを書いて見ました。

import re

di = { "file_file[0]": "file0", "file_file[1]": "file1", "file_file[2]": "file2", "file_title[0]": "title0", "file_title[1]": "title1", "file_body[2]": "body2", "file_file[41]": "file41", "file_body[1]": "body1"}

file_property = {}
for key, value in di.items():
key_match = re.search( "file_([^\[]+)\[(\d+)\]", key)
if not file_property.has_key( int(key_match.group(2))):
file_property[int(key_match.group(2))] = {}

file_property[int(key_match.group(2))][key_match.group(1)] = value

print file_property

ディクショナリの値にディクショナリを持たせたい場合、上のように一々ディクショナリを代入する必要があるのでしょうか?
もっと効率のいい方法や、よく使うやり方などあれば教えていただけると助かります。
422デフォルトの名無しさん:2012/08/23(木) 13:04:10.10
馬鹿には無理
423デフォルトの名無しさん:2012/08/23(木) 13:55:26.38
424デフォルトの名無しさん:2012/08/23(木) 14:32:16.18
firefox ってメモリリーク多すぎてたまらんな
425デフォルトの名無しさん:2012/08/23(木) 14:57:45.70
>>413
Web系の話題なのでWebプログラミング板へどうぞ

CGIかなとは思うけど、どのフレームワーク/ライブラリ利用してるのか等、
環境を詳しく書かないとレス着き難いと思うよ。

>>421のケースでは、一般的には collections.defaultdict が使えるけど、
CGIの話題だとしたら、標準ライブラリの cgi モジュールでもパラメータをリストで受けるのはサポートしてる。
426デフォルトの名無しさん:2012/08/23(木) 19:31:07.98
>>421
collections.defaultdictをもうちょっと工夫するとお望みのものに。
from collections import defaultdict
def newdict(): return defaultdict(newdict)
d = newdict()
d['a']['b']['c'] = 1
print d['a']['b']['c']
427デフォルトの名無しさん:2012/08/24(金) 02:26:52.30
help()で出力されるものと同じ文字列を取得したいのですがどうすればよいでしょうか
428デフォルトの名無しさん:2012/08/24(金) 03:30:33.60
help(re)
re.__doc__
429デフォルトの名無しさん:2012/08/24(金) 03:41:34.15
なんやこれ?
430デフォルトの名無しさん:2012/08/24(金) 10:22:14.87
pydoc.plain(pydoc.render_doc(obj, 'Help on %s:'))
431デフォルトの名無しさん:2012/08/24(金) 13:52:16.61
すみません。横からですが、
どのように考えていくと正しい解答に辿りつけるのでしょう?
私も興味があったのでhelp(help)で調べると
This is a wrapper around pydoc.help (with a twist).
とありpydoc.pyのhelpメソッドが出てくる箇所を読んでいたのですが、
見当外れだったようです。
help(pydoc)でFUNCTIONSを読んで関係ありそうなものを見る…??
ものの調べ方が分からないというアホな質問ですが、ご教示いただけると幸いです。
432デフォルトの名無しさん:2012/08/24(金) 14:44:29.74
OS X 10.8、python2.7.2の環境でtkinterのEntryを使っているのですが、日本語入力が出来ません。
コピペすれば日本語をEntryのテキストボックスに入れることが出来るのですが、
どうやってキーボードから日本語を入力するのでしょうか。
433デフォルトの名無しさん:2012/08/24(金) 16:23:15.31
ファイルの読み込みに関する質問です。

text.txtというファイルがあり、その内容は以下のように単純なものです

abc
def
ghi

そこで、次のようなコードを書きました
testfile = open("test.txt", "r")

testdict1 = {}
for t in testfile:
print t
testdict1[t] = 1
print testdict1
すると、forループ内のprint結果は、それぞれabc, def, ghiと正しく出力されたのですが
print testdict1の出力結果が
{'def\n': 1, '\xef\xbb\xbfabc\n': 1, 'ghi': 1}
となり、abcの文字列の前に不要なものがついてしまいました。
これはなぜでしょうか。
434433:2012/08/24(金) 16:24:24.72
インデントがおかしくなりました
コード最終行の
print testdict1
はforループ外です
435デフォルトの名無しさん:2012/08/24(金) 16:46:27.41
>>433
エディタでBOMなしのUTF-8で保存するように設定して
UTF-8NとかUTF-8(BOMなし)みたいに名前が付いてると思う

なお"\xef\xbb\xbf" はこのファイルはUTF-8ですよっていう印(UTF-8 BOM)
でもこういう問題が起こるから大抵は使わないほうがいい
436デフォルトの名無しさん:2012/08/24(金) 17:08:34.36
>>431
ヘルプを読んでヘルプを読む
437デフォルトの名無しさん:2012/08/24(金) 17:26:50.60
>>431
馬鹿には使えない
438デフォルトの名無しさん:2012/08/24(金) 19:16:04.09
別に変な質問じゃないだろ
439デフォルトの名無しさん:2012/08/24(金) 19:18:40.78
つかutf-8は規格上は無いんだけどな
どこかの技術力が足りない毎月パッチ出してる企業の人間がやり始めたんで迷惑極まりない
440デフォルトの名無しさん:2012/08/24(金) 19:19:17.54
規格上はBOMは無い、ね
少し抜けた
441デフォルトの名無しさん:2012/08/24(金) 19:47:12.72
馬鹿には無理
442デフォルトの名無しさん:2012/08/24(金) 20:18:08.60
443デフォルトの名無しさん:2012/08/25(土) 10:51:47.07
>>431
Pythonの初心者向けの解説にdocumentをきちんと書きましょうね、
>>> re.search.__doc__
'Scan through string looking for a match to the pattern, returning
a match object, or None if no match was found.'

こんな感じでmethod毎のdocumentを参照することもできますよ。
みたいなことが初心者に示されてた。
Pythonはこういう便利なことに対してきちんと誘導しているよ。
初心者用の説明をきちんと読みましょう。
444デフォルトの名無しさん:2012/08/25(土) 14:13:41.25
>>439
> どこかの技術力が足りない毎月パッチ出してる企業

それなりのソフト売ってる大抵の企業に当てはまりそうだ (w
445デフォルトの名無しさん:2012/08/25(土) 18:17:37.21
>>430
ありがとうございました。無事取得できました。
446デフォルトの名無しさん:2012/08/25(土) 23:44:46.18
>>435
返事が遅くなり申し訳ありません
BOM無しで保存すると、正常に動作するようになりました。
文字コードや使われ方について再度勉強しなおします。有難うございました。

447デフォルトの名無しさん:2012/08/26(日) 18:56:00.41
馬鹿にとってはBOMB
448デフォルトの名無しさん:2012/08/29(水) 07:00:25.93
..           ''';;';';;'';;;,.,    おっぱい!おっぱい!
             ''';;';'';';''';;'';;;,.,   おっぱい!おっぱい!
              ;;''';;';'';';';;;'';;'';;;
             ;;'';';';;'';;';'';';';;;'';;'';;;
        _  vnm_yvwnym_vynmyn_vy、
   _  ∩(゚∀゚)彡(゚∀゚)彡(゚∀゚)彡_ミ(゚∀゚)っ
 ⊂(゚∀゚ )彡と(゚∀゚ ) ⊂ミ (゚∀゚ )っ (゚∀゚ )つ
   ゝ⊂彡(゚∀゚ )っ _  ∩ (゚∀゚ ) .(ミ⊃ r
   し u ミ⊃ r⊂(゚∀゚ )彡 ⊂彡 i_ノ┘
.       i_ノ┘  ヽ ⊂彡 しu
           (⌒) .|
            三`J
449デフォルトの名無しさん:2012/08/29(水) 07:03:06.39
おっぱい〜〜〜〜!  おっぱいおっぱい! おっぱいおっぱいおっぱい!
二二二二l            \ │ /
 | |     ∧ ∧          / ̄\            ∧∧
 | |    ( ゚∀゚ )つ─◎   ─( ゚ ∀ ゚ )─◎        ( ゚∀゚)つ─◎
 | | /´ ̄し' ̄し' \ ///  /´ ̄し' ̄し' \ ///.     /´ ̄し' ̄し' \ ///
 ̄ ̄|  、_人_ /  彡 ◎  ̄ |  、_人_ /  彡 ◎ ̄ ̄ ̄|  、_人_ /  彡 ◎ ̄
    |  _)  ◎彡| | バン |  _)  ◎彡.| |   バン  |  _)  ◎彡.| |   パン
    |  ´`Y´   | | バン  |  ´`Y´   .| |  バン   | #`Y´   .| |  パン
    t______t,,ノ     t_______t,ノ       t_____#t,ノ
_______________________________
450デフォルトの名無しさん:2012/08/29(水) 09:03:01.67
       おっぱい! おっぱい!
    おっぱい おっぱい! おっぱい!
  おっぱい! ∩   ∩ ノ)   おっぱい!
 おっぱい!  川 ∩ 川彡'三つ  おっぱい!
おっぱい! ⊂ミ∩、⊂ミ∩彡⊃    おっぱい!
おっぱい!⊂三ミ( ゚∀゚)彡三彡三⊃ おっぱい!
おっぱい! ⊂彡川⊂彡川ミ⊃    おっぱい!
おっぱい!⊂彡川∪⊃ U川彡⊃   おっぱい!
 おっぱい! (ノ ∪  川 ∪ミ)  おっぱい!
  おっぱい!      ∪     おっぱい!
    おっぱい! おっぱい! おっぱい!
        おっぱい! おっぱい!
451デフォルトの名無しさん:2012/08/29(水) 09:59:36.51
              ...┏┓      .┏┓┏┓┏━┓      ┏┓   ┏┓        ┏┓┏┓┏━┓     ..┏┓
     __      i⌒i ┏┛┗┓      ┃┣┛┗┫□┣┓     ┃┃ ┏┛┗┓      ┃┣┛┗┫□┣┓    .┃┃
./    O   Oヽ   | ┗┓┏╋┳━━┫┣┓┏┻━┫┃  ┏┓┃┃ ┗┓┏╋┳━━┫┣┓┏┻━┫┃  ┏┓┃┃
〈      |―/  | ノノ┏┛┗┻╋━┓┃┣┛┗┓  ┃┃  ┃┃┗┛ ┏┛┗┻╋━┓┃┣┛┗┓  ┃┃  ┃┃┗┛
ヽ.      V   ノ  ...┃┃┏┓┃┏┛┃┃□┏┛  ┃┗┓┗┛┏┓ ┃┃┏┓┃┏┛┃┃□┏┛  ┃┗┓┗┛┏┓
     ( ̄ ̄ ノノ   ┗━┛┗┛┗━┻┻━┛    ┗━┛   ┗┛ ┗━┛┗┛┗━┻┻━┛  ...┗━┛   ┗┛
452デフォルトの名無しさん:2012/08/31(金) 12:39:58.66
multiprocessingでプロセス間で状態を共有したいのですが
managerで作ったオブジェクトを可変にすることってできますか?
例えば
l = manager.list([0])とつくってたものを
他のプロセスで、状況に応じて
l = [[1,1],[2,2]]
みたいにしたいのですが
453デフォルトの名無しさん:2012/08/31(金) 22:08:46.26
wxPython in action の翻訳版が・・・
http://www.slideshare.net/ryanvan/wxpython-in-action
454デフォルトの名無しさん:2012/08/31(金) 22:12:33.44
>>453
中国語じゃねーか!
455452:2012/09/01(土) 00:57:47.94
すいません 書き方が悪かったので書き直します
from multiprocessing import Process, Manager

class TestClass(Process):
def __init__(self, l):
super(TestClass, self).__init__()
self.l = l

def run(self):
count = 0
while count < 20:
self.l = [2]
count += 1


if __name__ == '__main__':
manager = Manager()
l = manager.list([0])

ss = TestClass(l)
ss.start()

print l
ss.join()
print l

これで最後のlが[2]にならない理由がわからないのですが
どうすればいいのでしょうか
456デフォルトの名無しさん:2012/09/01(土) 11:16:34.38
class Shape(object):
pass

shape1 = Shape()
shape2 = Shape()
shape1.position = 1
shape2.position = 2
の状態で
shape1やshape2またpositionという名前を(一括)取得する方法はないのでしょうか?
あれば教えて下さい。
457デフォルトの名無しさん:2012/09/01(土) 11:21:13.25
その「名前」を使って実際にどういうコードが書きたいのか示してみてくれ
458デフォルトの名無しさん:2012/09/01(土) 11:27:54.01
>>455
while の所、 self.l[:] = [2] じゃない?
459デフォルトの名無しさん:2012/09/01(土) 14:33:56.72
Pythonのfor文のinは、比較演算子のinと何か関係があるのでしょうか。演算子のオーバーロードなのか、疑問です。教えてください。よろしくお願いします。
460デフォルトの名無しさん:2012/09/01(土) 14:40:47.10
for文の奴はステートメントの一部であって演算子でもオーバーロードでもない
x in sequenceは演算子
461デフォルトの名無しさん:2012/09/01(土) 14:46:45.98
>>460
ありがとうございます。
462デフォルトの名無しさん:2012/09/02(日) 16:24:43.20
ライブラリの見方で質問があります。
smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])
ってあった場合、hostとtimeoutを指定したい時はどう書くのですか?
server = smtplib.SMTP("localhost", 120)とかしたら120がポートかなにかわからないですよね?
463デフォルトの名無しさん:2012/09/02(日) 16:29:40.79
キーワード引数
464デフォルトの名無しさん:2012/09/02(日) 16:48:24.45
蛇足ぎみだけど念のため

SMTP("localhost", 120) # hostは"localhost", portが120
SMTP("localhost", timeout=120) # hostは"localhost", timeoutが120
465デフォルトの名無しさん:2012/09/02(日) 23:50:29.20
ユニットテスト内でHTML5のバリデーションしたいんだけど、どうするのがベスト?
466デフォルトの名無しさん:2012/09/03(月) 17:38:47.69
newf = x.index('e', f)

list型の変数xでインデックスを取得する場合、
こうやって引数を二つ指定するとどうなるのでしょうか
467デフォルトの名無しさん:2012/09/03(月) 17:45:30.74
>>466
マニュアル読もう

index(...)
    S.index(sub [,start [,end]]) -> int

というわけでstartが探索の開始位置でendが終了位置
例えば "abcabcabc".index("c", 3) は 5 を返す
468デフォルトの名無しさん:2012/09/03(月) 18:17:29.87
>>458
ありがとうございます!
l[:]にしたらできました
ところで
l =xとl[:]=xは何が違うんでしょうか?
469デフォルトの名無しさん:2012/09/03(月) 18:31:10.46
>>465
selenium
470デフォルトの名無しさん:2012/09/03(月) 19:05:04.05
>>468
それぞれのパターンでリストを変更してみれば分かる
471デフォルトの名無しさん:2012/09/03(月) 19:11:42.45
>>470
>>> l = [1,2,3]
>>> l[:] = [2]
>>> l
[2]
>>> l = [1,2,3]
>>> l = [2]
>>> l
[2]
で変わらないと思ったのですが
それともmultiprocessingでの話でしょうか
472デフォルトの名無しさん:2012/09/03(月) 19:18:03.25
473デフォルトの名無しさん:2012/09/03(月) 19:20:35.54
変数の共有の話?

>>> a = [1,2,3]
>>> b = a
>>> a[:] = [2]
>>> a, b
([2], [2])
>>> a = [1,2,3]
>>> b = [2]
>>> a
[1, 2, 3]
474デフォルトの名無しさん:2012/09/03(月) 19:33:31.83
>>472
>>473
ありがとうございます
l[:]だと同じアドレスを指してくれるんですね
勉強になりました
475デフォルトの名無しさん:2012/09/05(水) 01:41:37.86
>>282-287
64bit版Windows&PythonでNumyとかを使いたいって話
http://spyder-ide.blogspot.fr/2012/08/scientific-python-distribution-for.html

その後、ベータ版が完成したって話
http://spyder-ide.blogspot.jp/2012/08/following-my-recent-post-on-free-open.html
476デフォルトの名無しさん:2012/09/06(木) 08:32:46.57
Pythonを勉強していて不明なことがあり質問させて頂きます。

現在日記帳のような、テキストを保存していくプログラムの制作をしています。
データの保存形式をSQLiteのようなRDBで行うか、ShelveやPickleのようなPythonオブジェクトで行うか、CSVのようなテキストで行うか悩んだ結果、現在はShelvで行うようにしました。

そこで疑問なのですが、現在は1日に1件追加するかどうかなので、Shelveのファイル容量も大きくないので気にならないのですが、ShelveやPickleのようなPythonオブジェクトとして保存する場合は、プログラムでのロード時に全てメモリに読み込まれるのでしょうか?
477デフォルトの名無しさん:2012/09/06(木) 08:50:08.70
馬鹿には無理
478デフォルトの名無しさん:2012/09/06(木) 10:58:09.37
>>476
pickleはその通り。

shelveでは、バックエンドで選択されるdbmとプログラムの組み方次第。
データ取り出しは1件毎だけど、一旦読み込まれたデータはキャッシュされるので、
例えば、常駐型のプログラムでshelve.openしたまま開きっぱなしの様な使い方をすると、利用メモリは増加するはず。
479デフォルトの名無しさん:2012/09/07(金) 02:15:24.28
wxpythonについて教えてください
xrcで作ったダイアログの、あるコントロールの前にpythonから画像を追加したいのですが、どうやればいいでしょうか?

xrcにあるtextCtrlやpanelは取得出来ています
sizerが取得出来なくて、panelにはAddが無いしで困っています

的外れな質問だったらすみません
480デフォルトの名無しさん:2012/09/07(金) 03:06:00.01
日本語で
481デフォルトの名無しさん:2012/09/07(金) 03:12:01.12
482デフォルトの名無しさん:2012/09/07(金) 08:42:36.95
馬鹿には無理
483デフォルトの名無しさん:2012/09/07(金) 23:22:07.33
>>481
レスありがとうございます
まだ出来てません…
出来たらまた報告に来ます
ありがとうございました
484デフォルトの名無しさん:2012/09/08(土) 18:26:26.14
>>412
ありがとうございます
やってみましたが、残念なことに実行速度は変わらなかったというか、微妙に遅くなった気がします
485デフォルトの名無しさん:2012/09/09(日) 16:59:24.49
Python2.7で

from test import pystone
print pystone.pystones()

という中身のhoge.pyをコマンドプロンプトで実行すると
>python hoge.py
(1.9339092849094406, 25854.36679484237)

Pydevで実行すると
(0.9808881658798508, 50974.210658511)

となります。ロースペックなのは置いといて、2倍くらい差が出るのはなぜでしょうか
486デフォルトの名無しさん:2012/09/09(日) 18:48:14.50
Pydevの方のコマンドラインは?
487デフォルトの名無しさん:2012/09/09(日) 20:40:36.86
設定したのはPythonインタープリタだけですが…
488デフォルトの名無しさん:2012/09/09(日) 20:45:35.28
お前が設定したのがインタプリタだけでも
IDEは気の利いたオプション付けて実行してくれたりするんだよ
そこをまず確認しろ
489デフォルトの名無しさん:2012/09/09(日) 20:46:35.39
デフォルトですよ。どんなオプションが付けられてるんですか
490デフォルトの名無しさん:2012/09/09(日) 20:47:15.27
話にならねえな
491デフォルトの名無しさん:2012/09/09(日) 20:48:29.87
オプションは、どこで確認出来るんですか
492デフォルトの名無しさん:2012/09/09(日) 20:49:24.20
デフォルトなんだろ
そのまま死ね
493デフォルトの名無しさん:2012/09/09(日) 20:49:42.91
実に、不快だ
494デフォルトの名無しさん:2012/09/09(日) 20:50:19.68
デフォルトでは、オプションは付けられてないんですか?
2倍くらい差が出るのはなぜですか?
495デフォルトの名無しさん:2012/09/09(日) 20:52:20.57
何怒ってんだよ
pdbのせいだったりしない?
496デフォルトの名無しさん:2012/09/10(月) 00:46:43.00
私の声がデムパになって
波になってあなたへ向かってく
私の歌がデムパになって
波になってあなたへ響いてく
私の愛がデムパになって
波になってあなたへ届いてく
私の電子回路が短絡する前に
Electric LOVE Electric LOVE
(∩ ゚д゚) アーアー
この気持ちあなたに届くかな
497デフォルトの名無しさん:2012/09/10(月) 21:42:59.74
djangoの質問もここでいいと信じてる

アプリケーションを機能ごとに分割するのはわかる
アプリケーションのディレクトリ内にmodels.py views,pyとかがあるわけだが
例えばWebAPIのラッパークラスを作るとき、models.pyに書くのが正しいのか?新しい.pyファイルを作ってしまうのが正しい?
そもそもviews.pyなんて不要なんだからアプリケーションにするのが間違ってるのか
498デフォルトの名無しさん:2012/09/11(火) 04:36:19.36
新しい.pyファイルを作ってmodels.pyからimport
499デフォルトの名無しさん:2012/09/11(火) 08:01:13.28
 ┌──────────────────┐
 |                              |
 │            _  ∩             |
 │          ( ゚∀゚)彡 おっぱい!     |
 │          (  ⊂彡   おっぱい!    .|
 │           |   |            |
 │           し ⌒J              |
 │                              |
 │         Now Oppaing. ....          .|
 │   そのままおっぱいでお待ちください。  |
 └──────────────────┘
500デフォルトの名無しさん:2012/09/11(火) 22:55:53.73
名前空間のことで質問させてください(python2.7系)
2つのディレクトリにmy名前空間があるとして次のように読み込むもうとしています。
sys.path[:0] = ['mylib','mylib2']
from my.config import MyConfig
from my.log.parser import MyLogParser

しかし、例えばmylib2にmy/config.pyがある場合、
mylibを探索した時点でImportErrorになってしまいます(mylib以下にはmy/config.pyは存在しない)
名前空間の名前(my)を変えれば問題ないことは確認したのですが、この挙動は変更できるんでしょうか?
つまり、1つめのディレクトリにmy名前空間があってファイルが見つからなくとも
次のディレクトリのmy名前空間を探索するように。
501デフォルトの名無しさん:2012/09/12(水) 02:58:23.04
SciPyのインストール方法について教えてください。
windows XPで python2.7.3を使っています。
SciPyをインストールしたのですが、ファイルにプログラムを書きだして、実行すると

from scipy import *
ImportError: No module named scipy

とエラーが出ます。
一方で、対話型インタプリタで from scipy import * をするとちゃんと通ります。
原因がわかる方がいましたら、教えてください。
502デフォルトの名無しさん:2012/09/12(水) 07:25:24.95
>501
SciPyはよく分からないけど、
前者の「実行」と後者の「対話型インタプリタ」は、それぞれどう起動したの?

Pythonの環境が2つ入っているかも。

前者をファイルのダブルクリックで起動してるようなら、ファイルの関連付け確認。(CygwinやMinGWのシェルから起動してるなら、ファイル先頭行の#!の指定を確認)

後者を、単純にコマンドプロンプトからの>pythonで起動してるのでなければ、SciPyのインストール時に何か設定が入ったのかもしれない
503デフォルトの名無しさん:2012/09/12(水) 07:32:57.38
馬鹿には無理
504500:2012/09/12(水) 10:32:41.37
>>500の挙動ってたぶん、Pythonの仕様なんですよね?

けどインポートディレクトリ直下のディレクトリ(>>500ではmy)が同名っていうのは
それほど特別ではないと思うけど、どうなんでしょうか。
Pythonではなく、こちらの配置かなにか問題があるのかな?
505デフォルトの名無しさん:2012/09/12(水) 10:37:07.00
./mylib/__init__.py
506デフォルトの名無しさん:2012/09/12(水) 12:15:39.76
>>501
>>> import sys
>>> print('\n'.join(sys.path))
>>> sys.modules['scipy']

とやって実行結果の違いを比べるよろし。
507500:2012/09/12(水) 12:40:17.03
>>505
ありがとうです。PATHをとおしているmylibディレクトリには__init__.pyは不要と思うのですが
それぞれのmy/__init__.pyに以下の記述をして解消できました(python2.7)
>>500のケースではmylib/my/__init__.pyのみでも大丈夫

try: __import__('pkg_resources').declare_namespace(__name__)
except ImportError: __path__ = __import__('pkgutil').extend_path(__path__, __name__)

お決まりのイディオムのようなので、今はよくわからないまま放置してますが
何をしてるのか後で読み込んでみますm(_ _)m
508501:2012/09/12(水) 16:23:42.20
ありがとうございます。
原因はPython2.7と3.2が入っていることでした。

>>502
ファイルをプログラムに書きだして実行するときは、コマンドプロンプトから、

cd "ファイルとあるディレクトリ"
python ファイル名.py

で実行するか、コマンドプロンプトにファイルをドラッグ&ドロップして実行していました。
対話型インタプリタはコマンドプロンプトから、pythonとうって起動していました。
おっしゃる通り、Pythonの環境が2つはいっており、Scipyを入れていないPython3.2が邪魔しているようでした。
Python3.2のフォルダを削除したら、エラーが無くなり、プログラムが通るようになりました。
ありがとうございます。

>>506
教えていただいた
>>> import sys
>>> print('\n'.join(sys.path))
>>> sys.modules['scipy']
をやって見たところ、

対話型インタプリタでは
C:\Python27
が出てきたのに対し、

コマンドプロンプトにファイルをドラッグ&ドロップで実行して場合は
C:\Python32
が出て、問題に気づけました。
ありがとうございます。

509デフォルトの名無しさん:2012/09/12(水) 19:52:29.72
>>502 はエスパー並み !!
510デフォルトの名無しさん:2012/09/12(水) 23:49:33.00
thread つくって、戻り値をちゃんと受け取るコードの書き方教えて。
分かりづらいかもしれないけど、下のような感じで。

th = thread(function=hoge)
th.start()
while not th.end():
  time.sleep(1)
result = th.result()
511デフォルトの名無しさん:2012/09/12(水) 23:55:38.55
馬鹿には無理
512デフォルトの名無しさん:2012/09/13(木) 00:00:55.82
自虐はやめろ
513デフォルトの名無しさん:2012/09/13(木) 00:13:20.26
thread つくって
while not th.end():
  time.sleep(1)
とか
あほやろ
514デフォルトの名無しさん:2012/09/13(木) 00:18:05.54
どう見てもサンプルだから time.sleep(1) なんだろ。
515デフォルトの名無しさん:2012/09/13(木) 00:55:24.34
>>510
import threading
def hoge(result): result['foo'] = 123

result = {}
th = threading.Thread(target=hoge, args=(result,))
th.start()
th.join()
print result

戻り値はdictにしたけど、スカラー値じゃなければ単純にこれでいける。
どうしてもポーリングしたけりゃth.isAlive()がある。
516デフォルトの名無しさん:2012/09/13(木) 05:09:51.94
つ Queue
517デフォルトの名無しさん:2012/09/14(金) 03:07:57.44
クェゥェ
518デフォルトの名無しさん:2012/09/14(金) 16:08:23.96
エキPyで、マルチスレッディングの話があったけど、あの部分はちょっと分からなかったな
確かにQueueの話も出てきた気がするけど
519デフォルトの名無しさん:2012/09/14(金) 20:11:08.93
Pythonスタートブックの後には何を読めばいいですか?
520デフォルトの名無しさん:2012/09/14(金) 20:34:23.02
>>519
読まずにプログラムを書き始めたほうがいい
実際に書いてみてわからないことが出てきたら何読めばいいですかって質問して
521デフォルトの名無しさん:2012/09/15(土) 11:46:38.42
python って単一のバイナリーオブジェクトみたいのものって作れませんか
スタティックリンクした C のバイナリ見たくライブラリ全部くっついてる感じ
522デフォルトの名無しさん:2012/09/15(土) 12:12:03.61
523デフォルトの名無しさん:2012/09/15(土) 12:25:28.43
>>521
.pyc/.pyo の事だったら .zip や .egg に纏めることが出来るよ。

実行ファイルだとしたら、外部ツールの領分。もしくは自分で実行ファイル作ってリソースを埋め込む。
一応作れるけど、ライブラリの構成によっては簡単には出来ないものもある。
524デフォルトの名無しさん:2012/09/15(土) 13:27:09.15
.pyoがあるなら、.piyo.piyo なんてのもありますか?
525デフォルトの名無しさん:2012/09/15(土) 16:16:16.04
>>522
ありがとう, 調べてみる
組み込み装置相手だと標準ライブラリ展開できないのが辛い
つか, 考えてみたら ldd みたく, 「このライブラリに依存しているよ」
情報を教えてくれるアプリでもいいのか
526デフォルトの名無しさん:2012/09/15(土) 20:03:47.96
UPX
527デフォルトの名無しさん:2012/09/16(日) 11:33:18.01
組み込み装置って言われると途端に怪しい
スタンドアローン環境でとか言われると困る
528デフォルトの名無しさん:2012/09/16(日) 11:39:15.10
py2exeとかのこと?
529デフォルトの名無しさん:2012/09/16(日) 12:01:38.41
py2exeは1個にはならんのじゃないか
ライブラリ名.zipの中にpyc固められるし
530デフォルトの名無しさん:2012/09/16(日) 15:11:27.65
>>529
オプションで1個 (zipped) できる
531デフォルトの名無しさん:2012/09/16(日) 17:46:21.41
PyCon JP 2012そこそこ盛り上がってるみたい
532デフォルトの名無しさん:2012/09/16(日) 18:15:28.60
具体的には?
533デフォルトの名無しさん:2012/09/16(日) 19:59:05.08
2日分の飯+おやつ+Tシャツつきで3千円はよかった
余った飯も貰って2人分食べた
講演はけっこう寝てましたすんまそんw
534デフォルトの名無しさん:2012/09/16(日) 20:01:54.66
何しに行ったんだって感じだな
断ってよかった
535デフォルトの名無しさん:2012/09/16(日) 20:44:46.55
まあでも品川だしな
Rubyみたいに松江とかでされてもコマル
536デフォルトの名無しさん:2012/09/16(日) 20:44:54.26
pyglet の質問していい?
537デフォルトの名無しさん:2012/09/16(日) 20:47:59.35
原発銀座松江の空中放射線量はどれくらいあるんだ
538デフォルトの名無しさん:2012/09/16(日) 20:51:07.48
>>536
どうぞー。ちなみに自分は使ってないからたぶん答えられない
539デフォルトの名無しさん:2012/09/16(日) 21:08:00.41
(3, 9) + (4, 4)
で、
(7, 13)
を期待しているのですが、
(3, 9, 4, 4)
になってしまいます。
正しくはどう書けば良いですか?
540デフォルトの名無しさん:2012/09/16(日) 21:19:31.27
map(sum, zip(a, b))
とは書けるけど、
そういう演算がいっぱいあるならNumPyつかった方がいい。
541デフォルトの名無しさん:2012/09/16(日) 23:17:56.51
!=と<>と、どっちがいつから廃止になったんだっけ?
こんなところまでダイエットするとかすげえな、と聞いた当時思った
542デフォルトの名無しさん:2012/09/16(日) 23:21:37.24
pythonのコードで<>なんて見たことないけど
543デフォルトの名無しさん:2012/09/16(日) 23:43:12.87
numpy形式の配列をたくさん生成しているのですが,以前と同じものがあった場合は除去したいです
普通ならsetに追加していけばいいと思うのですが,numpyの配列はsetにいれることができませんでした.
listに追加していき, in listで評価していってもいいのですが,とても遅くなってしまいます.
なにかいい方法ありませんか?
544デフォルトの名無しさん:2012/09/16(日) 23:56:30.10
numpy.unique
545544:2012/09/16(日) 23:57:52.09
http://docs.scipy.org/doc/numpy/reference/generated/numpy.unique.html

numpy クラスタって天才が多いイメージ
546デフォルトの名無しさん:2012/09/17(月) 00:05:46.43
そういう質問なの?
547デフォルトの名無しさん:2012/09/17(月) 00:16:05.50
すいません
質問の仕方が悪かったです.
やりたいことはこんな感じです
numpySet = set()
numpyList = []
while 1:
  a = numpy.array([random.randint(1,999)])
  if not(a in numpySet):
    numpyList.append(a)
548デフォルトの名無しさん:2012/09/17(月) 00:57:37.53
549デフォルトの名無しさん:2012/09/17(月) 00:59:43.91
>>547
どう?

import random

d = {}
s = set()
for i in range(10):
r = random.randint(0, 10)
print(r)
d[r] = None
s.add(r)
print(d.keys())
print(s)
550デフォルトの名無しさん:2012/09/17(月) 01:07:46.65
こっちの方がいいかな?

import random

d = {}
s = set()
for i in range(10):
L = []
for j in range(2):
r = random.randint(0, 3)
L.append(r)
print(L)
t = tuple(L)
d[t] = None
s.add(t)
print(d.keys())
print(s)
nL = [list(x) for x in d.keys()]
print('nL =', nL)
print('len(nL) =', len(nL))
551デフォルトの名無しさん:2012/09/17(月) 01:20:27.92
TypeError: unhashable type: 'numpy.ndarray'

       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  ごめんね、ごめんね、ごめんね
  |     (__人__)    |  いつもいつも迷惑かけて
  \     ` ⌒´     /  ごめんね、ごめんね、ごめんね。

       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \   もう謝ったから気にしないお!
  |     |r┬-|     |
  \      `ー'´     /

sqlite3使うのかなー、と思ったり。
552デフォルトの名無しさん:2012/09/17(月) 01:36:04.15
>>550
ありがとうございます
numpyもtuple形式にするとsetとかdictに入れられたのですが
x in dicのように比較するとUse a.any() or a.all()と怒られます
== のような比較ならnumpy.all(x == a)でできますが,inのときはどうすればいいでしょう?
553デフォルトの名無しさん:2012/09/17(月) 01:46:05.70
同じ数字を選んじゃうかもしれないrandomintの処理に無駄があるので、
全ての数字をシャッフルして、そこから必要数取れば処理も早くなるのでは?

>>> import random
>>> import numpy
>>> numList = range(1,999)
>>> random.shuffle(numList)
>>> numpyList = []
>>> for num in numList[:20]:
     numpyList.append(numpy.array(num))
554:2012/09/17(月) 01:56:41.88
>>553
説明ではrandom使ったのですが,実際はnumpyの配列がある処理によって生成されていき,
まだ出てきていない配列だけをtxtに保存したいと思ってます
555デフォルトの名無しさん:2012/09/17(月) 04:49:28.24
>>543
色々やってみたけど駄目だった。
根本的な問題は hash 化できないことだけど、
list()はしょうがないので、一旦tuple()で逃げることにした。
これでどう?

import numpy as np
import random

s = set()
for i in range(10):
L = []
for j in range(2):
r = random.randint(0, 3)
L.append(r)
print 'L =', L
na = np.array(L)
print 'na =', na
t = tuple(na)
print 't =', t
s.add(t)
print
na = None

print s
print 'len(s) =', len(s)
print

na2 = [np.array(x) for x in s]
print na2
print 'len(na2) =', len(na2)
556デフォルトの名無しさん:2012/09/17(月) 08:37:06.66
557デフォルトの名無しさん:2012/09/17(月) 13:35:35.68
pyglet のサンプルを参考にプログラムを書いているのですが
from pyglet.gl import *
としているものと
from OpenGL.GL import *
としているものがあり
特にその中でどちらのモジュールにも
glBitmap という関数が存在するのですが
7 番目の引数について
OpenGL.GL の場合は str を渡すと正常に動作します
ところが
pyglet.gl の方では str を渡すと「型が違う」エラーが出ます
PL_C_ubyte とか言う型が要求されているようです
元々 pyglet.gl の方を良く使っていて glBitmap 以外の関数
glTexImage2D なんかだと str 渡しても問題なかったので
pyglet.gl の glBitmap で正常に動作させる方法が知りたいです
ctypes で c_char_p とかに変換して渡してもだめでした
558デフォルトの名無しさん:2012/09/17(月) 13:37:25.08
訂正
LP_C_ubyte でした
すみません
559デフォルトの名無しさん:2012/09/17(月) 13:50:06.22
LP_c_ubyte は ctypes.c_char_p じゃなくて ctypes.c_ubyte の方らしいけど。
560デフォルトの名無しさん:2012/09/17(月) 13:57:10.85
それがどうかしましたか?
561デフォルトの名無しさん:2012/09/17(月) 14:00:29.04
すべてはわたしがつくったモノなのです

とか続けたくなる
562デフォルトの名無しさん:2012/09/17(月) 14:07:02.13
>>556
簡単だと思ったのが運の尽き。。。
563デフォルトの名無しさん:2012/09/17(月) 14:17:17.45
hoge = (ctypes.c_ubyte * size)()
glBitmap(p1, p2, p3, p4, p5, p6, hoge)
で逝けるみたいだけど?
564デフォルトの名無しさん:2012/09/17(月) 14:29:45.13
>>563
bmplen = (width / 8) * height
bmpdata = (ctypes.c_ubyte * bmplen)(*([255] * bmplen))
glBitmap(w, h, w / 2, h / 2, 0.0, 0.0, bmpdata)
で上手く逝きました
ほんとうにありがとうございました
565デフォルトの名無しさん:2012/09/17(月) 14:30:54.06
PyPyくっそ速いなー
566デフォルトの名無しさん:2012/09/17(月) 15:02:42.41
私が学長です。
567デフォルトの名無しさん:2012/09/17(月) 16:39:11.95
>>556
ここが通らなくて詰んだわ。
def test_simple_rule(self):
self.assertEquals(str(SimpleBars(" i ").next()), " iTi ")

'i ' と 'i' の優先度は左が高いんだから、'T'に変換できないでしょ。

あとね、hintってhintじゃないし。
条件じゃない。知らなかったら絶対解けない。
条件を知っても解けない。出題者出てこい。
568デフォルトの名無しさん:2012/09/17(月) 16:43:39.17
ヒント1
  付せんには next() での変更のルールの分析結果がメモされているみたい。
  ええっと、上の付せんは、iTi という並びがあると真ん中の文字が i になる、ということを示しているのかな?
  下の付せんについては、同じ行のルールは左のほうが優先度高いんだ、ってメモした本人が言ってた。
ここの読み解き方が分からんよ、分からん。
569デフォルトの名無しさん:2012/09/17(月) 16:52:14.56
>>556
人によって問題違うン?sys.argv[1] とか渡されないと分からん
print の結果を答えるんじゃないんかね
570デフォルトの名無しさん:2012/09/17(月) 17:00:13.49
m を入力して次の問題に池ってことか
571デフォルトの名無しさん:2012/09/17(月) 17:32:34.54
>>569
def lets_take_tea_break(m, e, n, c):
if pow(m, e) % n == c:
return str(m)
return ""
lets_take_tea_break(*[int(i) for i in (sys.argv[1], 17, 3569, 915)])

こんなのでしょ?
同じだと思うよ。
572デフォルトの名無しさん:2012/09/17(月) 17:53:36.96
*[int(i) for i in (sys.argv[1], 17, 3569, 915)]

この文法わからんちん
どっか解説してるサイト無い?

for i in (sys.argv[1], 17, 3569, 915)
これはリストから変数iとして取り出す、分かる

forの前についてるint(i)ってなんぞ?
*[]はなんぞ?
573デフォルトの名無しさん:2012/09/17(月) 17:56:50.14
[for ...] はリストの内包表記。*は関数に渡すときにリストやタプルが展開される。
Python のチュートリアル見ればおk
二番mんd
574デフォルトの名無しさん:2012/09/17(月) 18:03:44.96
lets_take_tea_break(int(sys.argv[1]), int(17), int(3569), int(915))
をややこしく書いただけってこと?
575デフォルトの名無しさん:2012/09/17(月) 18:07:04.47
3次元のvertexを
X軸で-π/4回転してからY軸で-π/4回転した場合と
Y軸で-π/4回転してからX軸で-π/4回転した場合とで
同じ場所になりますか?
またこれらで与えられる角度が変わった場合でも
X-Y軸の回転順序が違っても常に同じことが期待出来ますか?
あとZ軸が加わった場合でも同じですか?
576デフォルトの名無しさん:2012/09/17(月) 18:08:12.18
>>574
関数の引数の数が可変の場合に役に立つ
577デフォルトの名無しさん:2012/09/17(月) 18:09:39.61
>>574 の用途なら
lets_take_tea_break(*map(int, (sys.argv[1], 17, 3569, 915)))
でいいんじゃないかな
578デフォルトの名無しさん:2012/09/17(月) 18:15:07.55
>>575
結果は一緒にはならないけど、python関係なくね?
579デフォルトの名無しさん:2012/09/17(月) 18:16:37.35
次の問題を解けなくて困ってるんだ、
http://cp1.nintendo.co.jp/2012
http://cp1.nintendo.co.jp/2012_hint.html
↑に来て助けてくれぇぇぇ。

↓使ってくれていいから。
class SimpleBars(list):
def __str__(self):
return "".join(self)

def next(self):
pass

pow(m, e) % n
こんな表記がある時点で中の人は駄目そうって思ったけどさ。
pow(m, e, n)
だろjk
580デフォルトの名無しさん:2012/09/17(月) 18:18:43.08

ヒント1
付せんには next() での変更のルールの分析結果がメモされているみたい。
ええっと、上の付せんは、iTi という並びがあると真ん中の文字が i になる、ということを示しているのかな?
下の付せんについては、同じ行のルールは左のほうが優先度高いんだ、ってメモした本人が言ってた。
ヒント2
出力をよく見て! 途中で左端から出ていった文字が右端から回り込んでる……?
ヒント3
SimpleBars のソースコードはどこ?って聞いたら、代わりにテストコードをあげる、だって。
SimpleBarsTest.py

覚え書き:
・list を継承する→ class SimpleBars(list):
・list("abc") == ["a", "b", "c"]; "".join(["a", "b", "c"]) == "abc"
・str() のカスタマイズ→ def __str__(self):
ヒント4
SimpleBars を実装したら、あとは問題後半のコードを何も考えずに実行すれば答えが出そう。
このややこしいコードを読み解く必要はないみたい。

これ、ヒントじゃないから。
条件だから。この条件がないと絶対解けない。
この条件があっても解けない。
ヒント1が曲者で困ってござる。
581デフォルトの名無しさん:2012/09/17(月) 18:21:14.67
class SimpleBars(list):
def __str__(self):
return "".join(self)

str(simplebarsTest)が文字列で帰ってこない・・・
わけわからん
582デフォルトの名無しさん:2012/09/17(月) 18:23:53.21
お前頭おかしいんじゃねぇ?
583デフォルトの名無しさん:2012/09/17(月) 18:29:54.00
SPOJもpythonのコードが受け付けられるが、そういうのをいちいち質問するのはウザがられる
パズルを解けという依頼は他所でやった方が良い
アルゴリズムの実装においてpythonのことで分からないことがあればそこだけ質問しろ
584デフォルトの名無しさん:2012/09/17(月) 18:46:03.06
SimpleBarsの出力が画像とか任天堂のボケナスっぷりに失笑
やってられるか
585デフォルトの名無しさん:2012/09/17(月) 19:08:50.16
解けなくて困ってるんだお。。。
どうやって解いたらいいんだお。。。
586デフォルトの名無しさん:2012/09/17(月) 19:10:22.64
悪い。俺は困ってない。
587デフォルトの名無しさん:2012/09/17(月) 19:21:31.36
俺様が困っていると言っているんだ。
お前が困っていようと、いまいと関係ない。

どうやって解いたらいいんだお。。。
588デフォルトの名無しさん:2012/09/17(月) 19:23:24.25
ヒント: htmlのソースを表示
589デフォルトの名無しさん:2012/09/17(月) 19:29:55.41
仕方が無いからこのアホをあらぬ方向に誘導して遊ぶか
590デフォルトの名無しさん:2012/09/17(月) 20:03:14.97
>>579
子供は帰れよ
自分のテストを他人の力で突破してなんになる
591デフォルトの名無しさん:2012/09/17(月) 20:09:01.67
自己満足できる
592デフォルトの名無しさん:2012/09/17(月) 20:09:30.72
スクリプトキディ的な考え方で…
593デフォルトの名無しさん:2012/09/17(月) 20:11:04.78
pass
594デフォルトの名無しさん:2012/09/17(月) 20:12:07.88
ここまで原典どおりで純正な厨房って久々だなー
595デフォルトの名無しさん:2012/09/17(月) 20:46:32.95
意図してやったからな
いまいち盛り上がらないでやんの
596デフォルトの名無しさん:2012/09/17(月) 21:58:28.22
はい後釣り貰いましたー^^
597デフォルトの名無しさん:2012/09/17(月) 23:58:06.29
>>577
実はmapって遅いんですね
598デフォルトの名無しさん:2012/09/18(火) 00:02:56.18
速度気にするならtea(int(sys.argv[1]), 1, 2, 3)でいい
599デフォルトの名無しさん:2012/09/18(火) 00:05:49.95
“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。
“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。
“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。
“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。
“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。
“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。
“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。
“Code Puzzle”を解かれた方々に対して、景品をお渡ししたり採用におけるメリットを提供することはありません。
600デフォルトの名無しさん:2012/09/18(火) 00:17:49.33
>>599
なら解く必要ないじゃん

        ──終了──
601デフォルトの名無しさん:2012/09/18(火) 01:30:06.07
時間の無駄以外の何物でもないな
602デフォルトの名無しさん:2012/09/18(火) 01:35:07.31
>>> a = [2, 3, 1]
>>> print '%d,%d,%d' % (a[0], a[1], a[2])
2,3,1
>>> print '%d,%d,%d' % a
TypeError: int argument required
>>> print '%d,%d,%d' % (*a)
SyntaxError: invalid syntax

何がいけないんでしょう?><
603デフォルトの名無しさん:2012/09/18(火) 01:39:36.91
print '%d,%d,%d' % tuple(a)
604デフォルトの名無しさん:2012/09/18(火) 01:42:18.50
ありです!
605デフォルトの名無しさん:2012/09/18(火) 06:35:30.70
ネタやってる奴は訓練されたuy
任天堂がPython使ったことに嫉妬して暴れ出した。
606デフォルトの名無しさん:2012/09/18(火) 23:50:41.87
L=[ 'val1', { '1a': 1, '1b': 1, '1g':0 }, 'val2', { '1c': 1, '1d': 2}, 'val3', { '1e': 1, '1f': 3}]

L=[ 'val3', { '1e': 1, '1f': 3}, 'val2', { '1c': 1, '1d': 2}, 'val1', { '1a': 1, '1b': 1, '1g':0 } ]
のように{}内の値の合計(1+3,1+2,1+1+0)でsortする方法を教えて下さい。
607デフォルトの名無しさん:2012/09/19(水) 00:00:39.98
見るだけでアホらしいデータと感じるので嫌です
まだvalXと対応するdictが纏まってればいいけど
一緒にリストに突っ込んでるなんて醜い醜い醜い
プログラマに全角半角入り混じった文章を見せ続けると死ぬに近い不快感
608デフォルトの名無しさん:2012/09/19(水) 00:03:56.21
アルゴリズムを考える前にクレイジーなデータ構造を何とかしろよ…
609デフォルトの名無しさん:2012/09/19(水) 00:16:40.99
L=[ ('val1', { '1a': 1, '1b': 1, '1g':0 }), ('val2', { '1c': 1, '1d': 2}), ('val3', { '1e': 1, '1f': 3})]
せめてこうだったらな
610デフォルトの名無しさん:2012/09/19(水) 00:18:53.58
脳みそが爆発した
611デフォルトの名無しさん:2012/09/19(水) 00:21:04.69
仮に609なら若干無駄はあるが1行で済む
L.sort(lambda x,y:sum(y[1].values())-sum(x[1].values()))
612デフォルトの名無しさん:2012/09/19(水) 00:27:08.60
他の人が言うようにアホらしいのでコードは書かないが、
>>606の1行目を>>609に変形して、>>611を実行して、さらに>>606の3行目に戻せばいい。
613デフォルトの名無しさん:2012/09/19(水) 09:33:34.03
>>607
全角半角入り混じった文章ではなくて
全角英数が入り混じった文章ではないのかな
614デフォルトの名無しさん:2012/09/19(水) 09:36:16.53
>606 は
L={'val1': { '1a': 1, '1b': 1, '1g':0 }, 'val2': { '1c': 1, '1d': 2}, 'val3': { '1e': 1, '1f': 3}}
のつもりだったんじゃないのかな
615デフォルトの名無しさん:2012/09/19(水) 09:44:05.91
失敗から学ぶのが技術者
失敗したら他人のせいにするのが経営者
失敗しても安全と言い張るのが御用学者
失敗しても気にしないのが東電
失敗したらデータを捏造するのが韓国人
失敗したら隠すのが中国人
失敗したらもみ消すのが警察
失敗したら有耶無耶にするのが官僚
失敗したらルールを変えるのが政治家
失敗したら喜ぶのがマスゴミ
616デフォルトの名無しさん:2012/09/19(水) 16:41:23.59
失敗したら、と考えるのが>>615
617デフォルトの名無しさん:2012/09/19(水) 16:47:54.53
そして失敗しない俺
618デフォルトの名無しさん:2012/09/19(水) 17:13:03.14
Windows 7 64bit
Cython0.17
Visual Studio9.0 x86
Python3.1, 3.2 64bitは問題ないのに
3.3rc2 64bitだけエラーが起きる
Microsoft Visual C++ Runtime Library
Runtime Error!
Program: C\Python33\python.exe
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.

ImportError: DLL load failed: ダイナミック リンク ライブラリ (DLL) 初期化ルーチンの実行に失敗しました。
619デフォルトの名無しさん:2012/09/19(水) 17:50:12.14
x86
620デフォルトの名無しさん:2012/09/19(水) 18:26:07.41
>>618
> Visual Studio9.0 x86
621デフォルトの名無しさん:2012/09/19(水) 18:48:08.92
Python3.3から32bit版では使えなくなったの?
622デフォルトの名無しさん:2012/09/19(水) 18:52:12.21
623デフォルトの名無しさん:2012/09/19(水) 18:53:55.89
だいぶ前にpython2.xで使おうとしたら挙動がおかしかったからPydev使ってるけど
今はまともになったの?
624デフォルトの名無しさん:2012/09/19(水) 18:55:39.64
なにを?
625デフォルトの名無しさん:2012/09/19(水) 18:58:26.94
突然すいません。
PythonMagickでアニメーションGIFのフレーム毎の処理を行う場合、PILでいうseek()のようなのって無いんでしょうか?
626デフォルトの名無しさん:2012/09/19(水) 18:59:32.40
>>624
Pydevって言ってんだから文脈からvisual studioのpython開発プラグインって気づけよ
627デフォルトの名無しさん:2012/09/19(水) 19:01:26.20
分かるわけねぇw
628デフォルトの名無しさん:2012/09/19(水) 19:01:41.17
無茶言うなワロタ
629デフォルトの名無しさん:2012/09/19(水) 19:02:02.88
脈…?
630デフォルトの名無しさん:2012/09/19(水) 19:03:42.03
Python Tools for Visual Studioの存在を知らない人が殆どだから仕方ないか
631デフォルトの名無しさん:2012/09/19(水) 19:04:48.60
いや、使ってるけどこの発想は無理
632デフォルトの名無しさん:2012/09/19(水) 19:06:46.25
じゃあ質問に答えろよ
633デフォルトの名無しさん:2012/09/19(水) 19:07:09.96
開発環境つってもいろいろあるからなー
634デフォルトの名無しさん:2012/09/19(水) 19:07:38.75
Visual Studioの話題が出たから質問しただけだが
635デフォルトの名無しさん:2012/09/19(水) 19:08:03.96
ここで画像処理の質問は畑違いか、、
636デフォルトの名無しさん:2012/09/19(水) 19:08:50.67
>>635
狭い畑だからな
637デフォルトの名無しさん:2012/09/19(水) 19:09:47.03
>>636
ありがとう、自力で頑張るよ
638デフォルトの名無しさん:2012/09/19(水) 19:10:01.23
PythonMagick全然更新されてないから使う気にならなかったんだ
ごめんねー
639デフォルトの名無しさん:2012/09/19(水) 19:13:40.85
C:\Windows\System32\cmd.exe \E:ON \V:ON \T:0E \K "C:\Program Files\Microsoft SDKs\Windos\v7.0\Bin\Setenv.cmd \x64 \release"
Python setup.py build_ext --inplace
でコンパイルすると
c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Bin\amd64\cl.exeとlink.exeが使われて
その後
C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\x64\mt.exeが行われます

これで完成した.pydをimportするとPython3.3だけエラーが起こります
640デフォルトの名無しさん:2012/09/19(水) 19:30:58.40
>>622
ありがとうございます
解決しました

Python3.3だけmt.exeが実行されずに終わってました
setup.pyは同じなのに…
とりあえず、手動で実行したら解決しました
641デフォルトの名無しさん:2012/09/21(金) 20:23:15.35
>>491
引数と環境変数と記録するようなwrapper書くとか、
Pythonスクリプトに一時停止するコードを追加してProcess Exploererで引数と環境変数を見るとか、
PyDevのソースコードを見るとか。
642デフォルトの名無しさん:2012/09/21(金) 22:02:06.87
pythonってニシキヘビだろ?

名前が好きになれないし、FORTRAN95みたいにインデント
でブロック構成だなんて。PHPの方がまだましだわ。
643デフォルトの名無しさん:2012/09/21(金) 22:04:48.09
pythonを使ったことない人は皆そう言うが、その批判には何の意味もない
644デフォルトの名無しさん:2012/09/21(金) 22:07:00.24
>>643

何か中国政府の高官発言みたい。
645デフォルトの名無しさん:2012/09/21(金) 22:07:25.73
elseじゃなくてelifかよ!
紛らわしい…
646デフォルトの名無しさん:2012/09/21(金) 22:09:25.94
>>642
> pythonってニシキヘビだろ?
しばしばそのような指摘がなされますが、pythonの成り立ちと実在の蛇とはまったく関係がありません
647デフォルトの名無しさん:2012/09/21(金) 22:10:53.13
elifとelseは違うだろ
648デフォルトの名無しさん:2012/09/21(金) 22:34:01.19
else if, elif, elseif, elsif
649デフォルトの名無しさん:2012/09/22(土) 01:52:32.71
SPAMでも食っとけ
650デフォルトの名無しさん:2012/09/22(土) 04:59:37.77
SPAMが入ってないのは!?(グレアム)
651デフォルトの名無しさん:2012/09/22(土) 07:25:59.35
switch無いのに突っ込む人はあまりいない
652デフォルトの名無しさん:2012/09/22(土) 15:38:37.13
SimpleHTTPServerを使ってみたくて
test()
を実行したところ以下のようなエラーになりました
Windowsではできたのですが、Ubuntu(Linux)ではできませんでした

>>> import SimpleHTTPServer
>>> SimpleHTTPServer.test()
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
SimpleHTTPServer.test()
File "/usr/lib/python2.7/SimpleHTTPServer.py", line 216, in test
BaseHTTPServer.test(HandlerClass, ServerClass)
File "/usr/lib/python2.7/BaseHTTPServer.py", line 589, in test
port = int(sys.argv[1])
ValueError: invalid literal for int() with base 10: '-n'

どなたか解決策、または原因のみでもわかる方いませんか
よろしくおねがいします
653デフォルトの名無しさん:2012/09/22(土) 15:40:43.62
つ ValueError: invalid literal for int() with base 10: '-n'
654652:2012/09/22(土) 15:42:29.93
あ、すいませんバージョンをいい忘れました
2.73(32bit)を使ってます
655652:2012/09/22(土) 15:52:38.27
ちなみにシェルスクリプトではなく
ファイルを読み込んでから「run module」でやると実行はできるのですが
C+z C+cでも固まってしまって、×を押しても終了できなくなります
656デフォルトの名無しさん:2012/09/22(土) 15:56:01.35
PyShellを使わずに端末からpython起動して同じことをやったらどうなる?
657652:2012/09/22(土) 16:02:53.67
>>656
端末からだと大丈夫でした
C+cで無事終了できました

原因はPyShellなんでしょうか
658デフォルトの名無しさん:2012/09/22(土) 16:12:32.88
>>657
Pythonを起動してる環境が多分悪さしてる
どんな環境から実行してるのか詳しく書いてくれれば原因がわかるかも
(IDLEとかEclipseとかPyScripterとか)
659652:2012/09/22(土) 16:26:51.60
>>658
IDLE(Python 2.7版)と書いてあります。
OSはUbuntu(Linux) 12.04です
Pythonのバージョンは2.73です
660デフォルトの名無しさん:2012/09/22(土) 16:37:57.65
>>659
idleの起動引数に"-n"が入ってるんじゃないか
idleを起動したら
>>> import sys
>>> sys.argv
ってやってみて

とりあえず今回はidle使わないのが手っ取り早いと思う
661デフォルトの名無しさん:2012/09/22(土) 16:40:50.90
PythonShellとか使いにくいだけだからIPython使っとけってことだな
662デフォルトの名無しさん:2012/09/22(土) 16:51:53.23
>>660
!!
ほんとに-nが入ってました。
['/usr/bin/idle-python2.7', '-n']
これってどういう意味なんでしょうか
私は変な設定とかした覚えはないんですが

>>660 >>661
idleはあまりよくないんですね
わかりました
別のやつを探してみます
lpythonというのから調べてみます
663652:2012/09/22(土) 17:02:52.24
あ、>>662は私です

WindowsのIDLE(Python 2.7版)
Linuxの「端末」上

それぞれで import sys ///sys.argv をやってみたところ
両方共 
['']
という結果でした

やはりUbunt上のIDLEだけ特殊な設定になっているみたいですね
664652:2012/09/22(土) 17:04:07.14
おかげで助かりました
皆さん本当にありがとうございました
665デフォルトの名無しさん:2012/09/22(土) 17:08:27.14
Ubuntuのパッケージャが気を利かせてidle -nとかしてるんだろう
less /usr/bin/idle-python2.7 とかして中身を見てみるといいよ

ライブラリ書く人はif __name__ == '__main__': _test() とかして
ユーザが直接 _test() を呼ばないようにしといたほうがいいのかもと思った
666デフォルトの名無しさん:2012/09/22(土) 23:09:45.20
AptanaとPython2.7の環境で、定期的にwebにアクセスして情報を引っ張ってくるプログラムを書きました。

しかし、どうも特定のページではキャッシュにアクセスしているようです。
そのページが更新されているのに、更新前のページソースが帰ってきます。
このような場合、どう対処すればよいのでしょうか。
よろしくお願いします

Pythonのコードは、単純に
urllib.urlopen(page_name)
としているだけです。
667666:2012/09/22(土) 23:13:58.47
申し訳ありません。
追記となりましたが、Proxyサーバーを経由しています。
調べたところ、その影響があるかもしれません。
668デフォルトの名無しさん:2012/09/23(日) 01:38:14.92
アクセス先が
http://hoge.fuga/hage.html
だとして
http://hoge.fuga/hage.html?t=2012092301371234
とかダミーのタイムスタンプ付けてアクセスしてみるとか
669デフォルトの名無しさん:2012/09/23(日) 08:39:33.92
自分でやってないので、参考になるかどうかは知らんが
http://okwave.jp/qa/q1923037.html
670デフォルトの名無しさん:2012/09/23(日) 10:13:00.32
If-Modified-Since: Thu, 01 Jun 1970 00:00:00 GMT
671デフォルトの名無しさん:2012/09/24(月) 10:00:35.17
python2です。

>>> abc = {'alpha':u'α', 'beta':u'β', 'gamma':u'γ', 'delta':u'δ', 'epsilon':u'ε'}
>>> print repr([abc[k] for k in sorted(abc)]).decode('unicode-escape')
[u'α', u'β', u'δ', u'ε', u'γ']

これを、

[u'α', u'β', u'γ', u'δ', u'ε']

と表示されるようにしたいのですが、
どのような方法がスマートでしょうか?
例はεまでですが、それ以降のギリシャ文字もあると看做してください。
672デフォルトの名無しさん:2012/09/24(月) 10:04:09.37
print repr(sorted(abc.values())).decode('unicode-escape')
673デフォルトの名無しさん:2012/09/24(月) 10:05:58.45
すみません、訂正です。
>>> print repr([(k, abc[k]) for k in sorted(abc)]).decode('unicode-escape')
[('alpha', u'α'), ('beta', u'β'), ('delta', u'δ'), ('epsilon', u'ε'), ('gamma', u'γ')]



[('alpha', u'α'), ('beta', u'β'), ('gamma', u'γ'), ('delta', u'δ'), ('epsilon', u'ε')]

で、おながいします。
674デフォルトの名無しさん:2012/09/24(月) 10:06:59.42
>>672 さん、ありがとうございます。
行き違いになってしまいました。すみません。
>>673 で引き続きおながいします。
675デフォルトの名無しさん:2012/09/24(月) 10:50:20.47
>>> abc = {'alpha':u'α', 'beta':u'β', 'gamma':u'γ', 'delta':u'δ', 'epsilon':u'ε'}
>>> print repr([(k, abc[k]) for k in sorted(abc,
 cmp=lambda a, b: -1 if abc[a] < abc[b] else 0 if abc[a] == abc[b] else 1)]).decode('unicode-escape')
[('alpha', u'α'), ('beta', u'β'), ('gamma', u'γ'), ('delta', u'δ'), ('epsilon', u'ε')]
676デフォルトの名無しさん:2012/09/24(月) 11:03:22.95
こっちの方が良いかな

>>> abc = {'alpha':u'α', 'beta':u'β', 'gamma':u'γ', 'delta':u'δ', 'epsilon':u'ε'}
>>> print repr([(k, abc[k]) for k in sorted(abc, cmp=lambda a, b: cmp(abc[a], abc[b]))]).decode('unicode-escape')
[('alpha', u'α'), ('beta', u'β'), ('gamma', u'γ'), ('delta', u'δ'), ('epsilon', u'ε')]
677デフォルトの名無しさん:2012/09/24(月) 11:12:41.61
sorted(abc.items(), key=lambda x: x[1])
678デフォルトの名無しさん:2012/09/24(月) 11:52:32.49
>>639
ありがとうございます!
679デフォルトの名無しさん:2012/09/24(月) 21:19:47.86
yahooから株価情報を取得したいのですが、
いろいろ調べているとBeautifulsoupというモジュールが良さそうなのですが、
他に良いモジュールなどありますでしょうか?
680デフォルトの名無しさん:2012/09/24(月) 21:24:49.84
>>679
lxml
681デフォルトの名無しさん:2012/09/25(火) 02:29:25.54
cmp は 3.x でなくなるよ

sort の key=に渡す関数は、operator モジュールの利用がお勧め

Cモジュールなので若干の速度upが期待できるし、
2項目ソートの時に key=itemgetter(1,2) みたいに書けます。

http://www.python.jp/doc/release/howto/sorting.html#operator
682デフォルトの名無しさん:2012/09/25(火) 05:15:15.54
itemgetterが組み込み関数じゃない理由が分からないが
それを読んだ人が何やってるか分からないからだろうな
683デフォルトの名無しさん:2012/09/25(火) 21:46:04.73
decode使っての文字コードの変換って文字列が長かったりしたら失敗する?
684デフォルトの名無しさん:2012/09/25(火) 22:05:58.54
実装によってはなるかも知れんが、生憎俺は遭遇したことがない
685デフォルトの名無しさん:2012/09/25(火) 22:14:28.72
ループでデコードしまくったら、文字化けしたことがあるな

for val in list:
print val.decode('shift_jis')

みたいにしたら、時々文字化けするっていう
Aptana、Python2.7
686679:2012/09/25(火) 23:01:09.75
>>680
教えていただいてありがとうございます。
よさそうですね。参考にさせていただきます。
687デフォルトの名無しさん:2012/09/26(水) 01:05:49.74
リストに入った文字列をすべてテキストに保存したいのですが
b = ''
for line in listA:
b += line + '\n'
というように取りだしてから保存しようとすると,40万件くらいのデータだとbに入れる時点ですごく遅くなってしまいます.
なにか他にいい方法ありませんか?
688デフォルトの名無しさん:2012/09/26(水) 01:41:56.88
'\n'.join(listA)
689デフォルトの名無しさん:2012/09/26(水) 01:51:04.59
with open(..., "w") as f:
f.writelines("\n".join(listA))

with open(..., "w") as f:
for line in listA:
f.write(line + "\n")

どっちが早いかな。下と予想してみる
690デフォルトの名無しさん:2012/09/26(水) 02:13:29.79
>>688
>>689
ありがとうございます!
下の方が2倍くらい早かったです
691デフォルトの名無しさん:2012/09/26(水) 02:48:18.49
一度、長大な文字列作成してからdiskに書き込むよりも、
いきなりdiskに書き込んでいった方が高速なのか。

そうかそうか、一度、長大な文字列作成する必要ないもんね。
勉強になった。ありがとう。
692デフォルトの名無しさん:2012/09/26(水) 08:10:58.83
>683-685
errors='ignore'
693デフォルトの名無しさん:2012/09/26(水) 09:48:13.72
pythonでCGIプログラムを作っているのですが、そのCGIのURLに飛ぶたびに
test.pyというCGIファイルがダウンロードされてしまいます
OSはLinuxで、chmod 0755 test.py はすでに実行済みです
test.pyをダブルクリックすると、「端末」で実行できるようになっており
test.pyの内部処理の結果が表示されます

サーバーはCGIHTTPServer.test()で実行しています。

特にエラーも出ておりません。

自分なりに調べてみたのですが、わかりませんでした。
どなたか原因が分かる方いたらご教授ください。
694デフォルトの名無しさん:2012/09/26(水) 09:55:13.16
追記
test.pyというCGIファイルはindex.htmlと同じフォルダに作った
cgi-binというフォルダに入っています
695デフォルトの名無しさん:2012/09/26(水) 10:23:29.80
申し訳ありません
自己解決しました

知人にアクセスしてもらっところ、CGIが表示できました。
どうやら最初にミスした時のキャッシュファイル(?)がずっと残っていたみたいです
お騒がせしました
696デフォルトの名無しさん:2012/09/26(水) 19:09:14.67
自己解決はいいけど、キャッシュしないように設定したりはしないの?
697デフォルトの名無しさん:2012/09/27(木) 19:19:51.61
py2pl トランスレータ、誰か作って。
698デフォルトの名無しさん:2012/09/27(木) 19:38:18.46
何で敵将に献上しなきゃいけないんだ。
むしろお前がpl2py作れ。
もちろんPython3に変換してくれるんだろうな。
699デフォルトの名無しさん:2012/09/28(金) 00:57:07.65
正論

個人的には過去の豚真珠プログラムは蛇に置き換えたのでどうでもいい
700デフォルトの名無しさん:2012/09/30(日) 12:19:51.60
疑問なのですが、どうしてPythonの文字数や配列数はlen()関数で数えるのでしょうか?
Javascriptなどのように、.lengthプロパティではない理由はあるのでしょうか?

スライスのことを考えると、内部的に数を持っているかと思うので.lengthのほうがスムーズかと思うのですが。
701デフォルトの名無しさん:2012/09/30(日) 12:36:17.88
.__len__()
702デフォルトの名無しさん:2012/09/30(日) 12:37:02.66
あるよ
歴史的経緯だとどこかに書いてあったはず
703デフォルトの名無しさん:2012/09/30(日) 12:48:05.89
704デフォルトの名無しさん:2012/09/30(日) 14:00:37.58
705デフォルトの名無しさん:2012/09/30(日) 14:06:51.46
>>700

max(map(len, xs))

max(x.__len__() for x in xs)
706デフォルトの名無しさん:2012/09/30(日) 16:11:41.75
鏡音レングス
707デフォルトの名無しさん:2012/09/30(日) 22:58:26.34
np.vectorizeを使うとこのようになるのですが、どうしたら正常に処理できますか?
vectorizeではなく文字列用の関数があるのでしょうか?

import numpy as np
print np.vectorize(lambda x: x, otypes=[np.dtype('S24')])(np.array(['P'*20]))

出力:['PPPP']
期待する出力:['PPPPPPPPPPPPPPPPPPPP']

やりたいこと
listへのmapのように、np.arrayの各要素に対して処理をしたい

環境
python2.7.3
numpy1.6.2
708デフォルトの名無しさん:2012/09/30(日) 23:05:38.93
出力はlistなの
709デフォルトの名無しさん:2012/09/30(日) 23:43:20.21
出力はarrayがいいです

import numpy as np
print np.array(map(lambda x: x, np.array(['P'*20])))
出力:['PPPPPPPPPPPPPPPPPPPP']

こうしてみたら動作は期待通りなんですが、なんか釈然としないというか…numpyを使った意味が無いような…
710デフォルトの名無しさん:2012/10/01(月) 00:24:27.51
ざっと言語仕様を見てみたところ、
Cの構造体に相当する機能がないようですが
レコードをフィールドに区切って扱う概念がないと
つらくないですか?
711デフォルトの名無しさん:2012/10/01(月) 00:34:01.83
名前付きタプル
712デフォルトの名無しさん:2012/10/01(月) 05:00:08.03
普通にクラス使っても良い
713デフォルトの名無しさん:2012/10/01(月) 05:06:01.06
714デフォルトの名無しさん:2012/10/04(木) 01:07:31.28
Python Tools for Visual Studio使っている人いますか?
例えばiを何も定義せずに
print i
などとしたときに、実行するまで未定義なのかわからずに困っています
なにか設定が必要なのでしょうか?
715デフォルトの名無しさん:2012/10/04(木) 01:33:51.40
>>714
exec raw_input()
print i

みたいなコードがあったら
i が未定義かどうか実行するまでわからない。
716デフォルトの名無しさん:2012/10/04(木) 01:36:22.37
if some_func():
  i = 0
print i

の方がわかりやすいかも
717デフォルトの名無しさん:2012/10/04(木) 01:58:48.73
それはバグだよw
718デフォルトの名無しさん:2012/10/04(木) 02:04:15.10
ともかくPydevでは教えてくれるような>>714のようなエラーを
VSが教えてくれないから困っているという話だろう
>>716はまた別の話。俺はVSのそれを使ったことがないから質問には答えられないが
719デフォルトの名無しさん:2012/10/04(木) 02:19:51.85
pylint を使おう >ソースの静的解析

PYVS でサポートしてるかどうかは、使ってないので知らないけど、
調べてみたところ(codeplex内 DISCUSSION,ISSUE TRACKER で pylint を検索した程度)
要望は挙がってるもののパッチはないみたい。(2011 Oct)

ttp://pytools.codeplex.com/discussions/275963
720デフォルトの名無しさん:2012/10/04(木) 08:35:12.55
lint しても無駄
実行してみないと判らないことはいくらでもある
721デフォルトの名無しさん:2012/10/04(木) 09:55:14.84
だからー、今回の質問者の問題は分かるんだって
722714:2012/10/04(木) 10:33:56.00
皆様ありがとうございます
pydevでは実行しなくても'Undefined variable'と警告してくれるので
Python Tools for Visual Studioでも教えてくれないのかなぁと思っていました
どうやらPTVSでは教えてくれなそうなので、しばらくはpydevの方を使っていようと思います
723デフォルトの名無しさん:2012/10/04(木) 10:36:46.83
馬鹿には無理
724デフォルトの名無しさん:2012/10/04(木) 20:59:09.46
python3.3です。質問です。
ipアドレスのリストを読み込みwhoisを実行する。結果をhtmlファイルに書き出す。
というプログラムを書いています。
あらかたのアドレスは上手くいっているのですが、一部でUnicodeDecodeErrorがでて書きだせません。
結果自体はbytes.decode(subprocess.check_output(["whois", ip_address]))でとって、fp.writeで書いています
175.119.227.235あたりのアドレスでエラーがでます。

これを回避する方法はないでしょうか?

参考になるかわからないですが、試したことを書いておきます。

>>> bytes.decode(b'\xe3\x81\x82')
'あ'

>>> bytes.decode(b'\xc1\xb6\xc8\xb8\xc7\xcf\xbd\xc5')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 0: invalid start byte

>>> locale.getpreferredencoding(False)
'UTF-8'
725デフォルトの名無しさん:2012/10/04(木) 21:11:13.84
無視したらいけました。」
726デフォルトの名無しさん:2012/10/05(金) 02:19:56.52
>>> bytes.decode(b'\xc1\xb6\xc8\xb8\xc7\xcf\xbd\xc5', errors='ignore')

としたらいけました。って書こうぜ。
encodingを指定してもよく分からんかった。

>>> bytes.decode(b'\xc1\xb6\xc8\xb8\xc7\xcf\xbd\xc5', encoding='sjis')
'チカネクヌマスナ'
>>> bytes.decode(b'\xc1\xb6\xc8\xb8\xc7\xcf\xbd\xc5', encoding='euc-jp')
'繕噺馬重'
727デフォルトの名無しさん:2012/10/05(金) 06:17:25.57
韓国語(euc-kr ?)っぽいね。ブラウザでwhois引いても文字化けしてた。
728デフォルトの名無しさん:2012/10/05(金) 06:21:49.95
>>> '\xc1\xb6\xc8\xb8\xc7\xcf\xbd\xc5'.decode('euc-kr')
u'\uc870\ud68c\ud558\uc2e0'
729デフォルトの名無しさん:2012/10/05(金) 06:23:48.82
조회하신
730デフォルトの名無しさん:2012/10/05(金) 06:27:14.30
猥褻用語か
731デフォルトの名無しさん:2012/10/05(金) 11:53:48.88
「照会されたIPv4アドレスは、韓国インターネット振興院から下の管理代行者に割り当てられており、割り当て情報は、次のとおりです。」
と書いてある。
732デフォルトの名無しさん:2012/10/05(金) 12:51:43.92
3.3.0 で確認
pip install chardet2 で python3用のchardetをインストール

>>> import chardet
>>> chardet.detect(b'\xc1\xb6\xc8\xb8\xc7\xcf\xbd\xc5')
{'encoding': 'EUC-KR', 'confidence': 0.99}
733デフォルトの名無しさん:2012/10/06(土) 00:48:54.31
HTMLParser を使って HTML 内の文字列を取り出すスクリプトを作っています。
feed() で読み込ませ、目的の文字列を取り出し終えたら、残りはもう見る必要ないので
そこで中断させたいのですが、どうしたらいいんでしょうか?

Python3.3です。
734デフォルトの名無しさん:2012/10/06(土) 01:45:51.33
>>733
feedの後に目的の文字が見付かったかどうかをチェックし、
見付かってたらfeedで読み込みしてるループを抜ける。
735デフォルトの名無しさん:2012/10/06(土) 01:46:41.65
あんまり綺麗じゃないけどdef handle_*の中で例外投げるとか
iterparse()のあるlxmlを使ったほうが直感的でいいかも
736733:2012/10/06(土) 09:21:43.01
>>734
feed() を呼んだ時、HTMLParserインスタンスの処理が終わる前にfeed()の後のコードが
実行されるという事ですか?

>>735
大したスクリプトじゃないんで外部モジュール使うのもどうかなと思っていたのですが、
ちょっと勉強してみます。

レスありがとうございました。
737デフォルトの名無しさん:2012/10/06(土) 14:26:36.89
例外投げるのが綺麗じゃないと思う理由を知りたい
738デフォルトの名無しさん:2012/10/06(土) 14:29:36.17
言語によってはフロー制御に例外使うのをアンチパターンとしているからかな
俺は733じゃないのであくまで想像だが
739デフォルトの名無しさん:2012/10/06(土) 15:05:22.09
>>737
パーサにparser.stop()みたいなメソッドがあればそっち使いたいのが一点
あとStopIterationみたいにfor文で暗黙的に例外が処理されるならともかく
今回のはパーサ作ってfeed()する側が明示的に例外を処理しなきゃいけないのがもう一点
740デフォルトの名無しさん:2012/10/06(土) 15:46:49.80
>>738
漏れは733じゃなくて735に聞いたのに何でおまえが答えてんの?
741デフォルトの名無しさん:2012/10/06(土) 15:48:57.69
>738
>言語によってはフロー制御に例外使うのをアンチパターン

どの言語のことでしょう
742デフォルトの名無しさん:2012/10/06(土) 15:50:00.38
pass
743デフォルトの名無しさん:2012/10/06(土) 15:51:23.20
>>741
えっ
744デフォルトの名無しさん:2012/10/06(土) 16:08:55.03
インタプリタじゃない言語の類でしょ
C++/C#/Javaとか

理由としては、上記の言語では例外のコストが通常の制御に比べて高すぎるので
例外的状態にだけ例外を使用する(=予測可能なエラーに対して例外を使用しない)という了解がある

軽量言語でも例外のコストは通常の制御より高いが、
上記の言語に比べれば大したことがないので許される
まあ一言で言えば「Pythonには関係ない」よ
745デフォルトの名無しさん:2012/10/06(土) 16:14:18.74
Java の parseInt はその主張と矛盾すると思うのですが
746デフォルトの名無しさん:2012/10/06(土) 16:16:38.96
EffectiveXXXや達人プログラマー、CodeCompleteなどの
いわゆる良書と言われる本には必ず(大抵ではない)書いてあることなので
興味があるなら読んでみてもいいかもね
747デフォルトの名無しさん:2012/10/06(土) 16:17:39.53

Java に parseInt() はあるが、isInt() が無い理由
http://d.hatena.ne.jp/kameid/20090320/1237545618
748デフォルトの名無しさん:2012/10/06(土) 16:18:59.67
いやJavaは例外投げまくりでしょ
749デフォルトの名無しさん:2012/10/06(土) 16:21:50.77
>>745
その通りです
上記の本を読んだ人が真っ先に考えるのはそのメソッドの存在でしょう

EffectiveJavaの中でも無駄に例外を投げているJDKの設計について、一部苦言が呈されています
要するに、Javaの開発者がアホだったのです
750デフォルトの名無しさん:2012/10/06(土) 16:23:14.70
Javaは糞
はいおしまい
751デフォルトの名無しさん:2012/10/06(土) 16:25:10.42
へぇーC#はTryParseあるのにJavaは無いんだ
752デフォルトの名無しさん:2012/10/06(土) 16:26:00.91
スレチだと伸びるな
753デフォルトの名無しさん:2012/10/06(土) 16:33:43.08
exit(1)
754デフォルトの名無しさん:2012/10/06(土) 16:36:34.76
insert(角電池)
755デフォルトの名無しさん:2012/10/06(土) 18:36:57.62
例外処理をリスト内包表記で作っていく辞書の値について行いたいのですが、
三項演算子みたいに1行でやることはできますか?
具体的には[{ 'foo': ? } for x in bar]の?の部分で, 例外が発生するかしないかでfooの値を変えたいです。
756デフォルトの名無しさん:2012/10/07(日) 04:22:54.23
出来ないし、なんでも一行でやろうとするな
757デフォルトの名無しさん:2012/10/07(日) 04:42:42.22
スマァァァァトに書きたいんですぅぅぅぅぅ
ワンライナーはとてもSmaaaat!!!!!((c) MOTHER2・任天堂・糸井重里)だと思うんですぅぅぅぅ
758デフォルトの名無しさん:2012/10/07(日) 04:45:25.44
それはコーダーの自己満足だろ
759デフォルトの名無しさん:2012/10/07(日) 04:52:15.29
こうですか?

def proc(x):
  try:
    return hogehoge(x)
  except (Hoge, Hage), e:
    return fugafuga(x)
[setattr(jisho, 'foo', proc(x)) for x in bar]
760デフォルトの名無しさん:2012/10/07(日) 09:26:10.89
yahooから株価を取得してDBに放り込むプログラムを作成しました。
今までずっとCを利用してましたが、pythonでの初めてプログラムなので修正点などありましたら教えていただけると幸いです。

def get_historical_price_latest_from_yahoo_co_jp(stock_code):
import urllib2, lxml.html, pgdb
from time import strftime, strptime
url_header = "http://stocks.finance.yahoo.co.jp/stocks/history/?code="
get_url = url_header + stock_code + ".T"
html = urllib2.urlopen(get_url).read()
root = lxml.html.fromstring(html)
tr_elements = root.xpath("//tr")
connector = pgdb.connect(host="****", database="****", user="****", password="****")
cursor = connector.cursor()
for count1, tr_element in enumerate(tr_elements):
if count1 >= 2 and len(tr_element) == 7:
val = [stock_code]
for count2, price in enumerate(tr_element):
if count2 == 0:
price_date = strftime("%Y-%m-%d", strptime(price.text, u"%Y年%m月%d日"))
val.append(price_date)
else:
price_data = float(price.text.replace(",",""))
val.append(price_data)

sql = "insert into yahoo_jpn_price values" + str(tuple(val))
cursor.execute(sql)

connector.commit()
cursor.close()
connector.close()
761デフォルトの名無しさん:2012/10/07(日) 09:35:10.79
まずインデントを直せ
762デフォルトの名無しさん:2012/10/07(日) 09:44:27.67
ちゃんとなってる>>760
763デフォルトの名無しさん:2012/10/07(日) 09:50:57.86
sql = "insert into yahoo_jpn_price values" + str(tuple(val))

injectionですねわかります
764デフォルトの名無しさん:2012/10/07(日) 09:56:12.64
val = [stock_code]って
既存の変数を[]で囲むことにどういう意味があるんだろ。
まさかCと同じで配列の先頭アドレスへの参照を代入しているのか。
Pythonは変数に型がないので、代入データの型を右辺から
いちいち推測しないといけないのが面倒だね。
765デフォルトの名無しさん:2012/10/07(日) 11:34:43.61
リストじゃねーの
766デフォルトの名無しさん:2012/10/07(日) 11:40:35.24
リストリテラル以外に何があるというのか
767デフォルトの名無しさん:2012/10/07(日) 12:33:29.36
馬鹿すぎて言葉がでない
768デフォルトの名無しさん:2012/10/07(日) 12:49:23.81
なるほどリストかあ。
でも見慣れない処理だよね。
既存のリストでない変数をカッコで囲んでリスト化するのは。
769デフォルトの名無しさん:2012/10/07(日) 13:07:44.43
え?
770デフォルトの名無しさん:2012/10/07(日) 13:19:03.22
物を知らなすぎて笑えない
771デフォルトの名無しさん:2012/10/07(日) 13:37:34.12
大人しく自分がマスターした言語だけ使ってろよ…
読んでて疲れるから
772デフォルトの名無しさん:2012/10/07(日) 13:53:15.59
別に君らの疲れを癒すスレじゃないし
Python初心者なんだから好きなこと言わせてもらうよ。
嫌なら出て行け。
773デフォルトの名無しさん:2012/10/07(日) 14:26:53.37
>>764はさあ、まずリストと配列の区別がついてないと思うんだよね
774デフォルトの名無しさん:2012/10/07(日) 14:51:26.89
>>772
初心者になれたつもりなんだー(棒
775デフォルトの名無しさん:2012/10/07(日) 15:18:27.43
>>764はこれまでリストリテラルの無い静的型言語、
例えばJavaのようなウンコ言語しか使った事が無いんだよ
馬鹿過ぎて簡単なPythonすら使いこなせないだろうけど、
生暖かく見守ってあげようじゃないか
776デフォルトの名無しさん:2012/10/07(日) 15:20:37.25
>764
気になるなら
val = [stock_code, ]
777デフォルトの名無しさん:2012/10/07(日) 15:21:16.83
[777] はリストになるけど
(777) はタプルにならない不思議
778デフォルトの名無しさん:2012/10/07(日) 15:23:42.04
タプルタプルした二の腕
779デフォルトの名無しさん:2012/10/07(日) 15:26:34.33
(1 + 2) * 3 とかの式で第一項がタプルになったら困るでしょ?

実はタプルは括弧ではなくカンマで作られる(空タプル除く)
777, 
780デフォルトの名無しさん:2012/10/07(日) 15:27:28.53
>>772
多言語習得者なのに超初心者ってのは認められますん
以下からお好きなのをどうぞ

http://www.python.jp/doc/release/tutorial/index.html
http://d.hatena.ne.jp/dplusplus/20100126/p1
http://www.swaroopch.org/notes/Python
http://learnpythonthehardway.org/

最速マスターはほんとよくまとまってる
781デフォルトの名無しさん:2012/10/07(日) 15:32:39.06
いつまで初心者気取りなんプークスクス
782デフォルトの名無しさん:2012/10/07(日) 15:33:15.70
初心者が超初心者を偉そうに叩くスレ
に改名すべきだな
783デフォルトの名無しさん:2012/10/07(日) 15:40:36.81
>>775
逆にいえば
pythonよりもはるかにムズい(もといめんどくさい)javaを
使えてたということか〜
784デフォルトの名無しさん:2012/10/07(日) 15:42:12.46
jsonやらなにやらもあるんだから、元々何を使ってたかの前に見識が狭いだけやねん
785デフォルトの名無しさん:2012/10/07(日) 15:45:18.95
>>784
は?
786デフォルトの名無しさん:2012/10/07(日) 15:57:02.93
えっ?
787デフォルトの名無しさん:2012/10/07(日) 16:12:15.35
たしかにJSONでレスポンス返すWebサービスとかいっぱいあるもんね
ttps://api.twitter.com/1/statuses/user_timeline.json?screen_name=yukihiro_matz&count=2
788デフォルトの名無しさん:2012/10/07(日) 16:13:38.60
日本語でおk>>784
789デフォルトの名無しさん:2012/10/07(日) 16:15:48.13
いや普通に日本語で言いたいこともよくわかる
790デフォルトの名無しさん:2012/10/07(日) 16:18:06.27
JSONというと13日の金曜日だけど今月13日は
791デフォルトの名無しさん:2012/10/07(日) 16:35:39.17
>>788
>>784>>783へのレスと考えるとたしかに日本語でおkになるわな
流れからすれば唐突にjsonなんてワードは出てこないはずだからな
jythonをjsonと間違えたと考えるのが妥当では?
792デフォルトの名無しさん:2012/10/07(日) 16:46:50.07
ぜんぜん妥当じゃない。Jythonでは意味が通らない
リスト(配列)リテラルがあって誰でも知ってるJSONだから意味が通る
793デフォルトの名無しさん:2012/10/07(日) 16:52:38.51
↑なぜ必死?
794デフォルトの名無しさん:2012/10/07(日) 16:56:55.98
無知がどこまで恥曝しつづけるか見物だね
795デフォルトの名無しさん:2012/10/07(日) 17:00:15.22
Jythonが妥当!
796デフォルトの名無しさん:2012/10/07(日) 17:00:37.15
>>793
別に必死でもない。もともとヨタ話だし
797デフォルトの名無しさん:2012/10/07(日) 17:03:22.21
誰でも知ってること知らねーの?だせえって
人小馬鹿にしといてよく言うよ
798デフォルトの名無しさん:2012/10/07(日) 17:03:53.62
json知ってることを自慢したい消防が紛れ込んだ模様
799デフォルトの名無しさん:2012/10/07(日) 17:08:01.63
>>797-798
おまいら結構繊細なんだな。気をつけるわ
800デフォルトの名無しさん:2012/10/07(日) 17:09:51.09
>>799 いじられて悔しかったんでちゅねいい子いい子
801760:2012/10/07(日) 17:14:47.35
なんか荒れてますが。。。

>>763
ありがとうございます。
SQLインジェクション攻撃に対してに脆弱になるんですね。
cursor.execute('insert into yahoo_jpn_price values(%s,%s,%s,%s,%s,%s,%s,%s)', val)
に変更したいと思います。
802デフォルトの名無しさん:2012/10/07(日) 17:24:52.38
それじゃ変わらんよ
803801:2012/10/07(日) 17:26:10.94
ネタですけど何か
804デフォルトの名無しさん:2012/10/07(日) 17:28:47.03
SQLインジェクション知ってることを自慢したい消防が紛れ込んだ模様
なお間に合う模様
805デフォルトの名無しさん:2012/10/07(日) 17:29:39.36
それがどうかしましたか?
806デフォルトの名無しさん:2012/10/07(日) 17:30:15.23
>>804
お前さっきから暇だな
807760:2012/10/07(日) 17:31:53.92
>>802
すいません。正直SQLもあまり詳しくないので、
これでSQLインジェクションに対して堅牢になっているのかどうかよくわかりませんでした。
http://www.python.jp/doc/2.5/lib/module-sqlite3.html
このサイトにそう書いてあったので、このように対応したのですが。。。。

どう変更すればよいのでしょうか?
808802:2012/10/07(日) 17:33:47.67
>>807
知ったかぶりしただけだから対処法など知らんよ
809デフォルトの名無しさん:2012/10/07(日) 17:38:17.02
>>806
さっきから粘着して下さっているのはあなたですか!?
810デフォルトの名無しさん:2012/10/07(日) 17:40:59.26
>>807
そのページに書いてあるとおり %s じゃなくて ? を使う
811809:2012/10/07(日) 17:43:16.37
>>1からここまですべて俺の自作自演なわけだが
812デフォルトの名無しさん:2012/10/07(日) 17:57:48.45
(他のデータ ベースモジュールでは変数の場所を示すのに"%s" や ":1" などの 異なった表記を用いることがあります。)
813デフォルトの名無しさん:2012/10/07(日) 18:33:30.78
色々板を回ってみたが
ID表示の無い板はゴミ
814デフォルトの名無しさん:2012/10/07(日) 23:00:25.30
荒らせばID付くんじゃね?
815デフォルトの名無しさん:2012/10/08(月) 01:13:16.71
10年荒らされてる板で何言ってるか分かってる?
816デフォルトの名無しさん:2012/10/08(月) 01:26:12.96
テスト
817デフォルトの名無しさん:2012/10/08(月) 06:38:21.93
★修学旅行、韓国から国内に変更…宮崎・日南高

 日本と韓国の関係悪化を受けて、宮崎県立日南高は2年生27人が12月に予定していた韓国への
修学旅行を国内に変更した。

 日南高によると、同校の修学旅行は韓国と国内の二つから選べることになっており、今年は2年生
170人のうち、143人が東京や群馬などの国内を選択。27人が同校の姉妹校・冠陽高があるソウル
などへの旅行を希望していた。

 竹島問題などを巡って、日韓関係が悪化していることから、韓国への修学旅行について慎重に検討した
結果、「韓国の情勢が不透明で、生徒の安全などを考慮した」として、行き先を国内に一本化したという。

 県内の別の高校も来年3月に計画している韓国への修学旅行について、変更を検討しているという。

http://www.yomiuri.co.jp/kyoiku/news/20121006-OYT8T00695.htm
818デフォルトの名無しさん:2012/10/08(月) 09:18:21.29
>>760

* 文字列の連結は大抵 "".join や 書式付文字列 を使う。

* html = urllib2.urlopen(get_url).read()
 書き捨てのコード以外では、推奨しない。404 の場合に エラーページのHTMLを所得してしまう。

* lxml.html.parse は引数にurlを取れる。404 の場合は IOError 例外が投げられます。

* xpathで所得する要素を指定できる。件数がそれ程多くなければ pythonのリストのスライスでもいい。
 count1,count2 と enumerate はコードから全部排除できるはずです。

 for tr_element in root.xpath("//tr[position() > 1]"):
  if len(tr_element) != 7: # pythonに慣れてくると、内包表記やフィルターを使うようになる。
   continue # インデントを深くしたくないので continue。
  ...
  for price in tr_element[1:]:
   ...

* データベースへ入れる処理とデータの所得部分は分離する。
 (混ざってると、エラー処理後の後始末が面倒になったりする。ネストが深くなる傾向がある)
 データ所得部分はジェネレータにしておくと便利。
819デフォルトの名無しさん:2012/10/08(月) 09:29:36.09
欧州研究所が告白! 太陽光パネルで出力劣化しないのは日本製品とドイツ製品だけ!中韓メーカー発狂か
http://engawa.2ch.net/test/read.cgi/poverty/1342751788/


シャープ製太陽光パネル、「出力低下なし」お墨付き−欧最大の研究機関が評価

シャープは同社製の太陽光パネルに「PID」と呼ばれる産業用太陽電池特有の出力低下現象が起きないと欧州最大の研究機関に認められた。
フラウンホーファー研究機構(本部=独ミュンヘン)が欧州、北米、中国、韓国メーカーなどの太陽電池モジュール13製品を評価した。
欧州ではPID現象による太陽光パネルの出力低下が相次ぎ、品質問題として注目されている。PID現象が発生しなかったのは4製品だけ。
これまでに京セラ、ドイツの最大手Qセルズも現象が起きなかったと公表している。

詳細 2012/7/20
http://www.asahi.com/digital/nikkanko/NKK201207200019.html
820デフォルトの名無しさん:2012/10/08(月) 09:32:39.56
>818
* html = urllib2.urlopen(get_url).read()
 書き捨てのコード以外では、推奨しない。404 の場合に エラーページのHTMLを所得してしまう。

* lxml.html.parse は引数にurlを取れる。404 の場合は IOError 例外が投げられます。

喫茶店のWiFiとかで繋ぐと、(そこのアカウントに)ログインする前は、
IPアドレスだけ振られて、404じゃなくてログイン画面が返ってくることがあるんだよね。
そういうの検出するにはどうすれば良い?
821デフォルトの名無しさん:2012/10/08(月) 09:41:10.80
       //
     /  /   バカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ 馬鹿には無理
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
822デフォルトの名無しさん:2012/10/08(月) 09:46:14.17
レスポンスの内容見て判断するっきゃないじゃないですか
他に判断要素ないんだし
823デフォルトの名無しさん:2012/10/08(月) 09:48:44.06
結局そうなるなら
* html = urllib2.urlopen(get_url).read()
でも充分ですね
824デフォルトの名無しさん:2012/10/08(月) 09:58:57.57
そう思うなら、そうじゃね。
好きにすればいいと思うよ。
825デフォルトの名無しさん:2012/10/08(月) 10:14:08.86
レスポンスコードを・・・Pythonの話じゃなかったか
826818:2012/10/08(月) 11:46:36.95
>>820

response = urlopen(url)
response.geturl() で目的のURLになってるかどうか確認する。
リダイレクトされてたらそのログインページのURLが入ってるはず。
827デフォルトの名無しさん:2012/10/08(月) 12:42:49.58
ありがとうございます
lxml.html.parse でも同じことは出来ますか?
828デフォルトの名無しさん:2012/10/08(月) 12:52:34.76
>>827
自分で調べたら?
http://lxml.de/lxmlhtml.html
829デフォルトの名無しさん:2012/10/08(月) 13:12:49.05
出来ないなら出来ないって率直に言った方が良いですよ
830デフォルトの名無しさん:2012/10/08(月) 13:15:30.85
じゃあ出来る
831818:2012/10/08(月) 13:31:45.41
urlで読み込めるのは libxml2 側の機能なのでPythonから拡張するのは難しいよ。

掛かる手間を考えると良いアプローチだとは思えないので、
たいして調べてないけど、出来たとしてもコード量が増えるのは確実だと思う。

代案:

res = urlopen(url)
if res.geturl() == url: # != login_url にすべきかな。その辺は状況に応じて
  doc = lxml.html.parse(res)
832デフォルトの名無しさん:2012/10/08(月) 15:02:15.80
何気に良スレ
833デフォルトの名無しさん:2012/10/08(月) 16:30:53.53
834デフォルトの名無しさん:2012/10/08(月) 17:37:44.11
>>821
ちょっと可愛いじゃないか
835デフォルトの名無しさん:2012/10/08(月) 17:56:28.85
クソスレ
836デフォルトの名無しさん:2012/10/08(月) 20:54:06.17
ローマ数字を整数に変換して計算するモジュールを作成しました
importしたときに予め0から1000までのローマ数字を使えるように
モジュール内でインスタンス化させたいのですが

Z = MyClass(0)
I = MyClass(1)
II = MyClass(2)

と書いていくと1000行以上のコードになってしまうため

for i in range(1000):
インスタンス名 = MyClass[i]
というようにループなどで短くまとめたいのですが、何か方法はないでしょうか

インスタンス名は
>>> print(VII+III)
>>> X
というような処理をさせたいので、ローマ数字にしておく必要があります
837デフォルトの名無しさん:2012/10/08(月) 21:07:00.33
数字→文字の変換ができてるなら下記を応用すればいける

_module_self = sys.modules[__name__]
setattr(_module_self, 'ローマ数字文字列', 数字)
838デフォルトの名無しさん:2012/10/08(月) 21:16:22.62
Dive Into Python 3 にまんまおんなじ事するコード例あるよね。
839838:2012/10/08(月) 21:17:10.10
まちがえた。なかったことにしてくれ。
840デフォルトの名無しさん:2012/10/08(月) 21:18:43.31
ツイッターじゃないから、そんなことは出来ない
841デフォルトの名無しさん:2012/10/08(月) 21:19:35.99
<●><●>
842デフォルトの名無しさん:2012/10/08(月) 21:20:40.04
>>836

globals()["I"] = MyClass(1) が多分一番手軽。(スコープに注意。top-levelなら locals() でも可。関数内なら globals())

他には {types.ModuleType でモジュールのインスタンスを作って 辞書を追加 (module.__dict__.update(mapping))という方法もある。

疑問があるのだけど I += II したりすると困らない?
843デフォルトの名無しさん:2012/10/08(月) 21:20:50.06
>>837
ありがとうございます
なんとかなりそうです
844デフォルトの名無しさん:2012/10/08(月) 21:24:49.18
>>842
すみません、リロードしていませんでした
単純な計算しかできないので
I+=IIというような処理はできないです

アドバイスありがとうございます
845760:2012/10/08(月) 22:56:39.81
>>818
遅くなりましたが、丁寧なアドバイスありがとうございます。
参考に修正させていただきます。
なかなか内包表記なんかは慣れませんが精進したいと思います。
846デフォルトの名無しさん:2012/10/09(火) 16:08:07.07
Pythonで初めてプログラミングを勉強しております。
Python 3.2とFlaskをサーバーに入れています。

ウェブページのフォームから辞書にkeyとvalueを登録したいと思い、
以下のような関数を作ってみたのですが、うまく登録できません。

ウェブページのフォームからkey=hoge&value=piyoをPOSTします。
確認のため、関数の戻り値をreturn dictionary['hoge']とするのですが、
HTTP/1.1 500 INTERNAL SERVER ERROR
KeyError: 'hoge'
と、一連のエラーコードが返ってしまいます。
関数の戻り値をdictionary['shortcut']とするとpiyoが表示されるので
'hoge'が辞書にkeyとして登録できず、変数に使った'shortcut'が
そのまま辞書のkeyに登録されてしまっているようです。

どこを直せばよいのでしょうか。
それとも何か根本的に誤っているのでしょうか?

@app.route("/add_dictionary", methods=['PUT', 'POST'])
def add_dictionary():
shortcut = request.form.get('key')
dictionary['shortcut'] = request.form.get('value')
return dictionary['hoge']
847デフォルトの名無しさん:2012/10/09(火) 16:12:08.93
よく見るんだ↓
dictionary['shortcut'] = request.form.get('value')
848デフォルトの名無しさん:2012/10/09(火) 16:27:09.88
関数の処理の結果を戻り値ではなく渡した引数に入れるメリットってなんでしょう?
(とある3DソフトのAPIの設計がそんな感じでした)
849846:2012/10/09(火) 17:12:22.44
>>847
dictionary[str(shortcut)] = request.form.get('value')
ですね!わかりました!!ありがとうございます!!!
850デフォルトの名無しさん:2012/10/09(火) 17:25:25.26
>>849
【審議中】
        ♪      ∧,, ∧            ♪
♪          ∧,, ∧ ・ω・)
         ∧,, ∧ ・ω・)   )
    ♪∧,, ∧ ・ω・)   )っ__フ   ♪    ∧,, ∧
  ∧,, ∧ ・ω・)   )っ__フ(_/ 彡    .∧,, ∧    )
 ( ・ω・)   )っ__フ(_/彡    ∧,, ∧    )   )
 (っ  )っ__フ(_/彡    .∧,, ∧    )   ) Οノ
  ( __フ(_/彡   ∧,, ∧    )   ) Οノ ヽ_)
   (_/彡      (    )   ) Οノ 'ヽ_)
            (    )  Οノ 'ヽ_)
           (ゝ. Οノ 'ヽ_)      ♪
     ♪    ミ  ヽ_
851デフォルトの名無しさん:2012/10/09(火) 18:13:02.05
>>848
CでもJavaでもそんなのはごく当たり前に行われてるだろ
副作用恐怖症の関数言語馬鹿なのか?
852デフォルトの名無しさん:2012/10/09(火) 18:36:36.58
>>844
定数にしたくなるんじゃないかなと思ったけど、杞憂だったみたいですね。
追記: 数字 -> 文字 を MyClass の __str__ に実装してれば、辞書内包で一括登録できそうです。

globals().update({str(x):x for x in map(MyClass,range(1000))})

# ※ モジュールのトップレベルで実行する場合、2.x では内包表記の一時変数が外に残ることに注意。


>>848
内部で使ってると思われるC言語のライブラリに合わせてるんじゃないかな。(予想)
成否判定を戻り値にしてデータは引数で与えたアドレスに渡して貰うという仕様のAPIは多い。

例外をサポートしてて多値も返せるPythonでは、メリットは思い当たらない。
853デフォルトの名無しさん:2012/10/09(火) 19:27:04.61
今日もようやく脱超初心者したばかりの初心者が煽ってるな
854デフォルトの名無しさん:2012/10/09(火) 23:55:18.89
>>853
いいんじゃないかな。
そうやって成長していけば。
おかしいところがあればあなたが指摘してあげて。
そうすることであなたも成長できるのだから。
855デフォルトの名無しさん:2012/10/10(水) 00:10:22.23
うぜえ消えろ
856848:2012/10/10(水) 02:20:27.25
>>852
その通りでした
C++のAPIに合わせようとして色々無理が生じてきているので
最新版でPythonらしいAPIを新たに作っているとありました
857デフォルトの名無しさん:2012/10/10(水) 13:40:23.07
>>855
怒らないで
そうすることであなたも成長できるのだから
858デフォルトの名無しさん:2012/10/10(水) 15:15:28.02
黙れチョン工作員
859デフォルトの名無しさん:2012/10/10(水) 19:01:43.16
pass
860デフォルトの名無しさん:2012/10/11(木) 01:46:38.65
861デフォルトの名無しさん:2012/10/11(木) 01:51:15.41
本はともかく公式のドキュメントに目を通さないのは大間違い
862デフォルトの名無しさん:2012/10/11(木) 15:58:38.61
そうすることであなたも成長できるのだから
863デフォルトの名無しさん:2012/10/12(金) 02:55:44.17
utf-8で流れてくるバイナリストリームデータを、cp932に変換するにはどうしたらいいですか?
codecsモジュールを使うらしいまではわかったんですが。。。
Python2.7です。
864デフォルトの名無しさん:2012/10/12(金) 04:37:29.27
       //
     /  /   バカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ 馬鹿には無理
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
865デフォルトの名無しさん:2012/10/12(金) 05:03:41.79
>>863
凝ったことする必要がなければ
cp932buf = u8buf.decode('utf-8').encode('cp932')
866デフォルトの名無しさん:2012/10/12(金) 07:58:37.05
>>865
unicodeやstrではなく、ストリームデータを扱っています。
867デフォルトの名無しさん:2012/10/12(金) 08:22:11.79
>>863
ストリームが file-like なオブジェクトだったら

new_stream = codecs.EncodedFile(stream, "utf-8", "cp932")

出力先もストリームの場合は、
入出力双方のストリームでそれぞれdecode,encodeするようにすると、Python内ではunicodeで文字列処理できる。
# Python 内で cp932 の文字列に対して処理をする必要がなければ、encode,decodeを一緒にせず別けた方がいい。=> 他のencodingに対応しやすい

input_stream = codecs.getreader("utf8")(utf8_stream)
output_stream = codecs.getwriter("cp932")(sys.stdout)

対象がイテレータ系のオブジェクトの場合は iterencode,iterdecode が使えそうだけど・・・
encodeとdecode両方を同時に行いたいなら、一手間かけてwrapper関数か新たなジェネレータを作った方が良いかもしれない。


ストリームに対して codecs を使う利点は、
文字列のencode,decodeメソッドだと毎回codecsのlookupが発生するのに対し(一応キャッシュはされてる)
予めlookupしたcodecからencode,decodeの関数を準備しておけるので、多少の効率upが期待できます。
868867:2012/10/12(金) 08:32:44.98
>>866
ん?ストリームデータって?具体的にはPythonでは、どんな型?
ストリームから utf-8文字を読み出して decode/encode って出来るはずだけど。

>865の方法が無理なら codecs も使えないよ。最終的には文字列に変換出来ないとだめ。

ソケットの事を言ってるなら、普通に読み出しすれば文字列を得られるし、
socketのmakefileメソッド で file オブジェクトを得られる。
869デフォルトの名無しさん:2012/10/12(金) 09:08:37.32
>ストリームから utf-8文字を読み出して decode/encode って出来るはずだけど。

例えば、まだ2バイトしか届いていないときはどうしますか?
870デフォルトの名無しさん:2012/10/12(金) 09:21:43.58
>>869
3バイト目が届くまで待つ
http://ja.wikipedia.org/wiki/UTF-8
871デフォルトの名無しさん:2012/10/12(金) 10:02:28.39
>869
行読み込みやバッファ用意して処理する。

そういった理由だったら納得。何か特殊なデータ型かと思った。ストリームの中身のデータの型はstr だよね?
codecs 使えば、内部の IncrementalDecoder/Encoder がマルチバイト文字の境界を考慮したバッファ管理を行ってくれます。
872デフォルトの名無しさん:2012/10/12(金) 12:00:57.57
あ〜あ…
873デフォルトの名無しさん:2012/10/12(金) 12:06:14.18
shelveで、「書き込みが完了するまで処理を待つ」ということはできないでしょうか?

メモシステムのようなものを作っているのですが、メモの保存処理をしたあとにすぐにメモ一覧を出すと、直前に保存したメモが表示されないことがあります。
一覧の更新をすると表示されるようになるので、書き込みが完了する前に読み出しを行なってのかと思われます。

ですので、保存処理を行い、その保存処理の中で書き込みが完了するまで待ち、書き込みが完了すれば一覧に遷移するという処理ができないかと思っております。

現在はとりあえずsleep()で1秒待っているのですが、1秒で書き込まれる保証もないかと思うので、なにか確実な方法があればお教え頂ければと思います。
874デフォルトの名無しさん:2012/10/12(金) 12:13:03.14
syncとかcloseとか試してみたぁ?
875873:2012/10/12(金) 13:52:31.00
>>874
はい。デフォルトの状態だと書き込みのされるタイミングが不定だったため、writebackをTrueにした状態で書き込み直後に意図的に.sync()をするようにしておりますが、同様の症状になります。

.close()は意図的には行なっていなかったのですが、意図的に.close()を試してみたのですが同様の症状でした。
876デフォルトの名無しさん:2012/10/12(金) 17:10:05.44
>>868
>865の方法が無理なら codecs も使えないよ。最終的には文字列に変換出来ないとだめ。

865のコードはこうなっているんだけど、
>cp932buf = u8buf.decode('utf-8').encode('cp932')

ここでu8bufやcp932bufは何オブジェクトなの?
ぱっと見で、両方ともstr (python2系) だとおもったので、>>866
>unicodeやstrではなく、ストリームデータを扱っています。
と書いた。
#知りたいのはストリームのときにどうするかなのに、strでのやり方を書かれても。
877デフォルトの名無しさん:2012/10/12(金) 19:36:00.05
       //
     /  /   バカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ 馬鹿には無理
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
878デフォルトの名無しさん:2012/10/14(日) 11:22:00.17
867が答えを書いてるじゃん。これじゃだめなの?
あとはお前さんが言う「ストリーム」をfile-likeオブジェクトとしてラップしれやればいいだけ。
879デフォルトの名無しさん:2012/10/14(日) 14:46:23.99
ぬーん
880デフォルトの名無しさん:2012/10/14(日) 18:42:24.41
>>873
ロックを使わずに並列に読み出そうとしてない?

メモ一覧を読み出すのがマルチスレッドな場合(GUI等)だったら、
ロック(fctl.flock等, windoesの場合は知らない)を使って書き込みが完了するまで待たせるようにする。
スレッド間の同期のみでいいなら、mutexでも可。

>>875
プロセス内で単一のshelve のオブジェクトを使い回ししてるのと、
読み出される処理は別の関数で、別々にshelve.open して読み出されてるとで、状況が変わってきそう。

書き込み後、*その書き込みをしてる関数内で* 一覧を表示してみて、きちんと表示されてますか?
881デフォルトの名無しさん:2012/10/14(日) 20:16:24.76
882デフォルトの名無しさん:2012/10/15(月) 00:14:50.49
gdbmモジュールがWindowsでも使えたらすごく便利なんだけどねぇ。
単なるkey-valueの格納にSQLiteを使うのは嫌だし、効率も悪い。
883デフォルトの名無しさん:2012/10/15(月) 00:28:04.39
memcached
884デフォルトの名無しさん:2012/10/15(月) 05:35:10.68
dict
885デフォルトの名無しさん:2012/10/15(月) 05:47:52.19
memcached ってデータ消えなかったっけ?ファイルに保存って出来るの?
886デフォルトの名無しさん:2012/10/15(月) 06:49:02.42
numpy
887デフォルトの名無しさん:2012/10/15(月) 09:00:25.79
>>895
pickle
888デフォルトの名無しさん:2012/10/15(月) 09:57:39.58
memcachedはクラサバかつ揮発性だし、
pickleはオンメモリじゃないと使えないから大きなデータは格納できない。
889デフォルトの名無しさん:2012/10/15(月) 10:24:12.93
へ?
890デフォルトの名無しさん:2012/10/15(月) 10:35:49.14
ほ?
891デフォルトの名無しさん:2012/10/15(月) 11:51:27.66
>>882
http://www.gnu.org.ua/software/gdbm/
自分でmakeするよろし
892デフォルトの名無しさん:2012/10/15(月) 12:07:51.23
>>882
どれくらいの大きさのkey-valueになるの?
SQLiteで十分じゃないの?って思う
性能の要件とかあるの?
dict and pickleで良いとも思うし
memcachedもクラサバ両方を書き出せばいいし
893デフォルトの名無しさん:2012/10/15(月) 12:29:31.03
numpyでいいじゃん
894デフォルトの名無しさん:2012/10/15(月) 13:18:47.87
NumPyは関係ないだろ。
895デフォルトの名無しさん:2012/10/15(月) 14:42:59.81
>>882
2系ならbsddbがWindowsでもつかえたと思うけど
896not 882:2012/10/16(火) 10:44:00.02
>>895
> バージョン 2.6 で撤廃: bsddb モジュールは、 Python 3.0 では削除されるので、非推奨です。

との事。手元のActivePython(win32) 2.6.5/2.7.2 には既に入ってなかった。(公式、他は未確認)
2系のソース・レポジトリには残ってるけど、ビルドする手間や後々の事を考えると、
新規の場合は、他の保守されてる データベースのモジュールをインストールした方がいいと思う。
897デフォルトの名無しさん:2012/10/16(火) 10:51:11.66
1000ならanydbm/dumbdbmが爆速
898デフォルトの名無しさん:2012/10/17(水) 00:56:00.05
booksという変数に外部APIから取得したデータを格納し、欲しいデータはbooks.textにあるとします
ただしAPIの挙動によって「books自体が空」「booksは存在するがbooks.textは存在しない」といった事が起ります
その両方に対応するために以下のコードを書きました これをもっと短く書く方法は無いでしょうか?
try:
 book_name = books.text
except:
 pass
上記のようなコードが20箇所程度あって見た目も保守性も悲惨な事になってしまっています
899デフォルトの名無しさん:2012/10/17(水) 03:48:55.66
>>898
コンパクトに書くだけなら、getattr(books, "text", None) とも書ける。

コードの保守を考えるなら、関数にするかオブジェクトをwrapするクラスを作った方がいいね。
__getattribute__ 辺りで属性のカスタマイズ出来るけど、別名でメソッドかプロパティ作った方が楽。

例外を使う場合、例外を捕捉する所は except AttributeError: にしよう
900デフォルトの名無しさん:2012/10/17(水) 03:55:04.72
>>898
読み違えた。そのコードだと text属性が無いときは book_name は未定義?
901デフォルトの名無しさん:2012/10/17(水) 09:21:15.32
def get_bookname(books):
if isinstance(books, Book):
book_name = books.text
else:
book_name = ''
return book_name
902デフォルトの名無しさん:2012/10/17(水) 10:35:17.92
馬鹿には無理
903デフォルトの名無しさん:2012/10/17(水) 11:32:23.25
動くのならば 動くのならば
904デフォルトの名無しさん:2012/10/17(水) 11:52:12.87
GAEの質問はここで良いでしょうか?
905デフォルトの名無しさん:2012/10/17(水) 11:56:40.02
Google App Engine for Python 4アプ目
http://kohada.2ch.net/test/read.cgi/php/1302598469/
906デフォルトの名無しさん:2012/10/17(水) 14:00:56.39
pyramidってどういう場面で使ってる?
907デフォルトの名無しさん:2012/10/17(水) 14:04:25.88
王族のお墓として
908デフォルトの名無しさん:2012/10/17(水) 14:10:41.00
おとなしくdjangoから見てみることにします
909デフォルトの名無しさん:2012/10/17(水) 17:00:29.15
Flask作者の名前ってコナンからとってんのかー
910デフォルトの名無しさん:2012/10/18(木) 00:52:46.23
Steamのアカウントでコナンの光彦の画像使ってたから、たぶんそうだね。
911デフォルトの名無しさん:2012/10/18(木) 02:29:01.19
>>901
>898より
a.「books自体が空」
b.「booksは存在するがbooks.textは存在しない」
 b.1. Bookインスタンスを返すが text がない
 b.2. Book以外のインスタンスを返すので textがない
c. books.text が存在する

isinstanceでの型チェックのみでは、(b.1)のケースで、属性が動的に設定されるといった場合を判別できない。
Pythonでは、こういった場合は大抵、アクセスしてみてAttributeErrorを捕まえるか、getattr/hasattr等で処理します。

def get_bookname(books):
    return getattr(books,"text","") if books else ""
912デフォルトの名無しさん:2012/10/18(木) 05:01:15.70
python3での質問です
2つのリストに存在する共通の値を削除したいのですが
ループを使わずに共通の値を発見する方法はありますか?
例:
list1 = ["a", "b", "c", "d", "e"]
list2 = ["e", "f", "g", "h", "i"]

# 共通の値を発見して削除、 この場合は"e"
# 結果:
list1 = ["a", "b", "c", "d"]
list2 = ["f", "g", "h", "i"]
913デフォルトの名無しさん:2012/10/18(木) 05:10:06.14
set(list1) & set(list2)
914デフォルトの名無しさん:2012/10/18(木) 05:18:40.37
>>913
ありがとうございます
915デフォルトの名無しさん:2012/10/18(木) 13:38:36.44
Python3.3のライブラリリファレンスの見方で質問です。
Fileオブジェクトの関数をさがしてるのですがみつけられません。
2.7だとhttp://docs.python.org/library/index.html の5.9にFile Objectとあるのですが

http://docs.python.org/py3k/library/index.html にはありません。
どこをどうみればいいんでしょうか?
916デフォルトの名無しさん:2012/10/18(木) 13:55:09.38
よ!
917デフォルトの名無しさん:2012/10/18(木) 14:05:00.48
>>915
Python 3 では、I/O関係は ioモジュールにまとめられて、内部的にはJavaのI/O周りみたいになってます。

open() は io.open() のエイリアスで、ファイルを開くためのヘルパ関数。

open("hoge.txt", mode="r", encoding="utf-8") は
io.TextIOWrapper(io.BufferedReader(io.FileIO("hoge.txt")), encoding="utf-8") を作る。

open("hoge.bin", mode="rb") は
io.BufferedReader(io.FileIO("hoge.bin")) を作る。
918デフォルトの名無しさん:2012/10/18(木) 14:06:13.90
>>915
io moduleに移動した
919デフォルトの名無しさん:2012/10/18(木) 14:18:56.09
整理しないと良くわからんな
920デフォルトの名無しさん:2012/10/18(木) 14:57:57.10
わからんね
921デフォルトの名無しさん:2012/10/18(木) 15:21:47.48
一人で大丈夫?gankいかなくていいかい?
922デフォルトの名無しさん:2012/10/18(木) 15:32:12.17
まず、Dive Into Python 3読め
初心者用の解説に書いてあることだから、
そっちを先に読もうよ
ライブラリリファレンスを参照して目的の関数を探すのは、
ある程度上級者になってからでいいのでは?
初心者の勉強の仕方ではないと思うよ
923デフォルトの名無しさん:2012/10/18(木) 19:39:18.83
              .....┏┓      ..┏┓┏┓┏━┓      ┏┓   ┏┓        ┏┓┏┓┏━┓     ...┏┓
     __      i⌒i ┏┛┗┓      ┃┣┛┗┫□┣┓     ┃┃ ┏┛┗┓      ┃┣┛┗┫□┣┓    .┃┃
./    O   Oヽ   | ┗┓┏╋┳━━┫┣┓┏┻━┫┃  ┏┓┃┃ ┗┓┏╋┳━━┫┣┓┏┻━┫┃  ┏┓┃┃
〈      |―/  | ノノ┏┛┗┻╋━┓┃┣┛┗┓  ┃┃  ┃┃┗┛ ┏┛┗┻╋━┓┃┣┛┗┓  ┃┃  ┃┃┗┛
ヽ.      V   ノ  ...┃┃┏┓┃┏┛┃┃□┏┛  ┃┗┓┗┛┏┓ ┃┃┏┓┃┏┛┃┃□┏┛  ┃┗┓┗┛┏┓
     ( ̄ ̄ ノノ   ┗━┛┗┛┗━┻┻━┛    ┗━┛   ┗┛ ┗━┛┗┛┗━┻┻━┛  ...┗━┛   ┗┛
924デフォルトの名無しさん:2012/10/18(木) 19:41:23.06
卑猥
925デフォルトの名無しさん:2012/10/18(木) 20:10:51.20
おちんちん
926デフォルトの名無しさん:2012/10/18(木) 22:07:23.89
どしたん急に
927デフォルトの名無しさん:2012/10/18(木) 22:58:02.17
PyChinko
928デフォルトの名無しさん:2012/10/19(金) 08:06:03.99
おっぱい村
929デフォルトの名無しさん:2012/10/19(金) 10:06:28.60
[%(levelname)s] [%(asctime)s] (%(threadName)-10s) %(message)s
この文字列をconfigparserで読みたいんだけどどうエスケープして書けばいい??
930デフォルトの名無しさん:2012/10/19(金) 10:16:58.56
>>929
すまん自己解決
%%だったよ
931デフォルトの名無しさん:2012/10/19(金) 22:25:45.05
解決済みみたいなので、余談になるけど
3系(3.2以降?) だと configparser/loggingとも {} 表記の書式でも書ける様に設定できるみたい。
デフォルトではどちらも % 表記なので、移植性・手間的にはエスケープが安易。

configparserで辞書展開が不要なら以下のように、interpolationで振る舞いを変更出来る。

config = configparser.ConfigParser(interpolation=configparser.Interpolation())

loggingの方は、logging.Formatter や logging.basicConfig の style オプションで変更出来ます。
932デフォルトの名無しさん:2012/10/20(土) 09:33:07.09
ループ回数を示す数字を1から3まで変数に代入しながら回したい時、
for i in range(1,4)というふうに、わざわざtoの数字を
+1しないといけないのがどうにも性に合わないのですが
みなさんは気になりませんか?
933デフォルトの名無しさん:2012/10/20(土) 10:06:36.58
1から3まで変数に代入しながら回したい時は
for i in range(3)
 a = i + 1
というふうにするよ
934デフォルトの名無しさん:2012/10/20(土) 10:39:50.03
>>933
サンクスです。
+1は避けられないのですね。
rubyみたく、1..3という表記ができれば
直感的でよいのですが。
ちょっと作者に要望出してみます。
935デフォルトの名無しさん:2012/10/20(土) 10:58:06.49
>>934
作者だけど却下
936デフォルトの名無しさん:2012/10/20(土) 11:02:34.05
>932 はそろそろ 0 を発見した現代人のレベルに追い付くべきだと思うの
937デフォルトの名無しさん:2012/10/20(土) 11:07:15.83
>>935
わぁMatzだ!サインください!
938デフォルトの名無しさん:2012/10/20(土) 11:13:46.68
>>934
汎用的にはシーケンスの開始は0からだし
n個、n回繰り返すということを踏まえ
for(int i = 0; i < n; i++)
から考えれば何ら不思議はない
どうしてもi<=n的にしたいのなら
好きなようにラッパー関数でも
イテレータでもwhileでも書いて
さもなくばRubyに帰ってください
939デフォルトの名無しさん:2012/10/20(土) 11:36:41.04
>>938
不思議とは言っていません。
直感的でないということです。
1,3の形式は残して構いませんから
1..3形式も追加してくれるよう頼んでみます。
気分次第で対応してくれるかも知れません。
何事も言ってみるものですよ。
940デフォルトの名無しさん:2012/10/20(土) 11:40:27.23
>>939
却下って言ってるだろハゲ
941デフォルトの名無しさん:2012/10/20(土) 11:43:23.69
方法は一つを標榜してるのに気分で対応ってことはない
942デフォルトの名無しさん:2012/10/20(土) 11:59:18.43
いやさあ、rangeはforと違ってただのリスト返す関数なんだから、自分で関数作れば良くね?
943デフォルトの名無しさん:2012/10/20(土) 12:12:35.77
>>937
なんでそっちの・・・
944デフォルトの名無しさん:2012/10/20(土) 12:31:12.94
Python 習い初めのときは
直感的じゃないとか思ったけど
結局慣れの問題なんだよね

文字列分割するときに
abcdef -> abc def

s="abcdef"
s[:3]
s[3:]
と書けるのは直感的だよね
945デフォルトの名無しさん:2012/10/20(土) 15:10:30.53
range(0, 3) -> [0, 1, 2]

これのどこが非直感的なのか分からない。数学苦手なのか?
946デフォルトの名無しさん:2012/10/20(土) 15:11:05.65
[0, 3)
947デフォルトの名無しさん:2012/10/20(土) 15:26:40.75
>>942
超初心者ですからそれは難しいです。
数値だけでなく、3のところが何かの変数であっても
対応できなければなりません。
おそらくPythonのソースレベルから改造が必要では?

>>945
fromとtoの両方を書かせていながら
fromは含んでtoは含まないっていうのは、そういうルールであるとは
理解しますが、直感的でないと思います。
VisualBasicのように、For i = 1 To 3と書けば3を含む言語もありますし。
…ちなみに数学は高校時代零点の常習犯でしたが
関係あるんですかね。
948デフォルトの名無しさん:2012/10/20(土) 15:29:09.26
rangeはstart,stopでfrom,toじゃないよ
949デフォルトの名無しさん:2012/10/20(土) 15:29:21.75
よく考えると算数の知識がまったくなければ
a = b + 3
という表記も非直感的であって、
突き詰めればCOBOL流に行き着くわけですね。
ADD 3 TO b GIVING b
950デフォルトの名無しさん:2012/10/20(土) 15:32:08.52
ADD 3 TO a GIVING b
951デフォルトの名無しさん:2012/10/20(土) 15:40:12.88
>>949
算数知ってるだけでも直感的じゃないんでは?
= を代入って決めたのはFORTRANが最初?
952デフォルトの名無しさん:2012/10/20(土) 16:31:42.98
>947
おおいに関係ある
953デフォルトの名無しさん:2012/10/20(土) 16:36:03.52

くだすれPython(超初心者用) その15
http://toro.2ch.net/test/read.cgi/tech/1350718465/
954デフォルトの名無しさん:2012/10/20(土) 16:37:59.20
乙py
955デフォルトの名無しさん:2012/10/20(土) 16:41:16.62
>>947
難しくねーよ。何言ってんだ
956デフォルトの名無しさん:2012/10/20(土) 18:40:01.49
末端は 最後+1 で表わすのが慣例なのよ。
Rubyの
3...5 -> [3, 4]
3..5 -> [3, 4, 5]
みたいな記法は、一見便利そうに見えて、実際には
「えーっとこれはどっちだったっけ」って混乱するし、
おまけに視覚的にも判別しにくいし、最終的に精神病で死ぬ。
957デフォルトの名無しさん:2012/10/20(土) 18:50:06.51
変なひと・・・>>947
958デフォルトの名無しさん:2012/10/20(土) 20:01:02.86
Pythonはスライスもおかしい。
[3:4]で文字の3つ目〜4つ目を切り出すのが直感的な動作と思います。
COBOLなんかはそうなっています。
なのにPythonでは、3つ目のみを取り出す動作となります。
これは[3:3]が空リストを返すという意味のない動作をすることから見ても
明らかにおかしな仕様と思われます。
これも一緒に要望出してきます。ではいろいろ教えてくれてありがとう。
959デフォルトの名無しさん:2012/10/20(土) 20:04:23.72
[m:m+n] でn==0のとき空リストが返ってくるのは分かり易いじゃん
960デフォルトの名無しさん:2012/10/20(土) 20:10:58.00
宇宙人から見れば地球人がおかしなことしてるように見えるのと同じこと
961デフォルトの名無しさん:2012/10/20(土) 20:12:58.11
どうやって要望を出すのかは知らんが,もしその要望が出たら全力で潰しにいかないとダメだな.
まあそこまでしなくても門前払いされるのがオチだと思うが.
962デフォルトの名無しさん:2012/10/20(土) 20:14:01.21
スライスの変更なんて破壊的どころの騒ぎじゃない
1からやり直すレベル
963デフォルトの名無しさん:2012/10/20(土) 20:15:04.12
Rubyと違って日本語じゃ要望出せないから気にしなくておk
964デフォルトの名無しさん:2012/10/20(土) 20:16:15.09
python-ideasに流暢な英語で要望が出されて住人が凹む流れはやめてください

スライスの動作の説明はこれが有名
http://www.python.jp/doc/release/tutorial/introduction.html#tut-strings
965デフォルトの名無しさん:2012/10/20(土) 20:22:17.91
いや、流暢な英語で要望出されても良いよ
絶対に通らないから
966デフォルトの名無しさん:2012/10/20(土) 20:31:52.76
できればユリシーズばりに精緻を凝らした文章で頼む
967デフォルトの名無しさん:2012/10/20(土) 21:11:39.61
この人は冗談で言ってるのか、本気で言ってるのか判断できない。
968デフォルトの名無しさん:2012/10/20(土) 21:40:45.43
自分ビルド作っちゃいなよ
969デフォルトの名無しさん:2012/10/20(土) 22:37:15.02
馬鹿には無理
970デフォルトの名無しさん:2012/10/21(日) 06:29:46.45
> Pythonでは、3つ目のみを取り出す動作となります。

zero origin なので [2] が 3つ目 になります
971デフォルトの名無しさん:2012/10/21(日) 07:51:07.08
クラスメソッドで self がある為に
引数の個数を間違えて呼んだときの
エラーメッセージで出るアドバイスの
引数の個数がずれるのは慣れるまで
訳が判らなくて混乱したわ
しかも省略可能引数があったりして
必須パラメータの個数が変動してるので
エラーメッセージ見たために却って混乱するという
972デフォルトの名無しさん:2012/10/21(日) 08:11:24.66
ごもっとも
973デフォルトの名無しさん:2012/10/21(日) 08:51:06.20
引数の型が期待されてるものと違うときに
n番目の引数の型は何何ってエラー出るけど
n+1番目だかn-1番目だかのことを言ってるのだと
気付くまでに数年掛かったぜ
974デフォルトの名無しさん:2012/10/21(日) 11:27:23.86
975デフォルトの名無しさん:2012/10/21(日) 12:52:32.14
TypeError: foo() takes exactly 3 arguments (2 given)
といったエラーメッセージは 3.3 で変更されてるよ

TypeError: foo() missing 1 required positional argument 'x'
と、具体的に教えてくれるようになった。

3.2 以前なら pylint で、ある程度は、同様のエラーメッセージで教えてくれます。
976デフォルトの名無しさん:2012/10/21(日) 14:52:33.16
そうか
3になって良くなったことも少しはあるんですね(棒)
977デフォルトの名無しさん:2012/10/21(日) 20:22:37.60
やっぱりRubyのほうがまともな言語だよな。
978デフォルトの名無しさん:2012/10/21(日) 21:48:25.28
わざわざ他の言語スレにでてくるようなアホが取り付いてなきゃ
Ruby もいい言語なのかもな…
979デフォルトの名無しさん:2012/10/22(月) 03:00:57.07
始めて覚えた言語がRubyだったオレは上で直感的じゃないと言ってる人の気持ちはわからなくもないけど、
ただ彼は多分Ruby自体も全然勉強してないよね 他の言語もどうせ上っ面でしょ

Rubyの表面をちょこっと知っただけで「直感的最高!非直感的は駄目!」という短絡的思考
それは非直感的なのではなくて、ただ彼が理解できない概念っていうだけでしょ
なおかつ「頼めばなおしてくれるかも」なんていう子供みたいな発想に至るのはヤバ過ぎ
980デフォルトの名無しさん:2012/10/22(月) 03:11:08.24
シーケンスのインデックスを、なぜ1からでなく0から始めたほうが良いのかは
コンピュータサイエンスの基本的な問題だよなあ
ダイクストラ先生のWhy numbering should start at zero
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
とかwikipediaだと
http://en.wikipedia.org/wiki/Zero-based_numbering
981デフォルトの名無しさん:2012/10/22(月) 03:47:09.07
モジュロ関数でマッピングする (i % 5) のに便利
割り算でマッピングする (i / 5) のに便利
a + size * i と記述できて便利
空リストが記述しやすくて便利

ふーむ
982デフォルトの名無しさん:2012/10/22(月) 05:08:29.12
0/1 base はそれぞれ 人間/コンピュータにとって直感的/都合がよいってのがあるけど、

それとは別に、
添字として扱うことを想定された rangeの返す数列を
数値として扱うことのギャップかな?

意味的な事を考えると indexを積算する って処理にはなんか違和感があるね。

終端+1 に馴染めなければ [offset: offset+size] という考え方はどうだろう?
例えば、1から10個分の範囲 range(1, 1+10)

# 11ってマジックナンバーが出てくるのが嫌で、あえてそう記述したりする事はある。
983デフォルトの名無しさん:2012/10/22(月) 05:59:59.26
本来、等差数列のリストを作るための関数であるrangeを
ループのカウンタに流用せざるを得ないPythonのfor文には
柔軟性が欠けていると言えなくもない。

だがそんなことは作者が初心者に指摘されるまでもなく
わかっているはずで、まずいと思ったらとっくに直しているだろう。
直さないということは、プログラミング上は些末な問題に過ぎないということだ。
あきらめて仕様に従うのが大人というものだ。
984デフォルトの名無しさん:2012/10/22(月) 06:18:22.52
それはfor文の考え方を間違ってる。というかC脳に支配されすぎている
リストを辿るからこそ一貫して柔軟な操作が出来るんだろ
985デフォルトの名無しさん:2012/10/22(月) 06:22:23.17
バカでかいリストがあって最初の要素以外を列挙したい場合はどうしたらいいですか?
986デフォルトの名無しさん:2012/10/22(月) 06:22:51.24
list[1:]
987デフォルトの名無しさん:2012/10/22(月) 06:29:37.66
>>986
リストをスライスするとコピーが作成されるのは避けたいです
それともリストを変更するまでコピーを遅延するようなメカニズムがPythonのスライシングには組まれてるのでしょうか
988デフォルトの名無しさん:2012/10/22(月) 06:32:02.76
ビルトインのitertoolsモジュールにisliceクラスがある
でも基本的にコピーオンライトなんてどれでも普通じゃなかったっけ
そもそもリスト自体要素への参照に過ぎなかった気がするが
989デフォルトの名無しさん:2012/10/22(月) 06:46:58.82
isliceいいですね。どうもです
990デフォルトの名無しさん:2012/10/22(月) 06:48:13.27
参照するだけならコピー作られんだろw
991デフォルトの名無しさん:2012/10/22(月) 07:08:11.26
>>985
巨大なリストでコピーを作りたくないって意図なら itertools.islice

>>982 range(1, 1+10)
自己レスだけど、数値直書きだと
始点変えたいだけの場合、変更箇所が3箇所になるので保守性よくないね。
992デフォルトの名無しさん:2012/10/22(月) 09:05:20.76
>991
>982

range(1, 1+10) →じゃなくて→ range(1, 10)
とか
range(2, 2+10) →じゃなくて→ range(2, 10)
とかいう仕様にしとけば良かったのにな
993デフォルトの名無しさん:2012/10/22(月) 09:39:21.06
is-liceと読んでしまった人がここにいます
994デフォルトの名無しさん:2012/10/22(月) 10:03:48.87
これはおこめですか?(誤)
995デフォルトの名無しさん:2012/10/22(月) 12:04:45.61
ボクはココにいるよ
996デフォルトの名無しさん:2012/10/22(月) 12:23:47.44
>>992みたいなアホってプログラミング向いてないからもうパソコン触らないほうがいいと思う
997デフォルトの名無しさん:2012/10/22(月) 13:51:24.74
pass
998デフォルトの名無しさん:2012/10/22(月) 13:54:53.59
 888   888   888 
8   8 8   8 8   8
8   8 8   8 8   8
 888   888   888 
    8     8 8   8
    8     8 8   8
 888   888   888 
999デフォルトの名無しさん:2012/10/22(月) 13:55:48.33
 888   888   888 
8   8 8   8 8   8
8   8 8   8 8   8
 8888  8888  8888
    8     8     8
    8     8     8
 888   888   888 
1000デフォルトの名無しさん:2012/10/22(月) 13:57:07.67
 888   888   888       8
8   8 8   8 8   8     88
8   8 8   8 8   8  8   8
 8888  8888  8888 888  8
    8     8     8  8   8
    8     8     8      8
 888   888   888      888
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。