[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 12:08 / Filesize : 69 KB / Number-of Response : 338
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part31



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

2 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:46:20 ]

┌──────────────────┐
|                              |
│            _  ∩             |
│          ( ゚∀゚)彡 おっぱい!     |
│          (  ⊂彡   おっぱい!    .|
│           |   |            |
│           し ⌒J              |
│                              |
│         Now Oppaing. ....          .|
│                              |
│   そのままおっぱいでお待ちください。  |
|                              |
└──────────────────┘

3 名前:デフォルトの名無しさん [2009/01/02(金) 00:06:47 ]
ペニス

4 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 00:14:20 ]
>>1
おつぱいそん

5 名前:!omikuji !dama mailto:sage [2009/01/02(金) 05:14:01 ]
乙py

6 名前:初心者 mailto:sage [2009/01/02(金) 08:55:53 ]
パイパン初心者です。こんなスレがあるなんて今日初めて知りました。


7 名前:初心者 mailto:sage [2009/01/02(金) 13:50:22 ]
Rubyこそが史上最強の言語であると思ってますが、パイパンがんばります!

8 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:00:37 ]
>>7
そうだね、ハルマゲドンはすぐそこまで来ているよね。

9 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 17:37:39 ]
またruby厨の自演がはじまった

10 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 18:29:45 ]
>>1
おっぱいそん!



11 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 21:24:05 ]
>>1
π乙

12 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 21:41:13 ]
刑務所でも使えるRubyに感謝

13 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 22:52:59 ]
だれか、pythonのスクリプトを難読化する
ツールを僕に紹介してちょんまげ

14 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 23:12:04 ]
誰もお前の糞なスクリプトなんて読まないから安心汁

15 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 23:46:31 ]
つ perl

16 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 00:25:01 ]
つ Grass

17 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:12:42 ]
>>18の訂正
execも関数になるんだっけ。exec -> exec(...)

20 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:24:15 ]
他に、codec使う方法もある。

# -*- coding: rot13 -*-

cevag('Uryyb, jbeyq!')



21 名前:デフォルトの名無しさん mailto:sage [2009/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': <function fuga at 0x00930DF0>, 'hage': <funct
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 "<stdin>", line 1, in <module>
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 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 05:18:43 ]
j.__class__.__dict__

23 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 07:51:16 ]
dir
inspect.getmembers

24 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 08:03:27 ]
__class__.__dict__ にある関数はインスタンスと関連付けされてない点に注意。
a.__dict__['fuga'](j, 0) # 引数 self にあたる部分を自分で渡す必要がある
恐らくやりたいことは、dir(instance) で調べて、getattr(j, 'fuga')(0)



25 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 09:13:18 ]
>>> j.__class__.__dict__['hoge']
2
>>> j.__class__.__dict__['fuga'](0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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 名前:デフォルトの名無しさん mailto:sage [2009/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': <function hage at 0x00930D70>, 'hoge': 2}
>>> bb.__class__.__dict__
{'__module__': '__main__', 'fuga': <function fuga at 0x00930D30>, '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', <bound method a.hage of <__main__.a instance at 0x00934738>>), ('hoge', 2)]
>>> inspect.getmembers(bb)
[('__doc__', None), ('__module__', '__main__'), ('fuga', <bound method b.fuga of <__main__.b instance at 0x009347B0>>), ('hage', <bound method b.hage of <__main__.b instance at 0x009347B0>>), ('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 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 12:20:06 ]
もしかしてpythonのソースをYAMLだけで書いて
exec使わずに実行とか出来るんですか

29 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 18:02:59 ]
>>28
exec使わずに実行て?

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

Pythonでの話に戻すけど、ソースコードをparserモジュールで構文木にして、
その構文木をソースとして実行とかできるのかな。やってみたことないけど。

30 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 18:10:04 ]
rubyなら出来ますよ



31 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 18:12:40 ]
そうだね、神の名はエホバだね。

