くだすれPython(超初心者用) その4at TECH
くだすれPython(超初心者用) その4 - 暇つぶし2ch237:デフォルトの名無しさん
09/06/15 11:07:23
URLリンク(newworld.ddo.jp)
の真ん中あたりに。

バージョン 時間(秒)
基本的なループ 3.47
ドットを取り除いたもの 2.45
ローカル変数&ドットなし 1.79
map関数をつかったもの 0.54

238:デフォルトの名無しさん
09/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のインデックスをいちいち指定しないで、
そのまま文字列の場所に入れる方法ってないですか?

239:デフォルトの名無しさん
09/06/15 13:16:36
tuple(a)

240:デフォルトの名無しさん
09/06/15 13:17:46
tuple(A) だろ
もしくは A = (1, 2, 3)

241:デフォルトの名無しさん
09/06/15 13:34:11
ありがとうございます。
タプルの方は出来るのか・・

242:デフォルトの名無しさん
09/06/15 13:34:39
ディクショナリにして使うと、順番も気にしなくていいぞ。

243:デフォルトの名無しさん
09/06/15 18:09:23
print "%d, %d, %d" % *A

244:デフォルトの名無しさん
09/06/15 18:11:16
SyntaxError: invalid syntax

245:デフォルトの名無しさん
09/06/15 18:28:19
print "%d, %d, %d" % (*A)

246:デフォルトの名無しさん
09/06/15 18:53:55
SyntaxError: invalid syntax

247:デフォルトの名無しさん
09/06/15 18:57:05
print A

248:デフォルトの名無しさん
09/06/15 21:24:18
str(A)

249:デフォルトの名無しさん
09/06/15 21:25:06
str(A) .strip('[]')

250:デフォルトの名無しさん
09/06/17 01:51:59
reduce はいらないこだろ。

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

map、filterもなくなるの時間の問題でしょ。

251:デフォルトの名無しさん
09/06/17 02:03:17
>実際3.0からはreduceは無いわけで。

kwsk

252:デフォルトの名無しさん
09/06/17 02:10:36
>>251
3.0からはbuiltin関数ではなくなって、モジュールへと追いやられた。
Guido は、他のmapやfilterもbuiltinからは外すべしと主張してたが、これらは3.0ではなんとか残った。
4.0になったときには、builtinから外れてもなんら不思議ではない。

253:デフォルトの名無しさん
09/06/17 02:27:00
あと、上の方にあるベンチマークだが、
あれはかなり古いPythonのベンチ。


リスト内包表記はバージョンがあがるたびにスピードアップしてて、
現在では、lambdaなしのmapに準ずるほどのベンチスピード。
一方、mapでlambdaを使ったら、リスト内包表記どころか、
通常のforループと同じかそれより遅いぐらいになる。

254:デフォルトの名無しさん
09/06/17 03:58:35
ということは3.0以上ではreduceは
全部リスト内包に置き換えた方がよい
ということですね

255:デフォルトの名無しさん
09/06/17 05:55:35
>>253
それって、リスト内包では評価対象がイテレータになるんで速い、ってことなの?

256:デフォルトの名無しさん
09/06/17 06:36:32
>リスト内包表記はバージョンがあがるたびにスピードアップしてて、
>現在では、lambdaなしのmapに準ずるほどのベンチスピード。

現在とは3.0ですか2.6ですか

257:デフォルトの名無しさん
09/06/17 07:09:21
>>254
reduceをいったいどういう内包表現に置き換える積もりなんだ?

258:デフォルトの名無しさん
09/06/17 12:42:01
>>4-8
おかげさまでうまくいきました
無料の50MBだとコンパイルに失敗(というかソースの展開ですでに失敗)するので
quota3GBのお試し期間を申し込んだら2.5.4をまるごとコンパイルできました
setuptool/mysqldb等も放り込んでMySQLにもアクセスできました
お試し期間が終わるとquotaが50Mに戻るので放っとくとファイルが壊れるそうで
それまでに必要最小限サイズになるように標準ライブラリを削る必要がありました
結局バイナリCGIのケースとやってることはあまり変わらないかもしれません

259:デフォルトの名無しさん
09/06/17 13:47:20
>>253
mapで使う関数は、defしたほうがいいってことですか?
defしたリスト内包表記>defしたmap≒lambdaで書いたリスト内包表記>lambdaで書いたmap≒普通のfor
てことなんすかね。リスト内包表記はCで実装した部分を実行するのが多いってことなんだろか

260:デフォルトの名無しさん
09/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用に用意しなくてもいい)場面のみ。

261:デフォルトの名無しさん
09/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""を使用するとエラーとなります。


262:デフォルトの名無しさん
09/06/19 00:23:39
>>261
>>1

263:デフォルトの名無しさん
09/06/19 01:00:51
>>261
ファイルはちゃんとutf-8で保存してる?
どこに u を付けたの?
なんてエラーがでたの?
それはインタラクティブシェル上?それともファイルに保存したコードを実行したの?
環境はWindows?Linux?Mac?

264:デフォルトの名無しさん
09/06/19 21:45:53
261です。
utf-8の設定ミスでした。お騒がせ致しました。
違うPCでやったのが原因でした。

265:デフォルトの名無しさん
09/06/20 21:17:00
くだらない質問で悪い
文字列フォーマットで
>>>print "%+010.2f" % 100.123
+000100.12
となりますが、この10桁ってのは、符号と小数点(.)も含まれるってことでいいんだよね?



266:デフォルトの名無しさん
09/06/20 23:58:48
>>265
桁というか、文字数、と思ってたわ。
"前に符号付き0埋め10文字、小数点以下2桁の小数点表示"
とおれは理解してた。

267:デフォルトの名無しさん
09/06/21 01:25:44
C とはちがうんだっけ?

268:デフォルトの名無しさん
09/06/21 01:51:43
みんなのPython改訂版って誤字脱字多くね?


269:デフォルトの名無しさん
09/06/21 02:56:07
>>268
多い。かなりイラッときた。

270:デフォルトの名無しさん
09/06/21 03:05:18
みんパイ(笑)

271:デフォルトの名無しさん
09/06/21 03:27:22
はじめてのPython3も誤字脱字が多いですね
正誤表もいまだ出ていません

272:デフォルトの名無しさん
09/06/21 16:53:32
やっぱりみんなも気づいてた?
電話してやろうかと思ってたw
日本語どころかコードも怪しい
変な太字のところとかあるしw

273:デフォルトの名無しさん
09/06/22 01:14:16
定期的にウジ虫が沸くな。

274:デフォルトの名無しさん
09/06/22 01:24:03
よう、ウジ虫!

275:デフォルトの名無しさん
09/06/22 11:41:02
馬鹿にすんな、今成長してハエになったところだぜ?

276:デフォルトの名無しさん
09/06/22 12:23:54
迷惑度急上昇だな。

277:デフォルトの名無しさん
09/06/22 13:21:08
>>274
ウジ虫に失礼だ。ゴキブリと呼べ。

