Pythonのお勉強 Part ..
[2ch|▼Menu]
855:850,851
08/03/23 14:46:12
>>853
いや、俺のは違うから。スマン。
RubyのPathnameオブジェクトってのを知らなかったんで
勘違いしたんだよ。

856:849
08/03/23 15:07:30
>>854
そういうものなんですかね?
os.pathは使うとき逐一引数にパス名指定しないといけないので面倒なんですよね…
>>852さんに紹介していただいたようなクラスが標準に入ればいいのですが

>>855
ああ、すいません。書き方が悪かったみたいです
>>855さんの回答は今回はちょっと希望に沿うものではなかったのですが
質問したときは回答していただいた方全員にお礼を言いたいと思っているので…


857:デフォルトの名無しさん
08/03/23 18:13:25
「できるだけ標準モジュールを使え」はGuideの言葉だっけ?

858:デフォルトの名無しさん
08/03/23 19:29:53
>>849
os.stat()を使えば解決しそうだけど

859:デフォルトの名無しさん
08/03/23 20:17:05
lambdaで逃げるって手も...ないか。





860:デフォルトの名無しさん
08/03/23 21:26:23
Guideって誰?
それどんな道案内?

861:デフォルトの名無しさん
08/03/23 22:15:43
>>860
かわいそうなPython使いを
ジョセフ様に認められた清く正しい言語Rubyへの
改宗を促すGuideです。

Pythonを作られたGuidoさんとは別です。

862:デフォルトの名無しさん
08/03/23 22:20:26
カルト言語逝ってよし。

863:デフォルトの名無しさん
08/03/24 11:42:31
ruby使いは正確悪いことで有名

864:デフォルトの名無しさん
08/03/24 13:56:51
お前の性格の悪さも分かった

865:デフォルトの名無しさん
08/03/24 14:33:40
>>863
たまには変換候補のことも思い出してあげてください。

866:デフォルトの名無しさん
08/03/24 14:37:14
pythonで数値計算はnumpyだけど数式処理は何かあるの?

867:デフォルトの名無しさん
08/03/24 17:54:39
しらない

868:デフォルトの名無しさん
08/03/24 19:00:16
他人を敬えない人は、他人から敬われることはありません。
日本語が不自由ならなおさら。
良くて一生ドカタ。
たいていはいい年になってから路頭に迷う。
本当にありがとうございました。

869:デフォルトの名無しさん
08/03/24 19:10:30
経験者の話は説得力がありますね

870:デフォルトの名無しさん
08/03/24 23:36:43
なんといつのまにか wxVCLなるものがあるみたいじゃないか。VCLの使い勝手が忘れられない俺がまちのぞんだもの。
だれかpythonバインディング作って

871:デフォルトの名無しさん
08/03/25 02:20:38
C++スレにも書いたけど、こっちにもネタ投下してみる。
なるべく短いプログラム書いてみようぜ。

基本問題:
例えば N = 8 としたときに
「この文章には0が1個、1が5個、2が3個、3が2個、
4が1個、5が2個、6が1個、7が1個含まれています」
という文章が生成されるとして、9以下の任意の自然数Nについて
もこのような文章を生成するプログラムを作れ。
解がない場合は「解なし」とする。

発展問題:
Nが10以上の時、解はあるだろうか?



872:デフォルトの名無しさん
08/03/25 02:28:43
一応自分の答え(うろ覚え)さらしとく
X = 8
S = ["" for i in range(X)]
found = False
def count(num):
 ret = 0
 for i in S:
  ret += i.count(str(num))
 return ret
def check():
 for i in range(X):
  if count(i)+1 != int(s[i]): return
 found = True
 print "数字の数は", [str(i)+"が"+str(s[i])+"個" for i in range(X)]
def find(depth):
 if depth < 0:
  check()
 else:
  for i in range(X):
   s[depth] = i
   find(depth - 1)
 if not found:
  print "解なし"
 print "終了"

find(X-1)



873:デフォルトの名無しさん
08/03/25 02:47:48
ごめん、問題の意味がわからない

874:デフォルトの名無しさん
08/03/25 02:53:15
短くしようとしたら総当りになると思う。
それよりもスマートな解き方を探すほうが面白そうだな

875:デフォルトの名無しさん
08/03/25 02:58:37
>発展問題:
>Nが10以上の時、解はあるだろうか?

10がn個あります、と言った時の意味がわからない

876:デフォルトの名無しさん
08/03/25 03:01:55
どっかの課題丸投げ乙

877:デフォルトの名無しさん
08/03/25 03:07:32
変数Nは「」内に影響しないため、Nがどのような値でも
「この文章には0が1個、1が5個、2が3個、3が2個、
4が1個、5が2個、6が1個、7が1個含まれています」
という文章が生成されます。

878:871
08/03/25 03:19:09
丸投げじゃないよ。今日仕事中に思いついた問題。

ちなみにNが4のときの解。ようするに N 以上の数を使わない。

「0が1個、1が2個、2が3個、3が2個」

Nが10のときは "10" という部分文字列がいくつ含まれるかって解釈にしようと思う。



879:デフォルトの名無しさん
08/03/25 03:57:45
0-2

1-8

2-3

3-3

4-1

5-1

6-1

7-1

8-2

9-1

10-1

880:デフォルトの名無しさん
08/03/25 09:57:56
ドウカクカクカク。

881:デフォルトの名無しさん
08/03/25 10:34:00
ブラック民パイ読んで、練習でHP作ってるんだけどさあ・・・・HTMLのテンプレートを簡単につくるソフトでいいのってないの?
ホームページビルダー(バージョンふるいのしか持ってない)で作って、置き換え文字を書き加えるとかじゃ・・・・ちょっと使いづらいぜ。

882:デフォルトの名無しさん
08/03/25 10:43:31
>>881
HTMLかくんだったら、テキストエディタでおk。
入力補助がついてるのもあるし、なんだったらメモ帳やワードパッドでもいける。

883:デフォルトの名無しさん
08/03/25 11:31:43
>>871が基地外にしか見えない

884:デフォルトの名無しさん
08/03/25 11:41:05
>881
Nvu
URLリンク(nvudev.com)



885:デフォルトの名無しさん
08/03/25 11:42:58
>>883
>>871が見えるおまえは基地外認定

886:866
08/03/25 12:03:30
>>866-867
ないのならmaximaのあるcommon lispに乗り換えを決意した

887:デフォルトの名無しさん
08/03/25 13:45:09
お昼に見てからやっと >>871 の意味が分かったわ
ちょっと仕事の合間に考えて見るか

888:デフォルトの名無しさん
08/03/25 19:05:30
>>871をN<=10(二桁にならない)までで高速化してみた
URLリンク(codepad.org)

889:デフォルトの名無しさん
08/03/25 20:54:01
C++は老害言語。

890:デフォルトの名無しさん
08/03/25 22:00:41
>>884
Nvuは開発止まってるから後継ソフトにしようね
KompoZer: URLリンク(kompozer.net)

891:デフォルトの名無しさん
08/03/25 23:21:00
回転座標求めるのに
def rot(x, y, radian):
 c = math.cos(radian)
 s = math.sin(radian)
 return x*c - y*s, x*s + y*c

def rot(x, y, radian):
 return math.hypot(x, y) * cmath.exp(radian*1j)
の速度を比べてみると、明らかに複素数使った方が速い。。。が
X, Y成分を取り出す処理を入れると結局始めから三角関数使った方が速い。なんかくやしい。




892:デフォルトの名無しさん
08/03/25 23:48:33
x,yはc.real と c.imag で取り出してる?

893:891
08/03/26 00:16:01
>>892
URLリンク(codepad.org)
あれ? デスクトップでやった時と結果が違う。。。。

894:デフォルトの名無しさん
08/03/26 03:32:48
URLリンク(rpy.sourceforge.net)
Rをpythonから呼べる
便利そうだがnumpyで直接計算するのと比べてどうなんだ

895:デフォルトの名無しさん
08/03/26 03:38:08
URLリンク(modular.math.washington.edu)
pythonの数式処理っぽいのあった

896:デフォルトの名無しさん
08/03/26 03:44:09
python -> sage -> maxima -> common lisp
でcommon lispをpythonから呼べるね
もっと単純な方法ありそうな気もするけど


897:デフォルトの名無しさん
08/03/26 10:45:12
py2exe 使うと使っている標準モジュールが自動的に
同梱されますが、これも丸ごと配布してしまっていいん
でしょうか?というか、py2exe で実行ファイル形式にして
配布するときってライセンス的にどんな制約があるんでしょう?

自分が作ったプログラムも含めてPSFに従わないとだめ?


898:デフォルトの名無しさん
08/03/26 13:25:01
PSFはGPLじゃないのでちゃんとPythonの著作者表示があれば自由だったはず

899:デフォルトの名無しさん
08/03/26 14:22:28
PSFはライセンスじゃない。

それはそれとして、っ URLリンク(www.python.jp)

900:デフォルトの名無しさん
08/03/26 14:31:13
>>894
・統計屋の中で流行っている統計手法はいち早くRで誰か実装するので、
自分で書き直す手間は省ける。
・Rになれている人に使いやすい。
・グラフなんかをプロットするとよく落ちる。

ってところかな。

901:デフォルトの名無しさん
08/03/26 15:45:42
すまんが、cgiのGETとPOSTって両方一度にはつかえないの???

902:デフォルトの名無しさん
08/03/26 15:51:19
仕様書嫁

903:デフォルトの名無しさん
08/03/26 16:04:25
実装依存で使える場合もあるかもしれないけど、
どこでも動く保証はないっていう感じだったきがする<GET、POST同時
まあ、普通にやめといた方がいいと思う

904:デフォルトの名無しさん
08/03/26 19:07:01
>>901
os.environ['QUERY_STRING']に入ってない?

905:デフォルトの名無しさん
08/03/26 23:25:33
GET,POSTはHTTPのメソッドの名前。当然どっちかしか使えん。
HTTPの仕様上はPOSTで「?」付URLを呼び出せる。
>>904 の言う通り cgi.parse_qs(os.environ['QUERY_STRING']) でよかったとオモ
POSTされたデータは cgi.parse(sys.stdin) か cgi.FieldStorage()


906:デフォルトの名無しさん
08/03/26 23:27:08
URLリンク(www.openplans.org)

ふるって応募を!

907:デフォルトの名無しさん
08/03/26 23:31:48
POSTのときにQUERY_STRINGとれない環境もある

908:デフォルトの名無しさん
08/03/27 08:08:23
panel = wx.Panel(frm,-1)

こんなんがあって、panelをデストラクタするにはどうすれば良いんでしょうか。
ある状況でパネルを削除したいんですが。

909:デフォルトの名無しさん
08/03/27 08:24:14
panel.Destroy()
del panel
じゃね

910:デフォルトの名無しさん
08/03/27 08:27:21
おお!できました。
ありがとうございます。

911:デフォルトの名無しさん
08/03/27 18:49:43
297 :デフォルトの名無しさん:2007/12/23(日) 02:11:55
>>294=269 か?
メソッドオーバーロードはrubyではできない。こんな感じで自分で処理しなさい
def meth(arg)
 if arg.kind_of?(String)
  puts '文字列'
 else
  case arg
  when Array then puts '配列'
  else puts 'その他'
  end
 end
end

それとrubyの配列(Array)に次元なんて無い。配列が入れ子になってるだけ。

python だと、どう処理を描けば良いですか?

912:デフォルトの名無しさん
08/03/27 18:56:45
Pythonでも同じだよ
引数の型とか数を調べて分岐するだけ
というかrubyスレの話題を持ってこられると色々勘ぐりたくなるんだが

913:デフォルトの名無しさん
08/03/27 19:27:49
>>912
メソッドオーバーロード python
URLリンク(www.google.co.jp)

たまたまググッたら、それらしいコードが見つかったので
張ってみますた。深い意味はありませんです。。。

def mes(arg):
 if isinstance(arg, str):
  print '文字列'
 elif isinstance(arg, list):
  print '配列'
 else:
  print 'その他'

とか。引数に文字列渡して if arg == '文字列': elif arg == 'リスト': else:
みたいにするのとか。これくらいしか思い浮かばない罠。ご飯食べてくる

914:デフォルトの名無しさん
08/03/27 20:30:09
とりあえず思いついた適当なコード
import sys

class OverloadMethod(object):
    functions = []
    def __call__(self, *args, **kwargs):
        for function in self.functions:
            if len(args) == function.func_code.co_argcount:
                return function(*args)
        raise NotImplementedError

def overload(function):
    obj = sys._getframe(0).f_globals.get(function.__name__)
    if obj is None:
        obj = OverloadMethod()
    obj.functions.append(function)
    return obj

if __name__ == '__main__':
    @overload
    def foo(a):
        print a

    @overload
    def foo(a, b):
        print a + b

    foo(1)
    foo(1, 2)

915:デフォルトの名無しさん
08/03/27 20:55:23
Guido謹製
URLリンク(www.artima.com)

916:914
08/03/27 21:02:19
スゲーGuidoパパとほとんど一緒じゃん

917:913
08/03/27 21:16:33
>>914
def overload(function):
    obj = sys._getframe(0).f_globals.get(function.__name__)
    if obj is None:
        obj = OverloadMethod() # コンストラクタみたい
    obj.functions.append(function) # 関数をストックしてく
    return obj

>>> foo(1) # ストックした関数をポップする
>>> foo(1,2)
>>> foo(1,2,3) <class exceptions.NotImplementedError at 0x000000000000002C>

sys._getframe(0).f_globals のところを globals() にしたら
ironpython でも動作確認取れますた。
dir()で表示されるけど, まだ実装されてないのね…_getframe
ValueError: _getframe is not implemented

annotation で潜らしてポップするか…
勉強になりますた。dくす♪

918:デフォルトの名無しさん
08/03/28 02:15:51
>>913
キーワード引数

919:デフォルトの名無しさん
08/03/28 03:54:18
URLリンク(www.linux-foundation.jp)
何か意図的に抜いてるような…

920:デフォルトの名無しさん
08/03/28 09:23:04
Pythonだけに見事にハブられてますね

921:デフォルトの名無しさん
08/03/28 09:34:12
うわぁ・・・^^;

922:デフォルトの名無しさん
08/03/28 12:41:32
エーとおもたがperlも入ってなくね?
どういう基準かよくわからんな


923:デフォルトの名無しさん
08/03/28 12:43:15
Perl/PHP/Rubyは二重丸じゃないか

924:デフォルトの名無しさん
08/03/28 12:55:46
Pythonの擬似スレッドって、いずれちゃんとしたスレッドになる予定とかってないんですか?

925:デフォルトの名無しさん
08/03/28 13:03:26
GILのことなら多分とれないよ

926:デフォルトの名無しさん
08/03/28 14:53:41
以前にここに貼ってあったpython チートシートのリンクがみつからない

927:デフォルトの名無しさん
08/03/28 16:04:50
URLリンク(www.google.co.jp)
URLリンク(www.google.co.jp)


928:デフォルトの名無しさん
08/03/28 17:01:20
バイナリデータをファイルに書きたく思っています。
例えば4バイト整数10ならば、f.write('\x00\x00\x00\x0a') というように。

上記を、例えば f.write(hoge(10, 4)) で実現できるような
既存の関数hogeのようなものがあれば、ご教示頂けないでしょうか?
IEEE浮動小数点についても同様なものがあれば教えて頂きたいです。


929:デフォルトの名無しさん
08/03/28 17:02:41
URLリンク(www.python.jp)

930:デフォルトの名無しさん
08/03/29 05:46:36
pythonのワンライナーは超絶美的

931:デフォルトの名無しさん
08/03/29 08:24:23
urllib2のmultipart/form-dataサポートマダー


932:デフォルトの名無しさん
08/03/29 10:05:49
>>931
ドキュメントにツカエネーヨって書いてあるし今更機能仕様を変える気もないんじゃね?
これはもう自分でurllib3を作るしか

933:デフォルトの名無しさん
08/03/29 10:08:34
urllib2ってメモリリークするよね?

934:デフォルトの名無しさん
08/03/29 15:02:28
python で 宣言できる関数の上限値とかどれくらいなんだろうか?
1万-10万…

10万くらいなら動きそう? メモリ上に保持できる辞書としての
要素数の限界値? (よくわからん)

935:928
08/03/29 15:12:30
>>929
おー、これですこういうのです。超速レスありがとうございました!

936:デフォルトの名無しさん
08/03/29 15:43:27
>>934
import sys

def mksrc(n):
  print """
def %s():
  return %d
""" % ('func%d' % n, n)

if len(sys.argv) < 2 or not sys.argv[1].isdigit():
  print 'usage: hoge.py N'
else:
  for i in range(int(sys.argv[1])):
    mksrc(i)
  for i in range(int(sys.argv[1])):
    print 'print func%d()' % i


$ hoge.py 100001 > fuga.py
$ fuga.py
とりあえず10万は楽勝みたいだ
あとは任せた


937:デフォルトの名無しさん
08/03/29 16:00:39
100万は死んだ
ファイルサイズにワロス

938:デフォルトの名無しさん
08/03/29 16:03:39
100万通過

>>937
OSとかメモリ容量とかによるんで内科医


939:デフォルトの名無しさん
08/03/29 16:18:24
おまいら阿呆だな

まで読んだ



最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5386日前に更新/203 KB
担当:undef