32 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 19:02:45 ]
はあ?

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

これより最短はないですね。
ありがとうございます!

37 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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']



39 名前:37 mailto:sage [2009/01/03(土) 22:31:06 ]
一行で書けるのか
代入せずに新しくリストを作ればいいのか
勉強になるなあ

40 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:34:06 ]
ああー 最後はtrans.list1じゃなくてs



41 名前:38 mailto:sage [2009/01/03(土) 22:38:56 ]
transpose関数ももmapsではなくmpsですねサーセン

42 名前:37 mailto:sage [2009/01/03(土) 22:41:40 ]
カウントとか効率悪そうだし
foo関数定義した意味がわからないな
駄コード書いて反省してます
すみませんでした

43 名前:37 mailto:sage [2009/01/03(土) 22:59:21 ]
ちょっと増やすだけで破綻するし
駄目すぎるな


44 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:28:11 ]
setでよかったのか
考えて損した
一から勉強し直そう

45 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:04:26 ]
>>27
細かいとこだけど。それだと class b(a) の後に class a を定義しているので
偶然前に定義した class a が残っていただけで、意図したテストになっていないはず。
後、クラス名はなるべく頭に大文字を使おう。

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



46 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:49:36 ]
なんぞこれ

47 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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)

49 名前:38 mailto:sage [2009/01/04(日) 03:32:08 ]
>>38
ありがとう
知りませんでした

50 名前:38 mailto:sage [2009/01/04(日) 03:33:58 ]
ああー
>>48ですー



51 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 10:28:37 ]
掲示板作ったよ。
なんかホールとか発見したら教えてね。
しばらくしたら忘れてね。
rail.s4.pf-x.net/bbs/

54 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:09:38 ]
pythonでは1要素のタプルを記述するには
(x,)のように末尾のカンマが要るんだよ

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

上の式のカッコがタプルだと思われても困るだろう?


57 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:18:48 ]
なるほど
ありがとうございました

58 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:21:36 ]
a = ({'a':'b'})*3
print a
a = ({'a':'b'},)*3
print a


59 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:38:05 ]
>>5
for i in dict
は、for i in dict.keys()と同じだから。

60 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 19:43:58 ]
俺はいつもsjisで書いてるよ。

64 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 20:10:57 ]
>>62
自分ひとりで同一環境で書いてる間は特に問題ない。

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



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



69 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 20:58:24 ]
main.py
/hoge/
- __init__.py
- test.py

をmain.py内で、

import hoge

した場合、test.pyはimportされないのですか?



71 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 21:05:05 ]
何に使うのかまだ解ってないけど、
やりたい事ってもしかして、コレ?

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



72 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 21:06:47 ]
>>70
パッケージは、__init__.py内で明示的にimportしない限り、
import hogeでimportされるのは hoge/__init__.pyのみ。

73 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 23:21:00 ]
import hoge.test


74 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 23:44:04 ]
馬鹿ばっかり、ってことが証明されたなあ、このスレ。

75 名前:デフォルトの名無しさん [2009/01/04(日) 23:59:00 ]
馬鹿ばっかり、ってことが証明されたなあ、このスレ。

76 名前:デフォルトの名無しさん mailto:http://rail.s4.pf-x.net/bbs/ [2009/01/05(月) 00:58:39 ]
真面目にやれ

77 名前:デフォルトの名無しさん [2009/01/05(月) 00:59:54 ]
姑息なことすんな

78 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:02:07 ]
くだすれの方が盛り上がってるな

79 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:24:52 ]
sageないし草いし死ねば良いのに

80 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:48:12 ]
2chで死ねは挨拶みたいなもんだ罠



81 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 09:40:31 ]
そういうのは公式言ってみるからどうでもいいよ

83 名前:デフォルトの名無しさん [2009/01/06(火) 04:37:22 ]
15-20% average speedup on pybench and pystone
bugs.python.org/issue4753

84 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:39:49 ]
numpyはsageに吸収されてしまうのだろうか