278:デフォルトの名無しさん
09/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彡ノリリリリリゞミミシ     `ヘ、
       ;メ      ヾリリリリノ巛ゞシ       `ヘ、
      ;メ        ``十≡=十´         `ヘ、
                 ノ    ゞ

279:デフォルトの名無しさん
09/06/22 23:15:49
IDLEをコンソールから呼び出すにはどうすりゃいいの。
vimと連携させようと思っているんだけど、IDLEショートカットのプロパティを
みても普通のショートカットと違うみたいで呼び出し方がわからないんだわ。

ちなみに、普通のpythonプロンプトなら
nmap <silent>;py :!"C:\python30\python.exe"<CR>
と_gvimrcに書いておけば;pyと書くだけで呼び出せて便利。

280:デフォルトの名無しさん
09/06/22 23:17:05
『書く』じゃなかった、『コマンド』したら。

281:デフォルトの名無しさん
09/06/23 12:34:36
うじ虫のAA


282:デフォルトの名無しさん
09/06/23 12:36:48
0

283:デフォルトの名無しさん
09/06/23 18:36:18


284:デフォルトの名無しさん
09/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] 指定されたファイルが見つかりません。
というエラーが出てしまいます。どういうことでしょうか

285:デフォルトの名無しさん
09/06/24 23:10:41
よくわからんが、cをforの前に持ってこないとずっと1のままじゃね?

286:デフォルトの名無しさん
09/06/24 23:28:52
俺だったらenumerate使うけど
まぁいいか

287:デフォルトの名無しさん
09/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


288:デフォルトの名無しさん
09/06/25 18:43:09
>>287
スマートな正解をありがとうございます。
とても参考になりました。
renameへの引数はこのようにするんですね!

289:デフォルトの名無しさん
09/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番可愛いです
と表示させたいです

290:デフォルトの名無しさん
09/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])

291:デフォルトの名無しさん
09/06/25 23:58:38
>>289
おまえセンス無いわ

292:デフォルトの名無しさん
09/06/26 02:27:36
センスとか関係ないし
釣りの可能性はあるが

293:デフォルトの名無しさん
09/06/26 02:36:29
でも具体的なコード貼って添削してくれってのはアリだね
初心者に説明してもらってもイミフなケース多いし

294:デフォルトの名無しさん
09/06/26 06:18:15
スレと関係ないんだけどさ、俺「釣り」とか「釣り師」っていうのは、

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

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



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

かと思うんだけど、どうよ?

295:デフォルトの名無しさん
09/06/26 23:25:30
>>294
そんなコピペで

296:デフォルトの名無しさん
09/06/27 00:15:10
他にも添削希望いないのかな

297:デフォルトの名無しさん
09/06/27 14:04:04
Pythonは、あることを書くときに「なるべく誰でも書き方が同じになるようにしよう」
というのはいいです。

でもあることをしたい時に「ライブラリがすごいたくさんあっちゃって混乱してるけど
すきなの選んで」って勘弁してほしいんですが

298:デフォルトの名無しさん
09/06/27 16:49:36
勘弁します

299:デフォルトの名無しさん
09/06/27 22:27:43
>>297
それはPerlのCPANじゃね?
Pythonは標準ライブラリが充実している分、たくさんのサードパーティー
ライブラリの中からマトモなのを探す手間が省けることが多いよ。

300:デフォルトの名無しさん
09/06/28 02:25:50
つきなみだけど
同意

301:デフォルトの名無しさん
09/06/28 09:18:41
FTPで対象のファイルがディレクトリかどうかはどう判断すればいいでしょうか?
マニュアルを見ましたが、該当のコマンドが見つかりませんでした.
URLリンク(www.python.jp)

nlst() で片っ端から試して例外処理で取得する方法を思いつきましたが
もっとスマートな方法はありませんか?

302:デフォルトの名無しさん
09/06/28 11:42:42
ls -lR

303:デフォルトの名無しさん
09/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

304:デフォルトの名無しさん
09/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

がベストかと思うんですが…間違ってますか?

305:デフォルトの名無しさん
09/06/30 22:15:36
最後はprint num でした。度々すいません


306:デフォルトの名無しさん
09/06/30 22:16:13
setでも使え

307:デフォルトの名無しさん
09/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]]

308:デフォルトの名無しさん
09/06/30 22:22:16
set(num) - set(cnt)


309:デフォルトの名無しさん
09/06/30 22:28:35
そういうのも可能なんですね
ありがとうございます。
どーしょーもない質問ですいませんでした

310:デフォルトの名無しさん
09/07/02 18:25:23
ちんこ生えてきた

311:デフォルトの名無しさん
09/07/03 02:41:46
>>310 今度は大事にしろよ。


312:デフォルトの名無しさん
09/07/03 05:25:27

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



313:デフォルトの名無しさん
09/07/03 11:39:22
if文で一度に複数の変数、たとえば
if a>0 and b>0 and c>0:
みたいなのは無理ですか?

314:デフォルトの名無しさん
09/07/03 11:48:17
>>313
そんなの聞くよりやった方が早いだろ。
普通に対話型でもできるし。

315:デフォルトの名無しさん
09/07/03 11:48:33
可能です

316:デフォルトの名無しさん
09/07/03 13:00:10
if 0 < a < 5:
と書いてもエラーにならない処理系はありますか

317:デフォルトの名無しさん
09/07/03 13:02:38
ある

318:デフォルトの名無しさん
09/07/03 13:07:23
Pythonにはない。
あと、エラーにはならなくとも、おもいがけない意味になることもある
(C言語とか)。

319:デフォルトの名無しさん
09/07/03 13:12:13
>>318
>>318
>>318


320:デフォルトの名無しさん
09/07/03 13:22:05
(回答者が)超初心者用

321:デフォルトの名無しさん
09/07/03 13:27:42
Rubyなら全部できるよ^^

322:デフォルトの名無しさん
09/07/03 13:32:12
>>318

323:デフォルトの名無しさん
09/07/03 14:47:17
>>318
0 < (a < 5)
または
(0 < a) < 5
ということですか?


324:デフォルトの名無しさん
09/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


325:デフォルトの名無しさん
09/07/03 15:05:43
>>318

326:デフォルトの名無しさん
09/07/03 16:24:50
じゃあ、俺も一応

>>318

327:デフォルトの名無しさん
09/07/03 17:11:57
0: false
1: true
2: true
3: true
4: true
5: false
になるようにするにはどうすればいいですか

328:デフォルトの名無しさん
09/07/03 17:18:01
>>324
C/C++スレに帰れ

0 < a && a < 5

329:デフォルトの名無しさん
09/07/03 17:21:22
Cはa < b < cはどうやってもダメだけどPythonは意図通りに動くだろ、確か
>>324はきちんと動いてないし

330:デフォルトの名無しさん
09/07/03 17:24:13
きっちり正しく動いていて、書いたほうがアホと言う方が正しい

331:デフォルトの名無しさん
09/07/03 17:28:31
>>318

332:デフォルトの名無しさん
09/07/03 17:43:56
>>330

333:デフォルトの名無しさん
09/07/03 17:44:45
まいんまいん

334:デフォルトの名無しさん
09/07/03 17:47:34
>>318

335:デフォルトの名無しさん
09/07/03 22:17:47
lispで
(< 0 a 5)
当然Rubyなんかには出来ません

336:デフォルトの名無しさん
09/07/03 23:07:38
(setq a 3)
3
(< 0 a 5)
t


>>> a = 3
>>> 0 < a < 5
True

337:デフォルトの名無しさん
09/07/03 23:22:22
a > b > c > dは

t = b
u = c
a > t and t > u and u > d
ってことか。これはきもいなー。
Python3でも変わってないのね。
まあ、気にしないことにしよう。

338:デフォルトの名無しさん
09/07/03 23:27:34
Cをはじめた初心者がうっかりやりがちなぐらい自然な記法なのに!

339:デフォルトの名無しさん
09/07/03 23:31:57
Pythonの三大ステキ機能のひとつにケチをつけるとはいい度胸だ

340:デフォルトの名無しさん
09/07/03 23:45:06
bが最大であることをテストするのに
a < b > c #これはいただけないよね?だからと言って
b == sorted((a, b, c))[2] #これは頭がおかしい

341:デフォルトの名無しさん
09/07/03 23:50:58
Python > Ruby > C

342:デフォルトの名無しさん
09/07/04 00:05:09
(a and c) < b

343:デフォルトの名無しさん
09/07/04 00:09:40
a, b, c, d のなかで bが最大であることをテストするのに
a < b > c に d を加えられない
sorted の方が正解

344:デフォルトの名無しさん
09/07/04 00:11:34
>>342は何がしたいんだ

345:デフォルトの名無しさん
09/07/04 00:12:11
max(a, b, c, d) == b

346:デフォルトの名無しさん
09/07/04 00:15:07
reduce(lambda x, y: y if x < y else x, [5, 2, 7, 3])

347:デフォルトの名無しさん
09/07/04 00:16:53
reduce は 2.6 以上では使えないんだっけ

348:デフォルトの名無しさん
09/07/04 00:19:19
functools.reduce に移動しただけだから問題ないよ

349:デフォルトの名無しさん
09/07/04 00:20:23
any(x < b for x in (a, b, c))だろ、常識的に考えて……


350:デフォルトの名無しさん
09/07/04 00:24:28
つーか、もう比較アルゴリズムの話だろ。

351:デフォルトの名無しさん
09/07/04 00:50:00
web から取ってきた HTML を食わせて、XPath でデータを取り出したい。
正書式でなくても適当によしなに計らってくれるとなお嬉しい。
Ruby だったら Nokogiri みたいだけど、Python では何?

352:デフォルトの名無しさん
09/07/04 00:55:37
>>351
- BeautifulSoup
- lxml

353:デフォルトの名無しさん
09/07/04 01:44:26
>正書式でなくても適当によしなに計らってくれるとなお嬉しい。

lxml だと無理?

354:デフォルトの名無しさん
09/07/04 02:18:39
lxmlもがんばってくれるよ

355:デフォルトの名無しさん
09/07/04 06:15:05
any(x < b for x in (a, b, c))だろ、常識的に考えて……

356:デフォルトの名無しさん
09/07/04 10:06:22
any(b<=x for x in (a, b, c))

357:デフォルトの名無しさん
09/07/07 11:50:56
class Hogeがあったとして、
"Hoge"からはどうやってアクセスするんだっけ?

あと、こういうのを一般的に言って、どんな専門用語でしたっけ?

358:デフォルトの名無しさん
09/07/07 11:53:48
>>357
globals()["Hoge"]

359:デフォルトの名無しさん
09/07/07 12:01:54
>>358
ありがとうございます。

360:デフォルトの名無しさん
09/07/07 12:11:41
イントロスペクションとかリフレクションとかそのへんの用語を求めてる?

361:デフォルトの名無しさん
09/07/07 12:43:47
>>360
イントロスペクションってのは初めて聞いたので、調べてみます。

単に、eval("Hoge")みたいなのと勘違いしていた模様。

362:デフォルトの名無しさん
09/07/07 13:21:52
Hoge.py 内に
class Fuga があったとして、
"Hoge", "Fuga" からはどうやってアクセスするんだっけ?


363:デフォルトの名無しさん
09/07/07 13:23:23
Hoge.py 内に
class Fuga, method Hage があったとして、
"Hoge", "Fuga", "Hage" からはどうやってアクセスするんだっけ?

364:デフォルトの名無しさん
09/07/07 13:31:07
 

365:デフォルトの名無しさん
09/07/07 13:34:51
 

366:デフォルトの名無しさん
09/07/10 09:36:03
age

367:デフォルトの名無しさん
09/07/10 09:49:45
おはようございます。
わたし16歳の女子高生ですけど
Python始めるにあたって最初に読むべき本は
ありますか?

368:デフォルトの名無しさん
09/07/10 10:08:35
ないよ

369:デフォルトの名無しさん
09/07/10 13:44:13
こんにちは。
わたし15歳の巨乳グラビアアイドルなんだけど
みんなでPythonやろうよ。

370:デフォルトの名無しさん
09/07/10 13:59:45
みんなでPython www

371:デフォルトの名無しさん
09/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.

372:デフォルトの名無しさん
09/07/11 05:35:52
chome-chomeとか団塊レベルじゃないと使わないだろう普通

373:デフォルトの名無しさん
09/07/11 06:18:10
コメコメ?アスタリスクのこと?

374:デフォルトの名無しさん
09/07/11 09:33:34
いつもの英語下手なひとか

375:デフォルトの名無しさん
09/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"に
引数を代入したいのですが、可能でしょうか?
可能ならアドバイスをお願いします

376:デフォルトの名無しさん
09/07/11 12:55:13
一つのオプションに対して複数のオプション引数を許したら
後に続くであろう固定引数が存在するかしないか確認する術がない気がする

なので素人考えだけど -f"hoge,piyo" でごまかすとか

377:デフォルトの名無しさん
09/07/11 13:22:26
>>376
レスありがとうございます

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

$ ./fuga hoge_*

のようにコマンドラインからワイルドカードを使用して、
複数のファイル名をオプション引数に渡して利用するのがメインなので
-f"hoge,piyo" ではちょっとごまかせないです。。。

378:デフォルトの名無しさん
09/07/11 17:38:38
そういう場合-fオプションがあったらどういう動作をする、という風に作るものであって
-fオプションにパラメータをぞろぞろ渡すという風にはしないだろ、普通。

379:デフォルトの名無しさん
09/07/11 20:33:47
A/B/__ini__.py で変数を定義
hoge = 'hogehoge'
A/B/module_x.py というモジュール内でhogeを使いたい場合、どうすればいいのかを教えてください。

import hoge
ではダメなんですか?

380:デフォルトの名無しさん
09/07/11 21:02:00
>>379
コピーでよけりゃ
from . import hoge

381:375
09/07/12 02:57:27
>>378
確かに普通はそうかもしれませんね。。。



という訳でOptionParserではワタシがしたいことが出来なさそうなので
自分でモジュールをつくることにしました
どうもありがとうございました


382:デフォルトの名無しさん
09/07/12 03:26:51
どういたしまして

383:デフォルトの名無しさん
09/07/12 07:40:36
>>377
OptionParserなりgetoptで "hoge_*" を文字列として受け取ってから
glob でワイルドカードを展開すればいいんじゃまいか。

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

./fuga -f "hoge_*"

のようにコマンド引数をクオートして書く必要がある。

384:デフォルトの名無しさん
09/07/12 09:37:55
きたああああああああああああああ
UnicodeDecodeError出なくなった!

385:デフォルトの名無しさん
09/07/12 10:08:02
>>384
どうやった?
まさか setdefaultencoding() じゃないよな?

from __future__ import unicode_literals
して、テキストファイルのファイル入出力は
import codecs
codecs.open('foo', encoding='cp932')
のようにエンコーディングを指定してファイルを開くのが正しい方法だぞ。

386:デフォルトの名無しさん
09/07/12 11:45:18
リスト型で日本語を扱う場合一個ずつ取り出さないと文字が化けちゃうんですが
スライスで一度に複数の要素を扱えるようになる方法はないんでしょうか

387:デフォルトの名無しさん
09/07/12 11:54:03
>>386
実際に化ける場合のコードと、「一個ずつ取り出す」のコードを見せてみりゃれ

388:デフォルトの名無しさん
09/07/12 12:11:28
辞書を

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

とJSの連想配列のようにキーをプロパティみたいにして
アクセスしたいんですがどうにか実現できないですか?

389:デフォルトの名無しさん
09/07/12 12:38:09
>>385
フッ…txtをUTF-8で保存することを覚えただけさ

ついでにだけどunicode_literalsって何?
2.5だとimportできなくていいのか?

390:デフォルトの名無しさん
09/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

391:デフォルトの名無しさん
09/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__ を使った方法とかもある。

392:デフォルトの名無しさん
09/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文内のいずれでも化ける

393:デフォルトの名無しさん
09/07/12 13:12:35
抜けてたけど
line_max = len(lines)
です

394:デフォルトの名無しさん
09/07/12 13:13:17
>>391
おお!ありがとうございます!
勉強になりました!

395:デフォルトの名無しさん
09/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]'

396:デフォルトの名無しさん
09/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])) # 連結したい場合

397:デフォルトの名無しさん
09/07/12 16:36:49
エンコーディング方面の問題かと思って
見当違いな方向に進むところでした
ありがとうございました

398:デフォルトの名無しさん
09/07/13 05:48:35
>>390
ありがとう

399:デフォルトの名無しさん
09/07/13 22:41:07
[1,2,3,1,4,5]のようなリストの重複した要素を削除して[1,2,3,4,5]のようなシーケンスを作る。
※並び順は問わない。

set型を使わず、for文とif文を組み合わせるなどして作成する。
模範解答をお願い致します。

400:デフォルトの名無しさん
09/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

401:デフォルトの名無しさん
09/07/13 22:53:49
>>400
レスありがとうございます。
削除する方法ばかり考えてましたが、追加するって考え方もあるんですね
すごく参考になりました。スマートな回答どうもです!

402:デフォルトの名無しさん
09/07/13 22:56:05
a = [1,2,3,1,4,5]
print list(set(a))

403:デフォルトの名無しさん
09/07/13 22:56:27
最初に空リスト作るってのはよくある

404:デフォルトの名無しさん
09/07/14 00:44:04
>>399
set型を使わない理由は?

405:デフォルトの名無しさん
09/07/14 00:52:50
宿題だからでは・・・
あれ、だとすると宿題スレだなw

406:デフォルトの名無しさん
09/07/14 21:09:18
2ちゃんに書き込みたいけどcookieがよく分からん
どうやってResponseから取り出してrequestに追加するの?

407:デフォルトの名無しさん
09/07/14 21:42:01
firefox使えばok

408:デフォルトの名無しさん
09/07/14 21:45:22
というかwgetだけでできるじゃん

409:デフォルトの名無しさん
09/07/15 06:59:12
インスタンスに勝手に属性をつけられないようにはできませんか?
クラスの定義に書いてある属性だけで打ち止めにしたい・・・

410:デフォルトの名無しさん
09/07/15 08:56:43
def __setattr__(self, name, value):
    if hasattr(self, name):
        object.__setattr__(self, name, value)
    else:
        raise AttributeError(name)

411:デフォルトの名無しさん
09/07/15 09:10:10
そうか!
__setattr__ をオーバーロードすればよかったんですね.

412:デフォルトの名無しさん
09/07/15 09:23:09
__slots__ とどこが違うの?

413:410
09/07/15 09:58:48
>>409的なことはやらないから忘れてた

414:デフォルトの名無しさん
09/07/15 10:18:58
>>412
何か文句でも?

415:406
09/07/15 13:29:32
いやPythonから書き込みたいんだけど

416:デフォルトの名無しさん
09/07/15 13:32:20
>>415
spam業者乙!

417:デフォルトの名無しさん
09/07/15 13:34:45
過去スレに(r

418:デフォルトの名無しさん
09/07/15 13:51:46
from cookielib import CookieJar

cj = CookieJar()
cj.extract_cookies(res,req)
cj.add_cookie_header(req)

419:デフォルトの名無しさん
09/07/15 15:44:39
これだな
スレリンク(tech板:14番)

420:デフォルトの名無しさん
09/07/15 15:52:29
フォルダの中にあるtxtファイルを全て読み込むことってできますか?

421:デフォルトの名無しさん
09/07/15 15:54:12
>>420
import glob
for i in glob.glob('*.txt'):
  d = open(i).read()

422:デフォルトの名無しさん
09/07/15 15:58:45
>>421
ありがとうございます
os.walk使って無理矢理やってました

423:デフォルトの名無しさん
09/07/15 16:02:41
glob() はサブディレクトリ見に行かないぜ

424:デフォルトの名無しさん
09/07/15 16:54:45
paverいろいろおすすめ

from paver.path import path
for f in path('.').walkfiles('*.txt'):
    print f

425:デフォルトの名無しさん
09/07/16 05:05:09
くそう・・・なんで俺のコードじゃpickleが使えないんだ・・・
もう寝る

426:デフォルトの名無しさん
09/07/16 15:49:26
gzip解凍できねえぞくそお

427:デフォルトの名無しさん
09/07/16 15:59:39
URLリンク(blog.kzfmix.com)
これだ!

428:デフォルトの名無しさん
09/07/16 16:49:39
文章の中から単語の数かぞえんのどうやんの?
countを使ってどうやんのさ


429:デフォルトの名無しさん
09/07/16 16:56:15
wc --words

430:デフォルトの名無しさん
09/07/16 17:16:57
pythonって何のために使うの?


431:デフォルトの名無しさん
09/07/16 17:51:28
汎用です

432:デフォルトの名無しさん
09/07/16 21:46:48
夜のお供に使ってみるか・・・

433:デフォルトの名無しさん
09/07/17 02:41:08
perlをわすれるため

434:デフォルトの名無しさん
09/07/17 07:14:30
雑用を処理させていますよ。
gMailを読んでDBに格納しておいて月末にExcelにまとめさせるとか

435:デフォルトの名無しさん
09/07/17 16:20:12
グラフ描くのに色々モジュールあるみたいだけど何がいいかな

436:デフォルトの名無しさん
09/07/17 18:56:36
今os.systemを使ってUNIXコマンドを組み込んでるんですが
bashとかでお馴染のリダイレクトやパイプを
Pythonでも使いたいのですが可能ですか?


437:デフォルトの名無しさん
09/07/17 19:02:23
os.system は system(3) 経由 sh 経由でコマンドを起動するはずだからできると思うが、
subprocess モジュールを勉強したほうがいいと思う。

438:デフォルトの名無しさん
09/07/17 19:13:07
>>437
。。。すまんm(_ _;)m

勘違いして別のコマンド実行してたみたいです。。。
確認したらちゃんとできました。
回答ありがとうございましたm( __ __ )m

439:デフォルトの名無しさん
09/07/17 19:44:54
しかし乗り換えるにはsubprocessは面倒くさい罠

440:デフォルトの名無しさん
09/07/17 19:53:55
popen2.popen3()

441:デフォルトの名無しさん
09/07/18 05:44:16
4コアでガンガンまわしてるつもりになってても、
実は1コアしか動いていないのが悲しい
スタックレスなんとかをかんとかすればアレなのかな?

442:デフォルトの名無しさん
09/07/18 06:57:04
つmultiprocessing
スレッド回すよりは好きだわ

443:デフォルトの名無しさん
09/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

なして?


444:デフォルトの名無しさん
09/07/18 11:19:11
ループ中に回してるリストをいじるのはやめましょうという話
どうしてもやりたければ for i in unko[:]: unko.remove(i)

445:デフォルトの名無しさん
09/07/18 11:21:12
リストについて舐める操作をしながら、そのリストに副作用が起きる操作をしてるから。
リストの1番めを見て、1を削除。その次はリストの2番めを見るので、1番めに入った
3は無視されちゃう。

446:デフォルトの名無しさん
09/07/18 17:05:09
unko.remove(i) ワロス

447:デフォルトの名無しさん
09/07/18 21:28:25
ちんこ

448:デフォルトの名無しさん
09/07/18 22:13:35
フルーチャートを書けばすぐわかることだろうに

449:デフォルトの名無しさん
09/07/18 22:14:17
フローチャートを書けばすぐわかることだろうに

450:デフォルトの名無しさん
09/07/18 22:17:00
flo'u tʃɑ':(r)t

451:デフォルトの名無しさん
09/07/19 00:14:08
クラスの中で変数を宣言したいのですが、

self.unko = 0

で、いいんでしょうか?

452:デフォルトの名無しさん
09/07/19 00:15:18
はいそれで大丈夫です
外部アクセスを防ぎたい場合はself.__unkoとしてください

453:デフォルトの名無しさん
09/07/19 00:31:21
ありがとうございます!

外部アクセスを防ぐ、ということは宣言した後予期せぬ状況で中身が書き換わるのを防ぐ、ということでしょうか?

454:デフォルトの名無しさん
09/07/19 01:45:38
no

455:デフォルトの名無しさん
09/07/19 02:03:46
うーんどういうことなんでしょう。
内容を事ある毎に変化させていくパラメータとして使いたいので普通に宣言すれば良いと思っているのですが、それで問題ないでしょうか?

456:デフォルトの名無しさん
09/07/19 02:18:34
no

457:デフォルトの名無しさん
09/07/19 02:21:19
>>455
余計なことを言って混乱させてすいませんでした
self.__unko
のように先頭に__を付けると外部アクセスのできないいわゆるprivate変数の様な感じになります

458:デフォルトの名無しさん
09/07/19 02:36:23
C言語で言うとstaticをつけたりつけなかったりという話なのでしょうか?


459:デフォルトの名無しさん
09/07/19 04:27:42
no

460:デフォルトの名無しさん
09/07/21 20:34:26
python楽しいお

461:デフォルトの名無しさん
09/07/21 22:20:03
python 面白いよね
ショボイのしかまだ書けないけど、(きっと今後もw)
日々の作業が楽で、楽しくなるようなコードが書けるまで勉強するのだ
インタラクティブシェルだけで勉強してたら、ショボーンだけど、ファイルに書き出しとかになると
ちょっとプログラムって感じで楽しい

462:デフォルトの名無しさん
09/07/22 11:39:00
Python、神のごときライブラリが色々あって面白いすね。

463:デフォルトの名無しさん
09/07/22 12:51:38
python組み込みのhash関数って完全ハッシュ関数ですか?
衝突しませんか?

464:デフォルトの名無しさん
09/07/22 14:25:58
>>462
新参の俺にbeautifulsoup意外詳しく

465:デフォルトの名無しさん
09/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で書いてます。

466:デフォルトの名無しさん
09/07/22 16:45:56
searchとmatchの挙動の違いを詳しく解説してくれる方いませんか?

467:デフォルトの名無しさん
09/07/22 16:52:14
re.match("foo", s) == re.search("\Afoo", s)

468:デフォルトの名無しさん
09/07/22 18:29:48
match(r'foo',unko)のようにrオプション付けるとどういう効果があるのでしょうか?

469:デフォルトの名無しさん
09/07/22 18:34:06
URLリンク(www.python.jp)

470:デフォルトの名無しさん
09/07/22 18:34:22
>>468
URLリンク(www.python.jp)

471:デフォルトの名無しさん
09/07/22 18:43:29
findを忘れないで

472:デフォルトの名無しさん
09/07/22 19:00:55
よくわかりました!
ありがとうございます''

473:デフォルトの名無しさん
09/07/22 23:42:42
>>463
なわけないだろ。

474:デフォルトの名無しさん
09/07/23 09:00:30
>>473
明確に記載されている資料があればお願いします

475:デフォルトの名無しさん
09/07/23 09:06:50
URLリンク(www.python.jp)

476:デフォルトの名無しさん
09/07/23 09:08:54
どのソースに書いてあるかドキュメントに書かれていればいいんだがなー
組み込み関数だとgrepしてもノイズ多くてゲンナリ

477:デフォルトの名無しさん
09/07/23 09:11:08
memo
URLリンク(mail.python.org)
URLリンク(stackoverflow.com)
URLリンク(www.unixuser.org)

478:デフォルトの名無しさん
09/07/23 09:23:01
>>475
それじゃないww

479:デフォルトの名無しさん
09/07/23 09:29:32
help(hash)したら書いてあるだろうが

480:476
09/07/23 10:22:52
>>479
俺へのレスじゃなくて>>463へのレス?
やってみたけど、どちらにしても書いてなかった

481:デフォルトの名無しさん
09/07/23 10:28:17
Summer holidays

482:デフォルトの名無しさん
09/07/23 10:47:47
機能性文盲はつらいよ

483:デフォルトの名無しさん
09/07/23 10:52:46
いいからやってみろよ
上で求められてるような情報は出てこないから

484:デフォルトの名無しさん
09/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.
明快に書いてあるよな、「逆は真とは限らない」って。

485:デフォルトの名無しさん
09/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

486:デフォルトの名無しさん
09/07/23 11:39:32
>>484
完全ハッシュって双方向に一意なんだっけ
って複数のキーで同一の値が取れたら完全ハッシュじゃないもんな

487:デフォルトの名無しさん
09/07/23 11:41:55
>完全ハッシュって双方向に一意なんだっけ

no

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

no

488:デフォルトの名無しさん
09/07/23 12:00:32
えっ

489:デフォルトの名無しさん
09/07/23 12:42:36
>> 完全ハッシュって双方向に一意なんだっけ
>
> no
>

no

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

no

490:デフォルトの名無しさん
09/07/23 12:44:34
> no
no

なんだよおまえらww

491:デフォルトの名無しさん
09/07/23 12:55:19
> なんだよおまえらww
neet

492:デフォルトの名無しさん
09/07/23 13:22:51
なんなんだこのスレ

493:デフォルトの名無しさん
09/07/23 13:23:49
衆議院議員をめざしている人が、
本当のところどう思っているのか、
きいてみよう。
URLリンク(moderator.appspot.com)
"名前を連呼するだけの選挙宣伝カーを、「スパム認定」して禁止しませんか?"
Lambda  

494:デフォルトの名無しさん
09/07/23 16:24:25
>>474
Python 自体のソースを見るのが確実かと。
URLリンク(svn.python.org)
の builtin_hash() が組み込み関数の hash() に相当する。
URLリンク(svn.python.org)
に PyObject_Hash() の定義がある。

495:デフォルトの名無しさん
09/07/23 23:07:08
ソースやドキュメントなんて読むまでもないだろ。

もし仮に完全ハッシュだとしたとしたら
論理的に考えてhash関数の引数はシーケンスでないとならない。
そうなってないんだから当然hashは完全ハッシュじゃない。
たまには頭使わないと腐るぞ。

496:デフォルトの名無しさん
09/07/23 23:10:25
そもそも「ハッシュ」の意味さえ知っていれば、あんな疑問は湧かないはず

497:デフォルトの名無しさん
09/07/23 23:31:09
>>495
> 論理的に考えて
Python的に考えて、でしょ
型によって全く扱いが違う関数なんて
他の言語ではありふれてるわけで。
スレタイ読める?

498:デフォルトの名無しさん
09/07/23 23:35:19
例えば数値なら桁毎のシーケンスの生成なんて簡単なことだし

499:デフォルトの名無しさん
09/07/23 23:43:40
スレタイ読めるなら
いちいち「Python的に」なんて書かなくても補完できるはずなのにね。

500:デフォルトの名無しさん
09/07/24 00:12:47
>>498
桁毎のシーケンスって何?
整数型のbit数毎に異なるテーブルを用意する"なら"
整数型の完全ハッシュが作れるってこと?
条件を絞れば完全ハッシュなんていくらでも作れるに決まってるだろ?
たとえば同一性を判定するためだけのハッシュとか、
ある種のFSでファイル名をキーとするハッシュとか。

自分こそスレタイ読めるなら、型によってとか他の言語ではとか
勝手に条件付け加えないでくれ。

501:デフォルトの名無しさん
09/07/24 00:15:53
釣り針でかいなw

502:デフォルトの名無しさん
09/07/24 00:18:49
そんなもんがあるとして、少なくとも、引数の範囲とかも引数にしないと無理なんじゃまいか?

503:デフォルトの名無しさん
09/07/24 00:27:01
引数の範囲?bitwidth?

504:デフォルトの名無しさん
09/07/24 00:28:27
朝生はじめるよー

505:デフォルトの名無しさん
09/07/24 19:38:43
    ┌─┐
    │●│
    └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!


506:デフォルトの名無しさん
09/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インストールしようとしたらこうなったんだけどどうしたらいいんだ?




507:デフォルトの名無しさん
09/07/25 16:04:23
あーインストーラー保存せずにそのまま実行したらできました

508:デフォルトの名無しさん
09/07/25 16:22:10
おれ、C:\temp\downloadsになんでもダウンロードして実行する癖あるんだけど、
俺の場合そうはならなかった気がするな?

509:デフォルトの名無しさん
09/07/26 22:07:06
Mac OS X + Python2.5です
ファイルの出力なのですが、
f = open('hoge', 'w')
f.write('line 1\n')
としても改行されません・・・
なにか間違って理解しているのでしょうか?

510:デフォルトの名無しさん
09/07/26 22:10:45
> write( str)
>
> 文字列をファイルに書き込みます。戻り値はありません。
> バッファリングによって、flush() または close() が呼び出されるまで
> 実際にファイル中に文字列が書き込まれないこともあります。

511:デフォルトの名無しさん
09/07/26 22:13:29
失礼しました。
close() はしているのですが、
ファイルには
line 1\n
と出力されてしまいます・・・

512:デフォルトの名無しさん
09/07/26 22:17:15
f = open('hoge', 'w')
f.write('line 1\n')
f.close()

こちらでは再現できない。

513:デフォルトの名無しさん
09/07/26 22:19:47
原因が少しわかりました・・・
PyDev(Eclipse)を使っていたのですが、\がバックスラッシュにならないようですorz
コンソールからvi で編集しなおして\(バックスラッシュ)で改行されました。
これはPyDevの挙動がオカシイんですかね、それとも仕方ないんでしょうか?

514:デフォルトの名無しさん
09/07/26 22:27:11
>>509
脊髄反射でバッファリングだと思ってしまった。ごめん

macのyen signには癖があるって話を聞いたことがある
% od -tx1 hoge して結果を貼ってみて

515:511
09/07/26 22:29:39
解決しました
Macに不慣れなので知らなかっただけで、通常に¥キーを押すと円記号、バックスラッシュを入力する場合はOption + ¥キーを押すようです。
ターミナルの場合は強制的にバックスラッシュなのかな?

516:デフォルトの名無しさん
09/07/26 22:35:46
pythonで皆さんどんなことしてるんですか?
具体的に何をしてるか教えて下さい。

517:デフォルトの名無しさん
09/07/26 23:40:35
pass

518:デフォルトの名無しさん
09/07/27 00:10:59
ナニしてるんだろうねぇ

519:デフォルトの名無しさん
09/07/27 01:55:52
>>516
お仕事に使えるよ?
ユーティリティ色々、前はVB.NETだったけど今は大概Pythonで書いてる。
この間は、ftpサーバーの状態をチェックして警報ショートメッセージ出すのを書いた。

520:デフォルトの名無しさん
09/07/27 02:39:53
Windowsアプリ作ってるよ。
Thinkpadとか、ツール類がPython使ってるから検索するとPython関連ファイルが
沢山入ってる。
バージョン古いし、ツール類の大半要らないからアンインストールして自分で最新の
Python入れるけど。

521:デフォルトの名無しさん
09/07/29 09:48:56
Python のコマンドラインシェルや、iPython 等で
タブ幅(tabstop)を指定するにはどうすればよいですか?


522:デフォルトの名無しさん
09/07/29 16:54:50
a = [' ','a',' ','b',' ','c',' ']
のように空白を要素に持つlistがあります.
このlistから空白要素を全部削除するのに,
for a in range(a.count(' ')):
a.remove(' ')
と書いているのですが,もっとスマートに書けないでしょうか.


523:デフォルトの名無しさん
09/07/29 17:01:33
a = [i for i in a if a != " "] とか?

524:デフォルトの名無しさん
09/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 != ' ']

525:デフォルトの名無しさん
09/07/29 17:02:52
[e for e in a if e != ' ']
filter(lambda x: x != ' ', a)

526:デフォルトの名無しさん
09/07/29 17:04:35
>>524
ケコーンしようぜ

527:デフォルトの名無しさん
09/07/29 17:05:28
filterって関数があるんですね.ありがとうございました.

528:デフォルトの名無しさん
09/07/29 17:06:31
全然スマートにみえないんだが気のせいかな?

529:デフォルトの名無しさん
09/07/29 17:22:53
リストそのものの書き換えと、リストから要素を除いた新しいリストを作るののどちらをやりたいんだ?

530:デフォルトの名無しさん
09/07/29 17:25:32
>>528
filterとかlambaとかスマートというか自己満足だよね

531:デフォルトの名無しさん
09/07/29 17:27:06
lambdaはともかくfilterはできる子

532:デフォルトの名無しさん
09/07/29 17:33:19
>>531
>filterはできる子

そういうことにしたいのですね。

533:デフォルトの名無しさん
09/07/29 17:36:59
全然スマートにみえないんだが気のせいかな?

534:デフォルトの名無しさん
09/07/29 17:38:18
全然スマートにみえないんだが気のせいかな?

535:デフォルトの名無しさん
09/07/29 17:44:34
reduce(lambda x, y: x + ([y] if y != ' ' else []), ' a b c ', [])

536:デフォルトの名無しさん
09/07/29 17:45:22
reduceって関数があるんですね.ありがとうございました.

537:デフォルトの名無しさん
09/07/29 17:52:20
[i for i in ''.join(a).split(' ') if i]

or

filter(lambda x: x, ''.join(a).split(' '))


538:デフォルトの名無しさん
09/07/29 18:01:52
filter(' '.__ne__, [' ','a',' ','b',' ','c',' '])

539:デフォルトの名無しさん
09/07/29 18:17:50
それいいね

540:デフォルトの名無しさん
09/07/29 18:53:54
一行野郎め

541:デフォルトの名無しさん
09/07/29 20:18:26
Tkinterで書いたものをwxで書き直してます。DnDが要件にあったので。
wxは初めてです。

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

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

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

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

よろしくお願いします。

542:デフォルトの名無しさん
09/07/29 20:20:36
XRCed

543:デフォルトの名無しさん
09/07/29 20:21:18
Sizer

544:デフォルトの名無しさん
09/07/29 21:13:43
>>540
なんてすばらしい日本語訳かと思ったら
こんなに市民権を得てるとは。。。
URLリンク(www.google.co.jp)

545:デフォルトの名無しさん
09/07/29 22:19:10
python 一行野郎ってジャンルはまだ無いのな

546:デフォルトの名無しさん
09/07/29 22:56:33
インデントのおかげで一行で書くのはむずかしいからな

547:デフォルトの名無しさん
09/07/30 01:06:56
>>544
いつ頃、どこで生まれた訳なんだろうな。
俺が初めて知ったのは『Effective Perl』の邦訳版で、これが10年前の本だけど。

548:デフォルトの名無しさん
09/07/30 01:12:39
Rubyしかないよなあ

549:デフォルトの名無しさん
09/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 ははるかに手軽で強力だと思いました。

550:522
09/07/30 09:14:17
結局a = [i for i in a if a != " "] が分かりやすいので使わせて貰います.
ありがとうございました.

551:デフォルトの名無しさん
09/07/30 09:49:48
filterとかlambdaを無駄に使いたがるヤツには気をつけた方がいい

552:デフォルトの名無しさん
09/07/30 13:36:25
>>550
それで良いのかよw
if i != ' ' だろ?

553:デフォルトの名無しさん
09/07/30 16:48:22
俺はlispいじってたもんでホイホイlambdaやfilterを使っちゃうな

554:デフォルトの名無しさん
09/07/30 17:04:20
クラス皆無で関数だらけのスクリプトを量産する漏れみたいなもんだな

555:デフォルトの名無しさん
09/07/30 17:41:54
[e for e in a if e != ' ']
filter(lambda x: x != ' ', a)

どっちが速い?
要素が1000万個くらいあっても大丈夫?

556:デフォルトの名無しさん
09/07/30 18:34:06
>>555
速さなら前者の方が(たぶん倍以上)速い
要素の大きさは、速度よりもメモリの問題が発生する。
リストではなくジェネレータの利用を考慮するといい。
(e for e in a if e != ' ') もしくは itertools.ifilter

557:デフォルトの名無しさん
09/07/30 20:26:35
速さなんて考えたこともないぜ

558:デフォルトの名無しさん
09/07/31 03:18:40
> 要素が1000万個
PyCUDAとか使うべきだぜ!

559:デフォルトの名無しさん
09/07/31 08:43:10
(e for e in a if e != ' ')
[e for e in a if e != ' ']

1000万文字ほど用意して比べたら、
後者が圧倒的に遅く、前者はほぼ一瞬で終ったのですが
なんでここまで差がつくの?

560:デフォルトの名無しさん
09/07/31 10:12:51
ジェネレータ

561:デフォルトの名無しさん
09/07/31 22:08:13
そういえば、
1桁~9桁くらいの数字だけで構成された文字列が大量に格納されたリストって
全部をint型に変換してソートするよりも
全部を文字列のままzfillで0埋めしてソートした方が速かったんだが
そういうもんなの?

562:デフォルトの名無しさん
09/07/31 22:12:48
今ジェネレータの意味がわかったw

関数系だとデフォで全部かYOって思ってわけわかめだったが、
こういう遅延評価ならわかりやすいな。俺でも使えそうだ。

563:デフォルトの名無しさん
09/08/01 07:40:35
>>561
kwsk
or
source

564:デフォルトの名無しさん
09/08/02 10:55:54
そりゃ文字列だったのをそのままソートと
文字列だったのを数値に変換してソートだと
数値変換の処理が余計なステップになるよね

565:デフォルトの名無しさん
09/08/02 12:56:06
みんなエディタ何使ってるの?

566:デフォルトの名無しさん
09/08/02 13:00:11
zfillで0埋めする処理は余計なステップにならないのか

567:デフォルトの名無しさん
09/08/07 14:05:01
Pythonぐらい簡単でゲーム作るのに適した言語ない?

568:デフォルトの名無しさん
09/08/07 15:11:23
sqliteで、最後に挿入した行のrowidを取得する方法ってないのでしょうか?
c/c++なら「sqlite3_last_insert_rowid」というAPIがあるのですが・・・

569:デフォルトの名無しさん
09/08/07 15:28:13
cursor.lastrowid

570:デフォルトの名無しさん
09/08/07 17:36:57
>>561
そりゃ少なくとも2倍以上メモリ消費してるしな

571:デフォルトの名無しさん
09/08/07 22:09:46
>>567
RPGツクールに内蔵されたRubyだな。

572:デフォルトの名無しさん
09/08/09 16:01:12
質問なんですが

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

可能ならそういった情報が乗ってるサイトとかを
教えてください

573:デフォルトの名無しさん
09/08/12 23:28:50
py2exeじゃダメなん?

574:デフォルトの名無しさん
09/08/17 14:06:43
3.1.1 の Windows インストーラ版はまだかな~

575:デフォルトの名無しさん
09/08/17 21:19:27
Pythonの属性について。

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

これは文字列オブジェクト等の__setattr__()メソッドがエラーを発生するように定義してある、
という理解で良いのでしょうか?

576:デフォルトの名無しさん
09/08/17 23:02:27
>>575
組み込みオブジェクトは実装上そうなってる。
実際
class myStr(str): pass
と継承すれば望みのことが可能。
Pythonはそのへんの美しさは二の次なので好き嫌いが分かれるかも。

577:デフォルトの名無しさん
09/08/17 23:06:48
文字列はimmutableだし美しさを損なってるってほどでもないような

578:デフォルトの名無しさん
09/08/17 23:50:14
>>576
理解力が悪くてすみません。
strを継承したクラスのインスタンスには属性を追加できる
→ __setattr__()は関係ないってことで良いでしょうか?

579:575
09/08/18 00:14:45
連続で申し訳ないです。
今いろいろいじっていたら、そもそも組み込みオブジェクトが
__dict__属性を持っていないことがわかりました。

オブジェクトの属性は__dict__に格納されているみたいなんですが、
じゃあこの__dict__自身はどうなっているのでしょうか。
混乱してきましたw

580:デフォルトの名無しさん
09/08/18 13:21:44
>>579
__dict__ は dict型のオブジェクトだよ。
属性の管理方法は、組み込み型ならC言語で自由に管理できるし、Pythonのclassで
__setattr__ を定義しない場合はデフォルトの __setattr__ が __slots__ か __dict__ を使って
管理する。

581:575
09/08/18 15:50:11
>>580
ああ、なるほど__slots__ですか。
これを定義しておくと、これに格納されていない名前の属性は付けられなくなるんですね。
ありがとうございました。

582:デフォルトの名無しさん
09/08/18 17:49:09
# main.py
import mymodule
print mymodule.getmypath()

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

引数等に何も渡さずにgetmypath()でmain.pyのファイルパスを取得する方法はありますか?
python2.5を使ってます

583:デフォルトの名無しさん
09/08/18 18:06:27
os.fullpath(__FILE__)

584:デフォルトの名無しさん
09/08/18 18:35:37
これでいいの?
sys._getframe().f_back.f_code.co_filename

585:582
09/08/18 20:25:52
>>584
できました!ありがとうございます。


586:586
09/08/19 21:17:25
はじめまして。

BeautifulSoupを使っていて、
<class 'BeautifulSoup.NavigableString'>をstrに
変換するにはどうすればよいのでしょうか?

587:586
09/08/19 21:42:58
メソッドencodeを使ってもエラーになります。
<class 'BeautifulSoup.NavigableString'>オブジェクトから
1文字ずつとりだすとunicodeになるので、
無理やりunicodeに変換することはできました。
なので解決といえば解決なのですが、美しくないです…

588:デフォルトの名無しさん
09/08/20 02:06:21
unicode(s)
str(s)


589:デフォルトの名無しさん
09/08/20 02:09:18
unicode(s.prettify(), s.originalEncoding)

590:デフォルトの名無しさん
09/08/20 05:33:30
Pythonでは「文字列」と「ユニコード文字列」と「バイト列」
は異なるオブジェクトとして明確に区別されてるのでしょうか?

591:デフォルトの名無しさん
09/08/20 07:41:29
2でも3でも文字列とバイト列は同じ
文字列リテラルとしてソースに書く場合はやや注意が必要

592:デフォルトの名無しさん
09/08/20 07:49:52
>>591
いや違う
2: バイト列=文字列≠ユニコード文字列
3: バイト列≠文字列=ユニコード文字列

593:590
09/08/20 08:40:32
>>592
なるほど,その説明はわかりやすい

encode とか decode とかのメソッド見たとき,
何から何へなんだよ~元と先が指定できなきゃ
だめなんじゃね?って悩んだ.

594:デフォルトの名無しさん
09/08/20 10:59:28
urllib.urlopenで読んできたHTMLをBeautifulSoupに渡すとunicodeにしてくれますが、
その中に囲み数字みたいな機種依存文字があるとencodeでeuc-jpとかにしようとすると
例外が発生しますよね?
これってみなさんどうしてます?


595:デフォルトの名無しさん
09/08/20 12:37:08
unicode-escape

596:デフォルトの名無しさん
09/08/20 12:40:43
encode('euc-jp', errors='replace')
encode('euc-jp', errors='ignore')
encode('euc-jp', errors='strict')

597:デフォルトの名無しさん
09/08/20 12:57:40
URLリンク(www.python.jp)
URLリンク(www.python.jp)

598:デフォルトの名無しさん
09/08/20 14:13:08
euc_jis_2004

599:デフォルトの名無しさん
09/08/20 14:47:56
URLリンク(www.python.jp)

600:594
09/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になるとこの辺もっとスッキリするんでしょうか。



601:デフォルトの名無しさん
09/08/20 22:08:07
「Python 3.1.1」リリース
スレリンク(pcnews板)

602:デフォルトの名無しさん
09/08/21 07:36:16
>>600

html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
text = soup......
print text.encode('euc-jp', 'replace')


603:デフォルトの名無しさん
09/08/21 07:38:11
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
text = soup......
print unicode(text, soup.originalEncoding).encode('euc-jp', 'replace')

604:デフォルトの名無しさん
09/08/21 14:22:39
あのLinux使ってる人が一行目に書くのはなんだ?

605:デフォルトの名無しさん
09/08/21 14:42:43
shebang

606:デフォルトの名無しさん
09/08/23 22:49:29
はじめまして。
最近、pythonを始めました。 ipythonをとても便利に使っています。
ipythonに関して、一つ質問なのですが、代入式の場合に、評価の値が表示されるようにすることはできないでしょうか?

607:デフォルトの名無しさん
09/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


608:デフォルトの名無しさん
09/08/24 13:27:59
raw_input() にすれば動くよ。たぶんwinのはpython3なんだろう。
その本がどちらを使ってるかわからないけど、個人的にはまだ2.xを使ったほうがいいと思うよ

python2のraw_input() == python3のinput()
python2のinput() == python3のeval(input())

609:デフォルトの名無しさん
09/08/24 23:54:44
改行コード

610:デフォルトの名無しさん
09/08/25 16:17:27
win32api を使いたいです
ctypes から、windll.[DLL名].[関数名] で呼べるのはわかったのですが、
引数が要求したり、関数が返してくるような定数(?)の実際の値は普通どう確認するものなんでしょうか

他言語から win32api を使った経験は無いです

611:デフォルトの名無しさん
09/08/25 16:29:15
URLリンク(www.python.jp)
URLリンク(www.python.jp)
URLリンク(www.ueblog.org)
URLリンク(moco.sakura.ne.jp)

612:610
09/08/25 17:27:33
えーと WM_CLOSE とかそういったものが定義されてないので、
その実際の値がわからないとそれを要求したり返したりする関数が使えないんです
それで、普通はどうするものなのかと思って質問しました

613:デフォルトの名無しさん
09/08/25 17:31:15
少しぐらいならヘッダファイルから拾ってくれば済むけど
GUIまでやろうとするとものすごく大変な気がする

614:デフォルトの名無しさん
09/08/25 17:34:19
MSDNでしらべる。Mingwのw32apiとかみる

615:デフォルトの名無しさん
09/08/25 17:45:43
>>813
たまたま目に付いたものを書いただけで、今のところは GUI をやろうとしてるわけではないです

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

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

Mingwは調べてみます

616:デフォルトの名無しさん
09/08/25 20:25:48
pywin32 の win32con.py

617:デフォルトの名無しさん
09/08/25 20:50:24
>他言語から win32api を使った経験は無いです

618:デフォルトの名無しさん
09/08/25 21:41:44
>>616
おお、大抵の場合はこれで大丈夫そうです

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

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


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

pywin32にddeなるモジュールがあるようですが、使い方がさっぱりなので見なかったことにします
みなさん回答ありがとうございました
今回の件とは別ですが、>>611も参考になりました

619:デフォルトの名無しさん
09/08/25 22:00:04
>DDEクライアント

win32com

620:デフォルトの名無しさん
09/08/25 22:58:40
COMはDDEとは別物じゃないですか?

621:デフォルトの名無しさん
09/08/25 23:05:06
それはMSに言っといてくれ
死語だけでもWindows DNAとかChromeEffectsとかいくらでも出てくる

622:デフォルトの名無しさん
09/08/25 23:34:06
>>619を読んで、win32comとDDEクライアントの関係がわからなかったので>>620を書いたのですが……

623:デフォルトの名無しさん
09/08/26 01:55:48
COMはOLEクライアント

624:デフォルトの名無しさん
09/08/27 04:10:26
拡張子は opyで

625:デフォルトの名無しさん
09/08/27 21:05:40
.pyoのほうがいい

626:デフォルトの名無しさん
09/08/28 08:19:35
そのうち2.xようと3.xように
.pyo2とかになるのか

627:デフォルトの名無しさん
09/09/01 22:46:42
Windows環境でもPyreadlineをインストールしていれば
cmdモジュールのデフォルトでbash-like動作が有効になると思ってたんですが
普通に“^A”などと表示されてしまいます。
IPythonでは補完が効くので、cmdモジュールの使い方が間違ってるんだと思いますが
公式サイトのリファレンスではCmd.cmdを継承したクラスを作って
引数無しでインスタンスを作成するだけのように読めます。

何が間違ってるんでしょうか?

628:デフォルトの名無しさん
09/09/03 07:39:13
助けてください・・・
これからPythonを勉強しようと思ってるのですが、それ以前に「パスを通す」
ということができません。
Windows XP で、Python2.6.2 をインストールしたんですけど、初心者用の
サイトにある「パスの設定」というのを見ながらやっても
[操作可能なプログラムまたはバッチ ファイルとして認識されていません]と
でてしまい困っています・・・。どうすればパスを通せるのか教えていただけ
ないでしょうか。よろしくお願いします。

629:デフォルトの名無しさん
09/09/03 08:12:03
了解

630:デフォルトの名無しさん
09/09/03 08:33:11
スレ違い
パソコン入門スレとかにいってこい

631:デフォルトの名無しさん
09/09/03 09:24:33

PATHの通し方すら教えられない。
しょせんPyヲタなんて、この程度。

632:デフォルトの名無しさん
09/09/03 09:51:29
逃げた?

633:デフォルトの名無しさん
09/09/03 09:53:19
>>628
autoexec.bat あたりを弄ったのかな?それはWindows98時代のやり方で、
Windows2000以降ならGUIで設定できる。
URLリンク(www.daikichi.net)

634:デフォルトの名無しさん
09/09/03 10:08:32
言っちゃった…。

俺はあほの相手するのは疲れるんでぐっとこらえたんだけど。

635:デフォルトの名無しさん
09/09/03 14:15:51
>>628
>>633が答えてくれてるけど
うまくいかなかったらまた聞いてくれ

636:628
09/09/03 19:12:06
>>629
>>630
すみません。スレ違いという事すら気づきませんでした...。
>>631
ごめんなさい..。私が悪いんです。
>>632
>>633
ご親切に答えてくれて、ありがとうございます。教えて頂いた
URLリンク(www.daikichi.net) も、見てみた
のですが、ダウンロードし直したら無事にパスが通りました。本当に、
ありがとうございました。
>>634
ごめんなさい、ほんとに私はアホです。
>>635
ありがとうございます。結局、何が原因だったのかわからないのですが
どうにかパスの設定はできました。

637:デフォルトの名無しさん
09/09/03 21:35:11
>> 607
一行目の指定宣言ですが?

#! /usr/bin/env python

/* man env 引用 */

NAME
env -- set and print environment

余り どの様な形式の基礎かが理解 出来ないのですが…
この部分の基礎宣言の説明をして頂けますか?

638:デフォルトの名無しさん
09/09/03 21:51:11
ピートンっておぼえたほうがいいかな

639:BBS戦士ジョソコイダーGID@愛をください
09/09/03 21:52:46
ジョソコイダーを遊園地に連れてってって

640:デフォルトの名無しさん
09/09/03 22:08:29
>>637
その一行目は shebang という
二行目以降を入力として shebang に指定したコマンドを実行する

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

ただこの方法だと他のマシンでの python インタプリタの場所が
/usr/local/bin/python だった場合に動かないので
env コマンドに環境の設定と python の実行をお願いする

641:デフォルトの名無しさん
09/09/03 22:09:26
o 原則 #!/usr/bin/python などではなく #!/usr/bin/python のように書く必要がある
x #!python などではなく #!/usr/bin/python のように書く必要がある

642:デフォルトの名無しさん
09/09/03 22:33:38
>>607

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

これで 通りますが… 何をする Program ですか?

643:デフォルトの名無しさん
09/09/03 22:38:14
>>642 plus
失礼…
>>640 を読めずに書き込んだので…

644:デフォルトの名無しさん
09/09/03 22:48:02
>>640
読んだのですが?
文字列を入れても Syntax Error に為りますが?
直接 打ち込んでの作業では無いと云う事か…

645:デフォルトの名無しさん
09/09/03 23:12:28
まずは日本語の構文をマスターしてからのほうが
いいと思うんだ・・・

646:デフォルトの名無しさん
09/09/03 23:17:30
>>644
shebang を使うのはファイルに保存したスクリプトを
% python scriptname
ではなく
% chmod +x scriptname
% ./scriptname
のように実行したい場合
対話型プロンプトではそもそも必要ない

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

あとできればメール欄に sage って入れて

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

>>607
「はじめてのpython」で勉強しています
下記スクリプトを実行したとき、
Winで実行する場合とUbuntuで実行する場合とで
結果が違う(Ubuntuの場合はエラーになる)のですが
どうしてですか?

648:デフォルトの名無しさん
09/09/04 01:01:52
どんなエラーが出たのか書けよ

649:デフォルトの名無しさん
09/09/04 01:05:22
OSが違うからです

650:デフォルトの名無しさん
09/09/04 01:06:22
>下記スクリプト

???

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

標準入力も、inputに頼らず、codecs.getreader()で、
エンコード指定して、sys.stdinからファイル入力として扱うほうが、
トラブルは少ないかもしれない。

652:デフォルトの名無しさん
09/09/04 01:13:36
その変な日本語どうにかしてよ

653:デフォルトの名無しさん
09/09/04 01:20:28
str = codecs.getreader('UTF-8')(sys.stdin)

654:デフォルトの名無しさん
09/09/04 01:23:08
str = codecs.getreader('UTF-8')(sys.stdin).read()

655:デフォルトの名無しさん
09/09/04 01:25:03
っつーかstrをへんこうしたらなにがおこるんだ?



656:デフォルトの名無しさん
09/09/04 01:56:11
うちゅうのほうそくがみだれる

657:デフォルトの名無しさん
09/09/04 01:57:50
変更というよりは邪魔して見えなくしてるだけだ

__builtins__.str

658:デフォルトの名無しさん
09/09/04 06:27:01
py3なら文字コード余裕でした。

659:デフォルトの名無しさん
09/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])) )

660:659
09/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])) )

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

662:659
09/09/04 16:00:32
>>661

そのとおりでした。ありがとうございます。

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

できたらIBM拡張文字の方で書き出せるようにしたいんですが、何かいい方法があるでしょうか?

664:デフォルトの名無しさん
09/09/04 16:48:19
>>663
Text 文書を保存して その儘 特定機種で Text を読み込むと どの様に為りますか?

665:デフォルトの名無しさん
09/09/04 16:53:22
>>> u"鄧".encode("mbcs")
'\xfb\xb9'
>>> u"鄧".encode("cp932")
'\xee\x9d'

666:デフォルトの名無しさん
09/09/04 17:03:13
>>664 plus
否… 表現が悪かった様で… 片方の機種で その文字を Text に保存して
もう片方の機種で その Text を読み込むと どの様に為りますか?

667:デフォルトの名無しさん
09/09/04 17:19:25
>>665
どうもありがとうございます。
何となく、Windowsではcp932を選べばいいのだと勝手に思い込んでました。

>>666
すみません、勉強不足でよく理解できていないんですが、cp932はWindows以外の環境も考慮してああなっているということでしょうか? もっとよく調べてみます。

668:デフォルトの名無しさん
09/09/04 17:32:22
うにcode か… 素晴らしいな…

669:デフォルトの名無しさん
09/09/04 18:33:07
>インシデント

670:デフォルトの名無しさん
09/09/04 22:10:56
>>665
なんなのその顔文字ふざけてんの?

671:デフォルトの名無しさん
09/09/04 22:18:51
u('-')

たまに出てくるけどかわいい

672:デフォルトの名無しさん
09/09/04 23:06:05
>>670
NEVADA

673:デフォルトの名無しさん
09/09/05 00:12:56
>>671
心の汚れた環境では見れないらしい…

674:デフォルトの名無しさん
09/09/05 22:02:15
osごとに異なるモジュールをインポートするにはどうしたらいいのでしょうか?
C言語で言うifdefみたいなことがしたいのですがうまくいきません・・

675:デフォルトの名無しさん
09/09/05 22:03:45
import sys
sys.platform

676:デフォルトの名無しさん
09/09/05 22:18:03
>>675
ありがとうございます
sys.platformで取り込むモジュールを振り分けられました
importは先頭に書くものだと思っていました。。

677:デフォルトの名無しさん
09/09/06 00:20:31
普通はtry: import hoge except ImportError: import fugaみたいにするんじゃなかったっけ?

678:デフォルトの名無しさん
09/09/06 00:36:49
異なるシステムでもImportErrorでない書き方できるからsys.platform使う方が無難

679:デフォルトの名無しさん
09/09/06 00:42:55
sys.platformというのは初耳だわ
os.nameよりも詳しいのかな

680:デフォルトの名無しさん
09/09/06 00:45:20
platformモジュールとか初めて知った

681:デフォルトの名無しさん
09/09/06 01:05:04
>>680
そういえばそんなのもあったね。程度にしか使われてないよな

sysはビルトインの標準モジュールだから絶対に読み込めるという理由もあるかも
osはパス通ってないとimportできないし

682:デフォルトの名無しさん
09/09/06 18:33:13
スクリプトでテキストを立ち上げたり、IEを起動させたりは可能ですか?

683:デフォルトの名無しさん
09/09/06 18:40:20
yes you can

684:デフォルトの名無しさん
09/09/06 23:46:18
いろいろ試したんだけどwindowsでparamikoが使えない。
これは使えないでOK?


685:デフォルトの名無しさん
09/09/06 23:50:05
Windowsでparamikoつかえるよ?
bazaarなんてWindows用のデフォルトのsshクライアントがparamikoだよ。

686:デフォルトの名無しさん
09/09/07 00:08:23
>>685
俺にとってあんたは神様だ。
設定しかたを教えてくれ!

687:デフォルトの名無しさん
09/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のバージョンに対応するコンパイラをもっていない場合は
URLリンク(mirror.cameronbergh.com)
から対応するパッケージをダウンロードするといいよ。

688:デフォルトの名無しさん
09/09/07 00:54:35
親切にありがとう!
paramiko-1.7.4でやったらすんなりとおった。

689:デフォルトの名無しさん
09/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が出ます。

よろしくお願いします…。

690:デフォルトの名無しさん
09/09/10 16:33:31
xがnumpyのarrayなんじゃない?

691:689
09/09/10 16:43:10
>>690
それでした!
どうもありがとうございました。

692:デフォルトの名無しさん
09/09/11 22:49:04
BitTorrent以外でpythonで実装されたクライアントソフトあるいはスタンドアローンソフトって何がありますか?
砕けた言い方をすると、pythonで実装されていて拡張子がexeなそれなりに有名なソフトって何がありますか?

693:デフォルトの名無しさん
09/09/11 22:59:58
BTはPythonやめたんじゃなかったっけ?

694:デフォルトの名無しさん
09/09/11 23:03:43
URLリンク(wiki.python.org)

695:デフォルトの名無しさん
09/09/12 15:52:44
拡張子がexeである必要がよくわからないけど、
bzr, mercurial といったVCSもそうだし、
Editra, Dropbox, TaskCoach, 他にもいろいろあるぞ。
LinuxにいったらさらにPython製デスクトップアプリだらけ。

696:デフォルトの名無しさん
09/09/12 18:57:53
yum


697:デフォルトの名無しさん
09/09/12 18:59:20
とりあえず2chviewerでも作って公開すれば有名になれるんかな

698:デフォルトの名無しさん
09/09/14 05:56:06
>684
これかも
URLリンク(d.hatena.ne.jp)

699:デフォルトの名無しさん
09/09/14 09:44:16
URLリンク(bugs.launchpad.net)
へぇ。

700:デフォルトの名無しさん
09/09/15 12:47:58
>>692
portage, samuraix

701:デフォルトの名無しさん
09/09/15 21:14:28
wikipediaのPythonのページに
「多くの異なる言語で書かれたモジュールをまとめるグルー言語」
とありますが、これは複数のプログラミング言語で書かれたモジュールを
まとめられるということでいいのでしょうか?

702:デフォルトの名無しさん
09/09/17 08:06:50
>>701
文章を途中で切るよな。

703:デフォルトの名無しさん
09/09/17 09:50:28
ワロタ

704:デフォルトの名無しさん
09/09/24 03:21:16
lambda : 1 + 2
が良くて
lambda : print "hoge2"
がダメな理由って何故ですか?

705:デフォルトの名無しさん
09/09/24 03:35:29
lambda式には式(expression)しか書けないから。printは文(statement)。

706:デフォルトの名無しさん
09/09/24 03:43:40
lambda : sys.stdout.write("hoge2\n")

707:704
09/09/24 04:34:27
ありがとう
・・・Pythonってそう言うのを区別するのか・・・先は長そうだ orz

708:デフォルトの名無しさん
09/09/24 06:08:10
python3ではprintは関数だよ^^

709:デフォルトの名無しさん
09/09/24 07:27:03
Pythonで
print "x=#{x}\n" if DEBUG (Rubyの例)
みたいに1行で完結させる書き方って可能ですか?
同じ物をPythonで書くと
if DEBUG:
print "x="+str(x)
となると思いますが出来ればデバッグメッセージごときに2行は使いたくない・・・

710:デフォルトの名無しさん
09/09/24 08:07:41
if DEBUG: print "x="+str(x)
だが、logging使え。

711:デフォルトの名無しさん
09/09/24 10:34:36
if DEBUG:
print "x="+ str(x)

712:デフォルトの名無しさん
09/09/24 10:36:08
>>711 ミスったので見なかったことに

713:デフォルトの名無しさん
09/09/24 11:42:46
logging.logger

714:デフォルトの名無しさん
09/09/24 13:37:14
URLリンク(pythonjp.sourceforge.jp)
ここにある
def partial(func, *args, **keywords):
という書き方に出てくるCのポインタみたいな記号(*args,**keywords)ってどういう意味ですか?

715:デフォルトの名無しさん
09/09/24 13:43:23
URLリンク(pythonjp.sourceforge.jp)

716:デフォルトの名無しさん
09/09/24 13:53:55
ありがとござます

717:デフォルトの名無しさん
09/09/24 17:46:57
PILのpython3対応はまだか!

718:デフォルトの名無しさん
09/09/24 22:47:32
>>712
え?どこどこ?

719:デフォルトの名無しさん
09/09/24 23:06:30
Python的には字下げだろう。

720:デフォルトの名無しさん
09/09/27 04:43:59
一度定義した変数を消去することは可能ですか?

python3.0で、
print = 5
とするとprintという名前の変数に5が代入されたのですが、
そのあと元のprintという関数を使いたい場合はどうすればよいのでしょうか?

721:デフォルトの名無しさん
09/09/27 04:53:34
__builtins__.print

もしくは

del print

722:720
09/09/27 05:15:58
>>721
ありがとうございました。

723:デフォルトの名無しさん
09/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
になる。なにか足りないですか?

724:723
09/09/27 11:26:39
訂正:
 ('User-agent', 'User-Agent: Mozilla/5.0 ~略)
の箇所は
 ('User-agent', 'Mozilla/5.0 ~略)

725:デフォルトの名無しさん
09/09/27 11:31:06
HTTPヘッダでkeep-aliveするようにしても
urllib2がそれを想定してないからうまく動かなかったような
ソース読んで絶望した記憶がある

urllib2 keep-alive でぐぐってみるといいんじゃないか

726:723
09/09/27 11:34:14
>>725
ありがとう。ここのサイトのをやってみる!
URLリンク(python.blog-slime.com)


727:723
09/09/27 11:36:47
↑はurllibだった。下のサイトのを拝借するのが一番楽そうですね。㌧
URLリンク(memo.jj-net.jp)


728:723
09/09/27 12:03:05
ちなみに・・・

urllib2だとcookieの自動処理が容易に出来るけど、keep-aliveが出来ない
urllib だとcookieの自動処理を容易に出来ないが、keep-aliveは出来る
(URLリンク(www.python.jp)見ると、cookielibはurllib2での使用を想定している?)

HTTP/HTTPSをやる上で、比較的高機能で知られたライブラリってありますか?
(PerlのLWP、JavaのCommons/HttpClientみたいな)

729:デフォルトの名無しさん
09/09/27 18:42:43
参考になるかどうかわからんけど2.6, 3.0系列の構成は

URLリンク(urllib-gsoc.blogspot.com)
URLリンク(www.python.org)
URLリンク(www.python.org)

こんなかんじらしい…

730:デフォルトの名無しさん
09/09/27 18:45:28
一番下の example が参考になるかも試練

URLリンク(docs.python.org)

731:デフォルトの名無しさん
09/09/27 18:53:41
おまいらおちつけ
>>723のコードはPython2系列だ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch