全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
Pythonのお勉強 Part31

1デフォルトの名無しさんsage2009/01/01(木) 23:44:57
Pythonオフィシャルサイト
http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
http://pc11.2ch.net/test/read.cgi/tech//
2デフォルトの名無しさんsage2009/01/01(木) 23:46:20

┌──────────────────┐
|                              |
│            _  ∩             |
│          ( ゚∀゚)彡 おっぱい!     |
│          (  ⊂彡   おっぱい!    .|
│           |   |            |
│           し ⌒J              |
│                              |
│         Now Oppaing. ....          .|
│                              |
│   そのままおっぱいでお待ちください。  |
|                              |
└──────────────────┘
3デフォルトの名無しさん2009/01/02(金) 00:06:47
ペニス
4デフォルトの名無しさんsage2009/01/02(金) 00:14:20
>>1
おつぱいそん
5!omikuji !damasage2009/01/02(金) 05:14:01
乙py
6初心者sage2009/01/02(金) 08:55:53
パイパン初心者です。こんなスレがあるなんて今日初めて知りました。
7初心者sage2009/01/02(金) 13:50:22
Rubyこそが史上最強の言語であると思ってますが、パイパンがんばります!
8デフォルトの名無しさんsage2009/01/02(金) 17:00:37
>>7
そうだね、ハルマゲドンはすぐそこまで来ているよね。
9デフォルトの名無しさんsage2009/01/02(金) 17:37:39
またruby厨の自演がはじまった
10デフォルトの名無しさんsage2009/01/02(金) 18:29:45
>>1
おっぱいそん!
11デフォルトの名無しさんsage2009/01/02(金) 21:24:05
>>1
π乙
12デフォルトの名無しさんsage2009/01/02(金) 21:41:13
刑務所でも使えるRubyに感謝
13デフォルトの名無しさんsage2009/01/02(金) 22:52:59
だれか、pythonのスクリプトを難読化する
ツールを僕に紹介してちょんまげ
14デフォルトの名無しさんsage2009/01/02(金) 23:12:04
誰もお前の糞なスクリプトなんて読まないから安心汁
15デフォルトの名無しさんsage2009/01/02(金) 23:46:31
つ perl
16デフォルトの名無しさんsage2009/01/03(土) 00:25:01
つ Grass
17デフォルトの名無しさんsage2009/01/03(土) 01:17:47
.pyc
18デフォルトの名無しさん2009/01/03(土) 02:09:00
python -m py_compile
python -m compileall


何か面倒な事をしたいのなら、

def encode_src(src):
print("""exec '''%s'''.decode('base64')""" % src.encode('base64'))

encode/decodeは必要に応じてcompile,marshal他を組み合わせる。
19デフォルトの名無しさんsage2009/01/03(土) 02:12:42
>>18の訂正
execも関数になるんだっけ。exec -> exec(...)
20デフォルトの名無しさんsage2009/01/03(土) 02:24:15
他に、codec使う方法もある。

# -*- coding: rot13 -*-

cevag('Uryyb, jbeyq!')
21デフォルトの名無しさんsage2009/01/03(土) 04:05:31
>>> class a:
... hoge=2
... def hage(self, x):
... self.hoge=x
... def fuga(self, y):
... return self.hoge
...
>>> vars()['a'].__dict__
{'__module__': '__main__', 'fuga': , 'hage': ion hage at 0x00930CF0>, '__doc__': None, 'hoge': 2}
>>> vars()['a'].hoge
2
>>> vars()['a'].__dict__['hoge']
2
>>> i=vars()['a']
>>> i.fuga(0)
Traceback (most recent call last):
File "", line 1, in
TypeError: unbound method fuga() must be called with a instance as first argumen
t (got int instance instead)
>>> i=vars()['a']()
>>> i.fuga(0)
2
>>> i=vars()['a']
>>> j=i()
>>> j.hoge
2
>>> j.fuga(0)
2
>>> j.__dict__
{}
生成されたインスタンスからメンバやメソッド情報を得るにはどうすればよいですか
22デフォルトの名無しさんsage2009/01/03(土) 05:18:43
j.__class__.__dict__
23デフォルトの名無しさんsage2009/01/03(土) 07:51:16
dir
inspect.getmembers
24デフォルトの名無しさんsage2009/01/03(土) 08:03:27
__class__.__dict__ にある関数はインスタンスと関連付けされてない点に注意。
a.__dict__['fuga'](j, 0) # 引数 self にあたる部分を自分で渡す必要がある
恐らくやりたいことは、dir(instance) で調べて、getattr(j, 'fuga')(0)

25デフォルトの名無しさんsage2009/01/03(土) 08:42:00
dir だと余計なメンバも混ざってくる。
__class__.__dict__だと親クラスの情報が含まれない。

メソッドのみを調べる場合は、
[name for name,boundmethod in inspect.getmembers(instance, inspect.ismethod)]
メンバを含める場合は第二引数を省略。
[name for name,boundmethod in inspect.getmembers(instance) if not name.startswith('__') and not name.endswith('__')]

26デフォルトの名無しさんsage2009/01/03(土) 09:13:18
>>> j.__class__.__dict__['hoge']
2
>>> j.__class__.__dict__['fuga'](0)
Traceback (most recent call last):
File "", line 1, in
TypeError: fuga() takes exactly 2 arguments (1 given)
>>> j.__class__.__dict__['fuga'](j, 0)
2
>>> j.hoge=9
>>> j.__class__.__dict__['fuga'](j, 0)
9

できました
ありがとうございました
もっと勉強してみます
27デフォルトの名無しさんsage2009/01/03(土) 09:31:48
>>> class b(a):
... hige=3
... def fuga(self, x):
... return self.hoge + x
>>> class a:
... hoge=2
... def hage(self, x):
... self.hoge=x
>>> aa=a()
>>> bb=b()
>>> aa.__class__.__dict__
{'__module__': '__main__', '__doc__': None, 'hage': , 'hoge': 2}
>>> bb.__class__.__dict__
{'__module__': '__main__', 'fuga': , 'hige': 3, '__doc__': None}
>>> dir(aa)
['__doc__', '__module__', 'hage', 'hoge']
>>> dir(bb)
['__doc__', '__module__', 'fuga', 'hage', 'hige', 'hoge']
>>> import inspect
>>> inspect.getmembers(aa)
[('__doc__', None), ('__module__', '__main__'), ('hage', >), ('hoge', 2)]
>>> inspect.getmembers(bb)
[('__doc__', None), ('__module__', '__main__'), ('fuga', >), ('hage', >), ('hige', 3), ('hoge', 2)]
>>> [name for name,boundmethod in inspect.getmembers(aa, inspect.ismethod)]
['hage']
>>> [name for name,boundmethod in inspect.getmembers(bb, inspect.ismethod)]
['fuga', 'hage']
>>> [name for name,boundmethod in inspect.getmembers(aa) if not name.startswith('__') and not name.endswith('__')]
['hage', 'hoge']
>>> [name for name,boundmethod in inspect.getmembers(bb) if not name.startswith('__') and not name.endswith('__')]
['fuga', 'hage', 'hige', 'hoge']
28デフォルトの名無しさんsage2009/01/03(土) 12:20:06
もしかしてpythonのソースをYAMLだけで書いて
exec使わずに実行とか出来るんですか
29デフォルトの名無しさんsage2009/01/03(土) 18:02:59
>>28
exec使わずに実行て?

普通、言語のインスペクトではメソッドの中身とか取れないのが普通。
JavaScriptはソースが見れたっけ?

Pythonでの話に戻すけど、ソースコードをparserモジュールで構文木にして、
その構文木をソースとして実行とかできるのかな。やってみたことないけど。
30デフォルトの名無しさんsage2009/01/03(土) 18:10:04
rubyなら出来ますよ
31デフォルトの名無しさんsage2009/01/03(土) 18:12:40
そうだね、神の名はエホバだね。
32デフォルトの名無しさんsage2009/01/03(土) 19:02:45
はあ?
33デフォルトの名無しさんsage2009/01/03(土) 21:37:30
今、下記のようなリストがあり、
list1 = ['cat', 'dog', 'spam', 'egg']
下のマップで上記リストを変換したいと思います。
maps = {'animal': ['cat', 'dog']}
結果は以下を期待しています。
['animal', 'animal', 'spam', 'egg'](あるいは、set(['animal', 'spam', 'egg'])
その際、安直に上記を実装した、下のようなコードが思いつきました。
下のコードをmap関数やセット、lambda関数などなんでもいいので標準関数等を駆使して、とにかく短く表現できないか考えています。下記のコードはスマートな方でしょうか?

ans = []
for elem in list1:
for key, vals in maps.items():
if elem in vals:
ans.append(key)
else:
ans.append(elem)
print ans
さらに、マップの要素が増えた場合、
maps = {'animal': ['cat', 'dog'],'food':['egg']}
他に、list1 = ['animal', 'spam', 'egg']
をもとにmaps = {'animal': ['cat', 'dog']}を用いて、元が復元できないか考えています。
>> ['cat','dog','spam', 'egg']
どなたかわかりますでしょうか?
34デフォルトの名無しさんsage2009/01/03(土) 21:39:01
改行がくずれたので、、、

ans = []
for elem in list1:
  for key, vals in maps.items():
    if elem in vals:
      ans.append(key)
    else:
      ans.append(elem)
print ans
35デフォルトの名無しさんsage2009/01/03(土) 21:50:26
>>33
変換したい方向とmapsのデータの持ち方が逆なので意図がちょっと分かりにくかった

list1 = ['cat', 'dog', 'spam', 'egg']
maps = {'animal': ['cat', 'dog']}

reverse_maps = dict((x, key) for key, xs in maps.iteritems() for x in xs)
print [ reverse_maps.get(x) or x for x in list1 ]

こういうことでいいのかな?
36デフォルトの名無しさんsage2009/01/03(土) 22:08:25
>>35
やばい。目から鱗どころじゃないっす。。
マップをつくるなんて、、。
しかも、以前valuesだったものをkeyにして、、なんて思いも浮かばなかった。
ありがとうございます!
しかし、実質1行とは。。予想以上でした。

これより最短はないですね。
ありがとうございます!
37デフォルトの名無しさんsage2009/01/03(土) 22:29:30
def foo(l, i, k):
l[i] = k
for k, v in maps.items():
for w in v:
if list1.count(w):
foo(list1, list1.index(w), k)
print(list1)
for k, v in maps.items():
for w in v:
if list1.count(k):
foo(list1, list1.index(k), w)
print(list1)


初心者なので腕試しのつもりで書きました
かなり行数使ってますが
38デフォルトの名無しさんsage2009/01/03(土) 22:30:11
>>35
コードもらいました
これで逆変換

list1 = ["cat", "dog", "spam", "egg"]
maps = {"animal": ["cat", "dog"]}

transpose = lambda mps: dict((x, key) for key, xs in maps.iteritems() for x in xs)
transform = lambda lst, mps: [item in mps.keys() and mps[item] or item for item in lst]
itransform = lambda lst, mps: sum([item in mps.keys() and mps[item] or [item] for item in lst], [])

#>>> import trans
#>>> m = trans.transpose(trans.maps)
##>>> trans.transform(trans.list1, m)
#['animal', 'animal', 'spam', 'egg']
#>>> s = set(trans.transform(trans.list1, m))
#>>> trans.itransform(trans.list1, trans.maps)
#['cat', 'dog', 'spam', 'egg']

3937sage2009/01/03(土) 22:31:06
一行で書けるのか
代入せずに新しくリストを作ればいいのか
勉強になるなあ
40デフォルトの名無しさんsage2009/01/03(土) 22:34:06
ああー 最後はtrans.list1じゃなくてs
4138sage2009/01/03(土) 22:38:56
transpose関数ももmapsではなくmpsですねサーセン
4237sage2009/01/03(土) 22:41:40
カウントとか効率悪そうだし
foo関数定義した意味がわからないな
駄コード書いて反省してます
すみませんでした
4337sage2009/01/03(土) 22:59:21
ちょっと増やすだけで破綻するし
駄目すぎるな
44デフォルトの名無しさんsage2009/01/03(土) 23:28:11
setでよかったのか
考えて損した
一から勉強し直そう
45デフォルトの名無しさんsage2009/01/04(日) 01:04:26
>>27
細かいとこだけど。それだと class b(a) の後に class a を定義しているので
偶然前に定義した class a が残っていただけで、意図したテストになっていないはず。
後、クラス名はなるべく頭に大文字を使おう。

hige, hoge はクラス変数になっているので、
fuga をインスタンス作らずに呼び出したいなら、@classmethod
インスタンス変数にしたい場合コンストラクタ(__init__メソッド)内でhige,hogeを作る。

46デフォルトの名無しさんsage2009/01/04(日) 01:49:36
なんぞこれ
47デフォルトの名無しさんsage2009/01/04(日) 02:56:38
>>29
JavaScriptは実装依存じゃないかな。toSourceとかunevalがあったよーな気がする。
Pythonだとinspect.getsoruce

>構文木をソースとして実行
構文木もコンパイルしたコードオブジェクトも実行可能。ただ、実行には結局exec/evalを使うので
構文木を弄るのでなければわざわざ変換する利点はない。see also compiler.ast, ast.parse
少し敷居は高いけど、Pythonはこの辺の標準モジュールは充実してる。

>>28
"exec を使わずに"がどういう意図なのかわからないけど、
単に字面通りなら、じゃあevalで?って話しだし。
副作用を気にしていて実行環境を分離したいのなら

>>> d = {'a': 1}
>>> exec "a = 10" in d
>>> d['a']
10

より確実にするなら、別プロセス立ち上げてsocketやpipe等で -> Rpyc等のライブラリを使う。

ところで、YAML内にPythonのソース書くって
インデントがどっちの言語のものか混ざって解らなくなったりしない?
(書いたことないけど
48デフォルトの名無しさんsage2009/01/04(日) 03:22:53
>>38
item in maps.keys() は、item in maps の方が推奨されてる。
でも、この場面なら get メソッドの第2引数を使う方がいい。
item in maps.keys() and maps[item] or item -> maps.get(item, item)
4938sage2009/01/04(日) 03:32:08
>>38
ありがとう
知りませんでした
5038sage2009/01/04(日) 03:33:58
ああー
>>48ですー
51デフォルトの名無しさんsage2009/01/04(日) 03:51:01
効率無視 && mapsのkeysと各要素間に重複がない場合限定で。
mapsをtransposeせずに探索。見つかってもまだ探索・・・。

[reduce(lambda x,(y,z): y if x in z else x, maps.iteritems(), i) for i in list1]
52デフォルトの名無しさん2009/01/04(日) 05:41:17
くだらないコードばっかだな
53デフォルトの名無しさんsage2009/01/04(日) 10:28:37
掲示板作ったよ。
なんかホールとか発見したら教えてね。
しばらくしたら忘れてね。
http://rail.s4.pf-x.net/bbs/
54デフォルトの名無しさんsage2009/01/04(日) 11:54:39
161さんごぶさたです
55デフォルトの名無しさん2009/01/04(日) 13:01:07
a = (
{'a':'b'}
)

for row in a:
print row

これだと、{'a','b'}でなく、'a'が表示されます。

a = (
{'a':'b'},
)

これだと、ちゃんと{'a':'b'}と表示されます。
これは何故でしょうか?
56デフォルトの名無しさんsage2009/01/04(日) 13:09:38
pythonでは1要素のタプルを記述するには
(x,)のように末尾のカンマが要るんだよ

>>> (1+2)*3
9
>>> (1+2,)*3
(3, 3, 3)

上の式のカッコがタプルだと思われても困るだろう?
57デフォルトの名無しさんsage2009/01/04(日) 13:18:48
なるほど
ありがとうございました
58デフォルトの名無しさんsage2009/01/04(日) 14:21:36
a = ({'a':'b'})*3
print a
a = ({'a':'b'},)*3
print a
59デフォルトの名無しさんsage2009/01/04(日) 15:38:05
>>5
for i in dict
は、for i in dict.keys()と同じだから。
60デフォルトの名無しさんsage2009/01/04(日) 16:43:35
┏━━━━━━━━━━━━━━━━━━━━━┓
┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━   ┣━┳━ ┃
┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃     ┃  ┃   ┃
┃ ━ ┗╋┛  ┏━┓    ┃  ┣┳   ┏━╋━ ┃
┃ ━ ━╋━  ┣━┫  ━╋━┃┃   ┃  ┃   ┃
┃┏┓━╋━  ┣━┫  ┏╋┓┃┃ ━┻━╋━ ┃
┃┃┃  ┃    ┗━┛  ┃┃┃┃┃       ┃   ┃
┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃       ┃   ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
            ∩
            〈〈〈 ヽ
           〈⊃  }
   (\___/)  |   |
 ( ̄l▼      ̄)!   !
  /  ●   ● |   /
  /   l ___\lミ/
 /▲  (  。--。 )
/■___  (( ̄))    新年あけましておめでとうございますーーっ!
(___)   ̄/
               2009年 元旦
61デフォルトの名無しさん2009/01/04(日) 17:06:59
>>59嘘をかかないでください。for item in {'a':'b'}: は、'a':'b'を取り出した後自動的に'a'に加工してくれるんです
62デフォルトの名無しさん2009/01/04(日) 19:39:07
pythonのソースコードをsjisで書いても問題ないでしょうか?
日本語はu"ほげ"で書くので、
他言語で発生するような文字化け問題は発生しないのではと思うのですが
そのあたりどうでしょうか
63デフォルトの名無しさんsage2009/01/04(日) 19:43:58
俺はいつもsjisで書いてるよ。
64デフォルトの名無しさんsage2009/01/04(日) 19:54:22
for item in dict と for item in dict.keys() が同じになるのは、正確には 3.0 から。
2.x では dict.keys()はキーのリストを作って返すので、同じになるのは dict.iterkeys()。

でも >>61 は解らない。バイトコードで?それともC関数内で?
自動的に加工してくれるという根拠とかどこにあるのか、よければ教えてください。
65デフォルトの名無しさんsage2009/01/04(日) 19:57:14
サブクラスがオヤクラスの名前を知るにはどうすればいいのでしょうか?

class Tuple3:
  def __init__(self, arg):
    if isinstance(arg, Tuple3):
      print 'ok'
    else:
      print 'ng'
class Vector3(Tuple3):
   def __init__(self, arg):
     Tuple3.__init__(self, arg)

と、あったとき、
vec = Vector3() --> 'ng'
vec2 = Vector3(vec)
とやった時、'ok'と表示させる事はできますか?

親クラスコンストラクタで、isinstance(arg, Vector3)と直接書けばいいのはわかるのですが、
このやり方はしたくありません。

そんな事は可能ですか?



66デフォルトの名無しさん2009/01/04(日) 20:01:21
必要なくね?
67デフォルトの名無しさんsage2009/01/04(日) 20:10:57
>>62
自分ひとりで同一環境で書いてる間は特に問題ない。

ブラウザからsvnレポジトリ内のソースを読む時、等
他のいろんな所とのやりとりを想定すると
ソース内には極力日本語を書かないようにするかutf-8に統一が無難。

68デフォルトの名無しさんsage2009/01/04(日) 20:31:54
>>65
どういう用途なのかわからないけど、使えそうなものをとりあえず列挙すると
issubclass
Vector3.__bases__

69デフォルトの名無しさんsage2009/01/04(日) 20:35:36
class Tuple3:
  def __init__(self, arg):
    if isinstance(arg, Tuple3):
      print 'ok'
    else:
      print 'ng'

これは

class Tuple3:
  def __init__(self, arg):
    if self.__class is Tuple3:
     print 'ok'
    else:
     print 'ng'

がいいんだろう
70デフォルトの名無しさんsage2009/01/04(日) 20:58:24
main.py
/hoge/
- __init__.py
- test.py

をmain.py内で、

import hoge

した場合、test.pyはimportされないのですか?
71デフォルトの名無しさんsage2009/01/04(日) 21:05:05
何に使うのかまだ解ってないけど、
やりたい事ってもしかして、コレ?

class Tuple3:
  def __init__(self, arg=None):
    if isinstance(arg, self.__class__):
      print "ok"
    else:
      print "ng"

72デフォルトの名無しさんsage2009/01/04(日) 21:06:47
>>70
パッケージは、__init__.py内で明示的にimportしない限り、
import hogeでimportされるのは hoge/__init__.pyのみ。
73デフォルトの名無しさんsage2009/01/04(日) 23:21:00
import hoge.test
74デフォルトの名無しさんsage2009/01/04(日) 23:44:04
馬鹿ばっかり、ってことが証明されたなあ、このスレ。
75デフォルトの名無しさん2009/01/04(日) 23:59:00
馬鹿ばっかり、ってことが証明されたなあ、このスレ。
76デフォルトの名無しさんhttp://rail.s4.pf-x.net/bbs/2009/01/05(月) 00:58:39
真面目にやれ
77デフォルトの名無しさん2009/01/05(月) 00:59:54
姑息なことすんな
78デフォルトの名無しさんsage2009/01/05(月) 01:02:07
くだすれの方が盛り上がってるな
79デフォルトの名無しさんsage2009/01/05(月) 01:24:52
sageないし草いし死ねば良いのに
80デフォルトの名無しさんsage2009/01/05(月) 01:48:12
2chで死ねは挨拶みたいなもんだ罠
81デフォルトの名無しさんsage2009/01/05(月) 02:32:13
[ANN] PyYAML Python 3 対応

----
yaml_make.py
----
import os, sys, yaml
def make(target):
  makefile = os.path.join(os.getcwd(),'Makefile.yaml')
  exec (yaml.load(open(makefile))) in vars()
if __name__ == '__main__':
  make(sys.argv[1])

----
Makefile.yaml
----
hello: |
  print "Hello"

test: |
  print "Test"

PythonソースをYAML内に書くときのサンプル。
| がないと、関数・クラス定義する時に : が YAMLでの辞書のキー定義と解釈される。
82デフォルトの名無しさんsage2009/01/05(月) 09:40:31
そういうのは公式言ってみるからどうでもいいよ
83デフォルトの名無しさん2009/01/06(火) 04:37:22
15-20% average speedup on pybench and pystone
http://bugs.python.org/issue4753
84デフォルトの名無しさんsage2009/01/07(水) 10:39:49
numpyはsageに吸収されてしまうのだろうか
85デフォルトの名無しさんsage2009/01/07(水) 23:22:47
年明け首吊り失敗して顔酷いことなってるよ俺。首にアザできて外でれねえw
86デフォルトの名無しさんsage2009/01/07(水) 23:44:14
このご時世たくさん人をやとっちゃった会社は大変だね。
この状況で独立するバカは中央線を止めないようにね。
87デフォルトの名無しさんsage2009/01/08(木) 12:30:28
ま、会社が潰れるのは虚業だったことの証明なんだろうけどね。

年末が一つの山だったみたいだな。
次は年度末の3月が山だと思うよ。
88デフォルトの名無しさんsage2009/01/08(木) 12:39:13
コネない人間には虚業自体できないから
景気も関係ないんじゃないの
89デフォルトの名無しさんsage2009/01/08(木) 14:29:34
有名なpythonistaって誰?
90デフォルトの名無しさんsage2009/01/08(木) 15:16:19
guido
91デフォルトの名無しさんsage2009/01/08(木) 15:37:57
>>90
それ神様
92デフォルトの名無しさんsage2009/01/08(木) 15:49:59
Eric Steven Raymond
Peter Norvig
93デフォルトの名無しさんsage2009/01/08(木) 15:58:46
Matz
94デフォルトの名無しさんsage2009/01/08(木) 16:00:20
Ruby
95デフォルトの名無しさんsage2009/01/08(木) 19:36:53
>>93,94
もしかして: David Mertz と Sam Ruby
96デフォルトの名無しさんsage2009/01/08(木) 19:57:01
Tim Barners Lee
97デフォルトの名無しさんsage2009/01/08(木) 22:19:20
Matz
98デフォルトの名無しさんsage2009/01/08(木) 22:32:14
Notz
99デフォルトの名無しさんsage2009/01/09(金) 13:05:18
日本人では
100デフォルトの名無しさんsage2009/01/09(金) 13:47:21
101デフォルトの名無しさんsage2009/01/10(土) 00:03:14
Jim Huguninは、pythonistaだと思う。
102デフォルトの名無しさんsage2009/01/10(土) 00:42:45
>>99
Matz
103デフォルトの名無しさんsage2009/01/10(土) 03:15:28
西尾さん以外ありえないだろ。
104デフォルトの名無しさんsage2009/01/10(土) 04:22:41
以下、Python系本の著者の話題が続くとさ
105デフォルトの名無しさんsage2009/01/10(土) 07:10:06
Esoteric Language みたいな本を opython で出す必要は
ないよね
106デフォルトの名無しさんsage2009/01/10(土) 10:10:01
西尾さん以外ありえないだろ。
107デフォルトの名無しさんsage2009/01/10(土) 10:15:06
西尾さん以外ありえないだろ。
108デフォルトの名無しさんsage2009/01/10(土) 10:52:58
ttp://www.nishiohirokazu.org/blog/2007/02/grinedit_6.html
109デフォルトの名無しさんsage2009/01/10(土) 13:09:39
西尾さんって誰?
110デフォルトの名無しさんsage2009/01/10(土) 14:21:09
西尾さん以外アッーー!!
111デフォルトの名無しさんsage2009/01/10(土) 14:28:34
彼のためを思ってやってるのかも知れないけど
一般的にこういうのは迷惑なものなんだよ>javajaの人
112デフォルトの名無しさんsage2009/01/10(土) 16:25:56
>>108

吹いた
113デフォルトの名無しさんsage2009/01/10(土) 17:28:00
>>109
http://d.hatena.ne.jp/nishiohirokazu/20090109
114デフォルトの名無しさんsage2009/01/10(土) 19:11:31
知らね。
Matzと梶山民人(ninixの作者)なら知ってる。
115デフォルトの名無しさんsage2009/01/10(土) 20:32:09
いや、まて思い出した。
どう書く.orgなら知ってるのでそれ作った人か。
116デフォルトの名無しさんsage2009/01/11(日) 00:02:16
どう書く.org って Python で作られてたの?
117デフォルトの名無しさん2009/01/11(日) 00:21:57
Pythonとかやってるやつが売国奴だ
118デフォルトの名無しさんsage2009/01/11(日) 00:26:07
どうせWindowsやLinux上で動かすしぃ
119FreeBSDsage2009/01/11(日) 00:27:56
たまには思い出してやって下さい
120デフォルトの名無しさんsage2009/01/11(日) 00:32:38
超漢字使え
121デフォルトの名無しさんsage2009/01/11(日) 12:47:00
sageなんてもんがあるのか
検索しにくい
Pythonはじまったな
122デフォルトの名無しさんsage2009/01/11(日) 20:01:50
クラスのimport方法が分からん・・・

今同じディレクトリに以下のPythonファイルがあるんですが、
いざ「driver.py」を実行しようとすると

Traceback (most recent call last):
File "hoge.py", line 5, in
obj = Hoge()
TypeError: 'module' object is not callable

ってエラーが出る。

import自体はうまく出来てるみたいなんだけど、インスタンスを作るところでエラーになってるのか・・・?
誰かPythonで自作クラスを作成&importするヒントをくださいorz

【Hoge.py】
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 class Hoge:
5 def __init__( self ):
6 print("HOGE")
7
【driver.py】
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 import Hoge
4
5 obj = Hoge()

123デフォルトの名無しさんsage2009/01/11(日) 20:04:06
>>122
【driver.py】
5 obj =Hoge.Hoge()
124デフォルトの名無しさんsage2009/01/11(日) 20:07:41
>>122
3 from Hoge import Hoge
または
3 from Hoge import *
後者はおすすめしない
125122sage2009/01/11(日) 20:12:48
>>123 >>124

動いたあああああああああああああああああああああ

ありがとう!!

でも・・・これはどういうことなの・・・?

HogeというパッケージにHogeクラスが属しているなら分かるんだけど、パッケージは作成せずに
同じディレクトリに二つのファイルを置いているだけなんだけど・・・

このあたりの動きってJavaとかPHPとはまったく別物?
126デフォルトの名無しさんsage2009/01/11(日) 20:37:21
>>125
Pythonにとって、パッケージ=ディレクトリ、モジュール=ファイルなの。
Hoge.py という名前のファイルなら、 Hoge というモジュールの中に、 Hoge という
クラスができてた。
127デフォルトの名無しさんsage2009/01/11(日) 20:45:17
>>126
何その糞言語・・・やっぱrubyに変えようかな
128デフォルトの名無しさんsage2009/01/11(日) 20:47:16
>>126
丁寧にありがとう!
なるほどそういうことか・・・

Python慣れるまで大変そうだけど、慣れればかなり便利に使えそうな気がするぜ!
129デフォルトの名無しさんsage2009/01/11(日) 20:56:37
パッケージでも
./Hoge/__init__.py に
class Fuga 書くと

from Hoge import Fuga
になるし

./Hoge/Hage.py に
class Fuga 書くと

from Hoge.Hage import Fuga
になる
130デフォルトの名無しさんsage2009/01/11(日) 20:58:54
>>127
正直Rubyよりはマシだと思う
131デフォルトの名無しさんsage2009/01/11(日) 21:19:25
結局「どちらがより優れているか」よりも「どちらがより糞でないか」で消極的に選択される
良くない選択肢のもう一方はもっと良くない選択肢かもしれない
132デフォルトの名無しさんsage2009/01/11(日) 21:46:45
MLの流れで引いたな。なんだよあれ。
133デフォルトの名無しさんsage2009/01/11(日) 22:00:02
またruby厨の釣り質問でも来たのかい?
134デフォルトの名無しさんsage2009/01/11(日) 22:40:45
Pythonのモジュールシステムは、見通しがよくて好きだけどな。
135デフォルトの名無しさんsage2009/01/11(日) 22:49:24
俺もPythonのモジュールシステムは好きだな
136デフォルトの名無しさんsage2009/01/11(日) 22:50:42
Webアプリ開発に疲れました。
クライアント側でバリデーションをしたいので、JavaScriptで書きました。
でもサーバ側でも同じチェックをしなきゃいけないので、JavaScriptで書いたのと同じ内容のをJavaとかPHPとかで書かなきゃいけない。
もうばかばかしい。

サーバ側のバリデーション用プログラムからJavaScriptのプログラムが自動的に生成されたりできませんかね。
もう両方をメンテナンスするのに疲れた。
137デフォルトの名無しさんsage2009/01/11(日) 22:55:43
>>136
誤爆?

発想は逆だけど、JavaScriptをサーバ側で動かすAptana JaxerっていうAPサーバ?があるよ
まぁ、そういった面倒なものはフレームワークとかにそれ相応の機能があるんだけどね。

PHPのZendFrameworkならフレームワークの一部分のみ使えたりするから試してみたら?
138デフォルトの名無しさんsage2009/01/11(日) 22:56:15
よく知らんけど
ASP.NETとかその辺の高級な奴ならクライアントサイドバリデーションのコードを
自動生成してくれるんでなかったか
139デフォルトの名無しさんsage2009/01/12(月) 00:35:52
>>138
そうだよ
だけど結局手作業は残る
Don't repeat yourself! なんて夢のまた夢
140デフォルトの名無しさんsage2009/01/12(月) 00:45:40
>>137
いえ、誤爆じゃないです。
Python使いならわかってもらえると思って&&Pythonスレなら会社のやつに見つからないだろうと思って。

Djangoとかでクライアント側のバリデーションをしたい場合はどうするんでしょうか。
Djangoとしては特に支援機能はない?詳しくないので教えてちょーだい。
141デフォルトの名無しさんsage2009/01/12(月) 00:51:30
こちらでどうぞ
http://pc11.2ch.net/test/read.cgi/php//
142デフォルトの名無しさんsage2009/01/12(月) 01:31:51
pydocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ
143デフォルトの名無しさんsage2009/01/12(月) 01:39:46
javadocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ
144デフォルトの名無しさんsage2009/01/12(月) 01:54:25
rubydocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ
145デフォルトの名無しさんsage2009/01/12(月) 02:01:01
phpdocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ
146デフォルトの名無しさんsage2009/01/12(月) 02:59:28
こちらでどうぞ
http://pc11.2ch.net/test/read.cgi/php//
147デフォルトの名無しさんsage2009/01/12(月) 11:15:44
どうにも.orgってイカメンファッカーがダンジョーで作ってるんですね。
148デフォルトの名無しさんsage2009/01/12(月) 17:29:35
今、PYTHONクイックリファレンス買っても意味あるかな?
149デフォルトの名無しさんsage2009/01/12(月) 20:01:12
LinuxでPythonするのに、IDLEみたいな開発環境ないかな?
150デフォルトの名無しさんsage2009/01/12(月) 20:21:02
>>149
NetBeans
151デフォルトの名無しさんsage2009/01/12(月) 21:28:16
eclipseか、>>150だな。
他のだと日本語を入力してもうまく出ないし、
そもそもlatin-1でコードが書かれてるのを前提としてるのばかりだからなぁ
152デフォルトの名無しさんsage2009/01/13(火) 10:09:23
>>149
python.el
153デフォルトの名無しさんsage2009/01/13(火) 10:36:07
>>149
Kdevelop
154デフォルトの名無しさんsage2009/01/13(火) 10:50:13
>>149
komodoEditor
155デフォルトの名無しさんsage2009/01/13(火) 11:21:58
emacs
156デフォルトの名無しさん2009/01/13(火) 15:09:47
>>149
IDLE
157デフォルトの名無しさんsage2009/01/13(火) 18:29:30
出来ました。
ありがとうございました。
158149sage2009/01/13(火) 18:35:31
皆さんありがとうございます。
NetBeansは扱いやすいですねw
159149sage2009/01/13(火) 18:37:02
皆さんありがとうございます。
NetBeansは扱いやすいですねw
160デフォルトの名無しさんsage2009/01/13(火) 18:49:26
あいかわらずここは粘着がわいてるのかよ。
161デフォルトの名無しさんsage2009/01/13(火) 23:00:27
greenletとかいうのを今日はじめて知ったけど、なかなか楽しいね
StacklessPython風のコルーチンをCPythonに取り込むライブラリなんだが

Windows + VC9 + Python2.6で試してみたらあっさりクラッシュしたけど
ttps://codespeak.net/issue/py-dev/issue65
にあるように、Stacklessのヘッダ(switch_x86_msvc.h)をコピってきて
ビルドしたら動いた
162デフォルトの名無しさんsage2009/01/13(火) 23:37:28
併せてeventletもどうぞ。
winで動くかは分からんが。
163デフォルトの名無しさんsage2009/01/13(火) 23:50:26
>>162
実はeventletも試したんだけど、posix専用のsystemcallを結構使っているんで、
結構弄らないと使えないっぽいですね
164デフォルトの名無しさんsage2009/01/14(水) 14:43:35
a = ['aho<>baka', 'chinco<>manco']
b = ['boku', 'kimi']
c = []
X = 0
for i in a:
 c += [{}]
 Y = 0
 for f in i.split('<>'):
  c[X][b[Y]] = f
  Y += 1
 X += 1


これだとX,Yがなんだか汚らしいのですが、なんとか綺麗にできませんか?
165デフォルトの名無しさんsage2009/01/14(水) 15:09:15
a = ['aho<>baka', 'chinco<>manco']
b = ['boku', 'kimi']
aa = [s.split("<>") for s in a]
c = [dict(zip(b, ai)) for ai in aa]

こんなのはどうだろう
166デフォルトの名無しさんsage2009/01/14(水) 15:11:29
for X, i in enumerate(a):
 c += [{}]

 for Y, f in enumerate(i.split('<>')):
  c[X][b[Y]] = f

とか
167デフォルトの名無しさんsage2009/01/14(水) 15:11:50
c = [dict(zip(b, i.split("<>"))) for i in a]
168デフォルトの名無しさんsage2009/01/14(水) 15:37:44
('<>')
かえるさんこんにちは。
169デフォルトの名無しさんsage2009/01/14(水) 18:34:17
>>164
for i, X in zip(a, range(len(a))):
 c += [{}]
  for f, Y in zip(i.split('<>'), range(len(i.split('<>'))):
   c[X][b[Y]] = f
170デフォルトの名無しさんsage2009/01/14(水) 22:02:23
ていうかIDLEはLinuxでも使えるだろ。
ほとんどのディストリでは標準インストールされてないけど。
171デフォルトの名無しさんsage2009/01/14(水) 22:23:00
python入ってれば、
$ python -m idlelib.idle &
でidleが立ち上がると思う
172デフォルトの名無しさんsage2009/01/15(木) 06:36:35
>>164
CSV -> Database みたいな用途?
だったら多分、辞書よりnamedtupleの方が扱いやすい。(2.6以降)


a = ['AAA<>BBB','CCC<>DDD']
b = ['A', 'B']

from collections import namedtuple
record = namedtuple('record', b)
delimiter = '<>'
maxsplit = len(b) - 1

c = [record(*x.split(delimiter, maxsplit)) for x in a]
d = [x._asdict() for x in c] # 辞書に変換 if you needed a dict
173デフォルトの名無しさんsage2009/01/15(木) 06:54:46
len(i.split('<>')) -> i.count('<>')

zip/splitの組み合わせは、splitにmaxsplitを指定しないと、
想定しないデータ('<>'の数が異なる)を受け取った場合、
末尾のデータを失う可能性がある。

namedtupleの場合、
maxsplitを指定しなければ要素数が異なる場合TypeErrorが投げれる。

2.5以前なら、namedtupleをbackportするか
レコード型のクラスを定義して、コンストラクタの引数で要素数をチェック。
174デフォルトの名無しさんsage2009/01/15(木) 11:48:21
適当な class に hoge ってインスタンス変数があるかどうかって
どうやって調べるんでしたっけ?

try:
x = myclass.hoge()
except:
pass

なんてやってるけど,if myclass.exists("hoge") みたいな感じの
何かがあるんでしたっけ?
175デフォルトの名無しさんsage2009/01/15(木) 11:55:41
hasattr(myclass, "hoge")
176デフォルトの名無しさんsage2009/01/15(木) 12:40:44
myclass はクラス?それともインスタンス?
new style classの場合は、そのクラス,親クラスの__slots__を辿る。
old style classの場合は、無理。myclass.hogeがあるとしたら、それはクラス変数。
instanceなら hasattr(obj,'hoge') and not isinstance(getattr(obj,'hoge'),types.MethodType)


177デフォルトの名無しさんsage2009/01/15(木) 13:26:41
あ インスタンスのつもりでした

なので hasattr が探していたものでした

thx です
178デフォルトの名無しさん2009/01/15(木) 23:29:17
WAVE DASH - FULLWIDTH TILDE問題
に対応するライブラリとかない?
179デフォルトの名無しさん2009/01/15(木) 23:42:29
なにそれおいしいの?
180デフォルトの名無しさん2009/01/16(金) 00:12:44
独断と偏見で選ぶ血液型別おすすめスクリプト言語

A型
Python

B型
Perl

O型
Ruby

AB型
NASM
181デフォルトの名無しさんsage2009/01/16(金) 00:46:26
独断と偏見で選ぶ血液型別おすすめスクリプト言語

A型
PHP

B型
ひまわり

O型
C#

AB型
SmallTalk
182デフォルトの名無しさんsage2009/01/16(金) 01:03:32
>>180
B型ですがPerlは構文的に脳が受け付けないです
Rubyは生理的にMatzを受け付けない
やっぱりおっPython!
183デフォルトの名無しさんsage2009/01/16(金) 01:07:44
PHPが好きなO型です。
最近のイスラエル情勢に不満を覚え、PHPの利用をやめます!
184デフォルトの名無しさんsage2009/01/16(金) 01:27:35
>>178
普通に unicode オブジェクトの translate() メソッドでいいのでは?
http://pc11.2ch.net/test/read.cgi/tech//491
185161sage2009/01/16(金) 03:03:39
>>184
その書込み僕のだ、懐かしいな
186デフォルトの名無しさんsage2009/01/16(金) 07:31:42
>>178
ありますよ
187デフォルトの名無しさんsage2009/01/16(金) 10:23:17
>>178
まさか知らないの?
188デフォルトの名無しさん2009/01/16(金) 10:39:51
>>180 >>181
おまえらあんまABバカにすんなよこら
189デフォルトの名無しさんsage2009/01/16(金) 10:46:50
>>182
同じく (Rhマイナスだけど) B型ですがPerlは構文的に脳が受け付けないです。
ちなみにスクリプト言語どれやってみようか最後まで Python と迷ったのは Haskell というやつです。
190デフォルトの名無しさんsage2009/01/16(金) 10:47:57
>>180
>B型
>Perl
だが断る!
191デフォルトの名無しさんsage2009/01/16(金) 10:48:46
Haskellはスクリプト言語じゃねえだろ
192デフォルトの名無しさんsage2009/01/16(金) 11:03:46
>>185
このスレの161を踏んだ者だが……
紛らわしいのでやめてくれ
193デフォルトの名無しさんsage2009/01/16(金) 13:55:50
>>180 O型馬鹿にするな
194デフォルトの名無しさんsage2009/01/16(金) 13:58:57
A型はJavaじゃね?型宣言とかしたそう。
B型はマンプス。
AB型がPython。宣言はしないけど、型にうっさいという
O型はC。
195デフォルトの名無しさんsage2009/01/16(金) 14:05:09
>191
一応インタプリタもあるでよ
196デフォルトの名無しさんsage2009/01/16(金) 14:56:19
日本限定でいえば
人口比的にAB型がPythonだな
俺もAB型だし

A型はJavaScriptでいいよ
197デフォルトの名無しさんsage2009/01/16(金) 17:14:47
その年の、ある月の日数を取得するにはどうすればいいんでしょうか
たとえば、2019年の2月の日数は○○日みたいな感じのです
198デフォルトの名無しさんsage2009/01/16(金) 17:23:31
>>> from datetime import *
>>> (date(2008, 3, 1) - date(2008, 2, 1)).days
29
>>> (date(2009, 3, 1) - date(2009, 2, 1)).days
28
199デフォルトの名無しさんsage2009/01/16(金) 17:24:33
calendar.monthrange
200デフォルトの名無しさんsage2009/01/16(金) 17:27:51
# http://www.python.jp/doc/release/lib/module-calendar.html
>>> import calendar
>>> calendar.monthrange(2019, 2)
(4, 28) # 曜日,日数
201デフォルトの名無しさんsage2009/01/16(金) 18:32:45
199,200 >>>> 越えられない壁 >>>> 198
202デフォルトの名無しさんsage2009/01/16(金) 19:29:36
>>149-156
結局どれが一番お勧めなの?
ステップライン実行デバックができるのがいいな
203デフォルトの名無しさんsage2009/01/16(金) 19:33:11
>>202
Wing IDE
204デフォルトの名無しさん2009/01/16(金) 21:07:10
その年の、ある月の末日を取得するにはどうすればいいんでしょうか
たとえば、2000年の2月の末日は28日みたいな感じのです
205デフォルトの名無しさんsage2009/01/16(金) 21:31:27
>>199-200を再読してください
なお2000年は閏年ですので2月の末日は29日です
206デフォルトの名無しさん2009/01/16(金) 22:36:49
ドラマのブラッディーマンデイで主人公がputhon多様していたみたいだが、
彼が使っていたエディタはなにかわかるひといる?
ttp://imagepot.net/view/62.jpg
207デフォルトの名無しさんsage2009/01/16(金) 22:51:13
vimじゃん
208デフォルトの名無しさんsage2009/01/16(金) 23:25:13
>>207 はあ?

わかるひといます?
209デフォルトの名無しさんsage2009/01/16(金) 23:41:10
vimだろ
210デフォルトの名無しさんsage2009/01/16(金) 23:42:08
俺AB型だからPythonに惹かれたのか。
211デフォルトの名無しさんsage2009/01/16(金) 23:42:31
どう見ても vim だな。
212デフォルトの名無しさんsage2009/01/16(金) 23:52:00
gvimだな
213デフォルトの名無しさんsage2009/01/16(金) 23:54:44
俺O型だけど
214デフォルトの名無しさんsage2009/01/17(土) 00:15:05
>>206
フォントかっこいいな。なんてやつ?
215デフォルトの名無しさんsage2009/01/17(土) 01:38:47
>>214
このフォントのどこが格好いいんだ
アンチエイリアスが中途半端で汚いじゃない
216デフォルトの名無しさんsage2009/01/17(土) 01:58:36
これビットマップフォントだぞ
217デフォルトの名無しさんsage2009/01/17(土) 02:19:17
はあ?かっこいいといってるだろ。
なにこれ?
218デフォルトの名無しさんsage2009/01/17(土) 02:28:15
はあ?
219デフォルトの名無しさんsage2009/01/17(土) 03:48:25
うんこレンダリングフォント
ulf
220デフォルトの名無しさんsage2009/01/17(土) 06:27:30
>>206
1-6行目不明
7行目以降
try: host,frm,to=sys.argv[1:4]
except ValueError:
print 'Usage: %s ' % (sys.argv[0])
sys.exit(1)

print 'Connecting to %:25 ...' % (host)

sock = socket.socket()
try: idx = host.index(':')
except ValueError: addr = (host, 25)
else: addr = [host[:idx], int(host[idx+1:])]
sock.connect(addr)

print 'Connected'

1-6行目わかる?
221デフォルトの名無しさんsage2009/01/17(土) 06:33:51
import socket
import sys

あとコメントが数行入って終了じゃないか
222デフォルトの名無しさんsage2009/01/17(土) 07:14:08
本物のハッカーならGPLが書いてあるはず
223デフォルトの名無しさん2009/01/17(土) 07:23:49
>>222
本物のハッカーの多くは、GPLみたいな自由度の低い
ライセンスは採用しないよ。

彼等は単に何も書かないか(こっちの方が多い)、
MITやBSDライセンスにしてることだろう。
224デフォルトの名無しさん2009/01/17(土) 07:26:49
25って決め打ちなんか
225デフォルトの名無しさんsage2009/01/17(土) 12:18:38
>>220
普通にこれで使えるな
226デフォルトの名無しさんsage2009/01/17(土) 13:18:20
print 25のとこおかしいね。
227デフォルトの名無しさんsage2009/01/17(土) 13:19:10
これで女子高生にvim使いが増える!
228デフォルトの名無しさんsage2009/01/17(土) 14:58:57
>>226
元の画像には%sになってたからただの写し間違いだと思うが
host="hoge.fuga:587"
とかだったときにやっぱり表示は変になるね
229デフォルトの名無しさんsage2009/01/17(土) 15:00:35
1行目は #!/usr/bin/env python だと予想。
230デフォルトの名無しさんsage2009/01/17(土) 16:10:24
1. #!/usr/bin/env python
2. '''hogehoge
3. fugafuga
4. '''
5. import socket
6. import sys

でFA?
231デフォルトの名無しさんsage2009/01/17(土) 16:14:28
1. #!/usr/bin/env python
2. # -*- coding: hoge -*-
3.
4. import socket
5. import sys
6.
232デフォルトの名無しさんsage2009/01/17(土) 16:25:29
>>231
それっぽいw
233デフォルトの名無しさんsage2009/01/17(土) 16:58:53
PEP8守ってないから訓練されたPythonistaじゃないな
234デフォルトの名無しさんsage2009/01/17(土) 18:54:52
パイソニスタじゃなくてパイソニアンがいい
235デフォルトの名無しさんsage2009/01/17(土) 19:03:38
Pythonista, Pythonian, Pythonese, Pythonist, Pythoner
どれでも好きなのを選ぶといい
236デフォルトの名無しさん2009/01/17(土) 19:06:40
日本語なら「Py使い」でいいでしょ。
237デフォルトの名無しさんsage2009/01/17(土) 19:15:42
お、py使い
238デフォルトの名無しさんsage2009/01/17(土) 20:18:26
訓練されてないのは、盲py
239デフォルトの名無しさんsage2009/01/17(土) 20:51:27
PEP8守って書き直すとどうなりますか
24038sage2009/01/18(日) 16:23:33
へんじがない、ただのぱいそにすたのようだ
241デフォルトの名無しさんsage2009/01/18(日) 22:58:52
ttp://www.dotup.org/uploda/www.dotup.org17528.png
PEP3を出来る限り守ったらこんな変なコードになってしまったんですが
どうすればいいですか?
242241sage2009/01/18(日) 22:59:26
PEP3じゃなくてPEP8でした
243デフォルトの名無しさんsage2009/01/19(月) 00:01:43
geditかこれ
244デフォルトの名無しさんsage2009/01/19(月) 00:24:11
ただものじゃないEmEditorです
245デフォルトの名無しさんsage2009/01/19(月) 00:28:20
どうすればいいですか?
246デフォルトの名無しさんsage2009/01/19(月) 00:31:27
一見して>>241のどこがヘンなのかわからなかったw
Lispならカッコは右下に連打するだろうな、とは思ったが……

一行79文字縛りがキツい、という話?
247デフォルトの名無しさんsage2009/01/19(月) 00:40:05
はい…
248デフォルトの名無しさんsage2009/01/19(月) 00:40:11
>>246
変じゃないなら別にいいです
249デフォルトの名無しさんsage2009/01/19(月) 00:42:41
>>241
正規表現を事前にコンパイルしてre.subの引数を減らせばいいんじゃね?
250デフォルトの名無しさんsage2009/01/19(月) 00:50:41
入れ子のre.subの呼び出しを、複数の文に分ければいいと思うよ
x = re.sub(a, re.sub(b, c, d), x)
みたいなのを
y = re.sub(b, c, d)
x = re.sub(a, y, x)
と書く

どうせ一行に収まらないのなら、入れ子で書いても読みにくくなってるだけでしょ
「流れるインタフェース」でもないのだし
251デフォルトの名無しさんsage2009/01/19(月) 01:40:56
まともな回答はありません‥
252デフォルトの名無しさんsage2009/01/19(月) 04:19:25
)に違和感
253デフォルトの名無しさんsage2009/01/19(月) 04:40:45
>>241
うわっ、汚い。。。
普通は re_subs みたいな関数書いて、順にre.subが適用されるようにする。
あと、そのエディター酷いね。。色付けすらちゃんとされてないじゃん。
254241sage2009/01/19(月) 04:50:38
>>253
そのカンスゥー貼って下さい…
255デフォルトの名無しさんsage2009/01/19(月) 05:16:45
>>254
そのぐらい自分で書けないと。
初心者レベルの難易度だよ。
256デフォルトの名無しさんsage2009/01/19(月) 08:15:14
>>255
あのー、かんすーお願いします‥
なぜPythonスレの人たちはレベル低いのだろう
257デフォルトの名無しさんsage2009/01/19(月) 08:40:29
お前のレベルが低いだけ
258デフォルトの名無しさんsage2009/01/19(月) 08:41:27
お前のレベルが低いだけ
259デフォルトの名無しさんsage2009/01/19(月) 08:44:36
>>256
知能低いのかね。小学生でも書けそうな関数だとおもうが。
260デフォルトの名無しさんsage2009/01/19(月) 14:35:17
あの、カンスゥーまだですか・・・?
261デフォルトの名無しさん2009/01/19(月) 18:07:26
>>260 こんなんでいいのか?
ttp://stat001.ameba.jp/user_images/cb/2d/8.png
262デフォルトの名無しさん2009/01/19(月) 18:07:44
263デフォルトの名無しさん2009/01/19(月) 18:08:51
>>262
このカンスゥーは無表情すぎて怖い
264デフォルトの名無しさん2009/01/19(月) 18:23:11
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
265デフォルトの名無しさんsage2009/01/19(月) 18:24:56
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
266デフォルトの名無しさんsage2009/01/19(月) 18:25:00
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
267デフォルトの名無しさん2009/01/19(月) 18:35:47
>>264-266
初心者丸出し

と釣られてみる
268デフォルトの名無しさんsage2009/01/19(月) 21:01:28
初心者っていきなり 3 触るの?
269デフォルトの名無しさんsage2009/01/19(月) 21:43:20
最新版にβとつければ初心者はさわらないかもね
270デフォルトの名無しさんsage2009/01/19(月) 22:04:50
Python初めて1週間
3.0→2.3.4jp→2.6.1→2.5.1
271デフォルトの名無しさんsage2009/01/19(月) 22:14:51
2.5.1→2.6.1→3.0→2.5.1→2.6.1

printが強制的にカンスゥーになってたり
rangeがオブジェクト返すようになっててちょっと困惑するんだよね
272デフォルトの名無しさんsage2009/01/19(月) 22:52:18
printは自発的に関数になったと風の便りに聞いたよ…
273デフォルトの名無しさんsage2009/01/19(月) 23:16:29
#2.6
x = range(100)

#3.0
x = [i for i in range(100)]
274デフォルトの名無しさんsage2009/01/19(月) 23:34:58
list(range(100))
275デフォルトの名無しさんsage2009/01/20(火) 00:21:09
結構変わったんだな。3は。
276デフォルトの名無しさんsage2009/01/20(火) 01:17:08
>>273
3はなんだかちょっと面倒だなって気がしてきた
277デフォルトの名無しさんsage2009/01/20(火) 01:19:52
志村!
278デフォルトの名無しさん2009/01/20(火) 07:10:13
あのー、回答待ってるですがまだですか?
パイソンのスレッドって馬鹿しかいないなー
279デフォルトの名無しさんsage2009/01/20(火) 08:03:22
rangeでリストを作るなんて滅多にしないだろうに。
280デフォルトの名無しさんsage2009/01/20(火) 08:26:21
[i for i in range(100)]
に必死で突っ込むひとまだですか?
281デフォルトの名無しさんsage2009/01/20(火) 08:35:03
ところで、2.6って2.5に対して完全に上位互換?
2.5用のライブラリで2.6で動かなくなったのってある?
282デフォルトの名無しさんsage2009/01/20(火) 10:49:45
>>281

基本的には 2.5 -> 2.6 では減っているものはない。
The *** module has been deprecated for removal in Python 3.0.
という形で 3.0 でなくなる予定のライブラリは -3 オブションで警告がでるのみ。
実際に標準ライブラリから外されるのは 3.0 から。

但し、細部では各ライブラリのバージョン・アップによる変更があるので、
ライブラリ自体が動かなくなったものは知らないが、# >>> import test.autotest を参考に。
それを使ったコードの方で修正が必要なものはあるかもしれない。
283デフォルトの名無しさんsage2009/01/20(火) 15:25:18
>>206
#!/usr/bin/env python
# -*- coding: ascii -*-

import socket
import sys

try:
    host, frm, to = sys.argv[1: 4]
except ValueError:
    print "Usage: %s " % (sys.argv[0])
    sys.exit(1)

print "Connecting to %s:25 ..." % (host)

sock = socket.socket()
try:
    idx = host.index(':')
except ValueError:
    addr = (host, 25)
else:
    addr = (host[:idx], int(host[idx + 1:]))
sock.connect(addr)

print "Connected"
284 ◆TINKO/J0J6 2009/01/20(火) 16:54:58
import tinko
285 ◆UNKOVIP9RM 2009/01/20(火) 16:56:15
import unko
286デフォルトの名無しさんsage2009/01/20(火) 16:57:28
unkoはexportするものだろ
287デフォルトの名無しさんsage2009/01/20(火) 17:56:07
from anal export unko
288デフォルトの名無しさんsage2009/01/20(火) 17:56:14
自然数k,p,qについて
k=mp+nq(m,nは「0以上の整数」)を満たす(m,n)の組の数をv(k)とするとき
p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです
どのように書いたらいいですか?
289 ◆UNKOVIP9RM 2009/01/20(火) 17:58:02
>>288
ggks
290デフォルトの名無しさんsage2009/01/20(火) 18:05:00
p=3
q=7
t=0
u=0
for k in range(1, 101):
v=0
for m in range(k/p+1):
if (k-m*p)%q == 0:
v+=1
print 'v(%d)=%d¥n' % (k, v)
u+=v
if v:
t+=1
print 'total %d, %d¥n' % (t, u)
291デフォルトの名無しさんsage2009/01/20(火) 18:11:16
v = lambda k, p, q: ¥
[(m, n) for m in range(k/p + 1) for n in range(k/q + 1)
if k == m * p + n * q ]

for k in range(1, 101):
print k, '->', ', '.join(map(str, v(k, 3, 7)))
292291sage2009/01/20(火) 18:13:44
あー計算量的に無駄なのか
まあいいや
293デフォルトの名無しさんsage2009/01/20(火) 18:26:22
>>> p,q=3,7 ; Max=101
>>> for k in range(Max): print k, len(filter(lambda x:(k-x)>=0and(k-x)%q==0, range(0,Max,p)))
...
0 1
1 0
2 0
3 1
4 0
5 0
6 1
7 1
8 0
9 1
294デフォルトの名無しさんsage2009/01/20(火) 18:37:45
すまん、こうだった

>>> p,q=3,7 ; Max=101
>>> for k in range(Max): print k, len(filter(lambda x:(k-x)%q==0, range(0,k+1,p)))
...
0 1
1 0
2 0
3 1
4 0
5 0
6 1
7 1
8 0
9 1

最後の len(... 以降が v みたいなもん、
295デフォルトの名無しさんsage2009/01/20(火) 18:48:31
k=0は蛇足です
296デフォルトの名無しさんsage2009/01/20(火) 18:51:40
>>289-
Thank you so match.
297デフォルトの名無しさんsage2009/01/20(火) 18:56:16
>>280
待ち人来たらず
298デフォルトの名無しさんsage2009/01/20(火) 19:11:35
p,q,d=3,7,100
for k in range(1,d+1): print k,'->',','.join(map(str,[(m/p,(k-m)/q) for m in filter(lambda x:(k-x)%q==0, range(0,k+1,p))]))
こうですか
わかりません
299デフォルトの名無しさんsage2009/01/20(火) 19:13:47
>>283
ありがとうございました
300デフォルトの名無しさんsage2009/01/20(火) 19:37:45
>>298
あってるっぽい気がするけど?
301デフォルトの名無しさんsage2009/01/20(火) 19:42:11
ttp://www.toshin.com/center/sugaku-2b_mondai_6.html
302デフォルトの名無しさんsage2009/01/20(火) 19:49:44
なるほどw
303デフォルトの名無しさんsage2009/01/20(火) 20:16:21
python的に解くとどうなりますか?
3^(3^3)の一の位の数字は?
7^(7^7)の一の位の数字は?
13^(13^13)の一の位の数字は?
17^(17^17)の一の位の数字は?
n^(n^n)の一の位の数字は?
304デフォルトの名無しさん2009/01/20(火) 20:30:34
pythonを学習しようかと考えていますが、巷で出回っているフリーの(GUI)ツール類
などはCなどで書かれていると思いますが、ptyhonでも同様のことができますか?
そこまで大規模なツールではなく簡単シンプルなツールです。
本屋でちょっと読んだ参考書にはwindows用のフォームやボタンの配置などが
書かれていなかったので、CUIのプログラミングだけかと…
305デフォルトの名無しさんsage2009/01/20(火) 20:35:40
Tkinter, wxPython, pywin32などでぐぐれ
306デフォルトの名無しさんsage2009/01/20(火) 20:37:08
そんなことないですよ
307デフォルトの名無しさんsage2009/01/20(火) 20:38:38
628 名前:デフォルトの名無しさん :2009/01/20(火) 20:10:12
VB6の代わりにならないかな
VB6ユーザーには、Delphiは難し過ぎるみたいだし
PythonにVB並のRADツールを備えた統合開発環境があればいいんだけど


629 名前:デフォルトの名無しさん :2009/01/20(火) 20:20:45
そこでIronPythonですよ。


630 名前:デフォルトの名無しさん :2009/01/20(火) 20:30:35
UbuntuではNativeで動き
WindowsではVMで動くPythonキボンヌ!
308デフォルトの名無しさんsage2009/01/20(火) 20:39:33
http://pc11.2ch.net/test/read.cgi/tech//
309デフォルトの名無しさんsage2009/01/20(火) 20:40:18
http://pc11.2ch.net/test/read.cgi/tech//
310デフォルトの名無しさんsage2009/01/20(火) 20:59:57
>>288
BASICでクソプログラム見せられたらやっぱPythonできれいに書きたくなるよね。
311310sage2009/01/20(火) 21:01:43
俺はIIの最後で2点と統計で2点落としちまったぜ
312デフォルトの名無しさんsage2009/01/20(火) 21:23:33
>>304
オマエが読んだクソ本を怨め
313デフォルトの名無しさんsage2009/01/20(火) 21:38:57
from collections import defaultdict

p = 3
q = 7
d = 100
answer = defaultdict(int)

for m in xrange(d / p):
    for n in xrange(d / q):
        k = p*m + q*n
        if k > d:
            break
        answer[k] += 1
        
for k in range(d+1):
    print k, answer[k]
314デフォルトの名無しさんsage2009/01/20(火) 22:21:03
>>303

from itertools import repeat

def _f(n):
    def _mul(n, m):
        return ((n % 10) * (m % 10)) % 10

    def _pow(n, m):
        return reduce(_mul, repeat(n, m-1), n)

    return _pow(n, _pow(n, n))
315314sage2009/01/20(火) 22:39:22
間違えた。_powの第二引数は一の位だけじゃ駄目だ。
316デフォルトの名無しさんsage2009/01/20(火) 22:40:16
うむ
317デフォルトの名無しさんsage2009/01/20(火) 23:44:56
pow(n, pow(n, n), 10)
318デフォルトの名無しさんsage2009/01/20(火) 23:49:54
>>> pow(3,pow(3,3),10)
7
>>> pow(7,pow(7,7),10)
3
>>> pow(13,pow(13,13),10)
3L
>>> pow(17,pow(17,17),10)
7L

あってる?
319デフォルトの名無しさんsage2009/01/21(水) 00:35:03
あってるけど、
アルゴリズム的には n が大きいときの pow(n, n) が課題。

320デフォルトの名無しさんsage2009/01/21(水) 01:37:05
遅いって言っても、1000ぐらいまでなら一瞬で出るぞ

>>> i=1
>>> while 1:print i,pow(i,i**i,10);i+=1
...
1 1
2 6
3 7
4 6
5 5
6 6
7 3
8 6
9 9
10 0
11 1
12 6
13 3
14 6
...
...
...
1197 7
1198 6
1199 9
1200 0
1201 1
321317sage2009/01/21(水) 01:57:21
nのべき乗の1の位が、ある周期で循環することを利用して指数を小さくしてみた。

# coding: utf8

def cycle(n):
    i = n*n % 10
    lst = [i]
    while n != i:
        i = i*n % 10
        lst.append(i)
    return lst

def main():
    cycles = [cycle(i) for i in xrange(10)]
    clen = [len(item) for item in cycles]

    for i in range(10):
        print i, cycles[i]
    print ""

    for n in xrange(1, 1000):
        cl = clen[n%10]
        nn = pow(n, cycles[n%10][n%cl])
        nnn1 = pow(n, nn, 10)
        print n, nnn1
        

if __name__ == '__main__':
    main()
322デフォルトの名無しさんsage2009/01/21(水) 02:25:02
ほぼ同じことだけど、自分もやってみた、これだと、googol(=10**100)ぐらいまでは一瞬

def f(n):
    c = cycle(n,10)
    return pow(n, pow(n, n, c) or c, 10)

def cycle(n, modulo):
    s=set() ; x = n % modulo
    while x not in s: s.add(x) ; x = x * n % modulo
    return len(s)

for i in range(7):
    print i, f(10**10**i+i)

$ python 303.py
0 0
1 1
2 6
3 7
4 6
5 5
6 6
323デフォルトの名無しさんsage2009/01/21(水) 02:28:11
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1419-9
324デフォルトの名無しさんsage2009/01/21(水) 05:39:19
>>321
そこまでたどり着けば実はpow使わなくても答え出てるんだけどね
325デフォルトの名無しさんsage2009/01/21(水) 05:45:02
13=10+3だから、13^nの1の位は3^nの1の位と同じで4個周期。
13=12+1だから13^13を4で割った余りは1。
13^(13^13)の1の位は3^1の1の位と同じなので3。

17=10+7だから、17^nの1の位は7^nの1の位と同じで4個周期。
17=16+1だから17^17を4で割った余りは1。
17^(17^17)の1の位は7^1の1の位と同じなので7。
326デフォルトの名無しさんsage2009/01/21(水) 08:11:54
クソ本が改訂してクソでなくなるのかな?
327デフォルトの名無しさんsage2009/01/21(水) 09:36:24
まあ評価は見てからですかねー
328デフォルトの名無しさんsage2009/01/21(水) 10:30:01
はじぱい 第2版 (2004/11) ¥5,040

はじぱい原著 3rd Edition (2008/07/16) $26.39


恥ぱい 初犯 (2007/11) ¥1,995

恥ぱいネットワーク 初版 (2008/06) ¥1,995

恥ぱい3 初版 (2009/01) ¥1,995
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1419-9
恥ぱいが3.0用になったんですね
329デフォルトの名無しさんsage2009/01/21(水) 11:10:29
恥の上塗りというわけですね。
330デフォルトの名無しさん2009/01/21(水) 11:20:55
俺もウェブの無料チュートリヤル翻訳して金稼ぎたい
331デフォルトの名無しさんsage2009/01/21(水) 11:40:37
ライブラリレファレンスの和訳更新・改良を
ガンガンやってくれるならお布施くらいはするでよ?
332 ◆UNKOVIP9RM 2009/01/21(水) 11:53:01
>>312
惚れた

惚れた

惚れた


できれば結婚してくれ
333 ◆UNKOVIP9RM 2009/01/21(水) 11:54:09
>>328

買う 買うー
334デフォルトの名無しさんsage2009/01/21(水) 11:58:54
周期が4の公約数になるのを利用するとこれでもok?
pow(n % 10, (n & 3) or 4, 10)
335 ◆UNKOVIP9RM 2009/01/21(水) 11:59:03
>>> import >>329
>>> print (329.star())

"星3つ"
336デフォルトの名無しさんsage2009/01/21(水) 12:08:27
>>328
はじぱいの癖に5040円って翻訳書のはじ
337 ◆UNKOVIP9RM 2009/01/21(水) 12:18:59
>>336
円安だったんだよ
338デフォルトの名無しさん2009/01/21(水) 12:55:26
>>334
>>> [pow(n % 10, (n & 3) or 4, 10) for n in xrange(20)]
[0, 1, 4, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 4, 9]

n=2と18が血がウっぽい
339デフォルトの名無しさんsage2009/01/21(水) 13:01:34
0 1 2 3 4 5 6 7 8 9 LSD
1 1 4 4 2 1 1 4 4 2 cycle

>>334

>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][n%len(c[n%10])-1] for n in xrange(20)]
[0, 1, 4, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 4, 9]
これで行けるかと思ったがだめだった

>>325 の余りを出してるのは 3, 7 の時だけうまくいくのかな
少なくとも 2 のときはだめみたい(なんか勘違いしている?)

>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][(n**n)%len(c[n%10])-1] for n in xrange(20)]
[0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]

n**n をもっと計算量減らせるはず
340デフォルトの名無しさんsage2009/01/21(水) 13:24:25
n=2 (n**n)%4=0 n%4=2 ←これが違う
n=8 (n**n)%4=0 n%4=0
n=18 (n**n)%4=0 n%4=2 ←これが違う

nが偶数のときは常に(n**n)%4=0 だからこれでよさげ

>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][(n%len(c[n%10]) if n%2 else 0)-1] for n in xrange(20)]
[0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]
341デフォルトの名無しさん2009/01/21(水) 13:31:21
>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][(n%2)*n%len(c[n%10])-1] for n in xrange(20)]
[0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]
342デフォルトの名無しさんsage2009/01/21(水) 13:32:49
>>333
買わなくていいよ(ww
343デフォルトの名無しさんsage2009/01/21(水) 13:46:57
>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> lista=[c[n%10][(n%2)*n%len(c[n%10])-1] for n in xrange(2000)]
>>> listb=[pow(n, pow(n, n), 10) for n in xrange(2000)]
>>> m=0
>>> for k in xrange(len(lista)):
... if lista[k] == listb[k]:
... m+=1
...
>>> m
2000
344デフォルトの名無しさんsage2009/01/21(水) 14:00:12
0, 1, 6, 7, 6, 5, 6, 3, 6, 9

0, 1, 6, 3, 6, 5, 6, 7, 6, 9
を交互に繰り返してるだけだね
2, 4, 6, 8 が全部 6 になってる
しかも 3, 7 以外はずっと固定なんだ
もっと簡単な式になりそうw
345デフォルトの名無しさんsage2009/01/21(水) 14:12:33
正規表現で日本語にマッチする方法はありますか?

a = 'あいうえお、亜意卯得汚'
re.sub('¥¥x', '', a)

だと3.0はunicodeエラー、2.xはエスケープシーケンスに¥xなんてないと言われます
346デフォルトの名無しさんsage2009/01/21(水) 14:17:13
2.xなら
a = u'あいうえお、亜意卯得汚'
でうまく行くと思うけど
347デフォルトの名無しさんsage2009/01/21(水) 14:18:33
re.sub(r'¥¥x', '', a)
348デフォルトの名無しさんsage2009/01/21(水) 14:24:46
a = u'あいうえお、亜意卯得汚'
re.sub(u'[¥u1000-¥u9999]', '', a)
349デフォルトの名無しさんsage2009/01/21(水) 14:25:49
re.sub(ur'¥¥x', '', a)
350デフォルトの名無しさんsage2009/01/21(水) 14:30:43
>>> a=u'あいうえお、亜依鵜絵緒'
>>> print repr(re.sub(ur'[¥u1000-¥u9999]', u'', a)).decode('unicode_escape')
u'鵜'

>>> a='あいうえお、亜依鵜絵緒'
>>> print repr(re.sub(r'¥x81', '¥x92', a).decode('cp932')).decode('unicode_escape')
u'あいうえお但亜依鵜絵緒'
351デフォルトの名無しさんsage2009/01/21(水) 14:39:25
>>345
ユニコードブロックである程度分けることができるが
記号とかもあるし
漢字系はCJKごった煮ブロックとかに入っているし
結局「日本語とは何か」という話になる

が、単に「非ASCII文字」という意味なら
[¥u0100-¥uffff]とかでマッチさせればいいよ
352デフォルトの名無しさんsage2009/01/21(水) 14:39:37
>>> a = u'abcあいうえおdef亜意卯得汚ghi'
>>> print re.sub(ur'[¥u1000-¥u9999]', '', a)
abcdefghi
353351sage2009/01/21(水) 14:42:32
ああごめん、[¥u0080-¥uffff]だな
まあ目的から言ってLatin1が入ろうが入るまいがあまり関係ないとは思うが
354デフォルトの名無しさんsage2009/01/21(水) 22:13:00
>日本語とは何か
うまくできたら日本語ページだけぐぐって欲しいのに
中国語まで検索するグーグルに売ってやれ。
355デフォルトの名無しさんsage2009/01/21(水) 22:37:16
>>343
盲牌損無関係雀
356デフォルトの名無しさんsage2009/01/22(木) 00:40:01
>>345
力技だけど、日本語の文字をずらーっと列挙して日本語の1文字にマッチする正規表現を作ったらどうかな。
ためしに日本語の仮名漢字から成る正規表現を自動生成してみた(Python 3.0 使用)。
[一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠ぁ-ん゛-ゞァ-ヶ・-ヾ]
みたいな長大な正規表現になったけど自動生成もマッチングも十分速いっぽい。

# -*- coding: cp932 -*-

import re

def get_japanese_charset_ranges(enc="cp932"):
  unicode_ranges = [
    range(0x4e00, 0xa000), # U+4E00 - U+9FFF CJK Unified Ideographs
    range(0x3040, 0x3100), # U+3040 - U+30FF Hiragana and Katakana
  ]
  chars = []
  for r in unicode_ranges:
    for i in r:
      try:
        chr(i).encode(enc)
      except UnicodeError:
        continue
      chars.append(i)
  buf = []
  i, end = 0, len(chars)
357356の続きsage2009/01/22(木) 00:42:10
  while i < end:
    start = i
    while i + 1 < end and chars[i] + 1 == chars[i + 1]:
      i += 1
    if start == i:
      buf.append(chr(chars[start]))
    else:
      buf.append(chr(chars[start]) + "-" + chr(chars[i]))
    i += 1
  return "[" + "".join(buf) + "]"
japanese_charset_ranges = get_japanese_charset_ranges()
#print(japanese_charset_ranges)
#print(len(japanese_charset_ranges))
re_japanese = re.compile(japanese_charset_ranges + "+")
text = "foo漢字barテストtest"
print(re_japanese.findall(text))
print(re.findall("[¥u4e00-¥u9fff¥u3040-¥u30ff]+", text)) # 別解

実行時に自動生成するのは無駄だから、適当なモジュール名(例えば unicode_ranges) に
ja_kanji = "一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠"
ja_kana = "ぁ-ん゛-ゞァ-ヶ・-ヾ"
みたいな文字列を定義しておいて
import unicode_ranges
re_japanese = re.compile("[" + unicode_ranges.ja_kanji + unicode_ranges.ja_kana + "]+")
みたいに使うといいかも。この手のモジュール、既に誰か作ってるんじゃないかなー。
358デフォルトの名無しさんsage2009/01/22(木) 01:56:43
別解があるのに巨大正規表現を作る意味はあるんでしょうか?
359デフォルトの名無しさんsage2009/01/22(木) 02:01:12
>ja_kanji = "一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠"
>ja_kana = "ぁ-ん゛-ゞァ-ヶ・-ヾ"
>みたいな文字列を定義しておいて

japanese_charset_ranges = get_japanese_charset_ranges()

のところで
モジュールがあればそっちをimport
無ければget_japanese_charset_ranges()を実行
するように作っておけばよさそうですね
360デフォルトの名無しさんsage2009/01/22(木) 02:03:16
モジュールがあればそっちをimport
無ければget_japanese_charset_ranges()を実行(と同時にモジュール作成)
するように作っておけばよさそうですね
361デフォルトの名無しさんsage2009/01/22(木) 06:30:44
python でファイルの行数を知りたいときに特に正解なやり方ってありますか?
362デフォルトの名無しさん2009/01/22(木) 10:53:24
>>> a=[['']*3]*3
>>> a
[['', '', ''], ['', '', ''], ['', '', '']]
>>> a[2][1]='a'
>>> a
[['', 'a', ''], ['', 'a', ''], ['', 'a', '']]

deepcopyじゃないからこうなるのは分かるのですが、
deepcopyしたいときにはどう書けば良いのでしょうか?
a=[['']*3, ['']*3, ['']*3]
しかないですか?
363デフォルトの名無しさんsage2009/01/22(木) 11:20:23
>>361
>>> a='ag cee¥nat eatunasdg¥nasd¥ npoig ausd laert¥na;sgu asti'
>>> len(a.split('¥n'))
4
364デフォルトの名無しさんsage2009/01/22(木) 11:21:25
a = [[''] * 3 for i in range(3)]
365デフォルトの名無しさんsage2009/01/22(木) 11:22:46
a.count('¥n')+1
366デフォルトの名無しさんsage2009/01/22(木) 11:25:18
>>364
thx!
367デフォルトの名無しさんsage2009/01/22(木) 11:36:42
読み込み中なら。
for idx,line in enumerate(open("foo.txt")):
  lineno = idx+1

総行数
print len(list(open("foo.txt"))) # ファイルの内容全てをリストに取り込むため効率悪
print sum(1 for _ in open("foo.txt"))
print reduce(lambda counter,line: counter+1, open("foo.txt"), 0)
下2つは、行辺りの長さが大きい時の読み込みの効率に改善の余地あり。
対象のファイルによっては、wc -l 呼んだ方が早いことも。


>>362
a = [['']*3 for _ in range(3)]
368デフォルトの名無しさんsage2009/01/22(木) 12:42:00
これって古い情報なんかな
ttp://lightson.dip.jp/zope/ZWiki/157_e3_83_95_e3_82_a1_e3_82_a4_e3_83_ab_e3_81_ae_e8_a1_8c_e6_95_b0_e3_82_92_e6_95_b0_e3_81_88_e3_82_8b
369デフォルトの名無しさんsage2009/01/22(木) 13:01:21
↓行長やファイルサイズがデカくてもいいように書いてみたが
面倒くせ

def linecount(file):
    with closing(open(file, 'rb')) as fp:
        line = [ None ]
        def iterread():
            for x in iter(functools.partial(fp.read, 8192), ""):
                line[0] = x
                yield x
        nl = sum(s.count('¥n') for s in iterread())
        if line[0][-1] != '¥n': nl += 1
        return nl
370369sage2009/01/22(木) 13:03:42
あー空ファイルだとバグるか
まあいいや
371369sage2009/01/22(木) 13:09:49
よく考えたらわざわざgenertor使う意味もねーし……アホか俺は

def linecount(file):
    with closing(open(file, 'rb')) as fp:
        nl, line = 0, None
        for x in iter(functools.partial(fp.read, 8192), ""):
            line = x
            nl += x.count('¥n')
        if line and line[-1] != '¥n': nl += 1
        return nl
372デフォルトの名無しさんsage2009/01/22(木) 14:07:23
>>371
どのぐらい頻繁に使うかによるが、
¥n のカウントぐらいだったらCで書いた方がよくないか?
373 ◆UNKOVIP9RM 2009/01/22(木) 14:30:43
>>372
変態
374デフォルトの名無しさんsage2009/01/22(木) 16:22:51
>>371
どのぐらい頻繁に使うかによるが、
¥n のカウントぐらいだったらアッセンブッラで書いた方がよくないか?
375 ◆UNKOVIP9RM 2009/01/22(木) 16:24:45
>>374
変態
376デフォルトの名無しさんsage2009/01/22(木) 16:55:23
>368
URLのは、書き方は違うけど>>367の一番下のに相当。
普通はこれで十分だけど、バイナリファイルを間違って読み込んでしまった場合や、
プログラムが生成したファイルなんかだと行の長さがとても長い場合があるので、
そういった例外的なケースへの対応が >>371

実装方法は幾通りかあるけど、大筋はこんな感じ。
- read(size), readline(size)等でのバッファ長を指定しての読込。
- 改行文字 CRLF,CR,LF をカウント。

>371
fileオブジェクトは、__enter__,__exit__属性持ってるのでclosing不要なはず。
377デフォルトの名無しさんsage2009/01/22(木) 17:31:15
>> 376
メモリマップトファイル使えば?
import mmap, sys
with open(filename, 'rb') as f:
print sum(1 for c in mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) if c == '¥n')
378デフォルトの名無しさんsage2009/01/22(木) 17:40:15
mmap()は速いが、byte単位の比較をCのコードではなくPythonがやることになるから
そんなに速くない上にサイズ制限ができるだけに見える
379378sage2009/01/22(木) 17:45:05
count() <= Cの実装が数える
if c == '¥n' <= Pythonインタプリタレベルが比較を各バイトで行う

という意味ね
380デフォルトの名無しさんsage2009/01/22(木) 18:23:20
>> 378
64bit環境になってからアドレス空間については無頓着になってたよ。

Cの実装うんぬん、ということなら、
m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
count = 0
while m.readline():
 count += 1
みたいにやれば良いと思う。
381デフォルトの名無しさんsage2009/01/22(木) 18:29:36
readline()使うぐらいなら>>367でよくね?
382デフォルトの名無しさんsage2009/01/22(木) 18:36:13
>> 381
そういわれれば。うーん。

m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
count = 0
index = m.find('¥n')
while index >= 0:
 count += 1
 index = m.find('¥n', index + 1)
m.close()

だんだん辛くなってきた。
383デフォルトの名無しさんsage2009/01/22(木) 18:48:58
timeit.Timer('len(open("changelog").readlines())').timeit(1000)/1000
で測ってみた。ファイルはperlのchangelogで、85000行ぐらい

0.0115 os.popenでwc
0.0141 >>371のchunk
0.0383 >>368の一番下(enumrateいらないよね)
0.0393 一行目
0.0430 >>367のsum
0.0541 >>367のreduce
0.0557 >>380のmmap
0.9 >>377のmmap

pythonは2.5
384デフォルトの名無しさんsage2009/01/22(木) 19:07:19
なんという悲しい結末w
385デフォルトの名無しさんsage2009/01/22(木) 19:09:33
他のプロセスを起動するオーバヘッドを考慮に入れても
Cには勝てなかったかw
386デフォルトの名無しさんsage2009/01/22(木) 19:11:00
まあ小さいサイズならpopen()のオーバヘッドのほうが相対的に効いて来るかな
387デフォルトの名無しさんsage2009/01/22(木) 19:15:02
>>383
よかったらpsyco使ってみてほしい
388デフォルトの名無しさんsage2009/01/22(木) 20:57:00
>>387
頭にpsyco.full()つけた編

0.0117 wc
0.0140 chunk
0.0219 forでcount
0.0296 mmapでreadline
0.0327 readlines
0.0601 sum
0.1082 reduce
0.9691 mmapで¥nを探す

あとlen([l fo l in open(file)])ってのも試してたんだが、
0.05から0.0307に高速化
389デフォルトの名無しさんsage2009/01/22(木) 22:10:11
reduce, map, lambda 系は psyco すると遅くなるらしい
390デフォルトの名無しさんsage2009/01/22(木) 22:13:49
len([_ for _ in open(file)])
にするとさらに速くなるんかな
391デフォルトの名無しさんsage2009/01/22(木) 22:30:55
テキストファイルに関していえば、順当な結果だと思うけど

lenやバッファサイズ指定のないreadline(含む for _ in open(...))を利用するものの速度は、
環境(メモリ)や読み込む対象のファイルに依存するので、
巨大なバイナリファイルでも試してみてメモリの使用量も併せて較べてみよう。

メモリ使用量が一定で、計算量が ファイルサイズ/バッファサイズ に比例になっていれば及第点。


mmapのコードは、>377は単純にpythonでのループ回数が多くなるのが問題だけど、
大域変数の参照(LOAD_GLOBAL)等、繰り返し処理する上での不利な点が多いので、
ベンチマーク対策としては、m.findをローカル変数に代入や、partialを使う等、もう少し工夫の余地在。
392デフォルトの名無しさんsage2009/01/22(木) 23:05:18
グローバル変数を使うとスパゲッティーコードになると聞いたんですが

import os
hensu = os.environ['Path']

def main():
  print hensu
  sp()
def sp():
  print hensu.split(';')



import os

def main():
  print os.environ['Path']
  sp()
def sp():
  print os.environ['Path'].split(';')

だと前者の方が変更がかなり楽になると思うんですが…
393デフォルトの名無しさんsage2009/01/22(木) 23:25:28
def main():
 hensu = os.environ['Path']
 print hensu
 sp(hensu)
def sp(hensu):
 print hensu.split(';')

で何か不満でも?

グローバル変数を使うと
・ 処理の汎用性が低下し、融通が利かなくなる
・ 変数を変更できる範囲が大きく、デバッグ範囲が広範になる
などの問題がある。
394デフォルトの名無しさんsage2009/01/22(木) 23:30:04
>>393
他のスクリプトでも使おうと思い main() と sp() をコピペ
→ hensu がないぞと怒られる

死ぬほど不便じゃないか
395デフォルトの名無しさんsage2009/01/22(木) 23:36:53
そういえばurllibとかグローバル変数使ってたね
>>394は撤回します
396デフォルトの名無しさんsage2009/01/22(木) 23:36:56
>他のスクリプトでも使おうと思い main() と sp() をコピペ

グローバル変数使ってる方がコピペ面倒だろ
397デフォルトの名無しさんsage2009/01/22(木) 23:38:29
mainとsp()コピペすればいけるんじゃないの?
398デフォルトの名無しさんsage2009/01/22(木) 23:40:19
>>392
うん、global変数は
[ globals().__setitem__('global_%d' % n) for n in range(100) ]
とかで書き換えられるが
locals()はリードオンリーだし
global以外の自由変数にはPython2.xでは代入できないし
osとかmainとかspってglobal変数だよな

どんどん使うといいと思うぞ
399デフォルトの名無しさんsage2009/01/22(木) 23:42:09
>>392
至ってまともな反応だと思うよ

でも、グローバル変数は基本的に使っちゃ駄目って言われてる。
理由は>>393の言うとおりで、それぐらいのソース量だとパッと見ればどこに
定義されてて、どこでどんな風に使われてるか分かるけど、ある程度のソース量
になってくると分からなくなってくるのね。

で、>>393のような考え方が主流になって、さらにオブジェクト指向っていう考え方
が出てきた。

利便性で言えば確かにグローバル変数は使いやすいけど、バグを生む原因になり
安いから使わないほうが良いよってこと。
400デフォルトの名無しさんsage2009/01/22(木) 23:45:24
>>396と多分>>397
たびたび申し訳ない。>>394はアンカミスなんだ
× >>393
>>392
401デフォルトの名無しさんsage2009/01/22(木) 23:48:01
その為のオブジェクト指向。クラスにする事で、
変数の範囲を絞った上で、異なる関数から同じ変数を参照出来る。

class App(object):
  def __init__(self):
    self.hensu = os.environ['Path']
  def main(self):
    print self.hensu
    self.sp()
  def sp(self):
    print self.hensu.split(';')

App().main()

基本的に、グローバルに置いても許容されるのは、
importしたモジュールや、設定などの定数のみ。

どうしても必要な場合は、
グローバル変数の変数名は大文字にする、もしくはprefixをつけて他の変数と区別。
利用する関数内で global hensu の様に宣言しよう。(推奨)
402デフォルトの名無しさん2009/01/22(木) 23:48:38
1画面に収まるようなプログラムであればグローバル変数を使う
ほうがプログラムが簡潔になる事はよくある。グローバル変数が
推奨されない理由は、大きな規模のプログラムでは全ての変数の
状態管理をするのは難しい事、それと変数名が衝突してしまうな
どの不都合があるため。

>>392はC言語でそれなりの規模のプログラムを全てグローバル変
数で管理して書いてみるといいよ

いやというほど理解できると思うよ
4033q1sage2009/01/23(金) 00:01:52
>>393
ひきすうが多くてややこしくなったんですが…

>>394
返り血がある関数等はもちろん引数を使ってますが
普通の関数ではグローバル変数の方が楽だと思うんですが…

>>401
クラスだと、
hoge = clas()
hoge.hoge()
print hoge.hoge_value
みたいになって気持ち悪いんですが仕方ないのですかね
後、globalは関数内でのみ適応されるのでしょうか?

404デフォルトの名無しさんsage2009/01/23(金) 00:10:44
うん、global変数はショートコーディングの友だからどんどん使うといいぞ
405デフォルトの名無しさんsage2009/01/23(金) 00:15:32
>グローバル変数

一番の問題は、多用したときにすぐ人間の理解の限界を超えてしまうこと。
他人に読ませる気のないホビープログラミングなら好きなだけ使えばいいと思うよ。
406デフォルトの名無しさんsage2009/01/23(金) 00:23:15
頼むからSingletonだとかいって同じクラスのインスタンス3つも
グローバル変数で定義するのやめてくれ。
Singletonはグローバル変数の免罪符じゃないからっ!
407デフォルトの名無しさんsage2009/01/23(金) 00:25:09
Singletonはグローバル変数だよな。ぶっちゃけ。
ただ、関数を通じてアクセスする分、比較的管理はしやすい。
408デフォルトの名無しさんsage2009/01/23(金) 00:41:27
>>392 ってグローバル変数というより、定数をプログラム全体で使いたいんじゃないの?
409401sage2009/01/23(金) 00:48:11
>>403
変数やクラスの名前に適切な名前を付けることで、わかり易くなるよ。

グローバル変数のスコープは、Pythonの場合はモジュール(=ファイル)内
global宣言が有効なのは関数内のみ。一応、突っ込んで書いておくと、
global宣言はグローバル変数を書き換える場合のみ必要で、参照だけなら不要なんだけど、
(global変数の初期化を関数内で行う時等に利用)

と、ここまで書いて気づいた。
global宣言は、変数名衝突時に関数内からグローバル変数を変更するリスクを引き込むので不用意に宣言しちゃ駄目だ。
関数内でどれがグローバル変数か宣言してると読みやすいと思ったんだけどなぁ。
(>>401の最後の行は取消 m(_ _)

逆に言うと、(Pythonの場合)global宣言なしに不用意な名前衝突によるグローバル変数の書換は起こらないので、
数値・文字列・タプル等の参照だけなら、問題ないかなって気がしてきた。(実質、定数としての利用)
410392sage2009/01/23(金) 00:48:41
>>408
CGI等で、ファイル名のぢctをプログラム全体で使ったり
クエリをぢctにしてプログラム全体使うのは
グローバル変数って言わないのですか?
411401sage2009/01/23(金) 01:12:48
>>410
Pythonでは定数が無いので変数を定数として使う慣習がある。

コード上はどちらも変数なんだけど、役割によって分類すると
プログラム内で初期化以降変更されないと約束されているなら定数。
頻繁に変更される・変更される可能性があるなら変数。
412デフォルトの名無しさんsage2009/01/23(金) 02:10:32
>>394
コードの再利用は、コピぺせずにimportして利用しよう。
413デフォルトの名無しさんsage2009/01/23(金) 02:27:59
>>411
globalは、コピぺせずにimport globals.pyして利用しよう。
414デフォルトの名無しさんsage2009/01/23(金) 04:03:40
>> 390
普通の変数と _ ってメモリの使い方が違うの?
415デフォルトの名無しさんsage2009/01/23(金) 08:51:48
>>403
グローバル変数を使わない方が分かりやすいと感じない人は
結局どんな条件でも分かりやすく書けないよ。
問題を小さな複数の問題に分割できないってことだから。

416デフォルトの名無しさん2009/01/23(金) 08:55:27
細かく分割し続けた先には何がある。馬鹿らしいと思わないかね!
417デフォルトの名無しさんsage2009/01/23(金) 09:28:22
全部自分でメンテをするという気概がありかつ
ソース書いた時の約束事をずっと覚えていられるくらい
記憶力に自信があるのだったら問題ない
418デフォルトの名無しさん2009/01/23(金) 12:28:24
未だにlxmlを進めずBeautifulSoup進めるやつが理解できない。
どうしてもPurePythonじゃないとダメなら仕方ないが
419デフォルトの名無しさんsage2009/01/23(金) 12:40:30
pythonの場合、globalで修飾しないとグローバル変数は書き換えられないから定数として使う分にはアリなんじゃない?
もちろん変数名は大文字で書いてさ
420デフォルトの名無しさんsage2009/01/23(金) 13:02:45
別に定数じゃなくても全然アリだろ

Pythonのグローバル変数は結局のところモジュールのtoplevelの定義であって
モジュール外部からの参照には名前修飾がいるし

モジュールのtoplevelで定義されたclassだのdefだのは全部グローバル変数だし

sys.argvだのsys.stdinだのsys.pathだのはグローバル変数だし

グローバル変数使わずにPythonのコード書いてみろってんだよ
421デフォルトの名無しさんsage2009/01/23(金) 13:13:51
>>418
だって普通のxmlパーサは口うるさいんだもの
腐ってるhtml喰えるBeautifulSoupはどうしても重宝する
422デフォルトの名無しさんsage2009/01/23(金) 13:15:06
>>421
>>418ではないが、lxmlは腐ってるHTMLも喰えるし
BeautifulSoupよりずっと高速だしElementTree互換のAPIに加えて
XPATHとかも使えてずっと高機能だよ
423デフォルトの名無しさんsage2009/01/23(金) 13:22:54
>>421
lxml.html.soupparser
424421sage2009/01/23(金) 13:53:15
そうなんだ。少なくとも俺は単純に知らなかっただけ
次はlxml使ってみようと思う。あんまりxmlいじる機会ないけど
425デフォルトの名無しさんsage2009/01/23(金) 15:18:37
>>419
標準ライブラリを参考に、どういう所で使われているか適当にピックアップしてみた。
- モジュール外から参照されたくない場合 _ 接頭子をつける。(モジュール内プライベート)
- 定数。(数値、文字列、バージョン等のタプル、) 変数名は大文字で。
- キャッシュ等の用途に使う場合は、利用する関数の直前で宣言/初期化。(re.compileや辞書等)
- Singletonのインスタンス。生成するメソッドの前で宣言。変数名は _ prefix付き。
※ クラス変数にする、若しくは2.6以降ならクロージャ内に隠せる。

名前の衝突については、宣言なしに意図しない書き換えは起きないけど、
コードを読む時には混乱の元になるので、可読性の面で問題あり。変数名の運用ルールは必須。


>>420
Pythonの"グローバル変数"についてはその通り、通常、モジュール内toplevelの変数を指す事になるのだけど、
用途を無視して極論になってるよ。誰もクラス(class)やtoplevelでの関数(def)を使うなとは言ってない。

戒めるべきグローバル変数の利用は、一般に C言語等で言われているグローバル変数の乱用で、
グローバル変数を利用した関数間の値渡し等の、主にモジュール結合度の高いとされる利用法がそれに当たる。

Pythonに当てはめると、組み込み関数(__builtin__モジュール)が
どのモジュールからも名前修飾なしに使える、本当のグローバルと言う事になるけど、
通常の利用では__builtin__内を変更する事は、まずないので。そういった意味では、
モジュール内にスコープが限定される為、C言語程ナーバスになる必要はないかもしれない。
でも、比較的影響範囲が低いというだけで、用途を無視して積極的に使っていいかどうかはまた別の議論。


>>416
綺麗に構造化されたプログラムは、高い拡張性と変更に強い柔軟性を備える事になる。ソフトウェア品質の指標の一部。

426デフォルトの名無しさんsage2009/01/23(金) 15:25:49
>>419
PEP8には書いてなかったと思うんですが
定数名は大文字で書いていいのですか?
427デフォルトの名無しさんsage2009/01/23(金) 15:54:04
Pythonに定数なんて無いんだからどうでもいいよ
428デフォルトの名無しさんsage2009/01/23(金) 15:59:25
string.lowercaseなんかは大文字ではないね
429デフォルトの名無しさんsage2009/01/23(金) 17:11:06
>>426
PEP8に書いてるよ。

Constants

Constants are usually declared on a module level and written in all
capital letters with underscores separating words. Examples include
MAX_OVERFLOW and TOTAL.
430デフォルトの名無しさんsage2009/01/23(金) 17:22:03
もしかして、和訳に載ってない?>変数の命名規則、定数について
431デフォルトの名無しさんsage2009/01/23(金) 17:42:09
定数の記述はごく最近加えられたっぽい (Revision 68849)
http://svn.python.org/view/peps/trunk/pep-0008.txt
432デフォルトの名無しさんsage2009/01/23(金) 18:15:37
>>431
ホントだ。追加された日付、昨日。
433デフォルトの名無しさんsage2009/01/23(金) 18:18:47
中の人はここの住人だったんだな
434デフォルトの名無しさんsage2009/01/23(金) 21:03:50
>>414
違わない。

リスト内包の細かな最適化では、mapにすると早くなるケースはある。
435デフォルトの名無しさんsage2009/01/23(金) 23:14:55
おまいらグローバル変数の恐ろしさを知らないんだ・・・
名前修飾されてればいいとかそんなのどうでもいいんだよぅ
頭にg_でも付けてろっての。
436デフォルトの名無しさんsage2009/01/23(金) 23:17:43
そんな「構造化プログラミング」とか覚えたたてのボウヤみたいな
話はしてないから安心しろ
437デフォルトの名無しさんsage2009/01/24(土) 09:50:28
恥ぱい3立ち読みしてきた

恥ぱいは売ってなかった
(売り切れたのかあるいは新刊を売るための書店の配慮なのか・・・)
恥ぱいネットワークはネットワークほとんど関係なくね?っていう内容だし
恥ぱい3はpythonというかプログラミング自体の初心者向けなんだろうが
買いたいとは思わなかったしこれから始める人にも薦めたいとまでには至らなかった
438デフォルトの名無しさんsage2009/01/24(土) 12:43:15
2と3の比較・注意点とかを
さっくりまとめてあるというわけでもないんかな?
439デフォルトの名無しさんsage2009/01/24(土) 13:17:37
恥ぱいは、言ってみればオナニー本だな。
Jython本に似てる。
440デフォルトの名無しさんsage2009/01/24(土) 14:26:31
Rubyとかに比べても日本語の本は少ないんだから無いよりはましかな
もしかしたら俺の方がもっと良いのが書けるとか売れるのが書けるとか
思って後から日本語の本が色々出版されるようになるかもしれんし
441デフォルトの名無しさんsage2009/01/24(土) 15:35:07
>>439
恥ぱい3は python 知ってる人には不要だろうね
Jython 本は役に立たないw
恥ぱい3は初心者に少しは役に立つから Jython 本よりはお奨め
442デフォルトの名無しさんsage2009/01/24(土) 16:45:50
じゃあ俺らでpython本出版しようぜ。
俺から行くぜ。



    もくじ
443デフォルトの名無しさんsage2009/01/24(土) 16:49:48
著者からのメッセージ
444デフォルトの名無しさんsage2009/01/24(土) 16:51:39
釈明
445デフォルトの名無しさんsage2009/01/24(土) 16:54:28
ドラッグすると動くアラビア文字
عکساولپیامآپدیتدانلودمنجررانشانمیدهد
عکسدومزمانیستکهدکمهآپدیتلآپدیتاست
عکسسومپیاممیدهدکهسروربهتران
446デフォルトの名無しさんsage2009/01/24(土) 17:12:45
>>455
なんて書いてあるのか気になる。
447デフォルトの名無しさんsage2009/01/24(土) 17:18:04
google翻訳はアラビア語サポートしてるので、そこに入れてみたら、
ペルシア語は対応してませんと言われた。
448デフォルトの名無しさんsage2009/01/24(土) 20:24:42
>>455に期待
449デフォルトの名無しさんsage2009/01/24(土) 20:49:07
>>455
これは萌えるwww
450デフォルトの名無しさんsage2009/01/24(土) 20:52:45
>>441
>恥ぱい3は python 知ってる人には不要だろうね

ではどんな人に必要だというのだ。
451デフォルトの名無しさんsage2009/01/24(土) 21:48:12
知らない人じゃないのか?
452デフォルトの名無しさんsage2009/01/24(土) 22:01:12
3 から Python 自体始める人向け
453デフォルトの名無しさんsage2009/01/24(土) 22:18:21
>>455
空気読め
454デフォルトの名無しさんsage2009/01/24(土) 22:23:50
なんでみんな未来の話してるの?
455454 = 446sage2009/01/24(土) 22:25:29
うわあああ吊ってくるううう
456デフォルトの名無しさんsage2009/01/24(土) 22:31:31
ここが事故現場ですか?
457デフォルトの名無しさんsage2009/01/24(土) 22:33:27
>>456
死因は事故ではなく自殺と断定されました。
458デフォルトの名無しさんsage2009/01/24(土) 22:38:00
>>452
トラウマになって終わりそうだな。
459デフォルトの名無しさんsage2009/01/24(土) 22:59:12
OS再インストールしてeasy_installしたんですが
みなさん普通何インストールしていますか?
とりあえずPsycoとMakoとSQLAlchemyとsimplejsonを
インストールしましたが何かお勧めありますか?
460デフォルトの名無しさんsage2009/01/24(土) 23:09:51
突然ですが
ttp://d.hatena.ne.jp/inopie/20080712/
にインスパイアされたのでPythonでもやってみた
import win32com.client
import re

s = win32com.client.Dispatch('SAPI.SpVoice')
vs = s.GetVoices()
voicename = ['DTalker_Taro', 'MSSam', 'LHKENJI', 'LHNAOKO']
voice = {}
for i in xrange(vs.Count):
v = vs.Item(i)
id = v.Id
print id
for n in voicename:
if re.match(r'^(.*)(%s)' % n, id):
voice[n] = v
print voice
s.Voice = voice['LHNAOKO']
s.Rate = 5
s.Speak(
u'これはPythonでSpeech APIを制御してしゃべらせています。どうでしょうか。', 1)
s.WaitUntilDone(30000)
s.Speak(u'二つ目の文です。', 2)
s.Voice = voice['MSSam']
s.Speak(u'This is sam.', 2)
s.Voice = voice['LHKENJI']
s.Speak(u'四つ目の文です。', 2)
461デフォルトの名無しさんsage2009/01/24(土) 23:18:48
わかる
462デフォルトの名無しさんsage2009/01/24(土) 23:22:48
>>459
easy_installで入れるのはlxmlくらいかな。
pygments,epydoc等は必要になったら入れる。source highlightとAPIdoc生成。
後は、定番 PIL,Numpy,wxPython,Twisted,ipython,
使わないけど pygame は毎回入れてしまう。
463デフォルトの名無しさんsage2009/01/24(土) 23:28:49
>>460
実行してみようと思って気づいたんだけど、
インデントが崩れたソースってどう修正すればいいのか
わからないね・・・
464デフォルトの名無しさん2009/01/24(土) 23:45:08
スレのhtmlソースにはスペース入ってる
465デフォルトの名無しさんsage2009/01/24(土) 23:48:48
from urllib import urlopen
print list(urlopen('http://pc11.2ch.net/tech/dat/.dat'))[460-1].split('<>')[3].replace('
','¥n')
466デフォルトの名無しさんsage2009/01/24(土) 23:53:02
>>463
ごめん
インデント崩れたとこだけ貼り直し
for i in xrange(vs.Count):
 v = vs.Item(i)
 id = v.Id
 print id
 for n in voicename:
  if re.match(r'^(.*)(%s)' % n, id):
   voice[n] = v
print voice
467デフォルトの名無しさんsage2009/01/25(日) 00:13:12
[space] ->  
468デフォルトの名無しさんsage2009/01/25(日) 00:54:37
       .
469デフォルトの名無しさんsage2009/01/25(日) 00:59:37
>>459
simplejsonって2.6以降標準なんじゃないっけ?
470デフォルトの名無しさんsage2009/01/25(日) 01:01:55
 でインデントすると
  コピペしたときに
   残らない?
471デフォルトの名無しさんsage2009/01/25(日) 01:25:30
残らねーよw
472デフォルトの名無しさんsage2009/01/25(日) 02:51:37
>>469
Yes. 名前は json で標準に入ったよ。
473デフォルトの名無しさんsage2009/01/25(日) 12:03:56
>>469
いまだに2.5系です。すいません。
474デフォルトの名無しさん2009/01/25(日) 12:04:19
>>460
うちだと'LHNAOKO'と'LHKENJI'でKeyErrorが出たので、
全部'MSSam'にしたら声が出て来ました。ところが
日本語の部分が無視されて英語部分しか発声されません。
'LHNAOKO'と'LHKENJI'は、どこで入手されました?
475デフォルトの名無しさんsage2009/01/25(日) 12:17:47
>>460じゃないけど多分ここ
ttp://www1.bbiq.jp/kougaku/speech_reco.html
と思ったんだが
・SpeechSDK51.exe(68.0 MB)
・SpeechSDK51LangPack.exe(81.5 MB)
のリンク先が切れてる
最新は5.3らしいので探してみてください
476デフォルトの名無しさんsage2009/01/25(日) 12:38:07
Officeのバージョンによるみたい
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q
あとはこれかな
ttp://www.createsystem.co.jp/DTalkerSapi1.html
声種(SAPI4, SAPI5)
 たかし
 けいこ
 太郎
 花子
 小太郎
 はなちゃん
 ロボ太郎
 ロボ子

ttp://support.adobe.co.jp/faq/faq/qadoc.sv?224228+002
ttp://technet.microsoft.com/en-us/speechserver/bb851679.aspx
ttp://www.microsoft.com/msagent/
477デフォルトの名無しさん2009/01/25(日) 12:59:37
>>475-476
ありがとうございます。!!!

Officeのセットアップ追加で「入力システムの拡張」
「音声」を選ぶとうまく行きました。
MSSamだと「Python」の発音は「パイソン」で正しかったのですが、
LHNAOKOだと「ぴちょん」になっててかわいいというかまぬけというか・・・
478デフォルトの名無しさんsage2009/01/25(日) 17:27:23
ttp://python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1
479デフォルトの名無しさんsage2009/01/25(日) 20:29:06
>>437
>恥ぱいネットワークはネットワークほとんど関係なくね?っていう内容だし

Python Network Programing といえばこっち
(2004/08/17 $36.51)
(2004/08/30 ¥3,749) 値下がりしたっぽい

ttp://foma-zakki.cocolog-nifty.com/zakki/2006/09/python_python_n.html
480デフォルトの名無しさんsage2009/01/25(日) 22:07:21
>>474
Mary & Mike
ttp://www.vector.co.jp/soft/win95/edu/se246086.html
python 関係ないけど
481デフォルトの名無しさんsage2009/01/25(日) 22:11:58
AT&TのText-to-speechエンジンは結構綺麗だよな
電話会社だけあって
ttp://www.research.att.com/‾ttsweb/tts/demo.php

Pythonには関係ないけどな
482デフォルトの名無しさんsage2009/01/26(月) 00:33:20
SDKの生きてるリンク先見つかったので一応貼っとく
ttp://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51.exe
Pythonには関係ないけど
483デフォルトの名無しさん2009/01/26(月) 00:41:06
python関係ないけど
http://tcts.fpms.ac.be/synthesis/mbrola.html
http://www.microsoft.com/MSAgent/
484デフォルトの名無しさんsage2009/01/27(火) 00:54:11
pythonの無料の統合開発環境でオススメありますか?(日本語化できるもの)
OSはXPです
PyScripterはバグが多くて使い物になりませんでした
Eclipse+PyDevは重過ぎて使えません…
485デフォルトの名無しさんsage2009/01/27(火) 01:05:36
>>484
適当なPython対応を謳ったエディタを使った方がいいと思う。
486デフォルトの名無しさんsage2009/01/27(火) 01:41:34
SciTEが結構いい。メニュー英語だけど。
Editra にもう少しがんばってほしい。
487デフォルトの名無しさんsage2009/01/27(火) 01:48:04
統合環境厨が定期的に湧いてくるな…
488デフォルトの名無しさんsage2009/01/27(火) 01:54:39
>>487
草いひともよくわいてくるよね
489デフォルトの名無しさんsage2009/01/27(火) 01:54:59
最初っからIDE使うのはやめとけ
490デフォルトの名無しさんsage2009/01/27(火) 02:01:26
>>484
komodoEditorってのがあるよ
ただ、Eclipse程ではないけどこれも重い
491デフォルトの名無しさんsage2009/01/27(火) 08:59:42
Eric ...は、日本語化あったっけな?
普段日本語とか気にしないからわからん。
メニューが日本語であることがそんなに大事?
492デフォルトの名無しさんsage2009/01/27(火) 09:45:08
>>485デジャヴ
493デフォルトの名無しさんsage2009/01/27(火) 09:57:39
494デフォルトの名無しさんsage2009/01/27(火) 11:44:43
emacs、最強
495デフォルトの名無しさんsage2009/01/27(火) 12:16:22
最強はメモ帳だろメモ帳。何たってXPに組み込まれてるだけあってどこでも使える。
俺は普段linux&vimだけど。

ところでチラ裏だけれども、vimだとコマンドモードでpythonとかrubyを実行できるんだね。
:python import urllib; print urllib.urlopen(").read()
みたいな感じで
emacsだとリージョンを実行できたりしたよーな
496デフォルトの名無しさんsage2009/01/27(火) 12:42:39
vimはpythonでもvimスクリプト書けるから、
関数定義したり、それをキーに割り当てたり、自由にできる。
http://www.vim.org/htmldoc/if_pyth.html
497デフォルトの名無しさんsage2009/01/27(火) 12:45:08
Pythonやら無い奴が一番勝ち組
498デフォルトの名無しさんsage2009/01/27(火) 14:09:32
やらないか
499デフォルトの名無しさんsage2009/01/27(火) 15:37:39
>>493
そのエディタどこの?
500デフォルトの名無しさんsage2009/01/27(火) 15:45:39
>499
0:23
501デフォルトの名無しさん2009/01/27(火) 15:46:06
>>500
普通にここで言えばいいだろ。
502デフォルトの名無しさんsage2009/01/27(火) 15:57:40
↑ruby使ってろクズ
503デフォルトの名無しさん2009/01/27(火) 16:05:16
foo = 'A'

>>> foo[3::6]
'39'
>>> foo[3::4]
'37'
>>> foo[3::3]
'369'
>>> foo[3::2]
'3579'
>>> foo[3::1]
'3456789A'
504デフォルトの名無しさん2009/01/27(火) 16:07:27
foo[n::m] の意味は?
505デフォルトの名無しさんsage2009/01/27(火) 16:29:17
nはスライス開始のインデックス、
mはステップ。-だと逆方向からカウントしてく。
スライス終了のインデクスが指定されていないので、
文字列の一番最後までが範囲していされてる
506デフォルトの名無しさんsage2009/01/27(火) 16:33:47
>>495
bomの罠に気を付けて‼
507デフォルトの名無しさんsage2009/01/27(火) 17:02:21
>>505
嘘を教えるなよ
508デフォルトの名無しさん2009/01/27(火) 17:12:16
本当のこと教えてください
509デフォルトの名無しさんsage2009/01/27(火) 17:30:45
あなたがすきです
510デフォルトの名無しさんsage2009/01/27(火) 18:00:25
>>505のいうことはまったくちがう。
そもそも文字列でインデックスなんてありえない。
Cやってる奴ならわかるだろうけど。
511デフォルトの名無しさんsage2009/01/27(火) 18:11:03
>>510
Cやってる奴にとっては文字列=バイト列なんだから
インデックス最高とか思ってそうだが違うのか?
512デフォルトの名無しさんsage2009/01/27(火) 18:26:23
インデックスには乳が足りん
513デフォルトの名無しさんsage2009/01/27(火) 18:41:42
インデックスはおっパイ損
514デフォルトの名無しさんsage2009/01/27(火) 18:45:35
>>505の嘘つき
515デフォルトの名無しさん2009/01/27(火) 19:02:12
じゃあ本当のことを教えてください。
516デフォルトの名無しさんsage2009/01/27(火) 19:06:24
愛しているのはあなただけです
517デフォルトの名無しさんsage2009/01/27(火) 19:13:47
だめだぞおまいら。本当のこと教えちゃだめだぞ。絶対だぞ。
518デフォルトの名無しさん2009/01/27(火) 19:18:55
______  ___________
         V
    _____
   /::::::::::::::::::::::::::\                  _
  /::::::::::::::::::::::::::::::::::::::\             /  ̄   ̄ \
  |:::::::::::::::::|_|_|_|_|           /、          ヽ はぁ?黙ってろデブw
  |;;;;;;;;;;ノ   \,, ,,/ ヽ          |・ |―-、       |
  |::( 6  ー─◎─◎ )          q -´ 二 ヽ      |
  |ノ  (∵∴ ( o o)∴)          ノ_ ー  |     |
/|   <  ∵   3 ∵>          \. ̄`  |      /
::::::\  ヽ        ノ\           O===== |
:::::::::::::\_____ノ:::::::::::\        /          |
519504sage2009/01/27(火) 19:46:48
本当のこと教えてください
520デフォルトの名無しさんsage2009/01/27(火) 20:13:02
おまえにはまだ早い!
521デフォルトの名無しさん2009/01/27(火) 20:21:50
>>> foo = ''
>>> foo[0:2:4]
'0'
>>> foo[0:4]
'0123'
>>> foo[0::4]
'048'
>>> foo[0::3]
'0369'
>>> foo = 'ABCDEFGHIJKLMN'
>>> foo[0::5]
'05AFK'
>>> foo[0::2]
'02468ACEGIKM'
>>> foo[0::6]
'06CI'
>>> foo[0::1]
'ABCDEFGHIJKLMN'
>>> foo[0::2]
'02468ACEGIKM'
>>>

結果は明らかだが、マニュアルに載ってる?
522デフォルトの名無しさん2009/01/27(火) 20:23:23
>>> foo[-1::-1]
'NMLKJIHGFEDCBA'
>>> foo[-1:-1]
''
>>>

おもしれー
523デフォルトの名無しさんsage2009/01/27(火) 20:38:03
>>521
この辺かな
http://www.python.jp/doc/2.5/lib/built-in-funcs.html#l2h-58
http://www.python.jp/doc/2.5/lib/built-in-funcs.html#l2h-68
http://www.python.jp/doc/2.5/lib/typesseq.html
http://www.python.jp/doc/2.5/ref/slicings.html
524デフォルトの名無しさんsage2009/01/27(火) 21:39:53
a = ''
a[0:10:5]

つまり

初め:終わり:倍数
525デフォルトの名無しさんsage2009/01/27(火) 21:45:14
e.gashira[2:50]
526デフォルトの名無しさんsage2009/01/27(火) 21:48:45
(^ω^;)
527デフォルトの名無しさんsage2009/01/27(火) 22:21:30
BASICのfor文

FOR i = 0 TO 10 STEP 5

NEXT i
528デフォルトの名無しさんsage2009/01/27(火) 22:41:01
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに
知識として持っててあたりまえのことを質問する馬鹿が増えた
529デフォルトの名無しさんsage2009/01/27(火) 22:57:46
>>foo[3..-1]
>>'7295'
530デフォルトの名無しさん2009/01/27(火) 23:53:18
>>528
みんな気をつけろ!こいつRuby厨だ!
531デフォルトの名無しさんsage2009/01/27(火) 23:57:38
知識として持ってて当たり前のことってたとえば何だろう
532デフォルトの名無しさんsage2009/01/27(火) 23:58:59
上司の名前やら、役職や、部署の名前とか
ほんとーに基本的なことじゃない?
533デフォルトの名無しさんsage2009/01/28(水) 00:17:09
>>532
さすがにそれは・・・?
534デフォルトの名無しさんsage2009/01/28(水) 00:20:15
>>531
Rubyの開発者
535デフォルトの名無しさん2009/01/28(水) 01:47:48
愛国Ruby
http://pc11.2ch.net/test/read.cgi/tech//
536デフォルトの名無しさんsage2009/01/28(水) 02:10:28
>>> class E: gashira = '!!gappe mukatsuku!!'
...
>>> e=E()
>>> e.gashira[2:50]
'gappe mukatsuku!!'
537デフォルトの名無しさんsage2009/01/28(水) 05:45:01
ttp://mail.python.org/pipermail/python-dev/2009-January/085526.html

GvR が危険球を投げたw
538デフォルトの名無しさんsage2009/01/28(水) 16:08:25
>>274
ttp://text.world.coocan.jp/TSNET/?What%27sNewInPython3.0
>一般的により良い修正は、(特に元のコードでlambdaが使用されているのなら)しばしばリストの内包記法を用いることです。
539デフォルトの名無しさんsage2009/01/28(水) 16:28:03
>>538
そこはlist(map(ord, "abc"))みたいにlistとmap(filter)を使うなら
内包表記で[ord(i) for i in "abc"]としましょうってことじゃないの?
540デフォルトの名無しさんsage2009/01/28(水) 16:31:44
list ・ map = map
541デフォルトの名無しさんsage2009/01/28(水) 16:50:32
>>537
3.1早く出そうよって言ってるだけじゃないの?
542デフォルトの名無しさんsage2009/01/28(水) 17:03:27
3.1を早く出すのはいいと思う。
こうしとけば良かった!と思うところは普及しないうちに直した方がいい。
543デフォルトの名無しさんsage2009/01/28(水) 17:08:35
>541
3.0 は避けとくけど 3.1 になったら使ってみるかと
これまたリリースノートも何も読まない人が大挙して来るかも
(それが狙いとも言えるが)


ところで ML がネタの欧州というか釣り堀に…
544デフォルトの名無しさんsage2009/01/28(水) 19:16:57

ttp://gihyo.jp/dev/serial/01/pythonhacks/0002
> Python 3.0 Hacks
> 第2回 abcモジュールによる抽象基底クラスの作成

↑ 抽象クラス機能がPython言語仕様に無かった事が不備とは
思ってなかったんで、記事内容には「?」だった。
不注意から守るという以外に、困るケースがあるんだろうか?
545デフォルトの名無しさんsage2009/01/28(水) 19:17:25
MLの流れに絡んでいる奴らはクソだよね。
546デフォルトの名無しさんsage2009/01/28(水) 19:35:43
にしおとかいうひとは、ネタっぽいどうでもいい話題には真っ先に食いつくな。
自分の評価を落としているとも知らず、おめでたいことだ。
547デフォルトの名無しさんsage2009/01/28(水) 19:58:44
>>544
twistedあたりでも使われてるzope.interfaceなんてのもあるし
欲しい奴は欲しいんでないの

俺は要らないけどな
つーかducktypingな時点で、isaを表現するのに継承使う必要もねーから
mixin的な実装継承しか使わん
548デフォルトの名無しさんsage2009/01/28(水) 21:23:32
はやくMLやHaskellのような代数データ型とパターンマッチをサポートして欲しい。
もうtupleでエミュレートするのに飽き飽きした。
549デフォルトの名無しさんsage2009/01/28(水) 21:24:33
あと標準のパーサジェネレータも。
550デフォルトの名無しさんsage2009/01/28(水) 22:39:50
>>545
?
551デフォルトの名無しさんsage2009/01/28(水) 23:14:23
元ネタはリアルDQNなのか本職の釣師なのか…

> 美しくありません。@4620

っていうのならもっと美しく質問してほしいのだ
552デフォルトの名無しさんsage2009/01/28(水) 23:28:59
>>544
今時、抽象クラス機能のありがたみすら分からないのはどうかと…
553デフォルトの名無しさんsage2009/01/29(木) 01:58:39
NotImpementedを返させるだけでも特に困らなかったような気もする
554デフォルトの名無しさんsage2009/01/29(木) 02:03:11
>>552
>>544ではないが、Javaとかならともかく、動的型でダックタイピングな言語での
抽象クラスってそんなにひつようか?
555デフォルトの名無しさんsage2009/01/29(木) 02:18:00
標準ライブラリ書くような偉い人が書くものだから、
下々には必要ないんじゃないの?
556デフォルトの名無しさんsage2009/01/29(木) 02:18:30
機能に踊らされてる人間は、その機能で大量にバグを発生させる。
557デフォルトの名無しさんsage2009/01/29(木) 10:10:57
1円を笑うものは1円に泣くのです。
558デフォルトの名無しさんsage2009/01/29(木) 10:25:48
データファイル更新日時から、各レコード記録の日付を推定して補うコードを書こうとしています。
日付と文字列との橋渡しを Python でどのようにすればいいのか教えてください。

・ データは記録時刻 HH:MM で始まる形式の文字列 (取得済み; 仮に r とする) です。
・ データファイル更新日時は yyyy/mm/dd HH:MM という形式の文字列 (取得済み; 仮に u とする) です。
・ データ記録は、その時刻がデータファイル更新時刻より
  - 大きければ、更新前日に行われたもの
  - 小さいか等しければ、更新当日に行われたもの
  と判断したいです。
・ r, u を入力してデータ記録の日付を yyyy/mm/dd 形式の文字列で返す関数がほしいです。

処理の流れは
・ r, u からその時刻部分を取得し、時刻に変換して比較
・ 結果によって u の日付部分を1日減じたり減じなかったりして、文字列に戻して返す
でしょうか?

ライブラリリファレンスの strftime, strptime あたりを眺めているのですがどうも物分りが悪くて…
559デフォルトの名無しさんsage2009/01/29(木) 10:43:55
こんなもんでいいんじゃねえの

def f(r, u):
    d, hm = u.split(' ')
    if r <= hm:
        return d
    else:
        nd = datetime.date(*map(int, d.split('/'))) - datetime.timedelta(1)
        return nd.strftime('%Y/%m/%d')
560デフォルトの名無しさんsage2009/01/29(木) 10:48:42
>>558
そういうネタっぽいことはMLでやれよ。
仕事のない暇人どもがわらわらとやってきて、サンプルコード書いてくれるからよ。
561558sage2009/01/29(木) 10:58:32
>>559
そのコードで動作しました、ありがとうございます。split 便利ですね。
r <= hm の部分ですが、両辺は文字列として辞書順比較されているという認識でよろしいでしょうか?
562デフォルトの名無しさんsage2009/01/29(木) 11:00:43
>>561
うん。HH:MMならそれで問題ないよね?
563558sage2009/01/29(木) 11:08:03
>>562
もちろんOKです、ありがとうございました〜。
564デフォルトの名無しさんsage2009/01/29(木) 13:33:38
>560
妙な応用編しか教えてくれないけどな
565デフォルトの名無しさんsage2009/01/29(木) 13:37:38
>>564
そんなだから仕事ないんだろ。
空気が読めないというのは致命的だよな。
566 ◆UNKOVIP9RM 2009/01/29(木) 15:48:26
痛い

痛い

痛い
567デフォルトの名無しさんsage2009/01/29(木) 20:38:45
>>553
エラーの発生するタイミングが関数コール時とインスタンス生成時だとかなり変わると思うけど。
568デフォルトの名無しさんsage2009/01/29(木) 20:42:47
そういうことが気になるんなら静的型言語を使ったほうがよくないか
569デフォルトの名無しさんsage2009/01/29(木) 21:12:32
ハンゲームしねえええ
570デフォルトの名無しさんsage2009/01/29(木) 21:13:07
http://docs.python.org/extending/embedding.html
multiply
呼び出す奴が動かない
multiply.pyとcの実行ファイルを同じディレクトリにおいても
multiplyなんてないよ
というエラーになる
環境はlinux
571デフォルトの名無しさんsage2009/01/30(金) 00:54:37
>>567
そんな時のためのメタクラス。
だけど、大半は実行時でも問題ない。その分テストを書こう。

>>570
多分
$ PYTHONPATH=. call multiply multiply 3 2
572デフォルトの名無しさん2009/01/30(金) 09:04:17
Python3はライブラリに関してはまったく同じなのね
573デフォルトの名無しさんsage2009/01/30(金) 09:14:59
>>572
基本的には互換性を保ってるけど、細かな変更点が多数あるので要確認。
2.6に移植してから2to3使えば、ライブラリのapi変更にもある程度追従してくれる。
574デフォルトの名無しさんsage2009/01/30(金) 09:49:40
>>573
ウソを教えるなよ。
575デフォルトの名無しさんsage2009/01/30(金) 12:40:22
後方互換性は無いけど変換ツールでどこまで対応できるのかね
576デフォルトの名無しさんsage2009/01/30(金) 14:05:28
特定のプログラムの特定の箇所で、変数をバイト列として扱いたいのか
(あるいはそれが正しいのか)、文字列として扱いたいのかなんて
自動で判断できるわけねーし、結局手動でプログラマが手を入れないといかんよな。

例えばMacをのぞくUnix系のOSだと、システム界面ではbytesベースで扱うのが
正しいことが多いだろうし、逆にWindowsではファイルI/Oを除いては大概
strベースが正しいだろうしな。
577デフォルトの名無しさんsage2009/01/30(金) 14:09:15
なんなんだ突然。
578デフォルトの名無しさんsage2009/01/30(金) 14:57:09
藪から棒だが言いたい事は分からんでもないこともない
579デフォルトの名無しさん2009/01/31(土) 09:44:38
Python 3が後方互換性を捨ててでも求めたもの
http://www.atmarkit.co.jp/fcoding/articles/python3/01/python301b.html

>Python 2の文字列型とbytes型の大きな違いは、「変更可能(mutable)」なデータ型であるという点です。
>Pythonの文字列型では、メモリ利用の効率化などの目的があり、要素の削除や置き換えができません。
>これを「変更不可能(immutable)」といいます。

bytes = immutable, bytearray = mutable
だと思っていたけど違うのか? それとも変わったのか?
580デフォルトの名無しさんsage2009/01/31(土) 10:14:15
>>> x = b'this'
>>> x[0] = b'T'
Traceback (most recent call last):
File "", line 1, in
TypeError: 'bytes' object does not support item assignment
581デフォルトの名無しさんsage2009/01/31(土) 10:14:43
> Like "str", the "bytes" type is immutable.
> There is a separate mutable type to hold buffered binary data, "bytearray".

http://docs.python.org/3.0/whatsnew/3.0.html
582デフォルトの名無しさんsage2009/01/31(土) 10:20:25
a = ''.join([chr(x) for x in xrange(256)])
こういうデータの作り方しても大丈夫ですか?
583デフォルトの名無しさんsage2009/01/31(土) 10:28:07
>>> a = 'this'
>>> a[0] = 'T'
Traceback (most recent call last):
File "", line 1, in
TypeError: 'str' object does not support item assignment

>>> x = b'this'
>>> x[0] = b'T'
Traceback (most recent call last):
File "", line 1, in
TypeError: 'bytes' object does not support item assignment

>Python 2の文字列型とbytes型の大きな違いは、「変更可能(mutable)」なデータ型であるという点です。
どちらも「変更不可能(immutable)」で違いが無いですね
584デフォルトの名無しさんsage2009/01/31(土) 10:28:09
何を心配してるのか分からんが、別にいいんじゃないの

強いて言えばその[]は要らないかな

a = ''.join(chr(x) for x in xrange(256))
a = ''.join(map(chr, xrange(256)))

でいいでしょ
585デフォルトの名無しさん2009/01/31(土) 10:39:01
>>578
pythonスレじゃ薮蛇だ。
586デフォルトの名無しさんsage2009/01/31(土) 10:42:46
Webアプリフレームワークなんかは3.x対応ってどうなってんの?
587デフォルトの名無しさんsage2009/01/31(土) 10:48:02
Webアプリフレームワークとはなにですか?
588デフォルトの名無しさんsage2009/01/31(土) 11:13:10
puronとかterbogiarsとかですねわかります
589デフォルトの名無しさんsage2009/01/31(土) 11:42:45
テーブルサイズが巨大になる時の効率を気にしてるんじゃない?
用途・規模により対策は異なるけど、使えそうなのを適当に挙げると。
array, mmap, ctypes, バッファ関連C/API, numpy, 3.0からは bytearray, io.*

標準モジュールのみでの簡単な方法を紹介すると、
事前にデータをファイルにダンプしておいて、
import array
x = array.array('c')
x.fromfile(open('char_table.dat'), 256)

one-linerでサイズが256程のを所望なら、>>584のmap使うのが多分最速。

590デフォルトの名無しさんsage2009/01/31(土) 13:54:41
>>588
danjoは入れてあげないのですか?
591デフォルトの名無しさんsage2009/01/31(土) 13:58:28
danjoってなんでうsか?
592デフォルトの名無しさん2009/01/31(土) 14:01:45
dojoは仲間外れですか?
593デフォルトの名無しさんsage2009/01/31(土) 14:38:27
>>584 >>589
分かりにくくてすみません
あきらかにbinaryなのに''でjoinしてることに違和感があったのです
594デフォルトの名無しさんsage2009/01/31(土) 14:41:14
タヒチ
595デフォルトの名無しさんsage2009/01/31(土) 14:49:45
>>593
2.xならstrは要するにimmutableなバイト列だから、何の問題ない
Cとは違ってヌルバイトも特別扱いはしないし、普通に含めることができる
596デフォルトの名無しさんsage2009/01/31(土) 17:16:47
C API で定義した型に定数メンバーを持たせるにはどうすれば良いのでしょうか?

具体的には下記の A 〜 C のようなクラス変数を実装したいのですが…
class Noddy:
    A = (0 << 1)
    B = (0 << 2)
    C = (0 << 3)
597デフォルトの名無しさんsage2009/01/31(土) 18:00:58
>>596
ttp://www.python.jp/doc/release/ext/node23.html
PyMemberDef
598デフォルトの名無しさんsage2009/01/31(土) 18:17:41
>>597
つまりクロージャーをうまく使えという訳ですね。
その方向で試してみます。ありがとうございました。
599デフォルトの名無しさんsage2009/01/31(土) 19:58:39
>598
定数だったら辞書かモジュールオブジェクト作ったほうがよくない?
600596sage2009/01/31(土) 21:05:21
>>599
NoddyPackage の Noddy1, Noddy2, Noddy3 それぞれに個別の定数を持た
せたいのです。

実は既にモジュールオブジェクトとして実装しているのですが、その場合
from NoddyPackage import *
と書かなければならないのが1つ。
(import NoddyPackage で全部使える状態にしたい)

インスタンス生成時に
noddy = Noddy1.new()
の様に、モジュールメソッドを呼ばなければならないのが1つ。
(noddy = Noddy1() でインスタンス化したい)

最後に、些細ですが、NoddyPackage.Noddy1.A でも、インスタンスから
noddy1.A でも、どちらも同じ領域を参照したいというのが理由です。

PyTypeObject に対して PyModule_AddIntConstant みたいな関数があれば
悩まないのですが無いようでして。
601デフォルトの名無しさんsage2009/01/31(土) 21:39:14
集合sの各要素を (順序は問わず) 1個ずつもつリストlはどうやって作ればよいですか?
602デフォルトの名無しさんsage2009/01/31(土) 21:59:30
集合sをコピーすればいいんじゃね
603デフォルトの名無しさんsage2009/01/31(土) 22:02:42
>>601
l = list(s)
で済む話ではなくて?
604デフォルトの名無しさんsage2009/01/31(土) 22:03:54
済みません
605デフォルトの名無しさんsage2009/01/31(土) 22:06:54
自己解決しました
606デフォルトの名無しさんsage2009/01/31(土) 22:51:46
>>603
そんなのがあったのか!
ありがとうございました。
607デフォルトの名無しさんsage2009/01/31(土) 23:38:45
>>606
もうお前プログラミングやめたほうがいいよ、向いてないよ
608デフォルトの名無しさんsage2009/01/31(土) 23:44:33
今Googleおかしくなってる?
検索したら全ページに
このサイトはコンピュータに損害を与える可能性があります。
って一文が付け加えられてるんだけど・・・俺だけ?
609デフォルトの名無しさんsage2009/01/31(土) 23:45:07
俺も。
どうなってんだろ。
Google のバグか、それともクラックされたのか。
610デフォルトの名無しさんsage2009/01/31(土) 23:46:15
よかった俺だけじゃないのか・・・
611デフォルトの名無しさんsage2009/01/31(土) 23:50:53
うちは出てない
良かった良かった
612デフォルトの名無しさんsage2009/01/31(土) 23:54:39
どうやら出るサイトと出ないサイトがあるようだが9割がた出る…おれの場合
613デフォルトの名無しさんsage2009/01/31(土) 23:55:03
ν速行ってみろ、今祭りだぞ
614デフォルトの名無しさんsage2009/02/01(日) 00:29:25
        ,.-─ ─-、─-、
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ , -─        Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    > ---- r‐'´
      ヽ_         |
         ヽ _ _ 」

     ググレカス [ gugurecus ]
   (西暦一世紀前半〜2009.1.31)
615デフォルトの名無しさんsage2009/02/01(日) 00:42:27
2chでGoogle検索してしまったw
616デフォルトの名無しさんsage2009/02/01(日) 03:27:46
>>600
PyModule_AddIntConstant も結局は辞書とgeneric getattrでやってることなので、
手短にするならgetattrに定数を返す関数を登録するのがいいんじゃない?

SWIGではどうやってたんだろうと思い、気になって調べてみると、SWIGのdocumentでも
Static class members present a special problem for Python. Prior to Python-2.2,
Python classes had no support for static methods and
no version of Python supports static member variables in a manner that SWIG can utilize.
Therefore, SWIG generates wrappers that try to work around some of these issues
617デフォルトの名無しさんsage2009/02/01(日) 07:02:53
Googleがぶっ壊れた
618デフォルトの名無しさん2009/02/01(日) 17:00:49
初心者にお勧めな参考書はありますか?
プログラミング自体も初めてに近いです。

現在はこちらで勉強中です。
ttp://www.pythonweb.jp/tutorial/
↑参考になりますか?
619デフォルトの名無しさんsage2009/02/01(日) 17:02:04
ビルトインのjsonモジュール日本語さっぱり扱えないね
620デフォルトの名無しさんsage2009/02/01(日) 17:20:40
>>618
そんな広告だらけのページより↓の方が参考になります。
http://www.python.jp/doc/
621デフォルトの名無しさんsage2009/02/01(日) 17:39:50
Python CGI でファイルの作成および削除を行っているのですが、削除 (os.remove( path )) に失敗しています。どのようにすればよいでしょうか。
考えられる問題点の1つは、作成されたファイルのパーミッションが644になっていることです。
622621sage2009/02/01(日) 17:45:40
自己解決しました。削除ではなくその前に読むべきファイルを置き忘れていました…。
623デフォルトの名無しさんsage2009/02/01(日) 17:49:42
>>618
参考になるだろうけど、内容が少ないから
本一冊ぐらい買った方がいいかもね。
そこの広告にも出てるけどみんなのpython って言うのが
一番普通っぽい感じだと思う。
公式ドキュメント読めるならそれでもいいけど、
普通は読みにくいと言われてる気がする。
624デフォルトの名無しさんsage2009/02/01(日) 17:52:04
>>621
CGI は専用スレッドがあるのでなるべくそっちに

Python CGI
http://pc11.2ch.net/test/read.cgi/php/
625デフォルトの名無しさん2009/02/01(日) 18:00:02
>>623
ありがろうございます。
確かに公式ドキュメントはわかりにくいですね
618のHPだと内容は少ないのですね…
それでもすごくわかりやすくて重宝しておりました。

みんなのPython探してみます。
626596sage2009/02/01(日) 20:06:20
>>616
の情報をヒントにソースを追っていったら解決しました。ありがとうございます。

一応、解決策を datetime モジュールから転載しておきます。
// Python-2.6.1/Modules/datetimemodule.c L4751-4757
// in initdatetime function
    /* timedelta values */
    d = PyDateTime_DeltaType.tp_dict;

    x = new_delta(0, 0, 1, 0);
    if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
        return;
    Py_DECREF(x);
627621sage2009/02/02(月) 08:18:01
>>624
どっちサイドの問題か迷ったので勢いのあるこちらに投稿させていただきました。
ぜんぜん違うところの問題でほんとすみません><

628デフォルトの名無しさんsage2009/02/02(月) 08:35:04
死んで詫びろ。
629デフォルトの名無しさんsage2009/02/02(月) 09:52:52
string の split って引数なしだと (複数の)whitespace が対象ですが、
sep としてデフォルトを指定する方法って
どうすればいいのでしょう?

具体的には whitespace のままで maxsplit を
指定したいんですが ' ' とかでは space 1個あたり
一分割されてしまうんで…
630デフォルトの名無しさんsage2009/02/02(月) 10:00:26
>>608-615
くさいひときらい
631デフォルトの名無しさんsage2009/02/02(月) 10:00:43
>>608-615
くさいひときらい

632デフォルトの名無しさんsage2009/02/02(月) 10:13:32
>>629
Noneじゃね?
633デフォルトの名無しさんsage2009/02/02(月) 11:49:03
ありがとうございます

ちょうど /usr/local/lib/python2.5/string.py をみて
None を試していたところでした。
これで良さそうです

(ただ document に None だと云々って書いてないから
undocumented feature ってことになるのかしら?)
634632sage2009/02/02(月) 12:19:22
>>633
http://docs.python.org/library/stdtypes.html#str.split
> If sep is not specified or is None,
635632sage2009/02/02(月) 12:21:52
ttp://www.python.jp/doc/release/lib/string-methods.html
「sep が指定されていないか None が指定されている場合、」
636デフォルトの名無しさんsage2009/02/02(月) 12:35:50
おぉぅ… 書いてあるのね…orz
637デフォルトの名無しさんsage2009/02/02(月) 14:32:46
'ab23'.split(ここに何を入れれば)
['a', 'b', '2', '3']
と分割出来ますか?
638デフォルトの名無しさんsage2009/02/02(月) 14:35:00
>>637
list('ab23')
639 ◆UNKOVIP9RM 2009/02/02(月) 15:39:31
>>638
ふかくにもわろた
640デフォルトの名無しさんsage2009/02/02(月) 15:39:51
↑Python ではそれしかないっぽいね。Ruby や Perl と違って。まあ、不便とも思わないけど
641デフォルトの名無しさんsage2009/02/02(月) 15:49:10
boost.pythonのメモリー漏れてる問題って修正されてないのか
ちょっと激しい使い方したら落ちないか?
642デフォルトの名無しさんsage2009/02/02(月) 15:52:23
>>640
Pythonの文字列はもともとシークエンスであって、いちいちlist化せんでも
forループでまわしたりmap()などに渡したりできるんで
実際には>>638すら必要になることはそう多くは無いはず
643デフォルトの名無しさんsage2009/02/02(月) 15:59:39
sの一文字目が欲しいなら、単にs[0]でいい
部分文字列が欲しいならs[2:4]とかだ

いちいちsubstr()だのsplit()だのでバラす必要は無い
644デフォルトの名無しさんsage2009/02/02(月) 16:04:40
バカほど無用な遠回りをする。
645デフォルトの名無しさんsage2009/02/02(月) 16:26:45
そうやって成長していくのさ
646デフォルトの名無しさんsage2009/02/02(月) 16:35:19
成長が早い奴は無用な遠回りをしない。
バカが遠回りをして時間を無駄に費やしている間にも成長してゆく。
647デフォルトの名無しさんsage2009/02/02(月) 16:43:15
遠回りは無駄じゃないよ
648デフォルトの名無しさんsage2009/02/02(月) 16:58:03
>>637
[x for x in 'ab23']
649 ◆UNKOVIP9RM 2009/02/02(月) 17:10:05
遠回りしまくって、叩かれまくって、それでも諦めないという

それでいいじゃん
650デフォルトの名無しさんsage2009/02/02(月) 17:26:42
だがもう覚えた^^
651デフォルトの名無しさんsage2009/02/02(月) 17:30:23
ちい覚えた
652デフォルトの名無しさんsage2009/02/02(月) 17:42:28
バカほど車輪の再発明をする。
653デフォルトの名無しさんsage2009/02/02(月) 17:45:17
ちょっと組み込み関数全部読み直してくる
654デフォルトの名無しさんsage2009/02/02(月) 18:06:11
>>638
ありがとうございました
655デフォルトの名無しさんsage2009/02/02(月) 18:32:41
>>653
よい心がけだ。
656デフォルトの名無しさんsage2009/02/02(月) 18:41:25
print() って stdout.write() じゃだめなん?
657デフォルトの名無しさんsage2009/02/02(月) 18:59:40
try:
f = open(file,'rb')
sys.stdout.write(f.read())
except IOError, (errno, strerror):
print 'I/O error(%s): %s' % (errno, strerror)
except:
print 'Unexpected error: %s' % (sys.exc_info()[0])
else:
f.close()

これで例外が発生したときfはcloseされますか?
658デフォルトの名無しさんsage2009/02/02(月) 19:01:23
finally:
659デフォルトの名無しさんsage2009/02/02(月) 20:21:25
ライブラリリファレンス28pに
<> および != は同じ演算子を別の書き方にしたものです。!= のほうが望ましい書き方です; <> は廃止すべき書き方です。
とあるんですが、後半には何か理由があるんでしょうか?
660デフォルトの名無しさんsage2009/02/02(月) 21:03:37
2つの物を1つにする時は
少数派が負けるのは普通
じゃないかな
661デフォルトの名無しさんsage2009/02/02(月) 21:38:34
<> って使えるのか
662デフォルトの名無しさんsage2009/02/02(月) 21:56:22
>>657
with
663デフォルトの名無しさんsage2009/02/02(月) 21:58:31
3.0になって消えた。
664デフォルトの名無しさんsage2009/02/02(月) 22:12:15
ttp://blog.redhawk.jp/2008/10/python-the-with-statement.html
try:
  file = open("with.txt")
except IOError:
  print "Failed to open a file."
else:
  print "Success to open a file."
  file.close()
finally:
  print "End of Exception handling."
665デフォルトの名無しさんsage2009/02/02(月) 22:12:47
from __future__ import with_statement
class MyClass():
  def __init__(self):
    self.file = None
  def __enter__(self):
    self.file = None
    print "MyClass: enter"
    return self
  def __exit__(self, exc_type, exc_value, exc_tb):
    print "MyClass: exit"
    if not exc_type:
      print "Secucess to open a file."
    else:
      print "Failed to open a file."
    if self.file:
      print "close file"
      self.file.close()
    return True
  def open(self, file_name):
    self.file = open(file_name)
    print "open file"
def process():
  with MyClass() as my_class:
    my_class.open("with.txt")
if __name__ == '__main__':
  process()
666デフォルトの名無しさんsage2009/02/02(月) 23:05:12
ファイルオブジェクトに似たオブジェクト以外に使ったらすぐ
スパゲッティ化しそうな気がする < with 文対応クラス
667デフォルトの名無しさんsage2009/02/03(火) 08:44:46
どうみてもwithの方が面倒です
本当にありがとうございました
668デフォルトの名無しさんsage2009/02/03(火) 08:55:49
おつかれうぃっず
669デフォルトの名無しさんsage2009/02/03(火) 14:06:00
俺ならこうするけどなあ。
try:
 with open("tmp.txt") as f:
  print "Success to open a file."
except IOError:
 print "Failed to open a file."
finally:
 print "End of Exception handling."
670デフォルトの名無しさんsage2009/02/03(火) 15:12:54
RAIIっぽいのはwithで書いたほうが綺麗だな
ロックの獲得→解放とか
ContextManagerを明示的にクラスとして実装する必要性はほとんど無い気がする

ファイルオブジェクトはもともとContextManagerインタフェースを備えている
そうでなくとも、オブジェクト作成→最後にclose()の流れなら
contextlib.closingが使える
もっと汎用的なものが欲しい場合はcontextlib.contextmanagerを使う

with open〜のようなもの(Schemeのcall-with-input-file相当)を
自分で書くのは難しくない

from contextlib import contextmanager
@contextmanager
def my_open(*args, **kw):
  fp = open(*args, **kw)
  yield fp
  fp.close()

これだけでいい

with my_open('foo.txt') as fp:
  do_something_with(fp)

のように使う
671デフォルトの名無しさんsage2009/02/04(水) 00:37:58
やはりRubyは優秀だなあ
672デフォルトの名無しさんsage2009/02/04(水) 00:42:19
やっぱりJavaは優秀だなぁ
673デフォルトの名無しさんsage2009/02/04(水) 00:48:24
やっぱDは優秀だな
674デフォルトの名無しさんsage2009/02/04(水) 00:50:20
今日からパイ村の村民になります、よろしく
675デフォルトの名無しさんsage2009/02/04(水) 03:00:24
ロックなどのように明示的な開放が必要な場合は使うけど。
どうせデストラクタで閉じられるからと、ファイルではあまり使わないなぁ
そもそも例外でclose以外の後始末をしないといけないって事が(自分の場合は)少ないので。
do_something_with(open('foo.txt'))で済ませる。行読み込みなら for line in open('foo.txt')

# gc任せ、なので良くないスタイルなのかもしれない。
# 一応、注記しておくとサーバなどのlifespanが長いものではきちんとしてる。
676デフォルトの名無しさんsage2009/02/04(水) 03:38:37
>>675
今のCPython実装だと参照カウント方式のGCだから、不要になったらすぐ開放してくれるから、
それで上手くいっちゃうんだよね。
IronPythonとか、参照カウント以外のGCだと、不要になってから開放してくれるまでのタイムラグが
予測できないからRAIIが必要になるけど。
677デフォルトの名無しさんsage2009/02/04(水) 17:09:24
TurboGearについて教えてください。
コマンドプロンプトで,python start-booklist.pyと打つと、
AttributeError: 'module' object has no attribute 'Template' 
とエラーが出ます。どうしたらいいでしょうか?
678デフォルトの名無しさんsage2009/02/04(水) 17:34:54
Firefoxで escape('あいうえお') したら %uXXXX でエスケープしやがるんですが、
urllib.unquote() は %uXXXX に非対応です。
標準ライブラリ一発ではなんともならんかったっけ?
自前でunescapeしないとダメ?
679デフォルトの名無しさんsage2009/02/04(水) 18:05:03
朗報
ttp://d.hatena.ne.jp/itasuke/20080703
ttp://www.w3.org/TR/html4/appendix/notes.html#h-B.2.1
ttp://webdba.blogspot.com/2008/05/query-datastore-for-unicode-string-not.html
680678sage2009/02/04(水) 18:30:50
'%u3042%u3044%u3046%u3048%u304A' => u'¥u3042¥u3044¥u3046¥u3048¥u304A'
するナイスな(標準的な)方法が知りたいのです。
eval('u"%s"' % '%u3042%u3044%u3046%u3048%u304A'.replace('%u', r'¥u'))
でも目的は達成できるけれど正しいとは言えないような。
681デフォルトの名無しさんsage2009/02/04(水) 18:38:03
"".join(unichr(int(i, 16)) for i in s.split("%u")[1:])
682デフォルトの名無しさんsage2009/02/04(水) 18:42:27
s = '%u3042%u3044%u3046%u3048%u304A'
re.sub(ur"%u([0-9A-F]{4})", lambda m: unichr(int(m.group(1), 16)), s)
683デフォルトの名無しさんsage2009/02/04(水) 18:50:12
思いつくままかいてみた。期待通り動くかどうか解らないけど、
map + unichr な感じの方法でもっと簡単に書けるんじゃないかな。

re.subn(r'%u([0-9a-fA-F]{,4})', lambda g:unichr(int(g.group(1),16)), string)[0]

684678sage2009/02/04(水) 19:02:02
>>681
s = '%u3042a%u3044i%u3046u%u3048e%u304Ao' # あaいiうuえeおo
"".join(unichr(int(i, 16)) for i in s.split("%u")[1:])

ValueError: unichr() arg not in range(0x10000) (narrow Python build)

>>682-683
ありがとうございます。目的は達成できるんですが、結局自前unescapeですよね。
不満はないんですけど、標準的な方法としてライブラリに関数があってもいいのに…
685デフォルトの名無しさんsage2009/02/04(水) 19:55:05
そう思うならpatch投げてcommitしてもらえばいいのでは
686cap005-096.kcn.ne.jp cap005-096.kcn.ne.jp 2009/02/04(水) 20:56:23
でも、これってブラウザの実装依存じゃなかったっけ?
あっても良いとは思うけど。先に仕様の標準化と実装の統一がされてないと、
標準ライブラリに入るのは難しいと思うなぁ。

ところで、evalの方で 安全にevalするなら
s.encode('string-escape')で文字列内でクォートを閉じられないように。
2.6以降なら、併せて eval -> ast.literal_eval
687デフォルトの名無しさんsage2009/02/06(金) 01:34:53
PILのGIFアニ書出しってgifmaker.pyしかない?
一応GIF89aの書出し対応させたけどファイルが
圧縮でけんみたいだわ。
688デフォルトの名無しさんsage2009/02/06(金) 01:44:17
MySQL開発チームメンバーらと起業
MySQLの「生みの親」、サンを離れる
ttp://www.atmarkit.co.jp/news/200902/05/monty.html
689デフォルトの名無しさんsage2009/02/06(金) 01:48:24
ttp://nagosui.org/Nagosui/Docs/tutorial/python-imaging-library-tutorial/tutorial-all-pages
690デフォルトの名無しさんsage2009/02/06(金) 09:26:36
ttp://b.hatena.ne.jp/entry/http://python.is-a-geek.org/wiki/index.cgi?Whats3onLP

ttp://b.hatena.ne.jp/entry/http://www.atmarkit.co.jp/fcoding/articles/python3/01/python301a.html

似たようなことが書いてあるのになんでブクマ数に差があるんだろう。
5倍の開きって天と地だよな。
691デフォルトの名無しさんsage2009/02/06(金) 12:21:40
ブクマ数気にしてる著者が書いてるかどうかの違いじゃないかな?
692デフォルトの名無しさんsage2009/02/06(金) 12:51:27
そうだな.
見る人が少ないページは価値が低いなんてことはまったくないし
ブックマーク数が低いページの方が見る人が少ないなんてまるで都市伝説だ.
693デフォルトの名無しさんsage2009/02/06(金) 13:43:33
>>690
みんpyと恥pyの差
694デフォルトの名無しさんsage2009/02/06(金) 13:49:56
ソーシャルブックマーク(笑)
695デフォルトの名無しさんsage2009/02/06(金) 13:49:56
みんなのパイパイと恥ずかしいパイパイ?
696デフォルトの名無しさんsage2009/02/06(金) 13:51:27
良いパイパイと悪いパイパイがあるんですね。
697デフォルトの名無しさんsage2009/02/06(金) 15:46:07
恥pyの中の人は必死すぎて引く。
698デフォルトの名無しさんsage2009/02/06(金) 17:21:27
>>696
悪いほうは桃白白ですが、良いほうは誰ですか?
699687sage2009/02/06(金) 17:59:09
>>689
多分sequenceアクセスでやれる、と言いたかったと思う、が…
PIL1.1.6ではGIF89aにするためのGCEやAEブロックを作らんみたいなのよ。
ヘッダに至ってはGIF87しか出さんし。PILのGifPlugin
使ってヘッダ作ってるgifmaker.pyのGIFアニでも
再生でけるのにはワロタ。

gifmaker.pyではgetbboxでフレーム間差分取ってるけど
全然ファイルサイズが小さくならん。
やっぱ特許がらみで圧縮サポートせんかったんかいのぅ。
700デフォルトの名無しさんsage2009/02/07(土) 01:20:24
なるほど
ありがとうございました
701デフォルトの名無しさんsage2009/02/07(土) 01:20:27
pythonではゼロ割り算などがおきても計算は止まらないことになってるのでしょうか?
ほとんど,どんな数値計何上のエラーでも止まらないのでしょうか?
702デフォルトの名無しさんsage2009/02/07(土) 01:22:01
例外ZeroDivisionError:を拾って処理すればいいよ
止めたければ止めればいい
他の数値計何上のエラーでもおなじ
703デフォルトの名無しさんsage2009/02/07(土) 01:37:04
最近Pythonスレの濃度がやたらと濃くなってるな。
いいことなんだけど。他のLLスレと違って低レベルなことに触れる事がおおいな。
どこで勉強してんだ?
704デフォルトの名無しさんsage2009/02/07(土) 01:49:14
トイレできばりながら
705デフォルトの名無しさんsage2009/02/07(土) 01:53:22
python.orgでのやり取り、ML。
困ったときも過去にどういうやり取りがあって
APIの定義が決まって行ったかが追える。
ドキュメントを書く事がPython使いの文化になってるせいで
野良モジュールでもドキュメントが豊富。
706デフォルトの名無しさんsage2009/02/07(土) 02:08:13
PILのsequenceはflameの逆戻りができないんじゃなかった?
707デフォルトの名無しさんsage2009/02/07(土) 03:18:23
なるほど
ありがとうございました
708デフォルトの名無しさんsage2009/02/07(土) 03:36:55
ありがとうございませんでした
709デフォルトの名無しさんsage2009/02/07(土) 12:51:07
>>690
上のやつって『初めてのPython』第三版向けなんだってね
日本語版はPython3k対応とか言ったらGJじゃないか
710デフォルトの名無しさんsage2009/02/07(土) 13:02:17
ただでさえ分厚い原著がさらに厚くなるなんてうれしいなあ!!
711デフォルトの名無しさんsage2009/02/07(土) 13:04:43
早くも茶々入ってワロタ
712デフォルトの名無しさんsage2009/02/07(土) 23:06:07
ホーリーアップしますか?
713デフォルトの名無しさんsage2009/02/08(日) 01:25:32
>>690

4,473位

61,010位

アマゾンのランキング。
5倍が天と地なら10倍は何だろう(ww
714デフォルトの名無しさんsage2009/02/08(日) 01:51:18
むしろ目糞はn
715デフォルトの名無しさんsage2009/02/08(日) 07:42:50
>>709
日本語版だけ3000に対応するわけねーだろwww
716デフォルトの名無しさんsage2009/02/08(日) 10:22:18
>>713
単純な計算も出来ないのですか?
15倍ですよ
717デフォルトの名無しさんsage2009/02/08(日) 11:01:23
単純な計算も出来ないのですか?
13.6倍ですよ

718デフォルトの名無しさんsage2009/02/08(日) 11:08:19
複雑だと思うならつかわなきゃいいんじゃねーの?
なんでアホはあるもの全部使わなきゃ気がすまねーの?
719デフォルトの名無しさんsage2009/02/08(日) 11:53:24
おめーこんなやり方あるのもしらねーのと馬鹿にされるから。
720デフォルトの名無しさんsage2009/02/08(日) 15:08:16
馬鹿にされると(恥ずかしい?)のは馬鹿だからだろ
馬鹿じゃないんだったら馬鹿にされてもいいじゃん
ひとちがいなんだから
721デフォルトの名無しさんsage2009/02/08(日) 15:23:06
やっぱRubyはすばらしいなあ
722デフォルトの名無しさんsage2009/02/08(日) 22:17:40
それはない
723722sage2009/02/08(日) 23:20:52
試しに小一時間ほどRuby 1.9.1をビルドし、
irbで適当にRubyいじってみたけど最高だ!
なんでいままでPythonなんて触っていたのだろう!

すばらしい!
724デフォルトの名無しさん2009/02/08(日) 23:29:18
Pythonって.NETに対応してるの?

してるなら圧倒的にPython指示する
725デフォルトの名無しさんsage2009/02/08(日) 23:32:22
してないよ
726デフォルトの名無しさんsage2009/02/08(日) 23:35:06
import win32com.client
fso = win32com.client.Dispatch('Scripting.FileSystemObject')
folder = fso.GetFolder('C:¥¥')
for file in folder.Files:
 print file.Name
727デフォルトの名無しさんsage2009/02/08(日) 23:36:27
Craftwareのソフトはソースコードを開示してて、ライセンスのtxtファイルにGPLと書いてるのですが
Python自体のライセンスがGPLなのでしょうか?
Pythonを使ったソフトはソースコードを開示しなければならないのでしょうか?
728デフォルトの名無しさんsage2009/02/08(日) 23:36:51
import win32com.client
w = win32com.client.Dispatch('WScript.Shell')
w.Popup('Ready',3,'1,2,3')
w.LogEvent(1, 'DaahhhHHH!')
729デフォルトの名無しさんsage2009/02/08(日) 23:37:38
>>724
IronPython
http://pc11.2ch.net/test/read.cgi/tech//
730デフォルトの名無しさん2009/02/08(日) 23:38:31
Yes, we can.
731デフォルトの名無しさんsage2009/02/08(日) 23:40:58
またruby厨の自演ですか
732デフォルトの名無しさんsage2009/02/08(日) 23:51:51
>>727
Python自体はGPLじゃない
というかプログラミング言語の処理系がたとえGPLであったとしても、ソースの公開義務は生じない

そのソフトがGPLなだけだろ
733724sage2009/02/08(日) 23:56:59
>>729
         ___
        /⌒  ⌒\         ━━┓┃┃
       /(  ̄)  (_)\         ┃   ━━━━━━━━
     /::::::⌒(__人__)⌒:::: \         ┃               ┃┃┃
    |    ゝ'゚     ≦ 三 ゚。 ゚                            ┛
    \   。≧       三 ==-
        -ァ,        ≧=- 。
          イレ,、       >三  。゚ ・ ゚
        ≦`Vヾ       ヾ ≧
        。゚ /。・イハ 、、    `ミ 。 ゚ 。 ・
734デフォルトの名無しさんsage2009/02/09(月) 00:04:23
IronPythonは一見ギャグのようで、意外と.NETに馴染んでて馬鹿にできないw
735デフォルトの名無しさんsage2009/02/09(月) 00:09:19
>>732

のソフトなのですが
license/python_license.txtというファイルがあるんです
pythonを内臓(python26.dll?)してるからでしょうか
でもこれってpy2exe等で出力されると思うのですが
736デフォルトの名無しさんsage2009/02/09(月) 00:11:30
IronPythonってまともなページャ有効にするにはどういう設定すればいいんだろう
せっかくdir()やhelp()で.NETのクラスやオブジェクトのイントロスペクションが
効くのに、速攻で流れてしまうのでは意味がない
737デフォルトの名無しさんsage2009/02/09(月) 00:38:18
cygwinのbashで
738722sage2009/02/09(月) 02:56:08
まさか俺のにせものが出るとはw
ほんとにruby厨って面白いなw
739デフォルトの名無しさんsage2009/02/09(月) 02:58:40
pythonはモンティパイソン
rubyはドリフw
740デフォルトの名無しさんsage2009/02/09(月) 03:13:12
そう言えばいかりやは死んでるんだよな〜・・・
未だに実感がないよ・・・長さん・・・
741デフォルトの名無しさんsage2009/02/09(月) 09:12:22
だめだこりゃ
742デフォルトの名無しさんsage2009/02/09(月) 10:42:08
よりPythonicなPythonを目指して[後編]
言語としての一貫性を重視した
Python 3の進化
ttp://www.atmarkit.co.jp/fcoding/articles/python3/02/python302a.html
ttp://www.atmarkit.co.jp/fcoding/articles/python3/02/python302b.html
743デフォルトの名無しさんsage2009/02/09(月) 10:42:12
Ruby使ってる人って他の言語使ってる人につっかかってくるんだろうか。
Pythonの場合はC++と併用してたり他の言語も普通につかってて別に布教活動しねーよな
744デフォルトの名無しさんsage2009/02/09(月) 11:42:08
>>743
「つっかかってくる」だけの人はどの言語にもいるが、RubyやPythonは
そういう手合でも判った気になれる言語だという事だと思う。
745デフォルトの名無しさんsage2009/02/09(月) 17:51:11
>>742
従来通りint型を得たい場合には「//」という演算子を使います。

コメントに使えなくなるのは痛い
746デフォルトの名無しさんsage2009/02/09(月) 18:09:12
俺、.NETとJavaScriptぐらいしかわからないんですけど
PHPとpyてょnのどちらを始めるべきですかね?
747デフォルトの名無しさんsage2009/02/09(月) 18:11:12
>>746
どーもPythonらしいけど
748デフォルトの名無しさんsage2009/02/09(月) 18:11:13
どっちもやればいいよ
749デフォルトの名無しさんsage2009/02/09(月) 18:15:22
>>745
//演算子自体は2.Xにもあるじゃん
750デフォルトの名無しさんsage2009/02/09(月) 18:24:49
Ruby信者の永遠のライバル、HSP!
751デフォルトの名無しさんsage2009/02/09(月) 19:50:59
さくらインターネットでwebプログラミングするなら
PHP >>>> Ruby >>>>>>>>>>>>>>>>>>Python

さくらさんお願いですから、Pythonのバージョンあげてください。
せめて2.5に。
752デフォルトの名無しさんsage2009/02/09(月) 19:57:25
さくらだったら自分でコンパイルすればいいじゃん
753デフォルトの名無しさんsage2009/02/09(月) 20:09:49
お前にさくらはもったいない。
xreaへ逝くがよい。
754デフォルトの名無しさん2009/02/09(月) 21:29:34
 ちょっと他のスレッドで発見したのですが
     ↓
ラーメンタイマーでも作ってみれ。
カップヌードル用(3分)とどんべい用(5分)に分ける。
できればタスクバーに駐在する奴。

こういうのってPythonでもサクっと作れますか?
できればexe化したもの
755デフォルトの名無しさんsage2009/02/09(月) 21:32:46
Tkinter でさくっと作れるよ。
756デフォルトの名無しさんsage2009/02/09(月) 22:38:54
シェルでsleepしてビープならせ
757デフォルトの名無しさんsage2009/02/09(月) 23:59:14
そのスレッドに
sleep 180 & echo ^G^G^G
と書いた覚えがある
758デフォルトの名無しさんsage2009/02/10(火) 03:52:38
import win32com.client
w=win32com.client.Dispatch('WScript.Shell')
w.Popup('カップヌードル/どんべえ', 180, 'おまちください')
w.Popup('どんべえ', 120, 'おまちください')
759デフォルトの名無しさんsage2009/02/10(火) 06:40:35
>>754
ttp://www.shido.info/py/tkinter3.html
760デフォルトの名無しさんsage2009/02/10(火) 08:44:00
>>754
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8861.txt
(UTF-8)
pause/stopあたりにバグあるけど途中で面倒になった
exe化はpy2exeで出来ると思うので自分でやってみて
761デフォルトの名無しさんsage2009/02/10(火) 10:34:12
>>760
Quit したあとにアプリケーションエラーが出た
別の PC でやったら出なかったので
うちの PC がおかしいのかも知れないが
762デフォルトの名無しさんsage2009/02/10(火) 10:46:01
xset b でビープ音いじれるんだな
通常のビープ音がうるさいとあれだから、xset bで再設定すれば、戻るし

Pythonで組み込み系コマンドを使うのって、execでいけるんだっけ?
簡易タイマー
機能 時間指定タイマー・秒数・分数指定タイマー・ビープ音バリエーション数種類
みたいなの、作れるかな
シェルスクリプトでやったほうが素直かな
763デフォルトの名無しさんsage2009/02/10(火) 10:47:02
pythonでネットワークパケットいじれるモジュールないの?
764デフォルトの名無しさんsage2009/02/10(火) 10:48:50
コマンド実行後に残り秒数表示のコマンドを打つと出力してくれる機能も欲しいか
765デフォルトの名無しさんsage2009/02/10(火) 10:51:08
>>763
ttp://oss.coresecurity.com/projects/impacket.html
とかは?
766デフォルトの名無しさんsage2009/02/10(火) 10:56:48
>>762
> Pythonで組み込み系コマンドを使うのって、execでいけるんだっけ?
exec文/関数はPythonコードを実行するためのもので
超おおざっぱに言えば文用のeval()
外部プロセスを起動したいときはsubprocessモジュールを使う
767デフォルトの名無しさんsage2009/02/10(火) 11:09:02
>>765
ウヲオオォ。おもしれー。
pcapyとのコンビも楽しめるじゃない。
お兄さん、パケット自作しちゃうぞー。
768デフォルトの名無しさんsage2009/02/10(火) 11:32:58
>>479 の Python Network Programing 本読んでみようと思うんだけど
Python 3 でも使える?
769デフォルトの名無しさんsage2009/02/10(火) 11:50:35

$22.76
¥3,056
770デフォルトの名無しさんsage2009/02/10(火) 12:03:50
>>768
その本は4,5年前に出た奴だから、内容がかなり古いぞ。

あと扱うプロトコルが多岐に亘る分、広く浅い。
突っ込んだ説明を求めてるのなら肩透かしを食うかも。
Apressのサイトのサンプルコードを眺めてから買うことを勧める。
771デフォルトの名無しさんsage2009/02/10(火) 12:04:43
>>769
グロ注意
772デフォルトの名無しさんsage2009/02/10(火) 12:30:39
>>766
さんくす
はじPyには、載っていないっぽいね
とりあえず、ライブラリみてるお
シェルスクリプトで実装しちゃうけど

Beep音のバリエーションだけは、欲しいなあ
X以外のときは、みんな、どうしているんだろ
773デフォルトの名無しさんsage2009/02/10(火) 12:54:18
mp3です
774デフォルトの名無しさんsage2009/02/10(火) 13:28:05
簡単だったんで、subprocessを使って、超簡単なものができた
0.1秒単位でビープ音を変えられるみたいだから
いろいろとできそうだね
775デフォルトの名無しさんsage2009/02/10(火) 13:38:41
os.system()じゃないのかなあ。
776デフォルトの名無しさんsage2009/02/10(火) 13:39:33
767だが、impacketはやめた。
別のにするわ。
ttp://www.secdev.org/projects/scapy/
777デフォルトの名無しさんsage2009/02/10(火) 13:51:46
>>768
767だが、その本は止めとけ。
内容のレベルが低すぎるし、中でどうなってるのかも説明してない。
778デフォルトの名無しさん2009/02/10(火) 17:48:01
そういやstreamに垂れ流すだけで色んな音が出てくるドライバあったような
779デフォルトの名無しさんsage2009/02/10(火) 19:51:30
ちょっと外れるがChunkという言語があるよ
ttp://chuck.cs.princeton.edu/
780デフォルトの名無しさんsage2009/02/10(火) 20:11:31
間違えた
chunk -> chuck
781デフォルトの名無しさんsage2009/02/10(火) 20:11:53
時給1500円でPython教えます
需要ありますか?
782デフォルトの名無しさんsage2009/02/10(火) 20:18:28
テキスト読んで理解できない人って教えて貰うと理解できるのか?
783デフォルトの名無しさん2009/02/10(火) 20:49:37
>>760
わざわざ作っていただいてありがとうございます。
サクっと作ったみたいなのでビックリです。
しかし、実行できないのですが・・・自分の環境・やり方が間違っているのですが(汗
python ******.py
ではだめなんですよね?
784デフォルトの名無しさんsage2009/02/10(火) 21:17:42
>>783
>>760だったらwxPython入れないと動かないんじゃないの
785デフォルトの名無しさんsage2009/02/10(火) 22:21:20
エラー見てわからない時点で
プログラムには向いてない
786デフォルトの名無しさんsage2009/02/10(火) 22:23:44
>>783
丁寧に質問しているようで全然なってないという最悪のケースだな。

「実行できない」 ってのは具体的に何?
エラーが出たのならそのまんまコピペ汁
787デフォルトの名無しさんsage2009/02/10(火) 22:30:12
女の子なら無料でPython教えます
788デフォルトの名無しさんsage2009/02/10(火) 23:07:04
だめだ、卑隈なレスしか思い付かない
789デフォルトの名無しさんsage2009/02/10(火) 23:32:41
手取り足取り腰取り
790デフォルトの名無しさんsage2009/02/10(火) 23:33:17
初めてのPython3版でるのか・・・
勉強し直すかな
791デフォルトの名無しさんsage2009/02/11(水) 01:53:43
2.5対応の部分ってどのぐらいあるんだろうね。
邦訳出してくれるのはありがたいな。
792デフォルトの名無しさんsage2009/02/11(水) 03:04:18
尻撮り
793デフォルトの名無しさんsage2009/02/11(水) 08:28:48
>>787
なぜ女なんだ
794デフォルトの名無しさん2009/02/11(水) 09:30:01
PythonのGUIライブラリはwxPythonで決まりっぽいね。

924 名前:デフォルトの名無しさん[sage] 投稿日:2009/02/11(水) 01:14:35
C++でGTKで書いたアプリを
wxPythonで書き直したら
後者の方が超速くて泣いた
795デフォルトの名無しさんsage2009/02/11(水) 09:37:40
あー、すごく突っ込みたい。ってもうこれが突っ込みになってるか。はぁ
796デフォルトの名無しさんsage2009/02/11(水) 10:30:16
俺、下朝鮮が大嫌いだからソニーのブラビア買ったよ!
797デフォルトの名無しさんsage2009/02/11(水) 10:48:25
Pythonが廃れてRubyがメジャーになるらしい。
どうやら利用人口が逆転したとか
798デフォルトの名無しさんsage2009/02/11(水) 10:50:49
>>797
またお前か。
Ruby厨はいい加減にしろよ。
だからRubyは嫌われるんだよ。
799デフォルトの名無しさんsage2009/02/11(水) 10:53:34
自演乙
800デフォルトの名無しさんsage2009/02/11(水) 11:18:12
さすがRubyだ
801デフォルトの名無しさんsage2009/02/11(水) 11:30:24
まあ俺に関して言えば、別に流行っているからとか、Googleが使っているからいってPythonを使っているわけではないのだ。
だからRuby人口がPythonを抜いても無問題。
802デフォルトの名無しさんsage2009/02/11(水) 12:39:15
男の子なら無料でPython教えます
803デフォルトの名無しさんsage2009/02/11(水) 13:58:48
2to3がreload()をimp.reload()に直してくれないんだけど
これを追加してもらうにはどうすりゃいいのかな
804デフォルトの名無しさんsage2009/02/11(水) 13:59:42
アッー!
805デフォルトの名無しさんsage2009/02/11(水) 14:12:53
py3kいいなぁ、
インスコしただけだけど、xmlとかhtmlとかがモジュール名になってるんだな。
これはスッキリしてていい。
はやく外部モジュールも3kに移行してくれー。
806デフォルトの名無しさんsage2009/02/11(水) 14:17:09
Rubyのほうがはるかに良い。
807デフォルトの名無しさんsage2009/02/11(水) 14:25:52
ruby厨まじでうざい。ほんと消えてくれ。
808デフォルトの名無しさん2009/02/11(水) 14:46:03
Python に一致する日本語のページ 約 1,560,000 件中 1 - 10 件目 (0.09 秒)
809デフォルトの名無しさん2009/02/11(水) 14:46:36
Ruby に一致する日本語のページ 約 2,480,000 件中 1 - 10 件目 (0.06 秒)
810デフォルトの名無しさん2009/02/11(水) 14:50:32
結果に2倍ぐらい差があります。
完全に python の勝利です。

Results 1 - 100 of about 202,000 for "python programming language". (0.45 seconds)

Results 1 - 100 of about 119,000 for "ruby programming language". (0.16 seconds)

設定は全ての言語で。
811デフォルトの名無しさんsage2009/02/11(水) 14:51:23
>>808,809
なんという頭の悪さ
812デフォルトの名無しさんsage2009/02/11(水) 14:56:34
rubyは会社の奴は誰でも聞いたことあるみたいで誰も文句言わないのに
python使おうとすると技術系キモヲタ扱いされて嘲笑されるんだ

813デフォルトの名無しさんsage2009/02/11(水) 15:38:40
Rubyの今の良いイメージは日本人が作ったってのがでかいんじゃないのかな?
まぁ腕時計のGショックみたいにRailsの逆輸入で火がついたってのは皮肉な話だけど。

Rubyいろんな雑誌に記事出したり普及活動してたからな〜
いつだったかJavaのオブジェクト指向をマスターしよう!っていう内容の
本なのにRubyで説明してるのがあって笑った

Ruby厨は当時から気持ち悪かった
814デフォルトの名無しさんsage2009/02/11(水) 16:31:09
>808
しゃべれなくてもいいから、読めるようになろうな>英語
815デフォルトの名無しさんsage2009/02/11(水) 16:36:35
>>808
これでRubyの有用性が証明されたね
816デフォルトの名無しさんsage2009/02/11(水) 16:38:10
ttp://www.oreilly.co.jp/books/937/

808ページって,何キロくらいあるんだろう。
817デフォルトの名無しさんsage2009/02/11(水) 16:42:09
>>815
お前マジで首吊って死ねよ。
Pythonの方が人気あるからって嫉妬すんな。
818デフォルトの名無しさんsage2009/02/11(水) 16:50:14
Ruby厨はRubyが一番素晴らしいと思い込んでいるなら、
なんでわざわざ他のスレまで来て必死に布教しているんだろうなぁ。
819デフォルトの名無しさんsage2009/02/11(水) 16:50:30
>>808
日本語のページを検索ワロチ

python の検索結果 約 66,900,000 件中 1 - 10 件目 (0.10 秒)
820デフォルトの名無しさんsage2009/02/11(水) 16:51:53
ruby の検索結果 約 894,366,900,000 件中 1 - 10 件目 (0.10 秒)
821デフォルトの名無しさんsage2009/02/11(水) 16:58:16
スルー力が足りないぜ!
822デフォルトの名無しさん2009/02/11(水) 16:58:58
ルビーっていう宝石を知らんのか?
823デフォルトの名無しさんsage2009/02/11(水) 17:00:21
パイソンっていう蛇を知らんのか?
824デフォルトの名無しさんsage2009/02/11(水) 17:20:03
グロ注意
825デフォルトの名無しさんsage2009/02/11(水) 17:21:10
パイパン - Wikipedia
語源は麻雀牌の「白板」(=パイパン、baiban。三元牌の1つ。
上に何も描かれていない白一色の牌)によると言われている。
元々はこの牌を意味する隠語に「土器」(「かわらけ」と読む。
表面に何も装飾のない「素土器」の意)という言葉があり、最初は陰毛 ...
826デフォルトの名無しさん2009/02/11(水) 17:31:01
RUby厨うぜ
827デフォルトの名無しさんsage2009/02/11(水) 18:07:49
Ruby使おうぜ
に見えたorz
828デフォルトの名無しさんsage2009/02/11(水) 18:15:23
>>816
凶器になりそうだな
829デフォルトの名無しさんsage2009/02/11(水) 18:57:47
みんなインデントの幅って深さ1つあたりスペースいくつぶんにしてる?
深くなってきたらインデント1つの幅を変えたりとかする?
830デフォルトの名無しさんsage2009/02/11(水) 19:09:49
俺はPythonもRubyも両方使ってたけど、
このスレのRuby荒らしを見て、なんかもうRubyを使いたくなくなった。
ああいう程度の低い人がRubyを使ってるのかと想像すると悲しくなるから。
831デフォルトの名無しさんsage2009/02/11(水) 19:17:32
>>829
Pythonの中の人は基本4つ分で、グーグルの仕事の時だけ2つ分にしてるらしい
一週間前から勉強し始めた俺は4つ分
832デフォルトの名無しさんsage2009/02/11(水) 19:20:01
>>829
4幅。
PEPに書いてなかったっけ?

コードは基本、ネストレベルが深くなりすぎないように気をつけてる。
気になるほど横に広がらざるを得ないって状況は少ない。

833デフォルトの名無しさんsage2009/02/11(水) 19:25:13
>>829
公式では4が推奨されているし、pythonライブラリはほぼ全部indent=4。
834デフォルトの名無しさんsage2009/02/11(水) 20:05:09
スルー力お勉強スレ
835デフォルトの名無しさんsage2009/02/11(水) 20:28:55
Rubyもやってたときに2にしてしっくりきてるから
Pythonでも2で書いてる
特に苦情ないよ
836デフォルトの名無しさんsage2009/02/11(水) 21:00:16
>>835
今直ぐ止めろw
837デフォルトの名無しさんsage2009/02/11(水) 21:04:54
あいだとって3にすれば文句あるまい
838デフォルトの名無しさんsage2009/02/11(水) 21:16:04
俺はエイトマン
839デフォルトの名無しさんsage2009/02/11(水) 21:28:08
>>835
Rubyの力は雄大だな
840デフォルトの名無しさんsage2009/02/11(水) 21:59:15
インデント=2に慣れると4は広すぎると感じる。
4に慣れると2が窮屈に感じる。
841デフォルトの名無しさんsage2009/02/11(水) 22:03:19
1spaceでいいだろ
馬鹿かお前ら
842デフォルトの名無しさんsage2009/02/11(水) 22:13:39
pass
843デフォルトの名無しさんsage2009/02/11(水) 22:16:16
こういう話題ができるのも、パイソンだけだね^^
844デフォルトの名無しさんsage2009/02/11(水) 22:24:40
2にした上で、インデントの深さに応じてインデントの色変えてる
自分で素だと見づらい事を認めちゃってる気がしないでもないが
845デフォルトの名無しさんsage2009/02/11(水) 22:55:16
インデントの色?
846デフォルトの名無しさんsage2009/02/11(水) 22:55:52
タプルとシーケンスのどちらを使っても変わらないような気がするときはどう決めればよいですか?
847デフォルトの名無しさんsage2009/02/11(水) 22:58:10
タブルとシーケンス
848デフォルトの名無しさんsage2009/02/11(水) 22:59:28
要素が同じ型→シーケンス、別の型→タプル
インデックスアクセスする→シーケンス、しない→タプル
849デフォルトの名無しさんsage2009/02/11(水) 23:00:34
可変長ならシーケンス
850デフォルトの名無しさんsage2009/02/11(水) 23:01:22
>>845
インデントの深さに応じて背景色を変えてる
ってことじゃないか?
851デフォルトの名無しさんsage2009/02/11(水) 23:06:21
>>848-849
同じ型で変更予定がないから迷っていたのですが、インデックスアクセスするのでシーケンスにします。ありがとうございました。
852デフォルトの名無しさんsage2009/02/11(水) 23:06:51
あ、シーケンスじゃなくてリストか
853デフォルトの名無しさんsage2009/02/11(水) 23:08:06
おどかすなよ
必死で
Python シーケンス
で調べた俺に謝れ
854デフォルトの名無しさんsage2009/02/11(水) 23:08:44
ごめんなさい><
855デフォルトの名無しさんsage2009/02/11(水) 23:11:35
ごめんね
856デフォルトの名無しさんsage2009/02/11(水) 23:11:49
ごめんよ
857デフォルトの名無しさんsage2009/02/11(水) 23:23:44
シーケンス=タプル、リスト、その他ですね^^
858デフォルトの名無しさんsage2009/02/11(水) 23:43:53
みんなでRuby使おうよ。たのしいよ
859デフォルトの名無しさんsage2009/02/11(水) 23:50:18
ごめんね、それだけはムリ
860722sage2009/02/12(木) 00:01:29
ぶっちゃけrubyやるぐらいならlispとsqueak勉強した方がいいな
861デフォルトの名無しさんsage2009/02/12(木) 00:53:52
Rubyを覚えると、RPGツクール内蔵Rubyが使えるよ!
862デフォルトの名無しさんsage2009/02/12(木) 01:42:19
Cで言うと
リスト=配列
タプル=構造体
みたいな感じで使い分けてる俺
863デフォルトの名無しさんsage2009/02/12(木) 01:48:37
配列=リスト
構造体=クラス(インスタンス変数とかいうやつ)

タプルは使いどころがわかんないね
864デフォルトの名無しさんsage2009/02/12(木) 01:57:00
C配列->リスト
C構造体->タプル(わざわざオブジェクト指向を徹底するほどの規模でもないとき)
Cクラス->クラス(ちゃんと後のこと考えて設計するとき)
かな
865デフォルトの名無しさんsage2009/02/12(木) 01:58:39
どちらかというと
構造体->ハッシュ
の方が良く使うけどね
866デフォルトの名無しさんsage2009/02/12(木) 03:58:56
1
867デフォルトの名無しさんsage2009/02/12(木) 04:04:13
2
868デフォルトの名無しさんsage2009/02/12(木) 08:43:18
>>865
構造体にハッシュを使いたくなったら、代わりに named tuple を使おう。(Python 2.6以降)
869デフォルトの名無しさんsage2009/02/12(木) 09:15:48
すぐそこSunkus
870デフォルトの名無しさんsage2009/02/12(木) 09:25:56
ttp://inforno.net/articles/2008/10/03/python26-features
>>> var_type = collections.namedtuple('variable',
... 'id name type size')
# Names are separated by spaces or commas.
# 'id, name, type, size' would also work.
>>> var_type._fields
('id', 'name', 'type', 'size')

>>> var = var_type(1, 'frequency', 'int', 4)
>>> print var[0], var.id # Equivalent
1 1
>>> print var[2], var.type # Equivalent
int int
>>> var._asdict()
{'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}
>>> v2 = var._replace(name='amplitude')
>>> v2
variable(id=1, name='amplitude', type='int', size=4)
871デフォルトの名無しさんsage2009/02/12(木) 16:54:20
>>893
指針のひとつとして、提案すると
tuple or class(instance object) の選択は、属性への代入操作をするかしないか。(immutable or mutable)

手軽に構造体代わりというなら自分もnamedtupleに1票だけど、_replace使うくらいならクラスにしたほうがいい。
クラス / tuple の使い分けで、tupleの場合は同じ変数に別データの上書き禁止とかローカルルールも併用すると、
変数の型だけ追って見て、オブジェクトが状態を持ってるかどうか解るよーになる。(機械的なチェックはないけど)

構造体 -> ハッシュ(辞書?)は、属性名固定なのにハッシュ値計算されるのが無駄なように思う。
…とは言え、通常のオブジェクトの属性アクセスも殆どは辞書アクセスなんだよね。(CPython)
構造体代わりとしてクラス使うなら、new style class で __slots__ 宣言するのがいいのかな。
872デフォルトの名無しさんsage2009/02/12(木) 17:33:30
未来安価了
873デフォルトの名無しさんsage2009/02/12(木) 18:14:51
rubyはバージョン間の互換性ないのがなあ
874デフォルトの名無しさんsage2009/02/12(木) 18:18:46
pythonの話しようぜ
875デフォルトの名無しさん2009/02/12(木) 20:21:50
874
876デフォルトの名無しさんsage2009/02/12(木) 21:13:35
3要素からなるリストのリスト S = [[1,4,3], [3,7,4], ...] があり、
S[i] のうちで
・ S[i][2] が最小のもの
・ S[i][1] が L 以下のもののうち、S[i][2] が最小のもの
・ S[i][0] が L 以下で、S[i][1] が L 以上のもののうち、S[i][2] が最小のもの
を取得したいのですが、関数定義して filter や min に渡してやればよいのでしょうか
877デフォルトの名無しさんsage2009/02/12(木) 21:20:34
好きなようにやればいいじゃない!
ただ性能的にfilterよりジェネレータ式使ったほうがいいかもね

def third(x): return x[2]
min(S, key=third)
min((x for x in S if x[1]<=L), key=third)
min((x for x in S if x[0]<=L and x[1]>=L), key=third)
878874sage2009/02/12(木) 21:21:27
>>875
何も考えずに書いた。
俺は天才かもしれん。
879876sage2009/02/12(木) 21:33:34
>>877
こんな簡単に書けるんですね。やっぱ Python 選んでよかったです。
880デフォルトの名無しさん2009/02/12(木) 21:38:34
日本語の検索結果に釣られすぎだろお前らw
881デフォルトの名無しさんsage2009/02/12(木) 22:06:48
lambda式でおkだよ^^
882デフォルトの名無しさんsage2009/02/12(木) 23:22:21
>>880
たしかにPythonとRubyはサポートしているデータ構造も想定される
用途もかなりオーバーラップしてるから全く違う言語を学習する方
がいいな。HSPとかね。あれは勉強になった。書いてるだけで発狂
しそうになったのはあの言語だけだ
883デフォルトの名無しさんsage2009/02/12(木) 23:23:22
880->860
884デフォルトの名無しさんsage2009/02/12(木) 23:24:29
HSP本って最近めっきり見なくなったな
何だったんだ
885デフォルトの名無しさんsage2009/02/13(金) 01:49:31

勝ち負けは基本的にどうでもいいんだけどPythonの人はこのスレに来て何をしたいの?
新規ユーザーをrubyに取られるのが怖いの?ネガティブキャンペーンてやつ?
886デフォルトの名無しさんsage2009/02/13(金) 01:59:33
はぁ
887デフォルトの名無しさんsage2009/02/13(金) 02:01:17
ふぅ
888デフォルトの名無しさんsage2009/02/13(金) 02:38:30
888
889デフォルトの名無しさんsage2009/02/13(金) 03:09:53
wxPythonは欠陥品だな
890デフォルトの名無しさんsage2009/02/13(金) 07:19:43
>>882
VB2005 (2008以降への移行はそのうちやる) 使いなんだが
Python の他には何を学習したらいいと思う?
891デフォルトの名無しさんsage2009/02/13(金) 09:11:45
>>885
釣られてやる。
スレタイ確認しろ。
892デフォルトの名無しさんsage2009/02/13(金) 12:48:04
蛇足だけど、共通部分をまとめると、

import operator
import functools
min_3rd = functools.partial(min, key=operator.itemgetter(2))
min_3rd(S)
min_3rd(x for x in S if x[1] <= L)
min_3rd(x for x in S if x[0] <= L <= x[1])
893デフォルトの名無しさんsage2009/02/13(金) 15:02:59
>>890
教養的には用途が被ってなければなにやっても為になると思うけど
実用的には沢山言語を触ったことがあるかよりアルゴリズム
をどれだけ知っているかとかsql使えるとかSubversion使えるほうが大事で
VBとPythonが使えるなら言語を学習する時間を他の事を学習する時
間に当ててみては。というと、結論としては英語。
894デフォルトの名無しさんsage2009/02/13(金) 18:10:03
>>803
2to3の変換は基本 2.6 -> 3.0 なので、
返還前に2.6の警告オプション付で警告なしで通るようにしてから 2to3を使う。
この場合は、返還前のコードをimp.reloadに修正するのが推奨されてる方法だと思う。

2.5とも互換を保ちたければ、
try:
  from imp import reload
except ImportError:
  pass

895デフォルトの名無しさん2009/02/13(金) 20:53:01
>>884
無料開発環境配って解説本で設けるビジネスモデル。
その取り巻きがすごく多かった。
おそらくHSPの主な支持者は、団塊世代から団塊Jrまでの中間層の、アセンブラで育った世代じゃないかと推測。
基本であるBasicやC言語などは構造化プログラミングを導入したので、
jmpで自由なコーディングをしてきた人々にはむしろ理解しがたかった可能性がある。
そういう流れに取り残された、趣味プログラマから受け入れられたんじゃないかな。

僕もオブジェクト指向はいろいろ呼んでみたけど理解できなかったし。
896デフォルトの名無しさんsage2009/02/13(金) 20:56:25
オブジェクト指向を呼んでみたり
コードを返還してみたり
Python使う人はすごいですね!
897デフォルトの名無しさんsage2009/02/13(金) 21:12:00
それがPythonistaなのさ
898デフォルトの名無しさんsage2009/02/13(金) 22:20:52
>>894
なるほど、よくわかりました。
899デフォルトの名無しさんsage2009/02/13(金) 23:12:58
市場価値の高い言語はどれだ?
求人数はJava、年収はC#がトップ――ワークポートが調査 - @IT
http://www.atmarkit.co.jp/news/200902/13/wp.html

求人数で見ると、やはりJava・Cの2強は揺ぎ無いな。
そこからはC++、PHPと続いて・・C#、VB、Perl、JavaScript、"COBOL"、VB.NET

C#よりVBの方が少なくてあれ?と思ったら、VB.NET分は別集計で合わせればVBの方が多い・・なるほど
しっかし、未だにCOBOLが10位内に入ってるなんて・・まだまだ絶滅しそうにないな。
900デフォルトの名無しさんsage2009/02/13(金) 23:51:16
明日はチョコレートの日だお
901デフォルトの名無しさんsage2009/02/14(土) 00:39:32
今妹の作った余り物を食ってるお
902デフォルトの名無しさんsage2009/02/14(土) 00:40:34
>>899
Pythonはやっぱり日本ではマイナーだw
でも、lispとかもないんだなw
903 ◆UNKOVIP9RM 2009/02/14(土) 01:57:32
import チョコレート
904デフォルトの名無しさん2009/02/14(土) 02:15:07
insert my python
俺はもう駄目だ
905デフォルトの名無しさんsage2009/02/14(土) 14:24:55
# namedtuple for 2.5

def namedtuple(name, fields):
    from operator import itemgetter
    fields = fields.split() if hasattr(fields,'split') else fields
    attrs = dict((k,property(itemgetter(i))) for i,k in enumerate(fields))
    attrs.update({
     '__new__': (lambda cls,*xs: tuple.__new__(cls, xs)),
     '_make': classmethod(lambda cls,xs: cls(*xs)),
     '_fields': tupple(fields),
     })
    return type(name, (tuple,), attrs)

便利なので簡易版書いてみた。backportされないかなぁ。
906デフォルトの名無しさんsage2009/02/14(土) 14:35:31
>>905
そんなバグありで使い道もいまいちパッとしない関数 (ry
907デフォルトの名無しさんsage2009/02/14(土) 15:33:23
2.5ならこれ使えばいい
http://code.activestate.com/recipes/500261/
908デフォルトの名無しさん2009/02/14(土) 19:26:53
>>905
マイナーバージョンアップで追加された機能がbackportされるわけねーだろwww
909デフォルトの名無しさんsage2009/02/14(土) 20:35:12
3.0.1
910デフォルトの名無しさんsage2009/02/14(土) 21:42:37
Python使う人間って南国の陽気な人間て感じがするんだよな
911デフォルトの名無しさんsage2009/02/14(土) 21:46:17
どちらかというとRuby使う人のが明るい
912デフォルトの名無しさんsage2009/02/14(土) 21:47:48
何と戦ってるんだ?w
913デフォルトの名無しさんsage2009/02/14(土) 22:33:10
>>912
お ま え
914デフォルトの名無しさんsage2009/02/14(土) 23:08:20
Python使いはツンデレ
Ruby使いはヤンデレ

そんな妄想
915デフォルトの名無しさんsage2009/02/14(土) 23:20:18
min 関数で最小値を取り出すとき、key に関数を指定しますが、リスト内にいくつかの異なった要素があってこれらの key が等しくなるような場合はどれが返されるのでしょうか?
少し実験してみたら最初に見つかったものが返されているようですが、これは決まっていることですか? それとも偶然かもしれませんか?
916デフォルトの名無しさんsage2009/02/14(土) 23:38:15
みんなごめん。
いよいよ会社の貯金も先が見えてきたよ。
不況の世の中転職も大変だと思うが、がんばってくれよ。
917デフォルトの名無しさんsage2009/02/15(日) 00:16:08
>>915
保証はしていないみたいだけど
シーケンスにmin関数を適用したときに
仮に最初に見つかったもの以外が返されるなら
いったい中でどんなことやってるのか知りたい。
918デフォルトの名無しさん2009/02/15(日) 00:25:25
>>915
Python3のソース見る限りだとこんな感じのコードになってたので決まってることなんだろう。

m = next( iterable )
if not keyfunc is None:
 m = keyfunc( m )
while not iterable.empty()
 val = next( iteratable )
 if not keyfunc is None:
  val = keyfunc( val )
 if m < val:
  m = val
return m

minとmaxって同じ関数を引数変えて呼び出してるだけなんだな
static PyObject *
builtin_min(PyObject *self, PyObject *args, PyObject *kwds)
{
return min_max(args, kwds, Py_LT);
}
static PyObject *
builtin_max(PyObject *self, PyObject *args, PyObject *kwds)
{
return min_max(args, kwds, Py_GT);
}
919デフォルトの名無しさんsage2009/02/15(日) 00:34:43
>>918
> Python3のソース見る限りだとこんな感じのコードになってたので
> 決まってることなんだろう。

そういうもんじゃないと思うが。
そもそも「最初に見つかった」って一体何なんだ?
920デフォルトの名無しさんsage2009/02/15(日) 00:36:25
みんなのパイパイっていつ発売になるの?

もうすぐでるならPHPやめてPythonやりたい
921デフォルトの名無しさんsage2009/02/15(日) 00:44:04
>>919
keyで指定した関数で得られる値が同じ要素のうち、イテレータブルを走査したときに
より先に現れる方、という意味だと思うけど
自分も>>918みたいに思ったのでhelp(min)してみたけど書いてないのでソースで!
って思ったんだけどたしかにそういうもんじゃないね
922デフォルトの名無しさんsage2009/02/15(日) 00:50:47
918 -> 917
いつも間違えるorz
923デフォルトの名無しさんsage2009/02/15(日) 02:27:55
どちらにしろ、実装で決まっててもそれをあてにしたコードは書けまい。
924デフォルトの名無しさんsage2009/02/15(日) 03:55:12
どうせ実装なんて1つしかないと開き直る手もあるぞ
925デフォルトの名無しさんsage2009/02/15(日) 17:23:36
pythonの実装をC++&boostにしてboostとシームレスに行き来できるようにしてくんねーかなー
926デフォルトの名無しさんsage2009/02/15(日) 18:05:12
2回言っても通じないってのは、余程人の話を聞かないか、分かってて煽ってるのか、複数人が連携して存在しない人格を作っているのかw
927デフォルトの名無しさんsage2009/02/15(日) 19:59:36
Rubyしかまともな言語がない状況では
928デフォルトの名無しさんsage2009/02/15(日) 22:08:07
>>925
boost厨乙
929デフォルトの名無しさんsage2009/02/15(日) 22:11:57
pass
930デフォルトの名無しさんsage2009/02/15(日) 23:37:57
RubyやるくらいならPerlの方がまだマシだなぁ
931デフォルトの名無しさんsage2009/02/16(月) 00:26:20
>>930
一度しかない人生。自分を大切に。
932デフォルトの名無しさんsage2009/02/16(月) 01:04:40
いやPerlの後にPythonとRubyを実際に触ってみての感想なんだが
933デフォルトの名無しさんsage2009/02/16(月) 01:06:22
まあ無人島に二人きりになるとしたらLarryだよな。
934デフォルトの名無しさんsage2009/02/16(月) 01:13:56
1
935デフォルトの名無しさんsage2009/02/16(月) 01:27:05
日本語通じるMatzだろ
936デフォルトの名無しさんsage2009/02/16(月) 01:28:25
断然Larryだな
937デフォルトの名無しさんsage2009/02/16(月) 01:31:24
何故か候補にすら上がらないGuido
938デフォルトの名無しさんsage2009/02/16(月) 01:36:21
キャラが薄すぎるんだよな・・・
939デフォルトの名無しさんsage2009/02/16(月) 01:38:02
pass
940デフォルトの名無しさんsage2009/02/16(月) 01:39:34
>>919
要するに安定したソートか否かってことジャマイカ
941デフォルトの名無しさんsage2009/02/16(月) 01:41:14
RMSだと人生が変わってしまうかもしれん。
942デフォルトの名無しさんsage2009/02/16(月) 01:41:34
たまにはGuidoのことも思い出してあげてください><
943デフォルトの名無しさんsage2009/02/16(月) 01:46:03
次スレ

Pythonのお勉強 Part32
http://pc11.2ch.net/test/read.cgi/tech//
944デフォルトの名無しさんsage2009/02/16(月) 01:49:07
ウメぼし食べて
945デフォルトの名無しさんsage2009/02/16(月) 01:49:25
ume星
946デフォルトの名無しさんsage2009/02/16(月) 01:49:52
ウメ太郎
947デフォルトの名無しさんsage2009/02/16(月) 01:50:03
うめ
948デフォルトの名無しさんsage2009/02/16(月) 01:50:23
おっぱいに顔をうめたい
949デフォルトの名無しさんsage2009/02/16(月) 01:50:47
ruby厨を地面にうめたい
950デフォルトの名無しさんsage2009/02/16(月) 01:51:02
うめぼしたべてすっぱまん!
951デフォルトの名無しさんsage2009/02/16(月) 02:10:58
ウメェェェェェ
952デフォルトの名無しさんsage2009/02/16(月) 02:20:19
>>925
それなら俺はcommon lisp上に作られた
clpython http://trac.common-lisp.net/clpython/
でctypesとかCで書かれたpython module使えるようにしてほしいぞ
953デフォルトの名無しさんsage2009/02/16(月) 03:44:03
isと==の違いってなに?
954デフォルトの名無しさんsage2009/02/16(月) 04:01:59
isと==の違いってなに?
955デフォルトの名無しさんsage2009/02/16(月) 04:02:31
>>953 == >>954 は True
>>953 is >>954 は False

>>953 == >>953 は True
>>953 is >>953 は True
956デフォルトの名無しさんsage2009/02/16(月) 04:07:38
文字列って関数の引数とかに渡したり返り値で返すときって、参照ですよね?
957デフォルトの名無しさんsage2009/02/16(月) 04:08:11
質問すれと間違えたごめんよ
958デフォルトの名無しさん2009/02/16(月) 18:41:15
>>935
日本語通じるかなあwww
959デフォルトの名無しさんsage2009/02/16(月) 22:42:22
俺もそれは思ったw
960デフォルトの名無しさんsage2009/02/17(火) 00:42:36
やってみたい言語は haskell と lisp かなあ
961デフォルトの名無しさんsage2009/02/17(火) 01:19:18
やってみたい言語は Ruby と Ruby かなあ
962デフォルトの名無しさんsage2009/02/17(火) 01:35:23
earlangかなぁ
963デフォルトの名無しさんsage2009/02/17(火) 01:38:08
RubyとJava以外
964デフォルトの名無しさんsage2009/02/17(火) 02:46:27
htmlは外せないな
965デフォルトの名無しさんsage2009/02/17(火) 02:47:06
C++
966デフォルトの名無しさんsage2009/02/17(火) 03:35:56
HSP
967デフォルトの名無しさんsage2009/02/17(火) 04:12:45
A アセンブリ言語
B BASIC
C C言語
…(略…
Z まで制覇しるm9(・∀・)ビシッ!!
968デフォルトの名無しさん2009/02/17(火) 05:44:35
le Fran¸le;ais
969デフォルトの名無しさんsage2009/02/17(火) 05:45:31
le Franc¸ais
970デフォルトの名無しさんsage2009/02/17(火) 06:00:12
le Français
971デフォルトの名無しさんsage2009/02/17(火) 08:34:29
OCaml
972デフォルトの名無しさんsage2009/02/17(火) 08:39:27
ここは言語オタクのスクツですね
973デフォルトの名無しさんsage2009/02/17(火) 09:33:06
>>955
変数名の比較ですか?
974デフォルトの名無しさんsage2009/02/17(火) 10:10:14
Whitespace
975デフォルトの名無しさんsage2009/02/17(火) 10:14:24
a = b = 'isと==の違いってなに?'

a == b
True

a is b
True
976デフォルトの名無しさんsage2009/02/17(火) 10:29:30
==は値比較、isはアドレス比較
>>> [1] == [1]
True
>>> [1] is [1]
False
>>>

ただしisには注意事項がある。
http://docs.python.org/reference/expressions.html#id24
977デフォルトの名無しさんsage2009/02/17(火) 10:53:20
PythonはRubyに叶わない。ずっと、ずっと。
978デフォルトの名無しさんsage2009/02/17(火) 14:15:14
むしろ逆だろ、日本はともかく世界的に見てもRubyはPythonにかなわない
RubyはPerlと仲良くどんぐりの背比べをしてくれ
979デフォルトの名無しさんsage2009/02/17(火) 14:18:58
つうかまじでruby厨うざい。
ruby厨は全員首吊って死ねよ。

python人口の方が多い。
pythonの方がいろいろできる。
言語的仕様は好みの問題。
議論の余地無し。
以上。
980デフォルトの名無しさんsage2009/02/17(火) 14:27:43
アンチスレがあるからそっちでやれ。
http://pc11.2ch.net/test/read.cgi/tech//
981デフォルトの名無しさんsage2009/02/17(火) 15:09:44
ほぼすべて るびぃ をNGワード指定すれば防げるね
982デフォルトの名無しさんsage2009/02/17(火) 15:37:02
>>976
ガベージコレクションなんかで勝手に開放されて、
意図した結果と変わっちゃうことがあるということ?
983デフォルトの名無しさんsage2009/02/17(火) 15:37:52
そのとおり
984デフォルトの名無しさんsage2009/02/17(火) 17:16:09
http://journal.mycom.co.jp/news/2009/02/17/008/index.html
Rubyじゃないんだから3.0で機能追加するわけねーだろwww
985デフォルトの名無しさんsage2009/02/17(火) 17:21:04
結局のところ>>979が穏便かつ正論だと言わざるを得ないな
986デフォルトの名無しさんsage2009/02/17(火) 17:36:40
python3で...が特別扱いでなくなったんだな
ついでにrange(0, ...)でitertools.count()にすればいいのに
987デフォルトの名無しさんsage2009/02/17(火) 18:14:00
Python3.0 ぱい3
988デフォルトの名無しさんsage2009/02/17(火) 18:27:32
pass
989デフォルトの名無しさんsage2009/02/17(火) 19:37:42
>>982
参照がある以上、解放はされないが、移動される可能性がある。
1. 左辺をフェッチ
2. 右辺をフェッチ
3. 比較
1と2の間にGCが起きると同じオブジェクトでもアドレスが違うかも知れない。
990デフォルトの名無しさんsage2009/02/17(火) 20:45:30
isはNone専用演算子
991デフォルトの名無しさんsage2009/02/17(火) 21:27:31
結局 is は何のためにつくられたの?
992デフォルトの名無しさんsage2009/02/17(火) 21:42:42
GCが起きないような評価で済む
左辺と右辺の同一性比較。
あらかじめ変数に代入しとけばOK!

a = むにゃ
b = ほにゃ
a is b
993デフォルトの名無しさんsage2009/02/17(火) 21:58:50
TrueやFalseの比較にはis使ってもいいんだっけ?
994デフォルトの名無しさんsage2009/02/17(火) 22:05:04
次スレどこ?
995デフォルトの名無しさんsage2009/02/17(火) 22:07:11
http://pc11.2ch.net/test/read.cgi/tech//
996デフォルトの名無しさんsage2009/02/18(水) 00:26:52
>>993
おk
997デフォルトの名無しさんsage2009/02/18(水) 00:28:18
>>991
同一性を確認するため。
998デフォルトの名無しさんsage2009/02/18(水) 02:19:26
998
999デフォルトの名無しさんsage2009/02/18(水) 02:19:57
999
1000デフォルトの名無しさんsage2009/02/18(水) 02:20:54
100000
10011001Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
 208KB (213108Byte)
dummy_for_searchRef

DAT2HTML 0.32g Converted.