85 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:22:47 ]
年明け首吊り失敗して顔酷いことなってるよ俺。首にアザできて外でれねえw

86 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:44:14 ]
このご時世たくさん人をやとっちゃった会社は大変だね。
この状況で独立するバカは中央線を止めないようにね。

87 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:30:28 ]
ま、会社が潰れるのは虚業だったことの証明なんだろうけどね。

年末が一つの山だったみたいだな。
次は年度末の3月が山だと思うよ。

88 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:39:13 ]
コネない人間には虚業自体できないから
景気も関係ないんじゃないの

89 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 14:29:34 ]
有名なpythonistaって誰?

90 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:16:19 ]
guido



91 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:37:57 ]
>>90
それ神様

92 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:49:59 ]
Eric Steven Raymond
Peter Norvig


93 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:58:46 ]
Matz

94 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 16:00:20 ]
Ruby

95 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:36:53 ]
>>93,94
もしかして: David Mertz と Sam Ruby

96 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:57:01 ]
Tim Barners Lee

97 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:19:20 ]
Matz

98 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:32:14 ]
Notz

99 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 13:05:18 ]
日本人では

100 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 13:47:21 ]




101 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:03:14 ]
Jim Huguninは、pythonistaだと思う。

102 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:42:45 ]
>>99
Matz

103 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 03:15:28 ]
西尾さん以外ありえないだろ。

104 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 04:22:41 ]
以下、Python系本の著者の話題が続くとさ

105 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 07:10:06 ]
Esoteric Language みたいな本を opython で出す必要は
ないよね

106 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 10:10:01 ]
西尾さん以外ありえないだろ。


107 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 10:15:06 ]
西尾さん以外ありえないだろ。

108 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 10:52:58 ]
ttp://www.nishiohirokazu.org/blog/2007/02/grinedit_6.html

109 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 13:09:39 ]
西尾さんって誰?

110 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:21:09 ]
西尾さん以外アッーー!!



111 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:28:34 ]
彼のためを思ってやってるのかも知れないけど
一般的にこういうのは迷惑なものなんだよ>javajaの人

112 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:25:56 ]
>>108

吹いた

113 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 17:28:00 ]
>>109
d.hatena.ne.jp/nishiohirokazu/20090109

114 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:11:31 ]
知らね。
Matzと梶山民人(ninixの作者)なら知ってる。

115 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 20:32:09 ]
いや、まて思い出した。
どう書く.orgなら知ってるのでそれ作った人か。

116 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:02:16 ]
どう書く.org って Python で作られてたの?

117 名前:デフォルトの名無しさん [2009/01/11(日) 00:21:57 ]
Pythonとかやってるやつが売国奴だ

118 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:26:07 ]
どうせWindowsやLinux上で動かすしぃ

119 名前:FreeBSD mailto:sage [2009/01/11(日) 00:27:56 ]
たまには思い出してやって下さい


120 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:32:38 ]
超漢字使え



121 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:47:00 ]
sageなんてもんがあるのか
検索しにくい
Pythonはじまったな

122 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:01:50 ]
クラスのimport方法が分からん・・・

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

Traceback (most recent call last):
File "hoge.py", line 5, in <module>
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 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:04:06 ]
>>122
【driver.py】
5 obj =Hoge.Hoge()


124 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:07:41 ]
>>122
3 from Hoge import Hoge
または
3 from Hoge import *
後者はおすすめしない

125 名前:122 mailto:sage [2009/01/11(日) 20:12:48 ]
>>123 >>124

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

ありがとう!!

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

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

このあたりの動きってJavaとかPHPとはまったく別物?

126 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:37:21 ]
>>125
Pythonにとって、パッケージ=ディレクトリ、モジュール=ファイルなの。
Hoge.py という名前のファイルなら、 Hoge というモジュールの中に、 Hoge という
クラスができてた。

127 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:45:17 ]
>>126
何その糞言語・・・やっぱrubyに変えようかな

128 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:47:16 ]
>>126
丁寧にありがとう!
なるほどそういうことか・・・

Python慣れるまで大変そうだけど、慣れればかなり便利に使えそうな気がするぜ!

129 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:58:54 ]
>>127
正直Rubyよりはマシだと思う



131 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:19:25 ]
結局「どちらがより優れているか」よりも「どちらがより糞でないか」で消極的に選択される
良くない選択肢のもう一方はもっと良くない選択肢かもしれない

132 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:46:45 ]
MLの流れで引いたな。なんだよあれ。

133 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:00:02 ]
またruby厨の釣り質問でも来たのかい?

134 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:40:45 ]
Pythonのモジュールシステムは、見通しがよくて好きだけどな。

135 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:49:24 ]
俺もPythonのモジュールシステムは好きだな

136 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:50:42 ]
Webアプリ開発に疲れました。
クライアント側でバリデーションをしたいので、JavaScriptで書きました。
でもサーバ側でも同じチェックをしなきゃいけないので、JavaScriptで書いたのと同じ内容のをJavaとかPHPとかで書かなきゃいけない。
もうばかばかしい。

サーバ側のバリデーション用プログラムからJavaScriptのプログラムが自動的に生成されたりできませんかね。
もう両方をメンテナンスするのに疲れた。

137 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:55:43 ]
>>136
誤爆?

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

PHPのZendFrameworkならフレームワークの一部分のみ使えたりするから試してみたら?

138 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:56:15 ]
よく知らんけど
ASP.NETとかその辺の高級な奴ならクライアントサイドバリデーションのコードを
自動生成してくれるんでなかったか

139 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:35:52 ]
>>138
そうだよ
だけど結局手作業は残る
Don't repeat yourself! なんて夢のまた夢

140 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:45:40 ]
>>137
いえ、誤爆じゃないです。
Python使いならわかってもらえると思って&&Pythonスレなら会社のやつに見つからないだろうと思って。

Djangoとかでクライアント側のバリデーションをしたい場合はどうするんでしょうか。
Djangoとしては特に支援機能はない?詳しくないので教えてちょーだい。



141 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:51:30 ]
こちらでどうぞ
pc11.2ch.net/test/read.cgi/php/1156612854/

142 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:31:51 ]
pydocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ

143 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:39:46 ]
javadocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ

144 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:54:25 ]
rubydocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ

145 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 02:01:01 ]
phpdocすげぇ!!
HTMLに出力したらさらにすげぇ!

・・・見安すぎて逆になんだかなぁ


146 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 02:59:28 ]
こちらでどうぞ
pc11.2ch.net/test/read.cgi/php/1156612854/

147 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:15:44 ]
どうにも.orgってイカメンファッカーがダンジョーで作ってるんですね。

148 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 17:29:35 ]
今、PYTHONクイックリファレンス買っても意味あるかな?

149 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:01:12 ]
LinuxでPythonするのに、IDLEみたいな開発環境ないかな?

150 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:21:02 ]
>>149
NetBeans



151 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:28:16 ]
eclipseか、>>150だな。
他のだと日本語を入力してもうまく出ないし、
そもそもlatin-1でコードが書かれてるのを前提としてるのばかりだからなぁ

152 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 10:09:23 ]
>>149
python.el

153 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 10:36:07 ]
>>149
Kdevelop

154 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 10:50:13 ]
>>149
komodoEditor

155 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 11:21:58 ]
emacs

156 名前:デフォルトの名無しさん [2009/01/13(火) 15:09:47 ]
>>149
IDLE

157 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 18:29:30 ]
出来ました。
ありがとうございました。

158 名前:149 mailto:sage [2009/01/13(火) 18:35:31 ]
皆さんありがとうございます。
NetBeansは扱いやすいですねw

159 名前:149 mailto:sage [2009/01/13(火) 18:37:02 ]
皆さんありがとうございます。
NetBeansは扱いやすいですねw

160 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 18:49:26 ]
あいかわらずここは粘着がわいてるのかよ。



161 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:37:28 ]
併せてeventletもどうぞ。
winで動くかは分からんが。

163 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:50:26 ]
>>162
実はeventletも試したんだけど、posix専用のsystemcallを結構使っているんで、
結構弄らないと使えないっぽいですね

164 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 15:11:50 ]
c = [dict(zip(b, i.split("<>"))) for i in a]

168 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 15:37:44 ]
('<>')
かえるさんこんにちは。

169 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:02:23 ]
ていうかIDLEはLinuxでも使えるだろ。
ほとんどのディストリでは標準インストールされてないけど。



171 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:23:00 ]
python入ってれば、
$ python -m idlelib.idle &
でidleが立ち上がると思う

172 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 06:54:46 ]
len(i.split('<>')) -> i.count('<>')

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

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

2.5以前なら、namedtupleをbackportするか
レコード型のクラスを定義して、コンストラクタの引数で要素数をチェック。

174 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 11:48:21 ]
適当な class に hoge ってインスタンス変数があるかどうかって
どうやって調べるんでしたっけ?

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

なんてやってるけど,if myclass.exists("hoge") みたいな感じの
何かがあるんでしたっけ?

175 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 11:55:41 ]
hasattr(myclass, "hoge")

176 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 00:46:26 ]
独断と偏見で選ぶ血液型別おすすめスクリプト言語

A型
PHP

B型
ひまわり

O型
C#

AB型
SmallTalk

182 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:03:32 ]
>>180
B型ですがPerlは構文的に脳が受け付けないです
Rubyは生理的にMatzを受け付けない
やっぱりおっPython!

183 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:07:44 ]
PHPが好きなO型です。
最近のイスラエル情勢に不満を覚え、PHPの利用をやめます!

184 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:27:35 ]
>>178
普通に unicode オブジェクトの translate() メソッドでいいのでは?
pc11.2ch.net/test/read.cgi/tech/1218155094/491


185 名前:161 mailto:sage [2009/01/16(金) 03:03:39 ]
>>184
その書込み僕のだ、懐かしいな

186 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 07:31:42 ]
>>178
ありますよ

187 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 10:23:17 ]
>>178
まさか知らないの?

188 名前:デフォルトの名無しさん [2009/01/16(金) 10:39:51 ]
>>180 >>181
おまえらあんまABバカにすんなよこら

189 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 10:46:50 ]
>>182
同じく (Rhマイナスだけど) B型ですがPerlは構文的に脳が受け付けないです。
ちなみにスクリプト言語どれやってみようか最後まで Python と迷ったのは Haskell というやつです。

190 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 10:47:57 ]
>>180
>B型
>Perl
だが断る!




191 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 10:48:46 ]
Haskellはスクリプト言語じゃねえだろ

192 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 11:03:46 ]
>>185
このスレの161を踏んだ者だが……
紛らわしいのでやめてくれ

193 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 13:55:50 ]
>>180 O型馬鹿にするな

194 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 13:58:57 ]
A型はJavaじゃね?型宣言とかしたそう。
B型はマンプス。
AB型がPython。宣言はしないけど、型にうっさいという
O型はC。

195 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 14:05:09 ]
>191
一応インタプリタもあるでよ

196 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 14:56:19 ]
日本限定でいえば
人口比的にAB型がPythonだな
俺もAB型だし

A型はJavaScriptでいいよ

197 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 17:14:47 ]
その年の、ある月の日数を取得するにはどうすればいいんでしょうか
たとえば、2019年の2月の日数は○○日みたいな感じのです

198 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 17:24:33 ]
calendar.monthrange

200 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 17:27:51 ]
# www.python.jp/doc/release/lib/module-calendar.html
>>> import calendar
>>> calendar.monthrange(2019, 2)
(4, 28) # 曜日,日数



201 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 18:32:45 ]
199,200 >>>> 越えられない壁 >>>> 198

