くだすれPython(超初心者用) その4at TECH
くだすれPython(超初心者用) その4 - 暇つぶし2ch11:デフォルトの名無しさん
09/05/24 21:42:04
フィトン?ってパールより簡単ですか??

12:デフォルトの名無しさん
09/05/25 10:48:47
>>11
個人的にはフィトンのほうが簡単だった
ウェブだったらぺへぺのほうがいいけどね

13:デフォルトの名無しさん
09/05/25 12:15:17
個人的には(゚∀゚)ラヴィ!!のがおすすめだよ


14:デフォルトの名無しさん
09/05/25 12:17:04
sysライブラリの
stdin.readlineなど利用して
標準入力からキーボード入力したいのですが
バックスペースで日本語を消すと、半分(1byte)だけ消されて
文字化けします。

1文字は1文字としてバックスペースで消す方法を教えてください。

15:デフォルトの名無しさん
09/05/25 12:34:26
コンソールなに使ってんの?

16:デフォルトの名無しさん
09/05/25 19:47:41
円コーディングは?

17:デフォルトの名無しさん
09/05/25 23:00:57
class A(Foo):
  def func(self, **kwargs):
    super(Foo, self).func(**kwargs)

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

AとBの違いはなんでしょうか??

18:デフォルトの名無しさん
09/05/25 23:55:02
今のやり方と、昔のやり方

19:デフォルトの名無しさん
09/05/26 00:54:33
super()を使うと実行時に依存関係から適切なメソッドが得られる
Foo.func()は明示的な指定

type()で動的にクラスを生成したりするときしか考慮する必要はないと思う
何も考えずにsuper()を使うのが楽
詳しく知りたいならmroでググってみてくれ

20:デフォルトの名無しさん
09/05/26 01:03:58
メソッド付き関数とか作れるんだな
かっこよすぎ
def Counter(n=0):
 Counter.cout = n
 def increment():
  nonlocal c
   c += 1
 Counter.increment = increment
 return Counter

c = Counter(2)
c.increment()
c.increment()
c.increment()
print(c.cout)

21:20
09/05/26 01:06:09
Counter.countだ
nonlocal cも
なんかに使えますかねこれ

22:20
09/05/26 01:11:34
インスタンスは1つじゃないとちゃんと動かないから無理か

23:デフォルトの名無しさん
09/05/26 01:12:36
関数である意味が無い
素直にクラスにしとけ

24:20
09/05/26 01:19:36
ですよね・・・
ところで"\u2020"とかいう表記はusc2ですか?

25:デフォルトの名無しさん
09/05/26 01:40:17
みんなのPythonすごく読みやすい。超面白いんですけど、毎日ガンガン読んでます。

26:デフォルトの名無しさん
09/05/26 03:18:29
class を関数の様に呼び出すのってどんなのでしたっけ

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

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

h = Hoge()
h() が出来る香具師のことなんですが

27:デフォルトの名無しさん
09/05/26 04:02:55
>>> class Hoge(object):
... def __init__(self):
... print "init"
... def __call__(self):
... print "call"
...
>>> h = Hoge()
init
>>> h()
call


28:14
09/05/26 14:20:57
>>15
コンソールはlinuxのktermとかxtermとかgnome-terminalとか色々試したけど
どれも同じでした

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

ぐぐっても解消策が出てこないなぁ

29:デフォルトの名無しさん
09/05/26 16:08:15
エンコーディングは?

30:デフォルトの名無しさん
09/05/26 16:11:36
おい!

31:デフォルトの名無しさん
09/05/26 16:26:20
>>28
環境をもっと詳しく。
Linuxのディストリは何?
Python関係なく普通にシェル上で日本語を入力してバックスペース
押したらちゃんと日本語一文字消える?

32:14
09/05/26 16:30:10
>>31
ディストリはarchとubuntuで試しました
pythonに関係なくシェル上だとBSで日本語一文字消せます

ということは、皆さんは普通に消せてるんですね

33:デフォルトの名無しさん
09/05/26 16:39:57
シェルの普通の入力状態じゃなくて、
cat (とか)に何か入力しようとした状態のことを聞いている。

34:デフォルトの名無しさん
09/05/26 16:41:49
以下の例で、print a がposixを返すようにすることは可能ですか?

import os
print os.name
> posix

a = 'os.%s' % name
print a
> os.name

35:デフォルトの名無しさん
09/05/26 16:42:27
あと、ターミナル(xterm とか kterm とか rxvt)が何か、というのが
この場合環境として重要、かも。

36:14
09/05/26 16:43:45
>>33
あ、catとかでも同じ状態になります
てことはどこを修正すればいいんですかねこれ

37:デフォルトの名無しさん
09/05/26 16:44:28
>>34
eval('os.name')

38:34
09/05/26 16:52:40
>>37


39:デフォルトの名無しさん
09/05/26 19:52:31
>>36
質問する場所

40:14
09/05/26 22:18:20
ありがとうございました
もう少し調べてLinux板で質問してきます

41:デフォルトの名無しさん
09/05/28 20:34:35
シンプルなソフトウェアキーボードを
作りたいですがpythonだとwxpythonが
良いですかね?

やはりtkinterからおさえておくべき?


42:デフォルトの名無しさん
09/05/28 20:43:32
すでにあったような

43:41
09/05/30 11:33:20
このスレの閑散具合からすると
python自体を止めておいた方が
良いってことか


44:デフォルトの名無しさん
09/05/30 12:18:52
君は何やっても同じ

45:デフォルトの名無しさん
09/05/30 18:05:06
無駄なendを嫌うのと同じように
無駄な話を嫌う傾向にあると思ふ

46:デフォルトの名無しさん
09/05/31 11:02:50
filter(lambda x: x % 3 == 0 or '3' in str(x), range(1, 41))

47:デフォルトの名無しさん
09/05/31 20:21:04
filter(lambda x: x % 8 == 0 or x % 3 == 0 or '3' in str(x), range(1, 41))

48:デフォルトの名無しさん
09/05/31 21:07:22
で、実際python使ってみんなはなにをしているの?
なんかプログラムを作ってるのかな?

49:デフォルトの名無しさん
09/05/31 21:13:59
他に用途ないないと思うが・・・

50:デフォルトの名無しさん
09/05/31 21:22:15
どっちかっていうと日々の作業で使うかな
あと最近はウェブアプリに挑戦

51:デフォルトの名無しさん
09/05/31 21:25:07
変顔の自動化かなぁ

52:デフォルトの名無しさん
09/05/31 22:08:44
あたいは3Dソフトウェアのスクリプトで使ってるよ!

53:デフォルトの名無しさん
09/05/31 23:12:22
>>52
blender?

54:デフォルトの名無しさん
09/05/31 23:35:32
いまいちどんなことができるのかわからないんだけど。
例えば①ファイヤーウォールが反応したら携帯にメールで知らせるとかは?

②ひとつのフォルダに複数のmp3のデータが入っている。名前はごちゃごちゃ。
それを01.mp3~0n.mp3にファイル名を変換することは可能ですか?

55:デフォルトの名無しさん
09/05/31 23:51:00
コンピュータならできて当たり前だろ……

56:デフォルトの名無しさん
09/06/01 00:02:51
>>54
1はどんなファイアウォールを使ってるかによる
ログをテキストで定期的に書き出してくれるFWなら頑張れば出来る
そうでない場合は可能だけどちょっと難しいかな

2は余裕。osやos.path見てみるといいよ

57:デフォルトの名無しさん
09/06/01 00:26:33
>>56
ご丁寧にありがとうございます。
見てみますね。
はじめてのpython みんなのpythonあたりを読破すれば②位は簡単にできますか?
本屋で立ち読みした時に、複雑な電卓をいじってるようで…
いつになったら②見たいなことができるのかな?って疑問を持ちましたので。
ド素人ですいません。

58:デフォルトの名無しさん
09/06/01 00:54:52
>>57
初めてのPythonなら読破しなくても1/3ほど読めば十分じゃないかな
あとは使えそうなライブラリを探してマニュアルを読む

必要な時間については人それぞれ。数時間、数日、数週間・・・
まあ半年かかるなんてことはないから心配いらないよ

59:デフォルトの名無しさん
09/06/01 01:01:37
「はじめての」と「初めての」にとても大きな違いがあります
>>57はきっと「はじめての」なんでしょうな・・・

60:デフォルトの名無しさん
09/06/01 01:07:37
皆さん親切に本当にありがとうございます。
個人的にちょっと読んだだけですが「みんなのpython改訂版」が読みやすかったのですが
(ちょっとだけしか見てませんが…)
これでもOKですか?これでも1/3くらい読めば、ショボイプログラムが作れますか?
明日買ってきます。

61:デフォルトの名無しさん
09/06/01 01:14:48
それは初心者向けで突っ込んだ解説はしていない本だからすぐに全部読めるよ
しょぼいプログラムを作るのが目的でネットの検索と併用すれば十分かと

62:デフォルトの名無しさん
09/06/01 01:42:36
>>59
「はじめての」人柱になってもらおうとか思って
似たタイトルの本があるとはあえて言わなかった。反省している

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

import os

for i, filename in enumerate(os.listdir(u'.')):
if filename.endswith('.mp3')
os.rename(filename, '%03d.mp3' % i)

63:デフォルトの名無しさん
09/06/01 02:38:56
みんなのPythonの改訂版ってPython3.0対応版でしょ
その辺に転がってるコードが多いのはPython2.x系
言語仕様が一部変わってるから気をつけな

新しいものをとるか古いのを選ぶかは趣味の問題ではあるが
標準以外のモジュールは3.0にはまだ対応してなかったりもするから気をつけなよ
まあ、仕様の変更点を把握しとかないといけないのはどちらを学ぶにしても同じだがね
本はちょっとしたプログラムを書きたいってだけなら挫折しないように薄いのにしときなw
あとはオンラインドキュメントとかで適当に調べつつ作りたいもの作ればいいさ

64:デフォルトの名無しさん
09/06/01 03:06:12
>>56
元々
03.mp3
02.mp3
01.mp3
というファイルがあったとき
01.mp3
02.mp3
03.mp3
に名前を付け替えるのって簡単?

65:デフォルトの名無しさん
09/06/01 03:34:23
一体どこが難しいんだ?

66:デフォルトの名無しさん
09/06/01 03:36:00
>>64
条件が良く分からないけど、番号を昇順に変えるの?
何とでも出来ると思うよ。

67:デフォルトの名無しさん
09/06/01 04:03:07
いや、お前達64が何言ってるのか理解してないだろう。
64が言ってるのはファイル名の重複でリネームするのに失敗する問題。

68:デフォルトの名無しさん
09/06/01 04:04:55
一度別の名前にリネームすればいいじゃん。

69:デフォルトの名無しさん
09/06/01 06:48:48
邪魔になってる方のファイルを別の名前にするんですね

70:デフォルトの名無しさん
09/06/01 07:12:58
rename前に既存調べて既存だったら飛ばせば医院で内科医?

71:デフォルトの名無しさん
09/06/01 07:22:31
>>70
それが >>64 >>67 の意図する動作になってるかどうかは微妙

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

とりあえず >>64 は仕様を明確にすべき


72:デフォルトの名無しさん
09/06/01 07:59:17
さすがくだすれw

73:デフォルトの名無しさん
09/06/01 08:56:03
つーか、パイソンと全然関係ないしw
一般のアルゴリズムが分からないって、言語以前の問題だからw

74:デフォルトの名無しさん
09/06/01 15:17:18
swapなんぞ誰でも思いつくアルゴリズムだろ

75:デフォルトの名無しさん
09/06/01 15:51:51
えっと、
スレ違いですので
こちらへどうぞ
スレリンク(tech板)

76:デフォルトの名無しさん
09/06/01 21:12:23
>>62さん

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

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

宜しくお願い致します。


77:デフォルトの名無しさん
09/06/01 21:36:39
>>76
その前に自分で書いたコードを貼ってみて
動かなくても全然構わないから

いきなり答え見たら実力つかないよ

78:デフォルトの名無しさん
09/06/01 21:47:43
全然そんなレベルじゃないんですよ(汗
すいません。

79:デフォルトの名無しさん
09/06/01 22:16:23
>>76
指定ディレクトリ内のファイル一覧を取得する
os.listdir、glob.glob等

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

ファイル名を変更
os.rename

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

このあたりを調べればいけるんじゃない?
とりあえずosとos.pathモジュールは一通りリファレンスに目を通しましょう。


80:デフォルトの名無しさん
09/06/01 22:19:21
>>79さん
本当にご親切にありがとうございます。
今日さっそく「みんpy」買ってきました。
面白いですね。まだプログラムって感じではないんですが…
とても参考になりました。
またわからない事がありましたら宜しくお願い致します。

81:デフォルトの名無しさん
09/06/01 22:36:13
>>62 のコードだと
mp3以外のファイルがあったら番号とばない?

82:デフォルトの名無しさん
09/06/01 22:52:35
>>81
飛ぶね。失礼しました

count = 1
for filename in os.listdir(u'.'):
if filename.endswith('.mp3'):
os.rename(filename, '%03d.mp3' % count)
count += 1

83:デフォルトの名無しさん
09/06/01 22:57:49
>>79さん
ちょっと片言の言語で作ってみましたがrenameでのアイデアが…
なにかヒントをお願いします。

#coding: UTF-8

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

ここまででギブ…曲数分の数値をリストで作ってみて対応できればと…その後は…
そもそも間違った考え方なんですかね…ネットで調べながらなのですいません。


84:デフォルトの名無しさん
09/06/01 23:24:31
>>76
#-*- coding: utf-8 -*-
import os, sys, time, shutil
from math import ceil, log
def rename_to_number(srcdir, ext):
    files = filter(lambda x: x[-len(ext):]==ext, os.listdir(srcdir))
    tmpdir = os.path.join(srcdir, 'tmp%s_%s' % (os.getpid(), time.time()))
    while os.path.exists(tmpdir): tmpdir += '0'
    os.mkdir(tmpdir)
    for f in files:
        src = os.path.join(srcdir, f)
        shutil.move(src, tmpdir)
    fmt = '%%0%dd%s' % (ceil(log(len(files),10)), ext)
    for i, f in enumerate(sorted(files)):
        src = os.path.join(tmpdir, f)
        dst = os.path.join(srcdir, fmt % i)
        shutil.copy(src, dst)
    #shutil.rmtree(tmpdir)  # この行を有効にすると作業後テンポラリを削除します。
if __name__ == '__main__':
    srcdir = sys.argv[1]
    ext = sys.argv[2]
    if ext[0] != '.': ext = '.' + ext
    rename_to_number(srcdir, ext)

# 使い方。このスクリプトを hoge.py と保存(UTF-8)した場合。
# python hoge.py ターゲットディレクトリ 対象拡張子
# と入力

85:デフォルトの名無しさん
09/06/01 23:35:15
>>84さん
すごい。。。
レベルが違いすぎました。
出直してきます。
恥ずかしいですわ

86:84
09/06/01 23:55:00
要求にあってなかったところを訂正。

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

番号を 0からスタートじゃなく、1からにする。(15行目)
×        dst = os.path.join(srcdir, fmt % i)
○        dst = os.path.join(srcdir, fmt % (i+1))


87:デフォルトの名無しさん
09/06/02 00:01:08
ディレクトリの指定は必要ないんですか?

88:デフォルトの名無しさん
09/06/02 00:19:05
けーすばいけーす

89:デフォルトの名無しさん
09/06/02 17:09:47
お勉強スレのほうに書いたのですが、ちょっと質問のレベルが低すぎたみたいなので、こちらで聞かせていただきます;;

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

python-3.0.1をインストールしてみたのですが、どうしたらいいのかイマイチよくわかりません;;

90:デフォルトの名無しさん
09/06/02 17:16:18
Python2.6.2をインストールして*.pyをダブルクリックしてみるよろし

91:デフォルトの名無しさん
09/06/02 17:32:05
>>89
Python 3.0 はプログラミングの初学者には今のところ向いてないよ
>>90 の言う通りにしてコマンドプロンプトの使い方も併せて調べておくといいと思う

92:デフォルトの名無しさん
09/06/02 18:13:35
ありがとうございます!
2.6.2ですね。
試してみます。

93:デフォルトの名無しさん
09/06/02 23:50:54
>>84
素敵だが初心者にやさしくないなぁ
無駄に丁寧だから本質じゃない部分につい目がいってしまう

94:デフォルトの名無しさん
09/06/03 01:05:17
>>93
本当にそうだな。
ただ、あそこまでやるなら、テンポラリディレクトリ作るのに何故
tempfile.mkdtemp()を使わないのかが非常に謎。

95:デフォルトの名無しさん
09/06/03 07:09:58
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /


96:デフォルトの名無しさん
09/06/03 18:04:51
windows xp sp3
python2.5.3

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

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

と出てしまいます
AttributeErrorが見つからない理由と、そもそもUnboundLocalErrorがなんなのかよく理解出来ていないのですが、
原因をご存知の方いますでしょうか?

97:96
09/06/03 18:24:44
ごめんなさい解決しました
その前に書いてあった
except ImportError, AttributeError:
の括弧忘れでした。

98:デフォルトの名無しさん
09/06/03 18:27:33
UnboundLocalError: ローカル変数名のリストにはあるけどまだ宣言されてないよ
NameError: とにかくそんな名前知らんよ

99:デフォルトの名無しさん
09/06/03 19:14:50
>>97
エラーが出なくなっただけで
解決はしていないと思うよw

100:デフォルトの名無しさん
09/06/03 19:19:47
学生時代に資格試験取得でcは勉強したのですが、
社会人になってからは言語は一切触れてません。

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

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

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

*正直、業務でも活かせることができるまでを
 意識した勉強の仕方がわからないのが困っています、、、

101:デフォルトの名無しさん
09/06/03 19:48:45
>>100
まず要点をまとめてわかりやすく説明することを勉強しるw

102:デフォルトの名無しさん
09/06/03 19:59:08
オラ、宇宙一強くなりてえだ!

103:デフォルトの名無しさん
09/06/03 22:17:38
DjangoにしろPlone(Zope)にしろ癖が強いから初めての人には勧められないな
>>100に明確な目的があるなら別だけど
時間に迫られてないけど面倒な作業を自動化してみる辺りからやってみたら?

104:デフォルトの名無しさん
09/06/03 22:41:03
クックブックでも読めば?
そして己の無知を自覚して初めてのPythonに取り組む
まあ、業務で即生かせるようにはならないがな!

105:デフォルトの名無しさん
09/06/03 23:23:42
みんなのPython改訂版のP.119の一番下のサンプルコードおかしくありませんか?
お持ちの方がいましたら、見てみてください。
>>>for cnt in range((len(seq)):
... print seq[cnt]
...

です

106:デフォルトの名無しさん
09/06/03 23:38:25
端から見ると特におかしくないようだが・・・

107:デフォルトの名無しさん
09/06/03 23:52:39
URLリンク(mixi.jp)

108:デフォルトの名無しさん
09/06/04 00:36:51
カッコ。


109:デフォルトの名無しさん
09/06/04 02:20:26
>>100
ここの課題でもやってみれば?
スレリンク(tech板)

Django, Plone は 「Python 自体の勉強」 にはお奨めしない


110:デフォルトの名無しさん
09/06/04 03:36:56
とりあえずver2.5の日本語ドキュメントでいいから目を通せ。
チュートリアルをひととおりやって、それが終わったらライブラリリファレンスを読む。
用途や意味の分からないライブラリがあったら調べて、どういう時使うのか理解する。

目的ありきでもいいのかもしれないけど、道具を徹底的に理解するのも大事だと思う。
標準ライブラリだけでも、かなり実用的なものが揃ってるから分かってくると楽しいよ。

111:デフォルトの名無しさん
09/06/04 10:01:10
>>105
ひどい書籍ですね!
ぜひとも買って確かめなければ!!!

112:デフォルトの名無しさん
09/06/04 12:55:57
>>100

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

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

基本がわからないんだったら、何度も読み返して、
くだらない例題だと思っても、
自分で実際にコードを書きまくって理解しろよ。


113:105
09/06/04 23:00:47
>>>for cnt in range(len(seq)):
... print seq[cnt]
...
でした。でもこれでもおかしいですよね?
len()への引数で文字列を扱う際は""。
結果的にはどうしたいのか謎ですが、これが正解に近いですか?
>>>a="seq"
>>>b=range(len(a))
>>>b
[0,1,2]
>>>for cnt in b:
... print a[cnt]
...
s
e
q
>>>
ではないですか?

ってか単純に文字列に""が足りないだけで
>>>for cnt in range(len("seq")):
... print "seq"[cnt]
...
s
e
q
でしょうか?上記の例は詳しくやってみました。

114:デフォルトの名無しさん
09/06/04 23:04:44
seqが変数なんだろ?
前で代入されてるんでしょ?

115:デフォルトの名無しさん
09/06/04 23:10:32
105は友達がいないせいでmixi垢を持ってないんだな。
なによりそれが可哀想だ。

116:デフォルトの名無しさん
09/06/04 23:11:47
まあ、2ちゃんに貼ってあるmixiのリンクは普通踏まないがな・・・

117:105
09/06/04 23:14:00
>>114
かなり前までさかのぼっても代入された記述はないんですよ

>>115
確かに友達は少ないかな?w
mixi垢ってなに(汗


118:デフォルトの名無しさん
09/06/05 00:09:14
書籍のサンプルコードなんだから一部抜粋なんて
普通にあるだろ。そうでなければタダの誤植。

だいたいseqっていう名前から
何らかのシーケンスを表す変数だって想像しろよ。
"seq"っていう文字列だなんて普通は思わないよ。


119:デフォルトの名無しさん
09/06/05 00:14:38
>>113
range(len(seq))はforで添え字アクセスをしたい場合に使う慣用句
こんな感じに使う

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

後々わかる日が来るから深く悩まず先に進むのが吉

120:デフォルトの名無しさん
09/06/05 00:18:22
>>119
あ、linenumになってないね。
linenum → i に訂正

121:デフォルトの名無しさん
09/06/05 00:29:17
おかしいのは105の脳みそでした

122:デフォルトの名無しさん
09/06/05 02:17:09
>>105 さんの脳みそ本当にだいじょうぶかなぁ
ぜったい普通じゃないよね かわいそう


123:デフォルトの名無しさん
09/06/05 03:11:03
クラスAのなかで[1,2,3]というリストを作ろうとしています。
で、次のようにコーディングしたらselfが定義されてない、って怒られました。
class A:
def __init__(self):
self.x = []
for i in range(1,4):
self.x.append(i)



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

なにがまずいのかわかりません。どなたかご指摘くださるとありがたいです。

124:デフォルトの名無しさん
09/06/05 03:23:15
>>123
インスタンスメソッドの第一引数(慣習としてselfを使う)は
インスタンスオブジェクトを指す。
その for 文はインスタンスメソッドの外側にあるので、クラスを
生成するときに実行される。その時にselfは存在しない。
解決するにはインデントを修正する。
class A:
  def __init__(self):
    self.x = []
    for i in range(1,4):
      self.x.append(i)
ただし、こちらの方が綺麗
class A:
  def __init__(self):
    self.x = range(1,4)

125:デフォルトの名無しさん
09/06/05 10:02:50
インデントがずれてるんじゃねえの?
スペースを全角に変換してもういちどコード張れや>123

126:デフォルトの名無しさん
09/06/05 11:08:44
>>124
ありがとうございます。
インデントはつけています。投稿時につぶれてしまいました。すみません。

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

class A:
        def __init__(self):
                self.x=[]
        for i in range(1,4):
                self.x.append(i)

127:デフォルトの名無しさん
09/06/05 11:13:27
>>126
バロス(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

128:126
09/06/05 11:31:20
あ~、
for i ...
のインデントは
def __init__ ...
より内側に来なきゃいけないのかな?
どうもselfがよくわからんorz

129:デフォルトの名無しさん
09/06/05 13:20:52
self.x = [] の次の行は
既に別の空間だ

130:デフォルトの名無しさん
09/06/05 15:50:40
コードは
$ sed -e "s/ /\ /g" test.py
みたいに正規表現でhtmlの空白に置換するといいよ

131:デフォルトの名無しさん
09/06/05 19:49:02
すごい初歩のことですみません。
リストでスライスのことですが、

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

となります。

なぜ、1,2,3にならないのでしょうか?
0からのインデックスという説明がされているのですが、
0,1,2,3,4,5,6,7,8,9
とするのならば、a[1,3]であれば、1,2,3ではないのですか?
こんなところでつまづいてしまっているのですが、どのように理解すればよいのでしょうか?

132:デフォルトの名無しさん
09/06/05 19:56:23
後ろから2行目に間違いがありました。
a[1:3]でした。

133:デフォルトの名無しさん
09/06/05 19:59:19
>>131
スライスにおけるインデックスは文字の隙間と考えるのが定番
URLリンク(www.python.jp)

134:デフォルトの名無しさん
09/06/05 20:03:08
>>131
開始点は含み、終了点を含まない範囲を指定している。
記号で書けば、 [begin, end)
こうすると、長さ0の範囲を [n:n] で表せる。
もしくは、長さを end - begin で計算することができる。
C++でも同じ考え方をしているよ。

135:デフォルトの名無しさん
09/06/05 20:04:16
>>133
なるほど。文字と文字の隙間にインデックスが付けられているのですね。
文字自体についているわけではなかったのか。
疑問が解けました。ありがとうございました。

136:デフォルトの名無しさん
09/06/05 20:06:47
何につけ作法は作法で「そういうもの」と覚えてしまう方が早く学習進んで良い
理由付けやルールなんかは言語作者のもんだしさ…

137:デフォルトの名無しさん
09/06/05 20:09:47
134さんもありがとう。
133さんのリンク先の図解で理解できました。
また、計算する際にも利用できるのですね。
今のところ、図解が理解できたので良しとします。
m(_ _)m

138:デフォルトの名無しさん
09/06/05 20:27:42
>>136
確かにそうなのかも知れないですけど、モヤモヤしていて理解できないことって、気持ちが悪いです。
しかも難しくて理解できないことじゃなくて、誰でも疑問を持ちそうな初歩的なことでしたから。
インデックスが、文字自体に付いていないということに気付きませんでした。

139:デフォルトの名無しさん
09/06/05 20:34:20
小学校の算数レベルだろ


140:デフォルトの名無しさん
09/06/05 20:40:24
うーん、そうなのですか?
今の算数は、インデックスが0から始まりそれは文字に割り当てられてのではなく、
隙間に割り当てられているって習うんですか?
私に時には習った覚えはないです。

141:デフォルトの名無しさん
09/06/05 20:42:15
誤字になってしまったので、書き直します。

うーん、そうなのですか?
今の算数は、インデックスが0から始まりそれは文字に割り当てられるのではなく、
隙間に割り当てられているって習うんですか?
私の時には習った覚えはないです。


142:デフォルトの名無しさん
09/06/05 20:46:20
>>141
釣られなくていいから

143:デフォルトの名無しさん
09/06/05 20:58:16
>>142
そっくりそのままお前に返したいw

144:デフォルトの名無しさん
09/06/05 21:46:27
>>143
くりそつ

145:デフォルトの名無しさん
09/06/05 22:37:15
つーか、単に-1に合わせてるだけの希ガス。

146:デフォルトの名無しさん
09/06/06 01:15:51
end - beginで length が取れるのが一番の魅力だと思う

147:デフォルトの名無しさん
09/06/06 09:58:05
>>146
カウンタが1から始まったりendが含まれる系の言語では
あちらこちらに +1 とか -1 が散らばってて、一旦バグると
どの +1 が間違ってるのか判らないもんな。

148:デフォルトの名無しさん
09/06/06 11:47:27
C とかで書くときもやっぱり
for (i = begin; i < end; i++)
だな。
for (i = begin; i <= end; i++)
とか書いてるのみるとイラッとする。


149:デフォルトの名無しさん
09/06/06 12:39:39
>>148
場合によるね。
タグの値を順番になめる場合とか、結構 <= で比較する場合もあると思う。
for (tid = ID_START; tid <= ID_FINAL; ++tid) とか。

150:148
09/06/06 12:42:56
>>149
うん 場合によるとおもう 必要なときもあるよね
でも <= を使うときにちょっといやな気分になるのはおれだけかな


151:デフォルトの名無しさん
09/06/06 12:54:49
俺もなる。基本的に序数の場合はそれでいいと思う。
ただ
for (double alpha = 0.0; alpha <= alpha_max; alpha += step)
みたいに実数値の範囲みたいなのは<=じゃないとキモいと思う

152:デフォルトの名無しさん
09/06/06 14:00:30
普通はID_FINALってやつを最後の次の値として定義するけどな。
そうでないと斜め読みしてるときにいちいち目がとまって
本当にただしいか確認しないとといけない。

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

郷にいれば郷に従えみたいな感じかなあ。

153:デフォルトの名無しさん
09/06/06 14:05:25
と思ったけどそうでもないかな。
今のなしで。

154:デフォルトの名無しさん
09/06/06 14:07:10
0~N-1なら、i<Nで、
A~Bなら、i<=Bだな。

155:デフォルトの名無しさん
09/06/06 14:14:25
初心者には難しい話しているな(汗

156:デフォルトの名無しさん
09/06/06 15:42:24
>>151
なんで?

157:デフォルトの名無しさん
09/06/06 19:41:22
おまえら、JDBCでも1ベースなのはなぜなんだぜ?

158:デフォルトの名無しさん
09/06/06 22:25:54
Pythonの場合xDBCは不要


159:デフォルトの名無しさん
09/06/06 23:25:49
DBAPI 使う罠

160:デフォルトの名無しさん
09/06/08 10:48:32
>>158

マジすか?
Mac から Microsoft Access データを読み書きする方法教えやがれです。


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

#!/python

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

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

アクセスすると真っ白です。
どなたかお助け願います。お願いしますよろしくお願いします!

162:デフォルトの名無しさん
09/06/08 12:17:42
>>161
かなり特殊なサーバーみたいだね。
URLリンク(www.kamezoh.net)
これをみると、拡張子とインタプリタの関連付けを一個一個埋め込みで実装している
ような気がする。で、Pythonには対応していないから実行できなさそう。

163:デフォルトの名無しさん
09/06/08 12:29:30
>>162
まま、マジですか!
ありがとうございます。
原因がBlackJumboDogにあるとは考えてなかったので
それを念頭にまたググってみます。

164:デフォルトの名無しさん
09/06/08 13:15:30
>>161
python -V (大文字)

165:デフォルトの名無しさん
09/06/08 15:08:16
>>164
多分bingoだろうな。どうして--helpとか、-hをまずしないのだろうか。

166:デフォルトの名無しさん
09/06/08 15:23:13
ついでに晒しとく

URLリンク(6924.teacup.com)
かめぞ~掲示板
雑談 兼 避難所

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

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


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

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

おしゃれ女性かつら情報
ファッションから医療用まで、女性用かつら・ウィッグ情報はコチラ。

167:デフォルトの名無しさん
09/06/08 17:22:26
>>161
特別な事情やこだわりがない限り
WebサーバはApache使ったほうがいいんじゃまいか

168:デフォルトの名無しさん
09/06/08 19:40:31
>>161
俺はANHTTPDを使ってる
これならPythonだろうがなんだろうが動くぞ

169:デフォルトの名無しさん
09/06/08 20:20:46
Winなら、Linuxの仮想環境作ってその中でWeb鯖立てるのが本当はおすすめ

170:デフォルトの名無しさん
09/06/08 22:40:41
あの~インタラクティブシェルでだらだらコードを書いた後にクリアしたい(今までのコードをを消したい)
時は再起動しかないですか?(プログラムを)

171:デフォルトの名無しさん
09/06/08 23:08:55
wsgiだろ常考

172:デフォルトの名無しさん
09/06/09 00:40:26
>>162
へえ、と思ってソース(TVWeb.cpp)を見たが、以下のようなロジックなので
pythonインタープリターとパラメーターがちゃんと1行目に書いてあれば
大丈夫っぽい。

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

何がcgiモジュールなのかは、設定ダイアログで設定した拡張子で判断する。
ただし、拡張子と実行コマンドが紐付けされるわけではなく、上記のロジックで
判断される。

173:デフォルトの名無しさん
09/06/09 03:47:45
>どちらでもなければコマンドへのフルパスと見なす(/は\に置換)

じゃあ
#!c:/Python26/python.exe
って書かないといけない訳?

174:デフォルトの名無しさん
09/06/09 07:54:25
だっさ

175:デフォルトの名無しさん
09/06/09 22:11:34
/cygdrive/c/IronPython/py2/ipy.exe

176:デフォルトの名無しさん
09/06/10 08:07:17
Python CGI
スレリンク(php板)

いつまで板違いの話をしてんの

177:デフォルトの名無しさん
09/06/10 09:16:42
海の日

178:デフォルトの名無しさん
09/06/10 11:44:06
つゆ入り

179:デフォルトの名無しさん
09/06/10 22:56:31
>>176
他の板に適切なスレがあるからと言って、即スレ違いということにはならん。
誘導自体は否定しないけどね。

180:デフォルトの名無しさん
09/06/11 16:09:25
アフォ毛

181:デフォルトの名無しさん
09/06/11 17:10:28
pythonもオブジェクト指向も初心者です。
次のようなことをしたいと思ってます。

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

どうやったらいいか、思考の材料さえ頭の中にない状態です。キーワードだけでも教えてください。

182:デフォルトの名無しさん
09/06/11 18:00:42
>>181
スレリンク(tech板)

183:デフォルトの名無しさん
09/06/11 19:56:01
>>181
まず、何でもいいから
「クラスを定義してインスタンスを作ってメソッドを実行する」
くらいは出来るの?

184:181
09/06/11 20:18:11
>>183
ようやくそれができるようになった段階です。

185:デフォルトの名無しさん
09/06/11 21:57:35
前にも出ましたが、「ファイル名の書き換え」
例えばディレクトリ指定はコード内に書く。
フォルダ内のごちゃごちゃ名前のmp3ファイルをa01.mp~a0n.mp3まで順に書き換える。
参考にさせて頂きたいのですが、サクサク書ける方いましたら宜しくお願い致します。


186:デフォルトの名無しさん
09/06/11 22:15:48
Python何が得意なの?
webサーバーのCIとか得意ですか?

187:デフォルトの名無しさん
09/06/12 00:21:57
>>186
Pythonは、汎用のプログラミング言語だから、大抵の事に適しているよ。

デスクトップアプリ: BitTorrent, DropBoxクライアントなど
Webアプリ: Zope, Django, TurboGears
埋め込み: 各種ゲーム、CG
サーバー: Webサーバー、FTPサーバー、メッセージングサーバー

188:デフォルトの名無しさん
09/06/12 03:17:45
なんか板違いが多いな
web板逝けよ
スレリンク(php板)

189:デフォルトの名無しさん
09/06/12 07:28:25
それコピペ

190:デフォルトの名無しさん
09/06/12 08:55:15
それもコピペ

191:デフォルトの名無しさん
09/06/13 22:57:07
関数の戻り値ってのがちょっと理解できないんですが、
これってどういう目的で行うんですか?関数によって返されたオブジェクトを変数に代入すれば同じ
効果ですか?
ちょっとわかり難いので、噛み砕いてご説明いただけると幸いです。
プログラミング自体初心者です。宜しくお願いします。

192:デフォルトの名無しさん
09/06/13 23:31:07
一回スパゲッティを作ってみるといいよ

193:デフォルトの名無しさん
09/06/14 00:20:46
スパゲッティと関係あるんでしょうか

194:デフォルトの名無しさん
09/06/14 01:04:35
引数が入力なら戻り値は結果だよ

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

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

これを answer = add(2, 3) と使うと、
add さんに 2 と 3 を足してくれーと頼んで、add(2, 3) はその結果の 5 に置き換わると考えてかまわない
つまり answer = 5 みたいになって、answer には 5 が代入される
answer = add(2, 3) * 3 なら answer = 5 * 3 みたいになって 15 が代入される

195:デフォルトの名無しさん
09/06/14 09:46:43
reduceがようわからんのですが

196:デフォルトの名無しさん
09/06/14 10:38:01
>>195
おれもよくわからんのですが、forループで書くよりreduceで書いたほうがカッコいいというのは分かる。
つまり結果が一個になるforループはreduceで書いてる…

おなじく結果の個数が変わらないforループは、mapで書いたほうがカッコいいのでそうしてる。

197:デフォルトの名無しさん
09/06/14 12:08:24
>結果が一個になるforループはreduce

とは限らないんだよねぇ

198:デフォルトの名無しさん
09/06/14 12:30:03
>>197
えー
教えてくだしあ

199:デフォルトの名無しさん
09/06/14 12:35:10
reduce は

x1 ⊕ x2 ⊕ ... ⊕ xn

のこと。
リストx1, ..., xnと2項演算子⊕を与えられればこの計算は定義できるでしょ。

200:デフォルトの名無しさん
09/06/14 12:39:17
>>194
ありがとうございます!
returnを使わないと、戻り値を変数に代入できないのですが、
それを代入できるようにするのがreturnと考えてもOKですか?

201:デフォルトの名無しさん
09/06/14 12:49:58
>>200
Pythonに代入というものはない。
すべてbindingだ。

202:デフォルトの名無しさん
09/06/14 12:51:45
>>200
不思議な頭の構造してる人だなぁ。
returnを使わないと、戻り値がそもそも「ない」。
あなた「戻り値」って何だと理解しているわけ?

203:デフォルトの名無しさん
09/06/14 12:55:10
「戻り値」=「結果」?
>>returnを使わないと、戻り値がそもそも「ない」。
っていうのがよくわからないんですよね
参考書などではreturnのところがprint文で結果を表示するようになってますよね。
その違いってなんですか

204:デフォルトの名無しさん
09/06/14 12:56:30
なんか着眼点がずれてる。

205:デフォルトの名無しさん
09/06/14 12:58:55
えー
newlist = reduce(lambda x,y: x+y, inputlist) リストの内容を全部連結したリスト作る
たとえばこんなreduceもあるかもしれんけど…
結局どういうとこで使うのが一番カッコいいのか良く分からんのですよ。
逆に正直に言うとですね、「コイツこういうとこではreduce使えよバカ」と思われないためには
どうしたらよいでしょうかw

206:デフォルトの名無しさん
09/06/14 13:03:18
>>203
呼び出して任せて何かさせて終わり、なら、戻り値は要らない。
呼び出して結果を報告させるには、戻り値が必要。

207:デフォルトの名無しさん
09/06/14 13:05:49
「関数の呼び出し側の都合」と、
「関数内部の都合」がごっちゃになってるんじゃね?

関数は作る人と使う人がいる。

208:デフォルトの名無しさん
09/06/14 13:06:01
>>205
速度面などで必要ないなら使わなくておk

209:デフォルトの名無しさん
09/06/14 13:06:39
>>205
使う意義がよく分からないものは無意味に使わないのが
Python的にはカッコイイ。

210:デフォルトの名無しさん
09/06/14 13:09:48
高階関数にreduce的な関数を渡す必要があるときは reduceを使う。
わざわざlambda でごちゃごちゃと車輪の再発明するのはカコワルイ。
もっともreduceをとる高階関数なんて、見たことないけど。

211:デフォルトの名無しさん
09/06/14 13:13:29
はっきり言うとreduceはいらない子。
使わなくてよろしい。

212:デフォルトの名無しさん
09/06/14 13:17:14
>>211
非常にすっきりしました。
map/reduceの兄弟、兄は本当に便利な子だけど弟は「はっきり言って要らない子なのよね」
とつぶやく母、それを聞いてしまい泣きながら家を飛び出すreduceくんということですね。

213:デフォルトの名無しさん
09/06/14 13:21:02
関数型プログラミングやろうとするとreduceの出番も出てくるけど、
Pythonの場合、関数型にこだわる意味がないからな。

214:デフォルトの名無しさん
09/06/14 13:28:54
>>203
初心者が対話型プロンプトで標準出力への出力と
関数の戻り値が区別つかなくなるのは典型的な落とし穴

print 'hoge' # 'hoge'を標準出力に書き出す。戻り値もへったくれもない

215:デフォルトの名無しさん
09/06/14 13:29:51
map/reduce/filterは使い始めると際限ないから基本使わない

216:デフォルトの名無しさん
09/06/14 13:36:31
小手先の技は、俺SUGEEだけのために存在する。
そういう奴に限って、アルゴリズムがさっぱりだったりするw

217:デフォルトの名無しさん
09/06/14 13:44:19
抽象化を「小手先の技」とか思っちゃう奴はこの先真っ暗だぞ。

218:デフォルトの名無しさん
09/06/14 13:51:07
これは抽象化じゃないだろw

219:デフォルトの名無しさん
09/06/14 13:56:24
>>標準出力への出力と 関数の戻り値
>>関数は作る人と使う人がいる。
難しいな


220:デフォルトの名無しさん
09/06/14 14:24:22
filterは普通に便利だし。
Cしか知らない人が「何なのこれ??」っていうから、
このmapってのがfor i = 0 to... のループで、filterってのがループの中のif文ですな、
展開してみるとこんな具合です。と説明したら「SUGEEEE」言ってた。

221:デフォルトの名無しさん
09/06/14 14:29:03
>>214
なるほど、式を評価してそのまま表示するから、
かえって分かりにくくなってるってことか。

222:デフォルトの名無しさん
09/06/14 14:38:50
>>212
reduceが兄で
mapが弟ですよ

223:デフォルトの名無しさん
09/06/14 14:40:20
>>214
printの戻り値は無視ですかそうですか

224:デフォルトの名無しさん
09/06/14 14:50:58
printの戻り値?あれはステートメントだろ。


225:デフォルトの名無しさん
09/06/14 15:09:59
printはもう文じゃなくて関数になったよ^^

226:デフォルトの名無しさん
09/06/14 15:12:15
変な煽りは本スレでどうぞ
少なくとも>>214のprintは誰が見ても文

227:デフォルトの名無しさん
09/06/14 21:56:20
print関数も戻り値ないんだよ^^

228:デフォルトの名無しさん
09/06/14 21:58:27
reduceが抽象化じゃないとか、痛い人がいるな。

pythonは処理の構造を抽象化するオツムなんかプログラマに期待していなくて
バカでもちょっとだけ賢い人も同じ処理を書くと同じようなコードになるよう
誘導する言語だから、ループ書けという方向になってる。
reduceとかは、初期に有能なプログラマを魅きつけるためのプログラマホイホイ
みたいなもので、十分普及した今となってはいらん子扱い。

229:デフォルトの名無しさん
09/06/14 22:10:57
えっと
ネタだよね

230:デフォルトの名無しさん
09/06/14 23:38:37
228の要約
forを書くプログラマは馬鹿

231:デフォルトの名無しさん
09/06/14 23:47:00
頭がreduce

232:デフォルトの名無しさん
09/06/15 01:02:07
mapやreduceがなくても実際ほとんど困らないけど
なくなっちゃったらなんか味気ないよねえ
リスト内包表記がなかったら少し困るけどね


233:デフォルトの名無しさん
09/06/15 02:44:24
うちの嫁はreuse

234:デフォルトの名無しさん
09/06/15 10:33:27
mapは複数のリストに演算を適用したいときに使うかな
ベクトルの加算みたいな
+をoperator.addとかタイプせなあかんのはウザいが

235:デフォルトの名無しさん
09/06/15 10:38:54
forよりmapの方が速いんじゃなかったっけか?

236:デフォルトの名無しさん
09/06/15 10:59:50
operator.add と lambda x,y:x+y だとどっちが速いですか

237:デフォルトの名無しさん
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
なんなんだこのスレ


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