202 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:29:36 ]
>>149-156
結局どれが一番お勧めなの?
ステップライン実行デバックができるのがいいな


203 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:33:11 ]
>>202
Wing IDE

204 名前:デフォルトの名無しさん [2009/01/16(金) 21:07:10 ]
その年の、ある月の末日を取得するにはどうすればいいんでしょうか
たとえば、2000年の2月の末日は28日みたいな感じのです


205 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 21:31:27 ]
>>199-200を再読してください
なお2000年は閏年ですので2月の末日は29日です

206 名前:デフォルトの名無しさん [2009/01/16(金) 22:36:49 ]
ドラマのブラッディーマンデイで主人公がputhon多様していたみたいだが、
彼が使っていたエディタはなにかわかるひといる?
ttp://imagepot.net/view/123211290262.jpg

207 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 22:51:13 ]
vimじゃん

208 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:25:13 ]
>>207 はあ?

わかるひといます?

209 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:41:10 ]
vimだろ

210 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:42:08 ]
俺AB型だからPythonに惹かれたのか。



211 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:42:31 ]
どう見ても vim だな。

212 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:52:00 ]
gvimだな

213 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:54:44 ]
俺O型だけど

214 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:15:05 ]
>>206
フォントかっこいいな。なんてやつ?

215 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 01:38:47 ]
>>214
このフォントのどこが格好いいんだ
アンチエイリアスが中途半端で汚いじゃない

216 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 01:58:36 ]
これビットマップフォントだぞ

217 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 02:19:17 ]
はあ?かっこいいといってるだろ。
なにこれ?

218 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 02:28:15 ]
はあ?

219 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 03:48:25 ]
うんこレンダリングフォント
ulf

220 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 06:27:30 ]
>>206
1-6行目不明
7行目以降
try: host,frm,to=sys.argv[1:4]
except ValueError:
print 'Usage: %s <host> <from> <to>' % (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 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 06:33:51 ]
import socket
import sys

あとコメントが数行入って終了じゃないか

222 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 12:18:38 ]
>>220
普通にこれで使えるな

226 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 13:18:20 ]
print 25のとこおかしいね。

227 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 13:19:10 ]
これで女子高生にvim使いが増える!

228 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 14:58:57 ]
>>226
元の画像には%sになってたからただの写し間違いだと思うが
host="hoge.fuga:587"
とかだったときにやっぱり表示は変になるね

229 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 15:00:35 ]
1行目は #!/usr/bin/env python だと予想。

230 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:10:24 ]
1. #!/usr/bin/env python
2. '''hogehoge
3. fugafuga
4. '''
5. import socket
6. import sys

でFA?



231 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:14:28 ]
1. #!/usr/bin/env python
2. # -*- coding: hoge -*-
3.
4. import socket
5. import sys
6.

232 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:25:29 ]
>>231
それっぽいw

233 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:58:53 ]
PEP8守ってないから訓練されたPythonistaじゃないな

234 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:54:52 ]
パイソニスタじゃなくてパイソニアンがいい

235 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 19:03:38 ]
Pythonista, Pythonian, Pythonese, Pythonist, Pythoner
どれでも好きなのを選ぶといい

236 名前:デフォルトの名無しさん [2009/01/17(土) 19:06:40 ]
日本語なら「Py使い」でいいでしょ。

237 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 19:15:42 ]
お、py使い

238 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 20:18:26 ]
訓練されてないのは、盲py

239 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 20:51:27 ]
PEP8守って書き直すとどうなりますか

240 名前:38 mailto:sage [2009/01/18(日) 16:23:33 ]
へんじがない、ただのぱいそにすたのようだ



241 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:58:52 ]
ttp://www.dotup.org/uploda/www.dotup.org17528.png
PEP3を出来る限り守ったらこんな変なコードになってしまったんですが
どうすればいいですか?

242 名前:241 mailto:sage [2009/01/18(日) 22:59:26 ]
PEP3じゃなくてPEP8でした

243 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:01:43 ]
geditかこれ

244 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:24:11 ]
ただものじゃないEmEditorです

245 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:28:20 ]
どうすればいいですか?

246 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:31:27 ]
一見して>>241のどこがヘンなのかわからなかったw
Lispならカッコは右下に連打するだろうな、とは思ったが……

一行79文字縛りがキツい、という話?

247 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:40:05 ]
はい…

248 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:40:11 ]
>>246
変じゃないなら別にいいです

249 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:42:41 ]
>>241
正規表現を事前にコンパイルしてre.subの引数を減らせばいいんじゃね?

250 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 01:40:56 ]
まともな回答はありません‥

252 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 04:19:25 ]
)に違和感

253 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 04:40:45 ]
>>241
うわっ、汚い。。。
普通は re_subs みたいな関数書いて、順にre.subが適用されるようにする。
あと、そのエディター酷いね。。色付けすらちゃんとされてないじゃん。


254 名前:241 mailto:sage [2009/01/19(月) 04:50:38 ]
>>253
そのカンスゥー貼って下さい…

255 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 05:16:45 ]
>>254
そのぐらい自分で書けないと。
初心者レベルの難易度だよ。

256 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:15:14 ]
>>255
あのー、かんすーお願いします‥
なぜPythonスレの人たちはレベル低いのだろう

257 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:40:29 ]
お前のレベルが低いだけ

258 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:41:27 ]
お前のレベルが低いだけ

259 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:44:36 ]
>>256
知能低いのかね。小学生でも書けそうな関数だとおもうが。

260 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 14:35:17 ]
あの、カンスゥーまだですか・・・?



261 名前:デフォルトの名無しさん [2009/01/19(月) 18:07:26 ]
>>260 こんなんでいいのか?
ttp://stat001.ameba.jp/user_images/cb/2d/10040538808.png

262 名前:デフォルトの名無しさん [2009/01/19(月) 18:07:44 ]
jp.youtube.com/watch?v=LC1xSR_xxuk

263 名前:デフォルトの名無しさん [2009/01/19(月) 18:08:51 ]
>>262
このカンスゥーは無表情すぎて怖い

264 名前:デフォルトの名無しさん [2009/01/19(月) 18:23:11 ]
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!

265 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:24:56 ]
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!

266 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:25:00 ]
>>1の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!

267 名前:デフォルトの名無しさん [2009/01/19(月) 18:35:47 ]
>>264-266
初心者丸出し

と釣られてみる

268 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:01:28 ]
初心者っていきなり 3 触るの?

269 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:43:20 ]
最新版にβとつければ初心者はさわらないかもね

270 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:04:50 ]
Python初めて1週間
3.0→2.3.4jp→2.6.1→2.5.1



271 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:14:51 ]
2.5.1→2.6.1→3.0→2.5.1→2.6.1

printが強制的にカンスゥーになってたり
rangeがオブジェクト返すようになっててちょっと困惑するんだよね

272 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:52:18 ]
printは自発的に関数になったと風の便りに聞いたよ…

273 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:16:29 ]
#2.6
x = range(100)

#3.0
x = [i for i in range(100)]

274 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:34:58 ]
list(range(100))

275 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:21:09 ]
結構変わったんだな。3は。

276 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 01:17:08 ]
>>273
3はなんだかちょっと面倒だなって気がしてきた

277 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 01:19:52 ]
志村!

278 名前:デフォルトの名無しさん [2009/01/20(火) 07:10:13 ]
あのー、回答待ってるですがまだですか?
パイソンのスレッドって馬鹿しかいないなー

279 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:03:22 ]
rangeでリストを作るなんて滅多にしないだろうに。

280 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:26:21 ]
[i for i in range(100)]
に必死で突っ込むひとまだですか?



281 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:35:03 ]
ところで、2.6って2.5に対して完全に上位互換?
2.5用のライブラリで2.6で動かなくなったのってある?

282 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 <host> <from> <to>" % (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 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 16:57:28 ]
unkoはexportするものだろ

287 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 17:56:07 ]
from anal export unko

288 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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)))


292 名前:291 mailto:sage [2009/01/20(火) 18:13:44 ]
あー計算量的に無駄なのか
まあいいや

293 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 18:48:31 ]
k=0は蛇足です

296 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 18:51:40 ]
>>289-
Thank you so match.

297 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 18:56:16 ]
>>280
待ち人来たらず

298 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:13:47 ]
>>283
ありがとうございました

300 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:37:45 ]
>>298
あってるっぽい気がするけど?



301 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:42:11 ]
ttp://www.toshin.com/center/sugaku-2b_mondai_6.html

302 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:49:44 ]
なるほどw

303 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:35:40 ]
Tkinter, wxPython, pywin32などでぐぐれ

306 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:37:08 ]
そんなことないですよ

307 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:39:33 ]
pc11.2ch.net/test/read.cgi/tech/1167996371/

309 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:40:18 ]
pc11.2ch.net/test/read.cgi/tech/1157686822/

310 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:59:57 ]
>>288
BASICでクソプログラム見せられたらやっぱPythonできれいに書きたくなるよね。




311 名前:310 mailto:sage [2009/01/20(火) 21:01:43 ]
俺はIIの最後で2点と統計で2点落としちまったぜ

312 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 21:23:33 ]
>>304
オマエが読んだクソ本を怨め

313 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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))


315 名前:314 mailto:sage [2009/01/20(火) 22:39:22 ]
間違えた。_powの第二引数は一の位だけじゃ駄目だ。

316 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:40:16 ]
うむ

317 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:44:56 ]
pow(n, pow(n, n), 10)

318 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 00:35:03 ]
あってるけど、
アルゴリズム的には n が大きいときの pow(n, n) が課題。



320 名前:デフォルトの名無しさん mailto:sage [2009/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



321 名前:317 mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:28:11 ]
www.kohgakusha.co.jp/books/detail/978-4-7775-1419-9


324 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:39:19 ]
>>321
そこまでたどり着けば実はpow使わなくても答え出てるんだけどね


325 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 08:11:54 ]
クソ本が改訂してクソでなくなるのかな?

327 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:36:24 ]
まあ評価は見てからですかねー


328 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 10:30:01 ]
はじぱい 第2版 (2004/11) \5,040
www.amazon.co.jp/products/dp/4873112109/
はじぱい原著 3rd Edition (2008/07/16) $26.39
www.amazon.com/Learning-Python-3rd-Mark-Lutz/dp/0596513984/

恥ぱい 初犯 (2007/11) \1,995
www.amazon.co.jp/products/dp/4777513211/
恥ぱいネットワーク 初版 (2008/06) \1,995
www.amazon.co.jp/products/dp/4777513688/
恥ぱい3 初版 (2009/01) \1,995
www.kohgakusha.co.jp/books/detail/978-4-7775-1419-9
恥ぱいが3.0用になったんですね


329 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:10:29 ]
恥の上塗りというわけですね。

330 名前:デフォルトの名無しさん [2009/01/21(水) 11:20:55 ]
俺もウェブの無料チュートリヤル翻訳して金稼ぎたい



331 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:40:37 ]
ライブラリレファレンスの和訳更新・改良を
ガンガンやってくれるならお布施くらいはするでよ?

332 名前: ◆UNKOVIP9RM [2009/01/21(水) 11:53:01 ]
>>312
惚れた

惚れた

惚れた


できれば結婚してくれ

333 名前: ◆UNKOVIP9RM [2009/01/21(水) 11:54:09 ]
>>328

買う 買うー

334 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 12:08:27 ]
>>328
はじぱいの癖に5040円って翻訳書のはじ

337 名前: ◆UNKOVIP9RM [2009/01/21(水) 12:18:59 ]
>>336
円安だったんだよ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<69KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef