トップページ⇒tech
1001コメント340KB

1からPythonを学ぶスレ

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
「Python」って何?
0002デフォルトの名無しさんNGNG
人生の敗北者でも使えるPythonのお勉強 Part3
http://pc2.2ch.net/test/read.cgi/tech/1053955472/
0003名無しさん@初心者NGNG
>>> a = 0;b = 10
>>> while a < b:
・・・ print a,
・・・ a = a + 1
・・・
0 1 2 3 4 5 6 7 8 9 ダァ〜!!
>>>数え杉。
0004デフォルトの名無しさんNGNG
a += 1
0005デフォルトの名無しさんNGNG
from 1 import python
0006デフォルトの名無しさんNGNG
パイソンを覚えたらどんなメリットがあるの?
0007デフォルトの名無しさんNGNG
CraftLaunchExが便利に使えるようになる
0008デフォルトの名無しさんNGNG
Pythlon
0009デフォルトの名無しさんNGNG
>>7
そんなわからんものが使えてもうれしくない
0010デフォルトの名無しさんNGNG
zope を拡張できるようになれる
0011デフォルトの名無しさんNGNG
>>10
ますますわからん
それはえっちなものなのか?
0012デフォルトの名無しさんNGNG
>>2
学校の情報系の先生が皆python狂なんだど
皆、敗北者だったのか
0013名無しさん@EmacsNGNG
>>1
Python は見やすい構文と、使えるライブラリ、とっつきやすいインタプリタが売り物。

これは個人的な感想だけど、Perl がワンライナーのような
「一発ネタ」に向いているのに対して、
Python はどちらかというとじっくり考えて組むようなプログラムに向いてると思う。
(ソースがきれいだし複雑なデータ構造が扱えるから。)

プロトタイプ作成とか、グルー言語 (C で書かれたモジュールをつなぎ合わせる)
として使う人もいる。構文が簡単なため、入門用言語としてすすめる人もいる。

欧米ではかなりの人気だが、日本では
Ruby のほうが相対的に有名なため、Python はマイナーだと思われている。
0014デフォルトの名無しさんNGNG
>>13==1
重複スレの削除依頼はまだか?
0015名無しさん@EmacsNGNG
これは「1から」だからいいんじゃないかと思ったんだけど。
0016デフォルトの名無しさんNGNG
上級者と初級者での棲み分けは人気言語だけの特権だとでも?
0017名無しさんNGNG
(゚Д゚)ゴルァ
学べや!
0018デフォルトの名無しさんNGNG
http://www.python.org/~guido/
guidoマンセー
0019デフォルトの名無しさんNGNG
削除以来しとけよ。
0020デフォルトの名無しさんNGNG
─- 、::::;;;;;;;;;`゙゙''‐ 、    __,,,,......,,,,_/:::::::::/: !|   >>3->>10 ごめん >>1 は童貞だから許してやって
  . : : : : : : `゙'ヽ、:::゙ヾ´::::::::::::::::::::::`゙゙゙'''‐'、. l|
、、 . : : : : : : : : r'":::::::::::::::::::::::::,r':ぃ::::ヽ::::::::ヽ!                 ,、- 、
.ヽ:゙ヽ; : : : : : :ノ:::::::::::::::::::::;;、-、、゙:::     rー-:'、                /   }¬、
. \::゙、: : : :./::::::::::::::;、-''"::::::::::   ,...,:::,::., :::':、            _,,/,,  ,、.,/   }
   ヽ:ヽ、 /:::::::::::::::::::::::::     _  `゙''‐''"  __,,',,,,___       /~   ヾ::::ツ,、-/
     `ヽ、:::::::::;;;、、--‐‐'''''',,iニ-    _|  、-l、,},,   ̄""'''¬-, '  ''‐-、 .,ノ'゙,i';;;;ツ
   _,,,、-‐l'''"´:::::::'  ,、-'" ,.X,_,,、-v'"''゙''yr-ヽ / ゙゙'ヽ、,    ,.'      j゙,,, ´ 7
,、-''"    .l:::::::::::;、-''"  ,.-'  ゙、""ヾ'r-;;:l  冫、     ヽ、 /    __,,.ノ:::::ヽ. /
       l;、-'゙:   ,/      ゞ=‐'"~゙゙') ./. \    /  '''"/::::;:::;r-''‐ヽ
     ,、‐゙ ヽ:::::..,.r'゙         ,,. ,r/ ./    ヽ.   ,'     '、ノ''"   ノ
   ,、‐'゙     ン;"::::::.       "´ '゙ ´ /      ゙、 ,'            /

0021デフォルトの名無しさんNGNG
許したる
00221NGNG
うんこが食べたいです。
0023デフォルトの名無しさんNGNG
にゃあ
0024デフォルトの名無しさんNGNG
perlとPythonとSchemeどれを学ぶのがおすすめですか
0025デフォルトの名無しさんNGNG
python その後 Schemeかな?
私はScheme使ったこと無いのでえらいこと言えないが、
ttp://cruel.org/freeware/hacker.html
の IVの1を読んでみることをお勧めする。
0026デフォルトの名無しさんNGNG
>>3
肝心のインデントが消えちゃってるぞ
0027デフォルトの名無しさんNGNG
>>24
Perl以外
0028デフォルトの名無しさんNGNG
>>24
Schemeでゲームやパズルを解くとかAI的な方面で勉強したらどうでしょ
0029デフォルトの名無しさんNGNG
perlはよくないんだ
0030デフォルトの名無しさんNGNG
全ての精子は大事〜♪
0031デフォルトの名無しさんNGNG
>>30
それは、 Monty Python の映画、 Meaning of Life ('83) における
素晴らしいミュージカル風のシーンで歌われた歌の一節でしたっけ
0032デフォルトの名無しさんNGNG
ここは1がPythonを教えてくれる所じゃないんですか?
邪路に訴えますよ。
0033デフォルトの名無しさんNGNG
Every Sperm Is Sacred!
0034デフォルトの名無しさんNGNG
Perlもやれよ
0035デフォルトの名無しさんNGNG
sage
0036デフォルトの名無しさんNGNG
pythonをプログラムの入門用に使うとき、良い入門書はないでしょうか?
0037デフォルトの名無しさんNGNG
「爬虫類のひみつ」
0038デフォルトの名無しさんNGNG
>>36
Python Tutorial(日本語版)
http://www.python.jp/pub/doc_jp/tut_2.3/
0039デフォルトの名無しさんNGNG
これもいいかも。

インスタント・ハッキング
http://www.python.jp/Zope/intro/instant_hacking_jp

ちなみに上の二つは非プログラマ向けの文書の筆頭に挙げられている。
http://www.python.org/topics/learn/non-prog.html
0040デフォルトの名無しさんNGNG
なんだ、>>1 から Python を学ぶスレかと思ったよ。
00411 ◆x0qRLOoQFY NGNG

もうね
赤裸々に答えますよ
気合入れて質問ください
0042デフォルトの名無しさんNGNG
日本語の文字コードの変換はどうやればいいんですか?
0043デフォルトの名無しさんNGNG
日本語環境でのPython http://www.python.jp/Zope/articles/japanese/Python4Japanese
0044デフォルトの名無しさんNGNG
なんかヨさげですね。そのうち使ってみよう。
0045 ◆x0qRLOoQFY NGNG
>>43
>ファイル名操作
> [...] Windows環境では問題が発生します。Windowsではパス区切り文字が"\"で、
>全角文字の2バイト目が "\" に当たる場合があるためです。

Python2.3 + WinXP なのだけど、これはちょっと改善されているみたいで、
os.getcwdu() -> unicode が追加されています。

>>> import os
>>> os.chdir(unicode('/表\'))   #Shift_JISで'\'を含む文字をリテラルで書くためのよくあるクラッジ
>>> os.getcwd() #伝統的getcwdで、string型を返す
'C:\\\x95\\'
>>> os.getcwdu() #これは新機能で、unicode型を返す
u'C:\\\u8868'
>>> print os.getcwdu()
C:\表
0046デフォルトの名無しさんNGNG
>>45 そーゆう Windows での注意点のがまとまってるとこ知らない?漏れ UNIX 環境なんだけど、
WindowsXP とかも考えなきゃならなくなってさ…。なんでパスの区切りが \
なんだろ…。鬱で氏にそうだったところを >>45 のおかげで思いとどまったよ。
0047デフォルトの名無しさんNGNG
>>46
むしろ OS に依存しない書き方を追求すべきかも。
os.curdir とか os.path.join() とかその辺りを使う。限界あるけどね。
00481 ◆x0qRLOoQFY NGNG
>>36
"How to Think Like a Computer Scientist"
  by Allen B. Downey, Jeffrey Elkner and Chris Meyers
ttp://www.ibiblio.org/obp/thinkCSpy/
(published under GNU Free Document License)
目次より〜
Chapter 1: The way of the program
Chapter 2: Variables, expressions, and statements
Chapter 3: Functions
Chapter 4: Conditionals and recursion
Chapter 5: Fruitful functions
Chapter 6: Iteration
Chapter 7: Strings
Chapter 8: Lists
Chapter 9: Tuples
Chapter 10: Dictionaries
Chapter 11: Files and exceptions
Chapter 12: Classes and objects
Chapter 13: Classes and functions
Chapter 14: Methods
Chapter 15: Sets of objects
Chapter 16: Inheritance
Chapter 17: Linked Lists
Chapter 18: Stacks
Chapter 19: Queues and priority queues
Chapter 20: Trees
00491 ◆x0qRLOoQFY NGNG
>>45 で、
> os.chdir(unicode('/表\')) #Shift_JISで'\'を含む文字をリテラルで…
とありますが、Python 2.3 では、スクリプトファイルの先頭に
┏
┃# -*- encoding: cp932 -*-
 …のように文字コードを宣言するディレクティブを書いておくと、この余分な '\' は不要です。
つまりリテラルの「表」が次のように書けます。
┏
┃# -*- encoding: cp932 -*-
┃# このスクリプトファイルは Shift_JIS (cp932) で保存されています。
┃print unicode("表", "cp932")
┃print unicode("表", "mbcs")

さらに、わたしは \Python23\Lib\site-python\sitecustomize.py というファイルで
┃import sys
┃sys.setdefaultencoding("mbcs")
 …というように省略時の文字encodingを設定しているので、
┏
┃# -*- encoding: cp932 -*-
┃print unicode("表")
┃print "表".decode()
 …のように、個別のencoding指定を省略できます。 ついでにこの環境では
┏
┃# -*- encoding: cp932 -*-
┃print repr(unicode("表")
┃print repr(u"表")
 …というスクリプトの出力は、つぎのように直感に従った結果となります。
u'\u8868'
u'\u8868'

以上はWinXP 日本語版での経験ですが、要するに使ううえでShift_JISの問題というのは感じません。
0050デフォルトの名無しさんNGNG
>>47
漏れ自身は WindowsXP はあんまり使わないので Win 流儀自体よく知らないんです。
つーかドライブレターウザ-。Win だと拡張モジュールも使いにくいよね。ソース付けて
終りってわけにゃいかないし。やっぱ Win は Win 流儀に合わせないといけない予感。

>>49
おぉぉぉぉ神降臨!! 知らなかったぜ。
0051デフォルトの名無しさんNGNG
-*- encoding: XXX -*-
はファイル毎だからいいんだが、
sys.setdefaultencoding("XXX")
はシステム毎だから、それに依存したスクリプトを書くと
移植性が低くなる(他環境に持っていきづらくなる)のがなぁ……
でも u"表" とか書けるのは便利なんだよなぁ……
0052デフォルトの名無しさんNGNG
>>51
Python 2.3 だと sys.setdefaultencoding("ascii") のままでも
-*- coding: XXX -*- の指定だけで u"ほげ" って書けるね。
漏れも最近まで知らなかったので age(何故

$ cat test.py
# -*- coding: EUC-JP -*-
import sys
print sys.getdefaultencoding()
print repr(u"ほげ")

$ /opt/Python-2.2.2/bin/python test.py
ascii
u'\xa4\xdb\xa4\xb2'

$ /opt/Python-2.3/bin/python test.py
ascii
u'\u307b\u3052'
0053デフォルトの名無しさんNGNG
てかsageてるし(w
0054ちょっとおかしくない?NGNG
1からPythonを学ぶ・・ってスレタイにあるけど

Pythonって何?・・・て、これではどうやって1からPythonを
学ぶことができるのだろう。1は初心者のようだけど。
1がベテランじゃないと、1からPythonは学べないよ!!
0055デフォルトの名無しさんNGNG
重複すれなんだから、いいかげんageるのやめたら?
0056デフォルトの名無しさんNGNG
>>55
00571 ◆x0qRLOoQFY NGNG
>>54
ぴちょんのことなら何でも聞け。自称上級者の俺サマがどんな質問にも答えてやるぞ。

>>55
シャラップッ!!
0058デフォルトの名無しさんNGNG
>>54
まさか >>32 >>40 で2回も既出のネタを繰り返してるわけじゃないよな?
0059デフォルトの名無しさんNGNG
>>52
をを、ホントだ。ありが�d

前に試したときはrepr()抜きでprintしてエラー出してたよ。
print u'ほげ'.encode('euc_jp')
とかやればおけーなのね。
0060デフォルトの名無しさんNGNG
これからは -*- encoding: XXX -*- でソースのエンコーディングを指定できるのか!
うぉー 1 は俺よりは上級者みたいだ。アゲアゲアゲ!
0061デフォルトの名無しさんNGNG
>>60
ageなのかsageなのかはっきりシル
0062デフォルトの名無しさんNGNG
(・∀・)ニヤニヤ
00631 ◆x0qRLOoQFY NGNG
2005年もがんがんいくぜー。
ぴちょんのことなら何でも聞け。
自称上級者の俺サマがどんな質問にも答えてやるぞ。
0064デフォルトの名無しさんNGNG
>>1のレヴェルの低さを見たら、自分に自信がついたよ。
0065デフォルトの名無しさんNGNG
>>63
鬼が笑います
0066デフォルトの名無しさんNGNG
「pythonで学ぶプログラム作法」という本を読みながら学んでいるのですが、
時々、解説を省かれていたりしてつまります。
そこで、どこか初心者向けのpython解説HPを知らないでしょうか?

検索しても適当なpythonHPはみつけられませんでした・・・・・
0067デフォルトの名無しさんNGNG
>>66
適当に python sites
ttp://www.python.org/doc/current/tut/tut.html
ttp://www.honors.montana.edu/~jjc/easytut/easytut/
ttp://www.networkcomputing.com/unixworld/tutorial/005/005.html
00681 ◆x0qRLOoQFY NGNG
>>67
ttp://www.honors.montana.edu/~jjc/easytut/easytut/
→こいつはナイスなHPだ! だが、日本では二番目だ。
一番ナイスなPythonHPは、この「1から」スレだ!
なぜなら、わからないことを自称上級者の俺サマが
妥協なく解説してやるからな。

>>66は、どこでつまづいているのかを、赤裸々に書け。
まず自分の使っているOS(例: Windows 98、Mac OS-X 10.3、
Turbolinux10、超漢字、など)を告白しろ。

次に、どのようなところでつまづいているのかを書け。
例:
 ・コンピュータを起動するやりかたがわからない。
 ・その「本」で、使われている言葉がわからない。
 ・自分が誰なのかさえもわからない。→適切な病院へ行け
 ・Pythonのソフトがどこにあるかわからない。
 ・Pythonをインストールするやりかたがわからない。
 ・Pythonプログラムを実行するやりかたがわからない。
0069デフォルトの名無しさんNGNG
>>68は>>66に感謝し給え。
>>66以外にも良いサイトがあるのだが晒してやらねぇ。
00701 ◆x0qRLOoQFY NGNG
感謝するぜ! >>66
さあ、思う存分赤裸々に晒してくれ、良いサイトを!>>69
0071デフォルトの名無しさんNGNG
>>70

>>38
>>39
>>43
0072デフォルトの名無しさんNGNG
ttp://www.python.org/
0073デフォルトの名無しさんNGNG
ttp://www.vex.net/parnassus/
0074デフォルトの名無しさんNGNG
ttp://www.python.jp/Zope/articles/SoftwareTools
0075デフォルトの名無しさんNGNG
ttp://www.python.jp/Zope/
0076デフォルトの名無しさんNGNG
ttp://iblinux.rios.co.jp/PyJdoc/lib-j/
0077デフォルトの名無しさんNGNG
跳ねられたのでここまで(あと200コほどある)
00781 ◆x0qRLOoQFY NGNG
>>71-77
巳! (←乙と形がやや似ている)
0079デフォルトの名無しさんNGNG
せめて已とか己とかにしとけ。
0080デフォルトの名無しさんNGNG
『Pythonで学ぶプログラム作法』 (アラン・ゴールド著、松葉素子訳、ピアソン)[1]
この本のもとねたは、「Learning to Program」としてWeb↓で公開されているものですね。

http://www.freenetpages.co.uk/hp/alan.gauld/

[1] http://www.pearsoned.co.jp/washo/prog/wa_pro45-j.html
  原著 http://www.awl.com/product/0,2627,0201709384,00.html
00811 ◆x0qRLOoQFY NGNG
>>79 乙と巳は似ているよ!
from Tkinter import * ;# 2004-01-04, placed in the public domain.
otsu = [(15,20),(77,20),(45,41),(15,59),(15,76),(22,85),(78,85),(71,68)]
mi   = [(15,45),(74,45),(77,20),(15,20),(15,76),(22,85),(78,85),(71,68)]
c = Canvas(width=100, height=100)
top = c.winfo_toplevel()
def dismiss(ev):
    top.winfo_toplevel().destroy()
c.bind_all('<1>', dismiss)
L = []
v = otsu[:]
(x0, y0), v = v[0], v[1:]
for x1, y1 in v:
    L.append(c.create_line(x0,y0,x1,y1, width=9, capstyle='round'))
    x0, y0 = x1, y1
def morph(n):
    for i in L:
        x0, y0, x1, y1 = c.coords(i)
        c.itemconfig(i, fill='#%02x%02x%02x' % (0,128-128*n/10,0))
        c.coords(i, mi[i-1][0] + (otsu[i-1][0]-mi[i-1][0])*n/10.0,
                    mi[i-1][1] + (otsu[i-1][1]-mi[i-1][1])*n/10.0,
                    mi[i][0] + (otsu[i][0]-mi[i][0])*n/10.0,
                    mi[i][1] + (otsu[i][1]-mi[i][1])*n/10.0)
    c.update()
    n>0 and c.after(1000, morph, n-1)
c.pack(expand=YES, fill=BOTH);
top.resizable(NO, NO)
c.after(2000, morph, 10)
c.mainloop()
0082デフォルトの名無しさんNGNG
>>81
久しぶりに良い「技術の無駄使い」を見た気がする。乙
0083プログラミングって何さ?NGNG
 
0084>>83 そのまえに2chの使い方覚えろNGNG
 
0085デフォルトの名無しさんNGNG
オマエモナー
0086デフォルトの名無しさんNGNG
あげ
0087デフォルトの名無しさんNGNG
 あのー、スクリプトが始まる部分の意味が気になるですけど。
何と何が等しければ、動き出すの?
if __name__ == '__main__':
do()
0088デフォルトの名無しさんNGNG
__name__にはそのモジュールの名前が入ってる。
インポートされたときにはspam.pyなら'spam'のように。
インタプリタに直接渡されたときにはどんなファイルでも'__main__'となる。

つまり直接呼ばれたときだけdo()が実行されて、
インポートされたときには実行されない。
0089デフォルトの名無しさんNGNG
main()
{
python();
}
0090デフォルトの名無しさんNGNG
正直Pythonの利点がわからんわけよ。
オブジェクト指向や可読性ではRubyに負けてるし
、拡張つってもたとえばTcl/TkやCPANのような
他言語のコミュニティに依存してんじゃないの?
速度ではlispやperlに負けてるし。何なの?
0091デフォルトの名無しさんNGNG
利点がわからなければ使わなければいい。それだけのことだ。
0092デフォルトの名無しさんNGNG
勝ち負けをきめたがるのはがきっぽい
0093デフォルトの名無しさんNGNG
>>90
pythonの利点はc/c++との親和性にある。
この点で他の言語よりも優位な位置にいる。
0094デフォルトの名無しさんNGNG
親和性って具体的には?
0095デフォルトの名無しさんNGNG
>>93
FFI の話か、
ライブラリ拡張の話か、
組み込み言語として使う話か、
何れにしてもそんなに優れているかな。
0096デフォルトの名無しさんNGNG
移植のし易さ
0097デフォルトの名無しさんNGNG
>>88
親切にありがとう。本当に良くわかりました。
>>90
私は未だに、オブジェクト指向と関数型のどちらが有効か
確信が持てていません。その両方に対応しやすいスクリプ
ト言語として、実用と勉強のためにPythonを使っています。
それにZopeを活かしきるにも、pythonですね。
0098デフォルトの名無しさんNGNG
>>90 オマエが使ってないと言うだけで十分メリットがある。
そうだよ Ruby のほうがいいよ。オブジェクト指向では
Ruby の勝ちだよ。可読性も Ruby のほうが優れてるよ。
んじゃそーゆうことで、さよなら〜。優位性を確認して
納得したなら二度と来ないで下さい。
0099デフォルトの名無しさんNGNG
Python vs Ruby
"""So, how do Python and Ruby compare?
They look more similar to each other than
either does to Perl. What are the differences?"""
...
http://c2.com/cgi/wiki?PythonVsRuby
0100デフォルトの名無しさんNGNG
>>90を言い換えてみるテスト。

正直日本語の利点がわからんわけよ。
グローバル指向や可読性では英語に負けてるし
、国際化つってもたとえばアメリカや国連のような
他言語のコミュニティに依存してんじゃないの?
話者数では中国語やアラビア語に負けてるし。何なの?
0101デフォルトの名無しさんNGNG
正直 >>90 の存在がわからんわけよ。
ネタだとしたら人生終わってるし、本気だとしても
人間的として >>91 - >>92 に劣ってるし。
>>93-96 には余裕でマジレスされてるし。何なの?
0102デフォルトの名無しさんNGNG
可読性は仏語だ馬鹿野郎。
>話者数では中国語
そもそも中国語など存在しない。北京語 広東語 等々に分けろ馬鹿野郎。


つーか Ruby キモイ
0103デフォルトの名無しさんNGNG
>>101
>>94-95 は >>93 に対する突っ込みだと思うよ。
0104デフォルトの名無しさんNGNG
pyがperlより遅いというのは、そうでない場合もありますよ。
次の実験によれば、heap sortの例では pyのほうが、やや速い。
http://dada.perl.it/shootout/heapsort.html

一方 regexpはperlが速いのですが、2倍以上速いというわけでもない:
http://dada.perl.it/shootout/regexmatch.html

文字列の結合は pyが遅く、実装を反映して結構差が出ている。
http://dada.perl.it/shootout/strcat.html

などなど…
0105デフォルトの名無しさんNGNG
文字列と数をまとめて表示する方法で「`」ってのを
使うんですね。これって、どの言語から借用されて
いるんですか?
(b.toString()の方がいいけど、慣れの問題か)

a = "super"
b = 7
print a * `b`
0106デフォルトの名無しさんNGNG
>>102
ネタにマジレスするならちゃんとボケろよ。

> 可読性は仏語だ馬鹿野郎。

まったく意味不明だし。

> そもそも中国語など存在しない。

これも意味不明。つーかMandarinとか言っても通じないだろうと思って
分かりやすく書いたわけだが、あなた、相手に合わせてしゃべることが
できない人?
01071 ◆x0qRLOoQFY NGNG
>>105
`式` は、ABC言語からの継承だ。
http://homepages.cwi.nl/~steven/abc/qr.html#EXPRESSIONS

Pythonの作者GvRはABC言語の開発チームに居たのだ。(1982-86)
http://www.python.org/~guido/Resume.html
0108デフォルトの名無しさんNGNG
>>105
コードがヴァグってますよ。3行目で
TypeError: can't multiply sequence to non-int

>>> (7).__repr__()
'7'
というようにメソッド表記もじつはできるが変人以外は使わない。
0109デフォルトの名無しさんNGNG
>>107
ABC言語って、初めて聞きました。Matzさんとは違って、
このあたりは主張してますねー。ども!
>>108
ありがとうございます。かけちゃいました(^^;
(7)._repr_() ってのは確かに変態的ですね。`7`も
きてるように感じますが、ここも慣れましょう。
0110デフォルトの名無しさんNGNG
>>108
>>> print map((1).__add__, [0, 2, 4, 6, 8])

みたいな変態的なの書いたことがある・・・_| ̄|○

>>> import operator
>>> print map(lambda a: operator add(1, a), [0, 2, 4, 6, 8])

と比べてどっちが良さげだろう?
0111デフォルトの名無しさんNGNG
「operator.add」だった。
0112デフォルトの名無しさんNGNG
>>109
>Matzさんとは違って、
>このあたりは主張してますねー。
??
0113デフォルトの名無しさんNGNG
>>109
`式` に違和感があるなら repr(7) または str(7) でしょう。
`式` は、わたしもすこし恣意的な表記すぎるように感じる。

>>105 のような場合だと(bの数値が変化するとして)わたしなら
b = 7
print "super%d" % b
のように書きます。
0114デフォルトの名無しさんNGNG
>>112
すいません、ひっかかりました!?(^^;
Rubyって、やっぱり調べやすいんですよね。
Intオブジェクトのページを見れば、必要な
メソッドが見つかりますもの。
「`」を見つけるのに、googleで10分かか
ったです(600google)。pythonが悪いんじゃ
なくて、私の検索力かな。。

0115デフォルトの名無しさんNGNG
>>113
うう、初心者に付き合ってくれて多謝です。
str(7)と`7`の両方に慣れないといけないですね。
私、どの言語も初心者なので、全く苦じゃないです(^^)
>>114
b = 7
ans = "super%d" % b のような感じの
アプローチがあればうれしいかな。
どうでしょう。


0116デフォルトの名無しさんNGNG
>>110
map((1).__add__, 〜 の方はカリーイングしているわけですね。
気がきいている、うまい使いかただとおもいます!

でもこのスレッド的には、リスト内包表現のほうが
わかりやすくて好ましいのではないでしょうか。

「わかりやすくて」というのは、bound method
オブジェクトだの高階関数だのは、抽象レベルが
たかく、「1から…学ぶ」状態の人が理解するのに
ちょっとがんばらないといけないとおもうからです。
0117デフォルトの名無しさんNGNG
>>114
あなたがいま話題にしているようなことは、Python チュートリアルの
「7.1 よりファンシーな出力の書式化」で説明されています。
http://www.python.jp/pub/doc_jp/tut_2.3/node9.html

今あらためて読むと、「逆クォート (``) ではさむのは repr() と等価であるが、
利用は推奨しない。 」と書いてあって、あっそう という感じだ。
0118デフォルトの名無しさんNGNG
つーかRubyだの某氏だのと禿しく耳障りなんですけど。
どうしてRuby者はこうもステレオタイプが揃ってるんだろう。
ひょっとしてPython者も向こうで同じように振舞ってるのか?
0119デフォルトの名無しさんNGNG
RubyスレにPython者なんていないし。
0120デフォルトの名無しさんNGNG
>>116
> リスト内包表現のほうがわかりやすくて好ましいのではないでしょうか。

>>> print [a + 1 for a in [0, 2, 4, 6, 8]]

うぃ。
精進します・・・
0121デフォルトの名無しさんNGNG
>>115 の後半:
b = 7
ans = "super%d" % b

も、正しいプログラムですよ。もしそういうことを訊いているのなら。
'super7' という値を ans という名前で参照することになる。
0122デフォルトの名無しさんNGNG
>>117
"super%d" % b もOKなんですね。
>>121
正しいプログラムと好ましいプログラム。
「1から」の初心者としては、最初に基本形
のガイドラインがほしいですね。
>>120
内包表記は、基本形に入りますね。

0123デフォルトの名無しさんNGNG
>>122
repr(b) と "%d" % (b) にはそれぞれの想定用途があり、
ここであなたが仮定しているかもしれない「本質的な好ましさ」
みたいなものはありません。  >>117のリンク先に従って
実際に手を動かした後でもなお両者の意味がわから
なければ、またきて(より具体的に)質問してください。

repr(式) と `式` とでは、機能は同じで、 repr を使うのを推奨と
Python Tutorial を書いた人は(理由も述べずに)言っています。

「正しいプログラム」とはエラーを生じないという技術的な
ことです。(「国会議員として正しい振る舞い」というのと違って)
価値判断を含みません。
0124デフォルトの名無しさんNGNG
ようするに突出して優れたところがひとつも無いから
総合力で勝負ってことだな。よくわかった。
0125デフォルトの名無しさんNGNG
なんだか、まだ野良犬がうろついているようだね
0126デフォルトの名無しさんNGNG
アホはほっといて、インデントでもしようぜ。
0127デフォルトの名無しさんNGNG
>>126
> インデントでもしようぜ。
    爆笑w
    またーり汁!、って意味か?
0128デフォルトの名無しさんNGNG
い
 ん
  で
 ん
  と
0129デフォルトの名無しさんNGNG
初心者の質問です。解説書を読んでもはっきりわからなかったり
するのですが、インデントが同じ階層を指しているための条件って、
正確にはどんなんなのでしょう。
たとえば、タブの挿入数とスペースの挿入数が同じなら、見た目は
ずれていても同じ階層? それともタブ1つと、タブが飛ぶ桁数と同じ
スペース(4つとか)が同じ階層? タブ・スペース・タブなどごちゃ
ごちゃにまぜたときは、きっちり同じ入れ方じゃないと同じインデント
とは見なされませんか?

0130デフォルトの名無しさんNGNG
見かけがどうであろうと

タブ1個=スペース8個

とみなされる。混ぜるな危険。
インデントにタブは使わない。スペースを使うこと。
http://oldriver.org/python/pep-0008j.html
0131デフォルトの名無しさんNGNG
Guido はインデントにタブの使用を許可したことをずいぶん後悔しているそうだ。
0132デフォルトの名無しさんNGNG
ちなみに2chに貼るときは全角スペースに。
0133デフォルトの名無しさんNGNG
&nbsp;に置き換えるのも可。
全角スペースと違って直接コピペができて嬉しい。
0134129NGNG
>>130-133
どうもありがとうございました。タブは標準のインデントでは
ないのですね。
インデントに重要な役割を与えている割りに、いいかげんに
見た目だけ合わせられそうなのが、初心者としては結構怖い
感じでした。必ずスペースなら見た目とレベルが一致する
わけですね。

でもインデントはタブキーでしたいなあ。秀丸でできたっけ…
0135デフォルトの名無しさんNGNG
>>134
KaaEditを使えば?

タブインデントは正直恥ずかしい
堂々と公開しちゃってる奴たまにいるけど
0136デフォルトの名無しさんNGNG
>>134
IDLE 使ってれば問題無いよ。
0137デフォルトの名無しさんNGNG
pythonを-tオプション付きで起動すれば、変なインデントにはwarning出るよ。
-ttにしとけばエラーになる。これだと、さすがに標準モジュールは動くけど、
サードパーティーのモジュールが時折動かないという弱点がw
0138デフォルトの名無しさんNGNG
 
0139デフォルトの名無しさんNGNG
シフト演算子

>>>x=1 #0001
>>>x<<2 #2ビット分左シフト:0100
4

これはいちいち2進数で考えないとわからんのでしょうか?
というか何故2進数であらわすのかから判りません。
2ビット分?
0140デフォルトの名無しさんNGNG
>>139
何で「シフト演算子」って言うんだとおもう?
0141139NGNG
一応手順は判ったのですが、          1×2**2
何故2進数で左にシフト?2ビットという意味も相変わらずわからない
0142139NGNG
ビットの意味を理解しました。
0143デフォルトの名無しさんNGNG
>>141
それはCPUの中の人は二進数でしか計算出来ないから。
ビットというのはつまり二進数での一桁。
左シフト2、というのはつまり「二進数で2桁ずらす」ということ。
0144デフォルトの名無しさんNGNG
問題はなぜ python でビット演算子が必要なのか? ってことじゃないかな。
ビット演算をつかうと、ひとつの数値の中にいくつものデータを
埋めこむことができる。たとえば 8ビットの数値なら
2+3+3ビットの 3つの変数として使うことができる。

>>> (x,y,z) = (1,5,4) # 2bits, 3bits, 3bits
>>> byte = x<<6 | y<<3 | z
>>> print byte
108
>>> (a,b,c) = (byte>>6, (byte>>3)&7, byte&7)
>>> print (a,b,c)
(1, 5, 4)

まあ、今ではあまり使われないテクニックだけどね。。。
UNIX のシステムコールにはいまだにビット演算が必要なものもある。
たとえば chmod のパーミッションなどがそうだ。
0145デフォルトの名無しさんNGNG
べつにビット演算をつかわなくても同じことはできる。
たとえば 0〜9 の値をもつ 3つの変数を 0 〜 999 の数値に
押しこめることはできる (1ケタを 1つの変数とみなせばよいのだ)。
でも、計算機の内部表現はぜんぶ 2進数なので、ビット演算が一番効率よい。

たとえば 0 〜 999 を計算機のメモリに格納しようとすると、
これは 10ビット必要になるが、実際には 10ビットあれば
0 〜 1023 までの数値を表現できるので、使われない部分の数値 (1000〜1023) が
でてくる。この無駄をなるべくなくしたいと思うと、
結局 2の乗数が一番キリがいいという話になる。

文字列を 256進数の数値とみなすこともできる。
この場合、ビットシフトに相当する作業は文字列の読みとばしということになるね。
0146デフォルトの名無しさんNGNG
>>144
> 2+3+3ビットの 3つの変数として使うことができる。

スクリプト言語としては、そういうのは本来はビットフィールド型として処理すべきことなのでは?
シフト演算子を積極的に使うとしたら、ビットストリームを解釈/変換する時とか、かな・・・
例えばエスケープビットの処理とか。
0147デフォルトの名無しさんNGNG
ガイシュツだと思うけど、16進数リテラルとか8進数リテラルとか
hex() とか oct() みたいに2進数リテラルや bin() があるといいと尾も我。

>>> 0b1101
13
>>> bin(13)
0b1101
>>>
0148デフォルトの名無しさんNGNG
>>147
同意。
教育目的にはコンピュータの基本である二進数を手軽に表示出来ると良なんだけど。

MSX-BASIC とかだと有ったんだけどね。
0149デフォルトの名無しさんNGNG
二進数の変換は、これでいいのかな?

>>> def bin(n):
        s = ''
        while n > 0:
                if n % 2 == 0:
                        s = '0' + s
                else:
                        s = '1' + s
                n >>= 1
        return s

>>> bin(42)
'101010'
>>> int('101010', 2)
42
>>> bin(43)
'101011'
>>> int('101011', 2)
43
0150デフォルトの名無しさんNGNG
>>149
それの応用で oct も hex も変換可能だね。
「教育用」に敢て関数を作っていない?
0151デフォルトの名無しさんNGNG
def tni(a,b):
 if not 0 < a < 10:raise "勘弁してください"
 s=''
 while a:
  s=str(a%b)+s
  a=a/b
 return s

tni(42,2)   #'101010'
int(tni(42,2),2) #42
0152デフォルトの名無しさんNGNG
#bug fix
def tni(a,b):
 if not 1 < b < 10:raise "勘弁してください"
 s=''
 while a:
  s=str(a%b)+s
  a=a/b
 return s

tni(42,2)   #'101010'
int(tni(42,2),2) #42
0153デフォルトの名無しさんNGNG
#上のを base 36までに拡張
def tni(a, b):
        if not 1 < b < 37: raise ValueError, b
        digit = '0123456789abcdefghijklmnopqrstuvwxyz'
        s = ''
        while a:
                s = digit[a%b] + s
                a /= b
        return s

>>> tni(42, 2)
'101010'
>>> tni(42, 16)
'2a'
>>> tni(1000000, 36)
'lfls'
0154デフォルトの名無しさんNGNG
腹いせに age にょ★
0155デフォルトの名無しさんNGNG
a,bという2つのarrayがあるときに
function(a[i],b[j])の結果が[i,j]番めの要素になるような行列を作りたいのですが
どうすれば可能でしょうか。
fromfunction()を使えば可能かと思ったのですが、うまくいきません。

例:
a=arange(1,4,1)
b=arange(-2,1,1)
def area(i,j):
return a[i]**2+b[j]**2
として
c = fromfunction(area,(3,3))
とすると、
IndexError: each subindex must be either a slice, an integer, Ellipsis, or NewAxis
というエラーが出ます。

単にループでまわして[i,j]の要素に代入する以外のいい方法はないでしょうか。
0156デフォルトの名無しさんNGNG
def area() の中で print i, j すれば分かりますが,
Numeric.fromfunction(func, dimension) は,indices(dimension)
でインデクス行列をつくり,それを i, j として func(i, j) を一度だけ
しか呼び出しません.
従って,dimension=(m,n) なら, i, j はそれぞれ行列:
i=[[0,...,0],[1,...,1],...,[n,...,n]],
j=[[1,2,...,m],[1,2,...,m],...[1,2,...,m]]
になります.
Numeric には,インデクス集合から他の行列要素集合を参照するための
take() がありますから,それを使うとよいでしょう.
from Numeric import *
a=arange(1,4,1)
b=arange(-2,1,1)
def area(i,j):
 return a[i]**2+b[j]**2
c = fromfunction(area,(3,3))

0157デフォルトの名無しさんNGNG
おっと...
from Numeric import *
a = arange(0, 3)
b = arange(0, 3)
def area(i, j):
 return take(a, i)**2+take(b, j)**2
c = fromfunction(area, (3,3))
です.
0158155NGNG
>>156
take()というのがあったんですね。
これで目的の行列が作れるのも確認しました。
どうもありがとうございました。
0159デフォルトの名無しさんNGNG
>>> age
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: てゆーか 'age' なんて名前、定義されてねーし
>>>
0160デフォルトの名無しさんNGNG
>>153 の逆関数らしきもの

def atoi(s, digits):
 return reduce(lambda n,c: n*len(digits)+digits.index(c), s, 0)

>>> atoi("1234abcd", "0123456789abcdef")
305441741     # 0x1234abcd
>>> atoi("10010101", "01")
149        # 0b10010101
>>> f("lfls", "0123456789abcdefghijklmnopqrstuvwxyz")
1000000

digits に含まれない文字を入力すると ValueError になる。
0161デフォルトの名無しさんNGNG
>>160
カコイイ
0162160NGNG
訂正: f(...) は atoi(...) の間違いね。
0163デフォルトの名無しさんNGNG
>>> int('lfls', 36)
1000000
>>>
0164デフォルトの名無しさんNGNG
>>163
"Guido's Time Machine"ってやつだな。
必要な機能を自前で実装したあとに、
すでにPython自体にその機能が備わって
いたことに気づく。
0165デフォルトの名無しさんNGNG
>>164
そーゆーのって大きな言語(仕様とか蓄積とか)にありがちだよね。
JavaとかLispとか。そろそろPythonも大言語の仲間入りか。
0166デフォルトの名無しさんNGNG
今まで人のソースを読むときはEmacsで
そのまま読んでいたのだけどただ読んでるだけだと
わかりにくいからもっといい方法ない?
0167デフォルトの名無しさんNGNG
実行もしてみれ。
0168デフォルトの名無しさんNGNG
ttp://www.python.org/emacs/python-mode/
0169デフォルトの名無しさんNGNG
きょうぼくわファイルを分割したかったのですが
無かったのでつくりました。

"""div.py - file wo bunkatsu suru"""
import sys

SIZE = 1024*1024

fn = sys.argv[1]

infile = file(fn, 'rb')
n = 1
while True:
    buf = infile.read(SIZE)
    if not buf:
        break
    file(fn+'.%03d' % n, 'wb').write(buf)
    n += 1
infile.close()
0170デフォルトの名無しさんNGNG
なぜ infile は close するのに出力ファイルは close しないの?
0171デフォルトの名無しさんNGNG
>>169
下手な英語でも、コメントは外人さんも見る可能性があるから
自分は下手な英語で書いているけどどっちのほうがいいんだろ。

typoだと思うけど、「わ」はちょっと…。
0172デフォルトの名無しさんNGNG
>>169
誤:"""div.py - file wo bunkatsu suru"""
正:"""bunkatsu.py - fairu wo bunkatsu suru"""

徹底しなくちゃ。
0173デフォルトの名無しさんNGNG
>>171
君の場合どっちでも一緒ぽい。
日本語が既にヤバイ。1行目なんか主語がどれか分からんし述語ないやん。
0174171NGNG
>>173
ガ━━ΣΣ(゚Д゚;)━━ン!!

よく見るとと無 馬太..._〆(゚▽゚*)ですね。
母国語の修行に行ってきます。
0175デフォルトの名無しさんNGNG
>>136
うぅっ、やっぱりそうでしたか・・。
友人から種をもらったので軽い気持ちで育ててしまいましたが、
よく考えれば当たり前ですよね・・。

しかし、成体になるまで育ててしまったものを今さらどうしていいのやら・・
日曜の朝、エサを用意しわすれてでかけたら、
夜帰った時には80cm以上も移動していました・・・。
0176デフォルトの名無しさんNGNG
つり革?
0177デフォルトの名無しさんNGNG
>>175 何の種なのか、非常に気になる…。
0178デフォルトの名無しさんNGNG
>>175
ワロタ
0179デフォルトの名無しさんNGNG
if とか while とか for の条件部に = が指定できないんだけど。。

while line = file.readline():
print line

正しい書き方を見つけられなかったので>>1さん教えて。
0180デフォルトの名無しさんNGNG
age
0181デフォルトの名無しさんNGNG
>>179
例えばC言語では代入は式(expression)なのでifやwhileの条件部に書くことが
できるのに対して、Pythonの代入は文(statement)なので条件部に書くことは
できないにょ。よって次のように書く必要があるにょ。

while 1:
  line = file.readline()
  if not line:
    break
  print line

こういう書き方もあるにょ。ただしファイルの内容を一括して読み込むので
ファイルが大きいと大変なことになるにょ。ファイルが小さいことが分かってる
なら手抜きできて良いにょ。

for line in file.readlines():
  print line

Python 2.2以降なら次のように書けるにょ。この方法は実際には一行ずつ
読み込むのでファイルが大きくても大丈夫にょ。

for line in file:
  print line

動くプログラムは「正しい」ので好きなように書けば良いにょ。
0182デフォルトの名無しさんNGNG
xreadlines() は?
0183デフォルトの名無しさんNGNG
>>181
おお。サンキュー。なんだか面倒だなー。

んじゃ、そのループの中で

if result = title.match(line):
print result.group(1)

こういうことがしたい場合ってどうすればいいの?
0184デフォルトの名無しさんNGNG
「にょ」はヤメレ。
0185デフォルトの名無しさんNGNG
Pythonの代入はNoneさえ返さないにょろ。
result = title.match(line)
if result : print result.group(1)
もしくは例外を使うにょろ。
try:print title.match(line).group(1)
except AttributeError:hoge() #None.group() raises AttributeError
0186デフォルトの名無しさんNGNG
いい書き方とは思えませんが,
for resitem in title.findall(line)[:1]:
 print resitem.group(1)

0187デフォルトの名無しさんNGNG
フィゾンだと思ってたのに、パイソンだなんて・・・
0188デフォルトの名無しさんNGNG
Pythonの本二冊購入して勉強してるプログラム初心者なのですが、
プログラムを実際どうやって組むのかがわかりません。

型と演算子、基本文の章を読み終えはしたのですが。
ただ読んで、知識としてある程度覚えたって感じです。
勿論まだ読んでないとこのが多いので読みますが、
次に実践的なステップを踏むとしたら(組むとしたら)、
何を参考にするのがよいでしょうか?

良い本、サイト(英語読めません…)を知っておられるなら、
教えていただきたいです。
0189デフォルトの名無しさんNGNG
>>188
ttp://www.python.jp/pub/doc_jp/tut_2.3/
ttp://www.python.jp/Zope/articles/SoftwareTools
ttp://www.ibiblio.org/obp/thinkCSpy/
ttp://www.vex.net/parnassus/
0190デフォルトの名無しさんNGNG
>>189
プログラム初心者の人はいきなりチュートリアルをよんでも、理解できないよ!
0191188NGNG
>>189
1行目のリンクみたいなforとかrange()関数などを
具体的にどう活用すればいいのかがよくわからんのです。
今まで読んできた部分(本)を一応理解
(その場その場で言ってることを判ってはいる、という意)は
してるつもりですが、書けといわれたら書けそうにない。
…たとえば学校の数学の授業とかみたいに、
演習問題が欲しいのかもしれません。
…それをどういう方法で進め発展させていけばいいのか、とか。
0192デフォルトの名無しさんNGNG
>>191
作りたいプログラム(最初は簡単そうなの)をとりあえず作ってみる。
似たようなプログラムを探して、そのソースの解読を試みる。

など。最初は設計とかしないで手あたり次第に作ってみたほうがいい
かもね。

それにしても何もプログラム経験なさそうだけど、いきなりpythonとは
ある意味猛者だな。。
0193デフォルトの名無しさんNGNG
>>188
> プログラムを実際どうやって組むのかがわかりません。
どうやって組むか以前に、プログラムで何をしたいのか決まってますか?
cf: 「Word の基礎は覚えたのですが、どうやって小説を書くのかわかりません」

0194デフォルトの名無しさんNGNG
> それにしても何もプログラム経験なさそうだけど、いきなりpythonとは
> ある意味猛者だな。。

python は教育用言語でもあるからいきなりでもええと思うが。
0195デフォルトの名無しさんNGNG
英語がわからないといいつつ、Pythonをやっている時点で、、、

PHPとかRubyやればいいのに、、、
Perlは(ry
0196188NGNG
>>192-194
皆さんありがとうございます!

とりあえず、>>192さんの方法でこつこつやっていくことにします。
Pythonは、プログラムはじめるには良い言語と某サイトにあったので・・
>>193 漠然とならあるのですが・・・・
0197デフォルトの名無しさんNGNG
漏れがガキの頃にはプログラムのソースコードが載った雑誌があって
それをチマチマと打ち込むことがプログラムの勉強になってた気がするにょ。
結果的に他人が作ったプログラムを熟読することになるし、
変更を加えて遊んでみるのも自然な成行きだったにょ。

今じゃソースコードは電子媒体で手に入るから打ち込む必要はないし、
敢えてそうするメリットも感じられないに違いないにょ。
それだけに、意識して実際に自分の手で既存のプログラムをいじって
動かしてみることが必要だと思うにょ。

とは言うものの、初心者が読んでいじれる規模のプログラムってのは
意外と少ないかもしれないにょ。モジュール化が進んでブラックボックスが
増えてるし、プログラミングを実地に学びにくくなってる気がするにょ。
0198デフォルトの名無しさんNGNG
minix のコードを全部 python に直す作業をすると上達するよ >>188
0199デフォルトの名無しさんNGNG
Python で学ぶプログラミング作法 を買って演習問題を片っ端から…
0200デフォルトの名無しさんNGNG
なんで今さら minix?w
0201デフォルトの名無しさんNGNG
>>196
とりあえず「テキストファイルを加工するプログラム」あたりから
始めると良。

例えば 2ch のログを個別の発言に分離する、とか。
0202デフォルトの名無しさんNGNG
> テキストファイルを加工するプログラム

100% python でできたエディタって無かったっけ?
0203デフォルトの名無しさんNGNG
pygame も入れて、サンプルのチンパンジー叩きを改造してみる、というのもいいかも。
0204デフォルトの名無しさんNGNG
>>201
>「テキストファイルを加工するプログラム」
といえば名著 "Software Tools"
邦題だと「ソフトウェア作法」ってやつ
RATFORで書かれたコードをPythonに変換するのも面白いんじゃないかな

# 若かりし頃Cに変換したヤシがこの板にも沢山いるはずさ
0205デフォルトの名無しさんNGNG
100% python X window manager
ttp://sourceforge.net/projects/plwm/
0206デフォルトの名無しさんNGNG
100% python editor
ttp://www.rexx.com/~dkuhlman/
ttp://sourceforge.net/projects/pype
0207デフォルトの名無しさんNGNG
100% Monty Python
ttp://100montypython.tripod.com/
0208デフォルトの名無しさんNGNG
ほら、やっぱり196みたいに真に受けて路頭に迷う奴がいるじゃないか。
Pyみたいに建て増しに次ぐ建て増しの
温泉旅館みたいな仕様の言語が教育に向くとかいうのはいいかげんやめろよ。>機じるし
0209デフォルトの名無しさんNGNG
>>208
初めてプログラミングを学ぶ人に Python を勧めている人はたくさんいるよ。
漏れも勧めたい。

"Internet Programming with Python" by Aaron Watters, Guido van Rossum, and James C. Ahlstrom
http://www.fsbassociates.com/books/pythonchpt1.htm
> Python is also easy to learn and use, so it could also serve as an interface
> for naive users of advanced applications, or as a first programming language.

"Python as a First Language" by John M. Zelle
http://mcsp.wartburg.edu/zelle/python/python-first.html

"Python as a First Programming Language for Everyone" by Dr. Toby Donaldson
http://www.cs.ubc.ca/wccce/Program03/papers/Toby.html

"Python as a First Language" by Cameron Laird
http://www.oreillynet.com/pub/a/network/2000/06/02/magazine/python_first_language.html
0210デフォルトの名無しさんNGNG
http://cruel.org/freeware/hacker.html
おれはこれ読んでPythonから始めたにょろ。
0211デフォルトの名無しさんNGNG
ただ漠然と「プログラミングができるようになりたい」なんて奴は
どんな言語を使おうがものにはならない。
何が作りたいものがあるなら、熱意がさめないうちにひたすらそれをやれ。
最初から正しいやり方なんてものを求めていたら、すぐに飽きる。
ある程度慣れてから体系的な勉強をすればしっかり身につくようになる。

具体的な目標がなければ、プログラミングはあまり楽しくはならないだろう。
なにか別の趣味 (例: このスレで煽るとか) を見つけたほうがいい。
0212デフォルトの名無しさんNGNG
>>208
そんなこと漏れらに言われてもこまるよー。TSPython行って機印に噛み付けば?
>>196
漠然でもいいからやりたいことを挙げて、ここでコード晒しながら勉強したら?
>>210
漏れもそこで興味持った。それまでBisonと区別できてなかった。
0213デフォルトの名無しさんNGNG
>>196
動機付けしてあげよう。クラスや関数を学ぶのは後回しだ。
まずwgetをインストールして
http://pc.2ch.net/test/read.cgi/unix/979106537/
行って実践。for, %s, %i, 正規表現の使い方にまず慣れる。
stringモジュールも。(オレはHTMLParserまで逝っちまった)
そのうちに、「何か同じようなコードを何回も書いてるなー」
と思ったら関数やクラスを作る良いきっかけになるだろう。

ミイラとりがミイラになるかもしれんが。
0214デフォルトの名無しさんNGNG
>>212
> それまでBisonと区別できてなかった。

Σ(・∀・;)エェーッ?!
0215デフォルトの名無しさんNGNG
>>196 >>201
http://pc2.2ch.net/test/read.cgi/tech/1068824510/568-569
にある、過去ログ検索スクリプトを、Pythonに置きかえるとか。
オリジナルはRuby製です。
Programingだけじゃなくて、NamazuとかMakefileとか入ってしまうからつらいか………
0216196NGNG
>>201 >>215
その辺のプログラムの組み方からしてよくわからんです。
手順がわからない。今まで本読み進めてただけの状態に近いので、
自分でイメージできてない模様。

>>210
私もそこ読んでpythonはじめました。

とりあえず、本に書いてある何かのプログラム組む様子を見ながら実際に書き、
わからないところは随時基本ページに戻る、というやり方に。

まずプログラム組む以前のとこがわかっていない気がするので、
組む以前対象の本を図書館で探しましたが・・・_| ̄|○

Pythonで書かれたソースコードを探しましたが見つけられませんでした・・・
0217196NGNG
Code Beachというところで、ソースコードらしきもの発見
0218デフォルトの名無しさんNGNG
> ythonで書かれたソースコード
>>189(ttp://www.vex.net/parnassus/)

# 学習を兼ねてアンテナを純 python で recoding してほしいな…
0219デフォルトの名無しさんNGNG
>>218
ttp://sourceforge.jp/projects/pyano/
0220デフォルトの名無しさんNGNG
>>219
やっぱりあったのか…
つーか
sourceforge.jp/projects/kittywalk/
が 188 向けじゃね?(活発さ0%だけどw)
0221デフォルトの名無しさんNGNG
>>216
そこまで分かっていないレベルならそれこそ有りがちな「ワードカウント」あたりから始めるのが良。

それが出来たら今度は特定の文字列を含む単語のある行だけ表示するツールを作ってみる。

とにかくテキストファイルを読んで何かして print する、というプログラムをネタを思いつく限り作ってみる。

最終的には自分で考えた方式でマークアップしたテキストを変換し html を出すスクリプトを作る。

これくらいまでやれば何か得るところがあると思うよ。
0222デフォルトの名無しさんNGNG
Pythonを勉強してちょっと判らないところがありましたので皆様にお聞きしたいと思ます

参考書の最初の所に「モジュールファイルの実行」と言う節がありまして、そこでは
テキスト
ファイルに保存されているPythonの実行方法が紹介されていました。具体的な内容としては
「spam.py」と言うテキストファイルを作成し、以下の文を保存するような内容が書かれていました。

import sys #←spam.pyの中身です
print sys.argv #

そして、保存し終えた「spam.py」をPythonコマンドへの引数としてこのファイル名を指定し
て実行してくださいと書かれています。

% python spam.py -i eggs -o bacon #←コマンドの実行例
['spam.py', '-i', 'eggs', '-o', 'bacon'] #←実行結果

参考書には上記のような実行例が紹介されています。しかし、自分の環境下で上記のコマンドを
実行しても参考書と同じような物になりません。
0223デフォルトの名無しさんNGNG

>>> python spam.py -i eggs -o bacon #←Python付属のPython(command line)
で実行
File "<stdin>", line 1 #したらこのような形になりました。
python spam.py -i eggs -o bacon

SyntaxError: invalid syntax
>>>

ちなみにその参考書にはWindows環境で実行する例も紹介されています。

C:\book\tests>python spam.py -i eggs -o bacon
['spam.py', '-i', 'eggs', '-o', 'bacon']

上記の例を参考に「コマンドプロプトン」上で「spam.py」を実行しても、参考
書のと同じような結果を得る事が出来ません。何がいけないのですか?

0224デフォルトの名無しさんNGNG
おい>>1、さっさと俺にPythonを教えろよ。
0225デフォルトの名無しさんNGNG
>>223
> 上記の例を参考に「コマンドプロプトン」上で「spam.py」を実行しても、参考
> 書のと同じような結果を得る事が出来ません。
エラーメッセージか何か出るだろう。それを書きなさい。
0226222NGNG
指定されたパスが見つかりません。
と出ます
0227デフォルトの名無しさんNGNG
>>223
Windows 環境で使っているようなので(それならそうと書いた方がいいよ)
それを前提に話をすると,
Python (command line) を起動すると対話モードの Python が起動します.
つまり Python はもう起動されていて,「>>>」は Python 自体のプロンプト
です.ここではスクリプトを指定できません.参考書には対話モードのことも
書いてあると思います,よく読んで違いを理解してください.
二つめのコマンドプロンプトで実行する例では,Windows が python.exe
を見つけられないために失敗しています. python.exe のある場所を
指定するか,環境変数 PATH に python.exe のある場所を追加しなければ
なりません.python.exe のある場所はインストールした Python の
バージョンによって異なります.
(本家のインストーラを使った場合)
Python 2.2 -> C:\Python22
Python 2.3 -> C:\Python23
(PyJUG の日本語インストーラを使った場合)
Python 2.2 -> C:\Python22jp
Python 2.3 -> C:\Python23jp (だったと思う)
ですから,例えば本家インストーラの Python 2.3 系を使っているなら
C:\Python23\python.exe spam.py -i eggs -o bacon
のようにして Python のある場所を絶対パスで指定して実行します.
絶対パスだとか,環境変数の設定だとかいう話は,Python固有の話題ではなく
オペレーティングシステムの操作全般の話題ですから,コマンドプロンプト
の説明が載っている Windows の参考書を調べてみてください.

0228222NGNG
ありがとうございます 参考書をよく読んでみます
0229デフォルトの名無しさんNGNG
この質問は FAQ のような気がする。DOS 窓で python コマンドを実行できる
ようにする設定手順を示した(できれば日本語の)ページってないの?
0230デフォルトの名無しさんNGNG
>>222
キリトリ線以下をメモ帳に貼りつけて
実行したいスクリプトと同じフォルダにdummy.pyという名前で保存。
dummy.pyをクリック
python spam.py 等の実行したいコマンドを入力
-----------キリトリ---------------
import os , sys
while 1:
 line=raw_input("$dummy>")
 if line[:6] == "python":line=sys.executable+line[6:]
 os.system(line)
0231デフォルトの名無しさんNGNG
とりあえずHTMLからタグを取り除くコード書いてみました
if とかwhileばっかりで。
こんなのに丸1日近くかかったけど、でも楽しくなってきました。一応役に立ったし。
0232デフォルトの名無しさんNGNG
>>231
次は re.compile("<[^>]*>", re.S).sub("", s) を使って1行で済ませてみよう。
0233231NGNG
>>232
ガビーン…1行でなんてできるのですか。。
↓ちなみにこんなのです…。

infile = raw_input("どのhtmlのタグをカットしますか: ")
outfile = raw_input("カットしたファイルの名前を入れて下さい: ")

f1 = open(infile)
f2 = open(outfile,"w")

char = f1.read(1)
while char:
if char == '<':
while 1:
char = f1.read(1)
if char == '>':
char = f1.read(1)
break
if not char:
break

if not char == '<':
f2.write(char)
char = f1.read(1)

f1.close()
f2.close()

print "できました。"
0234デフォルトの名無しさんNGNG
>>233
インデントが消えててよく分かんないけど
アプローチとしてはいいんじゃない?
コンパイラの字句解析器みたいで折れは好きだ。
0235デフォルトの名無しさんNGNG
>>231 のプログラムを改良するとしたらこんな感じかな。

1. f1.read(1) を何回もやるのは長いファイルだと効率が悪い。
 これをいっぺんに 1000文字ぐらい読むようにできないか? つまり、バッファの実装だ。
 でも < 〜 > がバッファの境界をまたがることがあるので少し考える必要がある。
 (実際にはpython内部でバッファリングされているんだろうけど、こういう感覚は大事)

2. <!-- --> の中は SGML のコメントだが、これも取りだしたいと思ったらどうする?
3. カットするファイル名をコマンドライン引数から取れるようにしたい。

プログラミングはこうしたパズル的な感覚をつかめないと上達しないので、
いきなり re とかの高等なライブラリを使うのは感心しない。
0236デフォルトの名無しさんNGNG
HTMLタグをとりのぞく:

>>> import urllib, sgmllib
>>> page = urllib.urlopen('http://www.python.jp/Zope')
>>> class MyParser(sgmllib.SGMLParser):
...     def handle_data(self, data):
...         print data.decode('euc-jp').encode('shift_jis'),
...
>>> p = MyParser()
>>> p.feed(page)

shift_jis等の文字エンコーディングは実行環境にあわせて変更してください。

              * * *

>>235におけるご意見に対して、わたしは目的にあった抽象度の
高いライブラリがあるならば、適宜、利用したらよいと思います。
すべての人がプログラミングに上達する必要にコトサラ迫られて
いるわけではなく、コンピュータを使って問題を解決できさえ
すればよいという状況もあるからです。
チナミニわたしは職業的プログラマではなく、将来そうなる
つもりもありません。
0237235NGNG
>>236
もっともな意見ですが、231氏はまだ若そうに見えたので。
ラクをしたがるのは年寄りになってからでいい。
0238デフォルトの名無しさんNGNG
>>237
> ラクをしたがるのは年寄りになってからでいい。
逆だと思う。
むしろ若い頃から既存ライブラリ機能の再利用を試みる癖をつけて、
バグの再発明を繰り返さないようにするべきだと思う。
職業プログラマになるのなら、なおさら。
0239222NGNG
>>230
やってみたのですが次のようになってしまいます

$dummy>python spam.py -i eggs -o bacon
C:\Python22jp\python.exe: can't open file 'spam.py'
0240デフォルトの名無しさんNGNG
>>222
dummy の下に spam.py がありますか?
0241デフォルトの名無しさんNGNG
>>237
昔に比べれば相対的に楽になってるだろ
パンチカード使わなくてもコンピュータ動くし
0242デフォルトの名無しさんNGNG
>>238
使える道具は使え、という説には同意。
ただ、>>233のコードは正規表現を使う方法とは別の発展の方向性がある。
正規表現は複雑なロジックは書けない(書きにくい)から、条件や反復を駆使して
自前で処理の流れを作る(努力をする)ことには意味があると思われ。
0243デフォルトの名無しさんNGNG
要するにアルゴリズムを学べるよ、ってことだね。
メモリ管理の視野に入れて実装する感覚を養えや(゜Д゜)ゴルァ!!だろ?言いたいことは。
0244デフォルトの名無しさんNGNG
(・∀・)え?
0245230NGNG
>>239
dummyとspamは同じフォルダに有る?
0246239NGNG
dummyとspamは同じフォルダに有ります
dummyの下にspamがあるとはどういうことでしょうか?
0247デフォルトの名無しさんNGNG
コマンドプロンプトで dir と入力して,
$dummy>dir
ドライブ C のボリューム ラベルは ...
...
2004/03/12 21:36 <DIR> .
2004/03/12 21:36 <DIR> ..
2004/03/12 21:36 63 spam.py
...
$dummy>

のように spam.py が出ますか?
もし spam.py でなくて, spam.py.txt や spam~1.txt と出ている
ようなら,おそらくあなたは notepad.exe でプログラムを書いている
のでしょう.スクリプトを保存するときに,「ファイルの種類」を
「全てのファイル」にして保存してください.「テキスト形式」で
保存すると,名前の後ろに勝手に .txt を付けられるのでダメです.
0248デフォルトの名無しさんNGNG
いつのなったらPythonの話に入れるやら
0249239NGNG
>>247
spam.py.txtとでていました
ファイルを保存しなおしたら参考書と同じ実行結果になりました
本当にありがとうございました
0250デフォルトの名無しさんNGNG
>>242
あたかも再利用が努力なしに可能だと言ってるような感じがするヨ。

>>233のやりたい事が正規表現からはみ出したら、
自分でコードを書く前に、再利用できるコードが他にないか探すべき。
どうしても見付からなかったら、最後の手段として自分で実装する。

大抵の若い子は、最初から自分で実装しようとする。
そのほうが楽だから。同じような事をしているコードを探し当てて、
そのコードを理解して、そのコードに対する正しい再利用の方法を考える、
これは努力を要する。
でも職業プログラマになるのならば、メンテへのコスト意識があれば、
ぜひとも習慣付けるべきことだと思う。
0251233NGNG
なんか駄目な書き方をしてしまった?
モジュールとかライブラリの勉強をするべしってことでしょうか。
精進します。アドバイスくれた方ありがとう。感謝。
0252デフォルトの名無しさんNGNG
>>233
書いたコードを元にいろいろやってみると面白いかもよ(235)
楽をしたければそのための手段もあるよ(232)
ということだと思うよ。
0253デフォルトの名無しさんNGNG
>>250
> あたかも再利用が努力なしに可能だと言ってるような感じがするヨ。

冗談抜きで日本語の読解にかなり問題があると思われ。
0254デフォルトの名無しさんNGNG
>>233
> if char == '<':
の後、">"まで読み飛ばした後、
> continue
を入れたほうがいい。
そうすると、そこより下ではchar == '<'の場合は考えなくてよくなる。
すると、
> if not char == '<':
の条件が不要になる。

今回は特殊な扱いをする対象が"<"だけだからそれほど面倒にはならないけど、
もっと複雑な条件になった時には、ちゃんとcontinueを入れないと混乱するよ。
0255デフォルトの名無しさんNGNG
ハトに食パンやったら祭りになってた
0256デフォルトの名無しさんNGNG
なんだかよくわからんが
暗い奴だ>>255
0257デフォルトの名無しさんNGNG
今から Python-2.3.3 をインスコします。
次に何をすればいいのでしょうか?
0258デフォルトの名無しさんNGNG
アンインストールしてください
0259255NGNG
>>256
おめー氏にたもうことなかれ
0260デフォルトの名無しさんNGNG
>257
Unix系ならログインシェルをPythonにする。
0261デフォルトの名無しさんNGNG
>>260
できるの?できるのならばそれはどうやって?
0262デフォルトの名無しさんNGNG
# chsh -s /usr/bin/python spam
0263デフォルトの名無しさんNGNG
>261
当然できる。
ログインシェルがEmacsとかも普通にいる。
最近見かけたのではログインシェルがgaucheって人はちょと驚いた。

ただしログインシェルを変更する事による影響とかはPython以前の知識なので
それを知る必要はあるが。
0264261'NGNG
ログアウトしてログインしなおしたら、コマンドが全然使えなくなりました。
戻そうと思ったのですが、何度やっても
>>> chsh /bin/bash
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'chsh' is not defined
と出て戻せません。どうしたいいのですか?
0265デフォルトの名無しさんNGNG
>>264
エラー目セージの通りじゃねえの?>>264さんのpythonのトップ環境に
'chsh'が定義されていないだけと思われ。というわけでlet's define 'chsh'!
0266デフォルトの名無しさんNGNG
>264
Pythonで外部コマンド呼び出す方法御存知ですか?
chsh では直接呼べません。
0267デフォルトの名無しさんNGNG
以下を参照してください。
http://www.python.jp/pub/doc_jp/lib/module-commands.html

import commands
commands.getstatusoutput('chsh /bin/bash')

はい、これで commands モジュールの利用方法覚えましたね?
0268デフォルトの名無しさんNGNG
ほんとにログインシェル変更(する|させる)なんてあふぉだろ。
Python勉強するのに何の意味もない
0269デフォルトの名無しさんNGNG
てゆーかネタだよ。ダッシついてるし。
0270デフォルトの名無しさんNGNG
Perlをログインシェルにしてる人は結構いるけど、あまり初心者向けではない。
でも普段Shellでやっている事をPythonでやってみる事はモジュールの勉強にはなるかもしれない。
0271デフォルトの名無しさんNGNG
http://tinyurl.com/2kwau
↑ここでやっている企画はもうやらないのでしょうか?
0272デフォルトの名無しさんNGNG
>>270
まるでsタソみたいな言い草だな。藻前パイプもリダイレクトもジョブ制御も
使わないくせにシェル使い気取ってるだろ。モジュールの勉強って正気か?
あふぉ杉。
0273デフォルトの名無しさんNGNG
いくら python をシェルにできるといっても
zsh を捨てる気にはならないよ。
0274デフォルトの名無しさんNGNG
python
0275デフォルトの名無しさんNGNG
ヤバイ超ヤバイ。不動産のチラシマジヤバイ。
まず。築五分。これだけでもやばいのに
築五分なんてもんじゃない。
駅から五年。
何処の駅からだよ。
とにかく不動産はチラシだす前に推敲したほうがいいとおもいます。
0276デフォルトの名無しさんNGNG
>>275
import win32com.client, time, os, marshal, binascii
data = marshal.loads(binascii.a2b_base64(
  "WwgAAABzJQAAAIKxgvGCyYK/gs2BQo6EgsyWvJFPgs2DfYFbg4qDk4LFgreBQgpz"
  "CQAAAILGgrGC64LFCnMrAAAAg4SDb4NDkrSDhINvg0OBQpVzk66OWYLMg2CDiYNW"
  "g32DV4OEg2+DQ4FCCnMmAAAAgtyCuIFCknqM3JWqgUIKgrGC6oK+gq+CxYLgguKC"
  "zoKigsyCyQpzGwAAAJJ6jNyVqoLIgvGCxILggvGCtoLhgsiCooFCCnMNAAAAiXeC"
  "qYLnjNyUToFCCnMTAAAAib2PiILMiXeCqYLngr6C5oFCCnM/AAAAgsaCyYKpgq2V"
  "c5OujlmCzYNgg4mDVoK+greRT4LJkISdyIK1gr2C2YKkgqqCooKigsaCqILggqKC"
  "3IK3gUIK"))
mpath = None
for i in ['WINDOWS', 'WINNT']:
  path = "C:\%s\MSAGENT\CHARS\MERLIN.ACS" %(i)
  if os.path.exists(path):
    mpath = path
if mpath == None:
  print "No merlin. Had you asked him about a martin?"
  raise SystemError
Agent = win32com.client.Dispatch("Agent.Control.2")
Agent.Connected = 1
Agent.Characters.Load("Merlin", mpath)
Merlin = Agent.Characters("Merlin")
Merlin.Show()
for i in data:
  Merlin.Speak(i)
  time.sleep(len(i)/5.5)
Merlin.Hide()
0277デフォルトの名無しさんNGNG
漏れだったらこう書くかな。

for i in ['WINDOWS', 'WINNT']:
  mpath = r"C:\%s\MSAGENT\CHARS\MERLIN.ACS" % i
  if os.path.exists(mpath):
    break
else:
  print "No merlin. Had you asked him about a martin?"
  raise SystemError
0278デフォルトの名無しさんNGNG
mpath = os.path.join(os.getenv('WINDIR'), r'MSAGENT\CHARS\MERLIN.ACS')
if os.path.exists(path):
  ...
else:
  print "No Merlin. ...
0279デフォルトの名無しさんNGNG
PerlやRubyにおけるtrのようなものはPythonではどうやればいいんでしょ。
おしえてえろい人
0280デフォルトの名無しさんNGNG
re.sub(pattern, replace, input)
ttp://www.python.jp/pub/doc_jp/lib/node103.html#l2h-826
input.replace("fromstr", "tostr")
ttp://www.python.jp/pub/doc_jp/lib/module-string.html#l2h-811
0281デフォルトの名無しさんNGNG
280はエロいな・・・・
0282279NGNG
ttp://age.s22.xrea.com/talk2ch/trip_new.txt
280のを参考に↑をPythonで書こうとしたけど俺の頭じゃ無理でした。
$salt =〜 tr/\x80-\xFF/\x00-\x7F/;
これをPythonではどのように書けばいいかご存知の方いませんか?
0283デフォルトの名無しさんNGNG
chars = ''.join([chr(x) for x in range(256)]) # 0x00-0xFF までの文字列
table = chars[0x47:0x5B] # 0x00-0x13 の置き換え
    +chars[0x61:0x7B] # 0x14-0x2D の置き換え
    +chars[0x2E:0x7B] # 0x2E-0x7A は置き換えない
    +chars[0x2E:0x33] # 0x7B-0x7F の置き換え
    +chars[0x00:0x80] # 0x80-0xFF の置き換え
としておいて
trip = crypt.crypt(string.translate(salt, table))

0284デフォルトの名無しさんNGNG
table作るときの行の折り返しには¥を使ってね
02851 ◆x0qRLOoQFY NGNG
>>282

>>> import string
>>> table = string._idmap[:128] * 2
>>> s = '\x7f\x80\xff'
>>> s.translate(table)
'\x7f\x00\x7f'
>>>
0286デフォルトの名無しさんNGNG
正攻法で tr を実装してみた。エラーチェックしてないけど一応動くっぽい。
このコードは public domain に置くものとする。

import re

re_range = re.compile("(.)-(.)")

def expand_range(match):
    i = ord(match.group(1))
    j = ord(match.group(2))
    return "".join(map(chr, range(i, j + 1)))

def expand(e):
    return re_range.sub(expand_range, e)

def tr(s, f, t):
    def replace(match, f=expand(f), t=expand(t)):
        return t[f.index(match.group())]
    r = re.compile("[" + f.replace("[", r"\\[").replace("]", r"\\]") + "]")
    return r.sub(replace, s)

if __name__ == "__main__":
    assert tr("ABRA-CADABRA", "ABCDR", "abcdr") == "abra-cadabra"
    assert tr("ABRA-CADABRA", "A-DR", "a-dr") == "abra-cadabra"
    assert tr("ABRA-CADABRA", "-A-DR", " a-dr") == "abra cadabra"
    assert tr("ABRA-CADABRA", "A-DR-", "a-dr ") == "abra cadabra"
0287279NGNG
レスをくれた方々ありがとうございます。とりあえずできたっぽいので晒しておきます。
>>286
これ相当に便利ですね。
本体に取り込んでもらえると幸せになれる人が結構いそう。。。
#!/usr/bin/env python
# -*- coding: japanese.shift_jis -*-
import japanese, string, crypt
from tr import * # from http://pc5.2ch.net/test/read.cgi/tech/1061640768/286

tripkey = unicode('kami', 'sjis')
salt = tripkey.encode('sjis') + 'HG'
salt = tr(salt, ':;<=>?@[\]^_`', 'ABCDEFGabcdef')
salt = tr(salt, '\x80-\xFF', '\x00-\x7F')
salt = tr(salt, '\x7B-\x7F', '\x2e-\x32')
salt = tr(salt, '\x14-\x2D', '\x61-\x7A')
salt = tr(salt, '\x00-\x13', '\x47-\x5A')
trip = crypt.crypt(tripkey.encode('sjis'), salt[1:3])
print trip[-10:]

chars = ''.join([chr(x) for x in range(256)])
table = (chars[0x47:0x5B] + chars[0x61:0x7B]+ chars[0x2E:0x7B] + chars[0x2E:0x33]) * 2
table = string.translate(table, string.maketrans(':;<=>?@[\]^_`', 'ABCDEFGabcdef'))
tripkey = unicode('kami', 'sjis')
salt = tripkey.encode('sjis') + 'HG'
salt = string.translate(salt, table)
trip = crypt.crypt(tripkey.encode('sjis'), salt[1:3])
print trip[-10:]
0288デフォルトの名無しさんNGNG
緊急不浄
0289デフォルトの名無しさんNGNG
(^Д^)ぬるぽ
0290デフォルトの名無しさんNGNG
hoge
0291デフォルトの名無しさんNGNG
http://heika-love.cool.ne.jp/futasuke.htm
0292デフォルトの名無しさんNGNG
Numericのarrayで質問です。

あるarrayに対して、その値が条件を満たしているインデックスを
取り出す方法はありますでしょうか。
たとえば[1,2,3,4,5,]というarrayに対して
3以上という条件を与えたときに[2,3,4,]を返すといったような
感じです。

ご存知の方がいらっしゃいましたらご教授御願します。
0293デフォルトの名無しさんNGNG
>>292
こゆこと?
>>> [index for index, item in enumerate([1, 2, 3, 4, 5]) if item >= 3]
[2, 3, 4]
>>>
0294デフォルトの名無しさんNGNG
>>293 だと Numeric.array 型を返さないから,
a = array([1,2,3,4,5])
Numeric.compress(greater_equal(a, 3), a)
( x>3 なら greater(a, 3), x>=3 なら greater_equal(a, 3) )
を使ってはどうですか.
ttp://www.pfdubois.com/numpy/html2/numpy-7.html
ttp://www.pfdubois.com/numpy/html2/numpy-9.html#pgfId-36520
0295デフォルトの名無しさんNGNG
質問を読み違えていました...
nonzero(greater(a, 3))
です.
ttp://www.pfdubois.com/numpy/html2/numpy-9.html#pgfId-58067
0296292NGNG
>>295
ありがとうございました。
ご教授いただいた方法でできました。

マニュアルの該当箇所も示していただいて感謝です。
0297デフォルトの名無しさんNGNG
PythonでCGIみたいなものを作るときにZopeを使って作るのと
直接(printf関数を使って)作ることの違いを教えてください。
0298デフォルトの名無しさんNGNG
>297
逆に一緒だと思う理由が知りたい
0299デフォルトの名無しさんNGNG
>>297
基本が分かっていない印象
Pythonで簡単なCGIでも作ってみれば?
たとえば掲示板とかさ
で、Zopeでおなじ機能のものを作ってみれば
2つの差が身に沁みてわかるだろう

考えるより手を動かしてみれ
0300デフォルトの名無しさんNGNG
#!/chroot/bin/cgipython
# -*- encoding: japanese.euc_jp -*-

print u"Content-type: text/html; charset=EUC-JP\n"
print u"<html><body>\u306c\u308b\u307d</body></html>"
0301デフォルトの名無しさんNGNG
>>300

#!/chroot/bin/cgipython ←これどこかの商用サービス?
0302デフォルトの名無しさんNGNG
>>300
charset=EUC-JP???
0303デフォルトの名無しさんNGNG
モグリ?>>301
0304デフォルトの名無しさんNGNG
モーグリ
0305<ヽ`∀´>NGNG
<ヽ`∀´> ageニダ!
0306デフォルトの名無しさんNGNG
>>> import lib2ch
>>> thread = lib2ch.open("tech", "1061640768")
>>> thread.age()
>>>
0307デフォルトの名無しさんNGNG
代入文が値を返さないようですが、次のように書きたいときはどうしていますか?

if spam = get_spam():
spam.sell()
elif eggs = get_eggs():
eggs.eat()

やっぱりこのように書かなければいけないのでしょうか:

spam = get_spam()
if spam:
spam.sell()
else:
eggs = get_eggs()
if eggs:
eggs.eat()
0308デフォルトの名無しさんNGNG
うん。
0309デフォルトの名無しさんNGNG
>>308
どうもです。タブインデントを失敗してすみませんでした。
0310デフォルトの名無しさんNGNG
>>309
navi2ch だとちゃんと見えてるからいいよ。
0311デフォルトの名無しさんNGNG
保守
0312デフォルトの名無しさんNGNG
http://python.org/2.3.4/
0313RNGNG
>>81
感銘を受けました。
Tkinterを私は使った事がなかったので、これを機会に勉強してみようと思いました。
0314デフォルトの名無しさんNGNG
最近Pythonはじめた。正確にはJythonだが。かなりいいね
0315デフォルトの名無しさんNGNG
Jythonのアドバンテージって何?
0316デフォルトの名無しさんNGNG
Java でコードを書かなくても JVM で動くプログラムを作れて、
jar 化して配れる。
Java で作ったクラスを Jython から呼べるし、 Jython で書いたクラスも
Java から使える。
0317デフォルトの名無しさんNGNG
>>316
これはすごい便利。
Javaって,書きにくいし
0318デフォルトの名無しさんNGNG
>317
BeanShellでよくネ?
Python文法好きだけど.
0319デフォルトの名無しさんNGNG
漏れはJavaの方が書きやすいな。Pythonの方が読みやすいが。
つまり他人はPythonで書いてくれ、漏れはJavaで書く、ってのが
理想。
0320デフォルトの名無しさんNGNG
すると自分で書いたJavaを読むのは他人ということか。
0321デフォルトの名無しさんNGNG
>>320
自分の書いたPerlよりましでしょ
0322デフォルトの名無しさんNGNG
自分の書いた下手な字は何とか読めるが
他人の書いた下手な字は読めないしな。
0323デフォルトの名無しさんNGNG
過去の自分という他人の書いた下手な字も。
0324デフォルトの名無しさんNGNG
"""Knight 2000"""
from Tkinter import Tk, Canvas
W, H, N = 400, 20, 8
root = Tk()
can = Canvas(root, width=W, height=H, highlightthickness=0)
scanner = []
for i in range(N):
    scanner.append(can.create_rectangle((W/N)*i, 0, (W/N)*(i+1), H, fill='#000000'))
def decrhex(val):
    return '%02x' % (int(val, 16) / 2)
def move(item, direction):
    for i in scanner:
        color = can.itemcget(i, 'fill')
        newcolor = '#%s%s%s' % (decrhex(color[1:3]), decrhex(color[3:5]), decrhex(color[5:7]))
        can.itemconfig(i, fill=newcolor)
    item += direction
    can.itemconfig(item, fill='#ff0000')
    root.after(150, lambda: move(item, direction))
    if item <= 1 or item >= N:
        direction = -direction
can.pack()
move(1, +1)
root.bind_all('<Escape>', lambda ev: root.destroy())
root.title(__doc__)
root.mainloop()
0325デフォルトの名無しさんNGNG
"""Karr in wxPython"""
from wxPython.wx import *
W, H, N = 400, 20, 10
class KarrApp(wxApp):
  def OnInit(self, *args, **kw):
    self.frame = wxFrame(None, -1, __doc__)
    self.panel = wxPanel(self.frame, -1, size=(W, H))
    self.frame.SetSizer(wxBoxSizer(wxVERTICAL));
    self.frame.GetSizer().Add(self.panel);
    self.mdc = wxMemoryDC();
    self.mdc.SelectObject(wxEmptyBitmap(W, H))
    self.brushes = [wxBrush(wxColour(0xff>>i, 0, 0)) for i in range(N, 0, -1)+range(N)]
    self.colour_stat = [N/2-1, 1]
    self.frame.Fit()
    self.frame.Show(True)
    self.timer = wxTimer(self, -1);
    EVT_TIMER(self, self.timer.GetId(), self.OnTimer)
    self.timer.Start(100)
    self.SetTopWindow(self.frame)
    return True
  def OnTimer(self, evt):
    for i in range(N):
      self.mdc.SetBrush(self.brushes[i+self.colour_stat[0]])
      self.mdc.DrawRectangle((W/N)*i, 0, (W/N)*(i+1), H)
    if self.colour_stat[0]%N == 0: self.colour_stat[1]*=-1
    self.colour_stat[0] += self.colour_stat[1]
    wxClientDC(self.panel).Blit(0, 0, W, H, self.mdc, 0, 0)
app = KarrApp(0)
app.MainLoop()
0326デフォルトの名無しさんNGNG
>>324 GJ。わろた
>>325 動かない…なぜだろう
0327デフォルトの名無しさんNGNG
>>326 wxPython を入れていないか、全角スペースを半角スペースに置き換えてない。
0328デフォルトの名無しさんNGNG
>>325
wxTimerにGetIdがないと言われる…… -1で置き換えたら動いた
0329デフォルトの名無しさんNGNG

         ∧_∧
  (○)   (∀・  )
  ヽ|〃    (∩∩  )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0330デフォルトの名無しさんNGNG
if文で括弧を使いたい・・・
0331デフォルトの名無しさんNGNG
>>329
tupleタソ参上ッ(*´ω`*)
0332デフォルトの名無しさんNGNG
>>330
if (hoge < 2):
  pass
0333325NGNG
"""Jython-based ImiTaTion of K2000"""
from java import lang, awt, util
W, H, N = 400, 20, 8
s_colors = [awt.Color(255>>i, 0, 0) for i in range(N, 0, -1)+range(N)]
class JITT(util.TimerTask):
  def __init__(self):
    self.frame = awt.Frame(__doc__, windowClosing=self.exit)
    self.canvas = JITTCanvas()
    self.canvas.setSize(W, H)
    self.frame.add(self.canvas)
    self.frame.pack()
    self.color_stat = [N/2-1, 1]
    util.Timer().schedule(self, 0, 100)
  def run(self):
    if self.color_stat[0]%N == 0: self.color_stat[1]*=-1
    self.color_stat[0] += self.color_stat[1]
    self.canvas.marker = self.color_stat[0]
    self.canvas.repaint()
  def exit(self, evt): lang.System.exit(0)
class JITTCanvas(awt.Canvas):
  def __init__(self, config=None):
    awt.Canvas.__init__(self, config)
    self.marker = 0
  def setmarker(self, i): self.marker = i
  def paint(self, g):
    for i in range(N):
      g.setColor(s_colors[self.marker+i])
      g.fillRect(i*W/N, 0, W/N, H)
JITT().frame.setVisible(1)
0334デフォルトの名無しさんNGNG
テレビは部屋を明るくして見ましょう。

from Tkinter import *

def exchange():
    if canvas["bg"] == "blue":
        canvas.config(bg="red")
    else:
        canvas.config(bg="blue")
    root.after(30, exchange)
root = Tk()
canvas = Canvas(root, bg="blue")
canvas.pack(fill=BOTH, expand=True)
root.after(30, exchange)
root.mainloop()
0335デフォルトの名無しさんNGNG
jython JDK1.5で動かん。
0336デフォルトの名無しさんNGNG

m9っ・∀・) ドーン!!!
0337デフォルトの名無しさんNGNG
JDK1.5はJythonをソースからコンパイルしなおさないとmojix。
0338デフォルトの名無しさんNGNG
あの方の名前は勘弁してよ。
0339デフォルトの名無しさんNGNG
mojix さんって有名人なのでしょうか?

どこのページを見ればそのひとについてわかりますか?
0340デフォルトの名無しさんNGNG

>>339 釣りがどうか知らんが、
http://pc5.2ch.net/test/read.cgi/php/1079778836/
0341デフォルトの名無しさんNGNG
オープンソースWeb技術をやっている人なんですか?
0342デフォルトの名無しさんNGNG
ロジックの質問になるんですけど、
次数を指定して順列をリストにして返す関数を作りたいです。

順列って、次数3の時は、これの結果ですけど、
[(x,y,z) for x in range(3) for y in range(3) for z in range(3) if x != y and y != z and z != x]
これの次数を引数にして、順列を返してくれる関数ってのが、うまく作れません。
うまい方法があれば教えてくだたい。>>1
0343デフォルトの名無しさんNGNG
いまだにスレタイの真意が分からん
初歩から学ぶのかあるいは1が神なのかが
0344デフォルトの名無しさんNGNG
>>343
イイヨイイヨー
実にxxxxxxをやってそうな奴の書き込みだ。

「初歩から学ぶ」 なら「1からPythonを学ぶスレ」
「1が神」なら「>>1からPythonを学ぶスレ」

と自明だろうに。
0345名無しさん@そうだ選挙に行こうNGNG
ttp://www1.u-netsurf.ne.jp/~merita/python/python40.html
ttp://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/126037
0346名無しさん@そうだ選挙に行こうNGNG
>>344
それは自明でない。
そうではなくて>>1の内容から前者であることが自明である。
0347名無しさん@そうだ選挙に行こうNGNG
いや、>>1 はクイズ形式で教えようとしていたのかもしれん。
0348名無しさん@そうだ選挙に行こうNGNG
>>342
順列生成は古典的な例題だからアルゴリズムの本を見ればソースが載ってるよ。
それを Python で書き直せばよいと思われ。
0349デフォルトの名無しさんNGNG
2ちゃんねるにPythonコードを貼り付ける前にインデントを&nbsp;にするWin用ツールです。
実行すると、クリップボードのテキストデータを書き換えます。

(その1)
"""htmlify clipboard data (for Windows)"""
#2004-07-11, placed into the public domain.
#c.f. http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/150115
import re
from cStringIO import StringIO
import win32clipboard as cb
from win32con import CF_TEXT

def htmlify(src, dst):
    for line in src:
        line = line.expandtabs(8)
        line = line.replace('&', '&amp;')
        line = line.replace('<', '&lt;')
        line = line.replace('>', '&gt;')
        line = re.sub(r'\s{2,}', (lambda m: m.group().replace(' ', '&nbsp;')), line)
        dst.write(line+'\r\n')
0350デフォルトの名無しさんNGNG
>>349 (その2)
def getText():
    cb.OpenClipboard()

    s = cb.GetClipboardData(CF_TEXT)
    cb.CloseClipboard()
    return s

def setText(s):
    cb.OpenClipboard()
    cb.EmptyClipboard()
    cb.SetClipboardData(CF_TEXT, s)
    cb.CloseClipboard()

def main():
    buf = StringIO()
    htmlify(getText().splitlines(), buf)
    setText(buf.getvalue())

if __name__ == '__main__':
    main()
03511 ◆x0qRLOoQFY NGNG
>>342 再帰構造を見つけるのだ!
>>343-344,346 1は紙だ!

def removed(elem, seq):
    newseq = list(seq[:])
    newseq.remove(elem)
    return newseq

def permute(seq):
    if len(seq) < 2:
        return list(seq)
    elif len(seq) == 2:
        return [[seq[0], seq[1]], [seq[1], seq[0]]]
    else:
        out = []
        for head in seq:
            for tail in permute(removed(head, seq)):
                out.append([head] + tail)
        return out

if __name__ == '__main__':
    from pprint import pprint
    pprint(permute(range(4)))
0352342NGNG
ブラボーです。神ですね。>>351>1
再帰関数って私は学校の時に、なんか演習でフラクタル図形を描いた以外にはやった事がなくて、参っていました。今後、>>351を参考に作りたいと思いますね。

>>348
実は、私はこれについて、なにも調べたりせずに独自で作ってました。で、こんなのが出来てきました。凶悪です。
作成中で、まだ関数にしてないですし、変数の名前もヒドイですが、結果は結構出ています。インデントはここに貼るために全角スペースにしました。便利なので、Kaaeditで作っています。おまけに、コメントも

from operator import mul
from random import randint
deg = randint(2,5)
print '= '*20,deg
degKai = [reduce(mul, range(1,i+1)) for i in range(deg,0,-1)]+[1]
lsRet = []
for i in range(0,degKai[0],1):
  tmp =[]
  lsDeg = range(deg)
  for j in range(1,deg+1):
    tmp.append(lsDeg.pop((i/degKai[j])%(deg-j+1)))
  lsRet.append(tmp)
for l in lsRet: print l
0353342NGNG
なんかコピペしたり、改行減らしたりしてたら、文章がおかしくなりました。
アイデアとしては、順列の作るときに pop を使おうと思ったのと、
順列に 0 から番号を振り、その番号から順列を作れないかな?と考えた点です。
自分で作って「これは激しいな」と思いました。

例えばこれが4次の時の pop のインデックスになるリストのリストです。↓
[(x,y,z,v) for x in range(4) for y in range(3) for z in range(2) for v in range(0)]
あまりうまい説明が見付かりませんけど。
0354342NGNG
>>353のリストで1箇所間違ってました。
[(x,y,z,v) for x in range(4) for y in range(3) for z in range(2) for v in range(1)]
です。最後が for の range がの引数が違ってました。
>>352も改めて見ると、キタナ過ぎですね。w
手元で上手く直せたらまた、貼りますね。
0355デフォルトの名無しさんNGNG
>>342

deg = 4
kai = reduce(lambda a,b:a*b, range(1,deg+1))

lsIdx = []
for i in xrange(kai):
  lsTmp = []
  for j in range(1,deg+1):
    lsTmp.insert(0,i%j)
    i = i/j
  lsIdx.append(lsTmp)

lsPer = []
for i in xrange(kai):
  lsTmp = []
  lsPop = range(deg)
  for j in lsIdx[i]:
    lsTmp.append(lsPop.pop(j))
  lsPer.append(lsTmp)

for i in xrange(kai):
  print i,lsIdx[i],lsPer[i]
0356デフォルトの名無しさんNGNG
こんなのはどうかなぁ.

import copy, operator
def permute(n):
  if n == 0:
    return [[0]]
  return reduce(operator.concat, [[p[:i]+[n]+p[i:] for i in range(n+1)] for p in permute(n-1)])

for i in xrange(4):
  plist = permute(i)
  plist.sort()
  print len(plist), plist
0357デフォルトの名無しさんNGNG
実行したら激しく低速だった.
0358342NGNG
レスありがとうございます。>>356
コード量としては、最小ですね。
It's a sony!(スラング「こいつぁすげぇぜ」の意)
って感じですね。

最近になってやっとそのURLが私へのレスと分かり、その辺見入りました。>>345
下のURLにある、commentのアルゴリズムが全く完全に最強っぽかったです。
大変参考になりました。ありがとうございました。
0359デフォルトの名無しさんNGNG
ソース見てたら
勃起した。
0360デフォルトの名無しさんNGNG
list comprehension を入れ子にする必要なかったね.
def permute(n):
  if n == 0:
    return [[0]]
  return [p[:i]+[n]+p[i:] for i in range(n+1) for p in permute(n-1)]

にしたら大分高速になりました.
2.4 の generator expression を使って,generator を返させるとこうなります.
def permutec(n):
  if n == 0:
    return [[0]]
  return (p[:i]+[n]+p[i:] for i in range(n+1) for p in permutec(n-1))

g = permutec(6)
while True:
  try:
   print g.next()
  except:
   break

これだと generator を返すので,permute(10000000) とかやっても一瞬.

あと,>>351 のコードを2.4a1 で実行したら
TypeError: list objects are unhashable
になった.なぜだろう.
0361デフォルトの名無しさんNGNG
>>359
正常です
0362デフォルトの名無しさんNGNG
これはすごいですね。It's a sony過ぎですね。>>360
generatorとは、私はまだ触れたことがないのですけど、xrangeみたいなものですね?
ものすごく適切な実装に思えます。
ただ、結果の順序がlexicographic orderでないのですけど、sortって出来るのでしょうか?
0363342NGNG
def permutec(ls):
  ln = len(ls)
  if ln == 1: return [ls]
  ls = [ls[i:i+1]+p for i in range(ln) for p in permutec(ls[:i]+ls[i+1:])]

  return ls

from random import randint
from time import time

n = randint(2,8)
cst = -time()
g = permutec(range(n))
cst += time()
#for i in g: print i
print n,'次順列',cst,'sec'

私も>>360さんに習って作ってみました。
そして、これはちゃんと辞書式順序で結果が返されます。
個人的には「出し切った」なと、思ってます。(w
あとgeneratorが気になるのですけど。
0364342NGNG
さらにn個のリストからのm個の抽出に対応してみました。

def permutec_m(ls,m):
  if m == 1: return [[j] for j in ls]
  return [ls[i:i+1]+p for i in range(len(ls)) for p in permutec_m(ls[:i]+ls[i+1:],m-1)]
# # # test
from random import randint
from time import time

n = randint(2,6)
m = randint(1,n-1)
cst = -time()
g = permutec_m(list('ABCDEFGHIJK'[:n]),m)
cst += time()
for i in g: print i
print (n,m),'順列',len(g),cst,'sec'
0365342NGNG
今度はLLサタデーを意識して、n-queen問題をやってたりして。<私
0366デフォルトの名無しさんNGNG
342さん、待ってるから…
0367デフォルトの名無しさんNGNG
in $PYTHON/Lib/test/test_generators.py l.967:
# A conjoin-based N-Queens solver.
...
0368342NGNG
実は土曜日までにやろうと思い、上手くいかなくてグッタリしていました。
待っている人がいたとは、すいません。
斜めのロジックは後から付け足すとして、縦横の(nナイト問題?)にしてやってみます。
0369342NGNG
だいぶアレですが、n-kight問題と言うことで
def nknight(deg,lst=None):
  if lst == None: lst =[[ '' for x in range(deg)] for y in range(deg)]
  return line(lst)
  
def line(ls):
  if len(ls) == 1:
    tmp = ls[0][:]
    tmp[ls[0].index('')] = '○'
    return [tmp]
  lsRet=[]
  for i in range(len(ls[0])):
    tmp=[]
    tmp.append(['●']*len(ls[0]))
    for l in ls[1:]:
      tmp.append(l[:])
    if ls[0][i]=='':
      tmp[0][i] = '○'
      for l in tmp[1:]:
        l[i] = '●'
      for s in line(tmp[1:]):
        lsRet.append(tmp[0]+s)
  return lsRet

# # # # # # # # # # # # # # # # # # # #
print '# '*20
rec = nknight(4)
for i in rec: print i
0370デフォルトの名無しさんNGNG
パイソンとリスプってどっちがハッカーっぽいですか?
0371デフォルトの名無しさんNGNG
漏れも書いてみた.
q は [3, 0, 1, 2] のようなリストで,
この例だと,コマが (0, 3), (1, 0), (2, 1), (3, 2) に
置かれているという意味.
hit の条件式を変えれば,queens にも knight にもなる.

def hit(x1, y1, x2, y2):
    return x1 == x2 or y1 == y2 or abs(x1-x2) == abs(y1-y2)

def safe(q, ny):
    nx = len(q)
    for x, y in enumerate(q):
        if hit(x, y, nx, ny):
            return False
    return True

def queens(q, n):
    if len(q) == n:
        return [q]
    else:
        Q = []
        for y in range(n):
            if safe(q, y):
                for i in queens(q + [y], n):
                    Q.append(i)
        return Q

def nqueens(n):
    return queens([], n)

print nqueens(4)
0372デフォルトの名無しさんNGNG
ジェネレータ版

def queens(q, n):
    if len(q) == n:
        yield q
    else:
        for y in range(n):
            if safe(q, y):
                for i in queens(q + [y], n):
                    yield i
0373デフォルトの名無しさんNGNG
q を最初から [(0, 3), (1, 0), (2, 1), (3, 2)] のようなリストで
持つようにすると,毎回 enumerate しなくて済む.

あと,毎回 len で q のリストの長さを求めるかわりに
queens の引数に渡してしまうようにした.

def safe(q, nx, ny):
    for x, y in q:
        if hit(x, y, nx, ny):
            return False
    return True

def queens(q, L, n):
    if L == n:
        yield q
    else:
        for y in range(n):
            if safe(q, L, y):
                for i in queens(q + [(L, y)], L+1, n):
                    yield i
0374342NGNG
やっと見られるようになってきた。
私のは全パタン網羅するように作ってます。

def nknight(deg,lst=None):
  if lst == None: lst =[[ '' for x in range(deg)] for y in range(deg)]
  return line(lst)
  
def line(ls):
  if len(ls) == 1:
    tmp = ls[0][:]
    tmp[ls[0].index('')] = '○'
    return [[tmp]]
  lsRet=[]
  for i in range(len(ls[0])):
    tmp=[]
    tmp.append(['●']*len(ls[0]))
    for l in ls[1:]:
      tmp.append(l[:])
    if ls[0][i]=='':
      tmp[0][i] = '○'
      for l in tmp[1:]:
        l[i] = '●'
      for s in line(tmp[1:]):
        lsRet.append([tmp[0]]+s)
  return lsRet

# # # # # # # # # # # # # # # # # # # #
print '# '*20

rec = nknight(4)
print rec
print len(rec)
0375342NGNG
やった、n-queenが出来たっぽい。あ、関数名がknightのままだ。

def nknight(deg,lst=None):
  if lst == None: lst =[[ '' for x in range(deg)] for y in range(deg)]
  return line(lst)
def line(ls):
  if len(ls) == 1:
    tmp = ls[0][:]
    try: tmp[ls[0].index('')] = '○'
    except: return []
    return [[tmp]]
  lsRet=[]
  for i in range(len(ls[0])):
    tmp=[]
    tmp.append(['●']*len(ls[0]))
    for l in ls[1:]:
      tmp.append(l[:])
    if ls[0][i]=='':
      tmp[0][i] = '○'
      for l in tmp[1:]:
        l[i] = '●'
      j=1
      for l in tmp[1:]:
        try: l[i+j] = '●'
        except: pass
        try:
          if i>=j: l[i-j] = '●'
        except: pass
        j += 1
      for s in line(tmp[1:]):
        lsRet.append([tmp[0]]+s)
  return lsRet
0376342NGNG
てっきりチェスでknightが縦横に動けるのかと思ってましたが、
実際はルークR(ook)がそうでした。
うう、n-hisyaにすれば良かった。。。knightは4方向移動可能な桂馬でした。
ttp://www.jca-chess.com/chess-2.htm

>>367
見てみました。こんなところでも扱われているなんて、とてもメジャーな課題なんですね。
>>371
ありがとうです。
> q は [3, 0, 1, 2] のようなリストで,
ってのも、最初はエッと思いましたけど、慣れるともっともに思えました。
次は私もこの形で値を返すロジックにしてみたいと思います。

次のアイデア:
1.n次の盤面をあらわす、n個のrange(n)を含むリストを用意する。
 →
2.そのリストを受け取って、その0行目のリストのindexにQを配置すると考える。(配置不可能なら空リストを返す。)
 リスト長が1なら、Q配置可能なindex値全部をリストのリストで返す。
 そのQにより、配置不可能になるindexをリスト[1:0]より、removeする。
 そうして更新されたリスト[1:]を再帰的に処理する。
 Qの配置を全部尽くした結果のリストのリストを返す。

これで、出来るかな?この次はユニーク解とかを考えるかな?
実は私は先週はLL土曜だと思っていて出来なくてグッタリしてたので、今週だと分かってからはガゼンやる気が出ています。
LL土曜では、分散処理とかをやるのかな?現在n=23だったか24までの解が出るんでしたっけ?それを超えるアイデアが発表されるのかなぁ?
generatorはこうだよって話になるのかなぁ?
0377342NGNG
てっきりチェスでknightが縦横に動けるのかと思ってましたが、
実際はルークR(ook)がそうでした。
うう、n-hisyaにすれば良かった。。。knightは4方向移動可能な桂馬でした。ううぅ
ttp://www.jca-chess.com/chess-2.htm

>>367
見てみました。こんなところでも扱われているなんて、とてもメジャーな課題なんですね。
>>371
ありがとうです。
> q は [3, 0, 1, 2] のようなリストで,
ってのも、最初はエッと思いましたけど、慣れるともっともに思えました。
次は私もこの形で値を返すロジックにしてみたいと思います。
0378342NGNG
あ、書き込まれてないと思って間違えてまた出してしまいました。すいません<377
0379デフォルトの名無しさんNGNG
LL Weekend のプログラムを読むと対戦形式のようですよ
0380342NGNG
改めて読んでみると、本当ですね!対戦型ですね。>>379
それで、言語別に対戦させるとか、コード自体の美しさを見るとかするんですね、きっと。多分。
0381342NGNG
□■■□ んー。となると、これはロジックの問題で、
■□□■ 先手必勝とかになりそうだなぁ。(予想)
■□□■ ちなみに、4×4のボードだと、
□■■□ 先手が□(左図)に打てば、必勝だと思う。
0382342NGNG
□■■■■□ 奇数×奇数なら、
■□■■□■ 先手が最初にド真ん中に打って、
■■□□■■ 後は後手の打った場所の中心対象に打てば、必勝。
■■□□■■ (これは数学者秋山仁がよく書く話)
■□■■□■ 6×6の場合は今のところ私には、
□■■■■□ Queenを4つ置いて5つ目が置けないパターンが見付からないので、
多分、先手がこの図の□に置けば必勝になると思う。

で、やっと通常の8×8のチェッカボードに行き着くのだけど、
これもやっぱりQueenを6つ置いて7つ目が置けないパターンがあれば別だけど、
先手がQueenを8つ置ける配置を崩すだけで、先手必勝になると考えられそう。

6*6でQueenを4つ置いて5つ目が置けないパターンを探すプログラム、
8*8でQueenを6つ置いて7つ目が置けないパターンを探すプログラムはすぐに作れるかなぁ、、。

0383デフォルトの名無しさんNGNG
いや、常に後手必勝。先手の初手の隣に後手が置けばそこで手詰まり。

□○●□□□□○
□□○●□□○●
□□□○●○●□
□□□□○●□□
□□□○●○●□
□□○●□□○●
□○●□□□□○
○●□□□□□□

このゲーム破綻してない?
0384342NGNG
○●●●●● >>383
●●●●●○ え、Queenは縦横斜めにキクから、
●○●●●● そうはならないと思うのだけど?
●●●●●● でも、パターン数は少ないみたいなんで、
●●●●●● 総当りでいけるッポイですね。
●●○●●● ←382で言った直後に、
6*6で4つ以上置けないパターンを発見しました。(すごい汚いプログラムで)他にもあるかも、、。
そしたら、先手はこうならないように持ち込むアルゴリズムが必要ですね。
8*8も6個以上置けない配置が見付かるかなぁ?

私はこのゲームは'先手必勝'になると思う!
0385342NGNG
○●●●●●●● 384に書いた6*6で5つ目が置けないパターンは、
●●○●●●●● ユニーク解として、あの形1個でした。
●●●●○●●● と、言うわけで、先手は、6個置けるパターンと、
●○●●●●●● 4個置けるパターンさえ崩せば、必勝。
●●●○●●●●
●●●●●●●● 8*8の場合は、驚いた事に、
●●●●●●●● 5個しか置けないパターンを見つけてしまった。
●●●●●●●● きっと、8,7,6,5個を置き次が置けないパターンがあり、
先手は8個と6個のパターンを避けると言う戦法で、必勝になる!たぶん!

私は、Pythonを応援しています。(sage

>>370
私はリスプって知らないですけど、
ttp://cruel.org/freeware/hacker.html
ここでPythonは良いように書かれているので、この文章が書かれた当時でもハッカーからの注目されてたんでないか?と思ってます。
0386342NGNG
とかなんとか、ここまで来て気が付いたのだけど、
この対戦N-Queenのルールは「他のクィーンの効き筋に置いたらそのプレイヤーの負け」という事は、
手駒のキキ筋は考えなくても良いのね。
と、なるとこれまでの考察はいきなり無に帰してしまうなぁ。
明日は飲み会なので、あさってまた考えよう。。。
0387342NGNG
対戦と言うことなので、
こんなふうにして調べようと思った。

0: 駒もなく、キキ筋でも無いマス
1: 先手の人のキキ筋のマス
2: 後手の人のキキ筋マス
3: 駒が置かれた または 先手と後手のキキ筋のマス

1311 例えば、4*4の盤で、
1110 先手(1,0)
0101
0100

1331 次に後手(2,3)とすると、こんな風になる。
3130 これで、上手く表されているんでないかなと。
0323
2332
0388342NGNG
これまでに作ってたn-queen問題のプログラムは最終的にこんな形になりました。

def nqueen(deg,lst=None):
  if lst == None: lst =[[ '' for x in range(deg)] for y in range(deg)]
  return line(lst)
def line(ls):
  for l in ls:
    if not('' in l): return []
  if len(ls) == 1:
    n = len(ls[0])
    return [[['●']*(i)+['○']+['●']*(n-i-1)] for i in range(n) if ls[0][i] == '']
  lsRet=[]
  for i in range(len(ls[0])):
    tmp=[]
    tmp.append(['●']*len(ls[0]))
    for l in ls[1:]:
      tmp.append(l[:])
    if ls[0][i]=='':
      tmp[0][i] = '○'
      j=1
      for l in tmp[1:]:
        l[i] = '●'
        try: l[i+j] = '●'
        except: pass
        try:
          if i>=j: l[i-j] = '●'
        except: pass
        j += 1
      for s in line(tmp[1:]):
        lsRet.append([tmp[0]]+s)
  return lsRet
0389342NGNG
返し値がリストになるように作り直し、今のところnルーク問題だけど、
どっかで見た事のある値が返ってくるなぁ。
hit()の条件を変えて、nクイーンにする予定。

def nqueen(deg,lst = None):
  if lst == None: lst = [range(deg) for i in range(deg)]
  elif deg == 0: lst = [x for x in lst]
  else: lst = [x[:deg] for x in lst[:deg]]
  return line(lst)
def line(ls):
  if [] in ls: return []
  if len(ls) == 1: return [[x] for x in ls[0]]
  lsRet=[]
  for idx in ls[0]:
    lsTmp = hit(idx,ls[1:])
    for p in line(lsTmp):
      lsRet.append([idx]+p )
  return lsRet
def hit(i,l):
  return [[y for y in x if y != i] for x in l]

n=4
rec = nqueen(n)
print rec,len(rec)
0390342NGNG
x座標のリストを返すにして、簡潔にしました。
>>389のものと実行速度を比べて、それほど早くなってないので、ガックリ。

def nqueen(deg,lst = None):
  if lst == None: lst = [range(deg) for i in range(deg)]
  elif deg == 0: lst = [x for x in lst]
  else: lst = [x[:deg] for x in lst[:deg]]
  return line(lst)

def line(ls):
  if [] in ls: return []
  if len(ls) == 1: return [[x] for x in ls[0]]
  return [[idx]+l for idx in ls[0] for l in line(hit(idx,ls[1:]))]

def hit(i,l):
  return [[y for y in l[j] if y != i-j-1 and y != i+j+1 and y != i ] for j in range(len(l))]
0391デフォルトの名無しさんNGNG
Pythonを大学で学びたいのですが、高知大学がいいのですか?
0392デフォルトの名無しさんNGNG
大学で学ぶほどのものか?
0393デフォルトの名無しさんNGNG
独学して、ソースの改良を提供したりして、いずれはHackerデビューというのではダメ?>>391
私は、どうしてPythonと大学を結ぶといつも高知大学がコメントされるのかから、
よくわからないけど、どーしてだろう?
(伯爵の人が高知大学の関係の人だったっけ??
0394デフォルトの名無しさんNGNG
>>391
Pythonは学ぶというより使いこなすもの,って感じなんだが...
部外者からは敷居が高く見えるんかなあ?
0395デフォルトの名無しさんNGNG
>>393
恐らくコーチだから....?













失礼!
0396デフォルトの名無しさんNGNG
>>393
> 私は、どうしてPythonと大学を結ぶといつも高知大学がコメントされるのかから、
> よくわからないけど、どーしてだろう?
過去レス参照しれ
本スレでPythonの宿題を丸投げした奴がいるがそいつがコーチ大らしいので
そういう流れになったということ
0397デフォルトの名無しさんNGNG
>>396
あれは出題者本人の書き込みらしいよ。
0398デフォルトの名無しさんNGNG
ははぁ、高知大にはPythonをやる講義があるのね。>>391
珍しいとは思うけど、それを求めて高知大学を選ぶってのは、受験生と言う段階では見切り過ぎなんでないかと私は思う。
「オタク学の講義を受けたいから、〜(忘れた)大学行く」と言うのと変わらないとは言わないが、
例えば「俺も高知大学を卒業する頃にはきっとPythonバリバリになってるぜ」と言うと、
なんだか「技能取得」とは「時間が解決してくれる問題」みたいに聞こえないだろうか。
大学卒業のために大学に行こうと考え、その付加価値として高知大学に行ってPythonの講義が受けたいと言う、そんな人も大学は受け入れていると思うが、
大学は本来、研究者を受け入れるための地盤なので、
「うぉお、学内の全学食の全メニュー制覇してやる。ジュルジュル」じゃなかった、
「うぉお、新しいプログラミング言語を作ってやるぜ。ぐへへ、ジュルジュル」みたいな熱い情熱を燃やす人には、とても良く機能してくれると思う。多分、そのハズ。
そんな時にPythonなんて数ある言語のひとつでしかないし、なにも今からPython一本に絞って考える事はないと思う。
それに高知大学のあの先生だって、Pythonが専門の先生ではないだろうよ。つーか、そんな大学教授いたら怖い。いない。
0399デフォルトの名無しさんNGNG
なんで Python 関係のスレではみんなネタにマジレスするの?
0400デフォルトの名無しさんNGNG
>>399のネタにもマジレスすべきなの?
0401デフォルトの名無しさんNGNG
Pythonはコード量を最も少なくできるのでもっと注目されてもいいはずなのにね。
0402デフォルトの名無しさんNGNG
注目されてるじゃん
日本国外ではさ
0403デフォルトの名無しさんNGNG
>>401
> Pythonはコード量を最も少なくできる

そうなのか?
0404デフォルトの名無しさんNGNG
programming+language=python
これ、世界の常識アルヨ
0405デフォルトの名無しさんNGNG
>>404
+1
0406デフォルトの名無しさんNGNG
>>404
-1
0407デフォルトの名無しさんNGNG
>>401
いや、確かにCだのJavaだのよりは少なくなるけれど「最も」という形容は不適当だと思うぞ。

スクリプト言語の中でだと冗長な部類だろうし。
0408342NGNG
n-queenは、3人以上(CPU含む)での通信対戦だったみたいで、対戦プログラムのロジックを見ると、
置ける場所にランダムに駒を置くロジックだったので、少々がっくり、、、。
0409デフォルトの名無しさんNGNG
>>408
他の言語もだいたいそんなだったらしいね。
もっと準備期間があれば変わったのかも。

でも、LLでゲーム解探索プログラムってのはいいかも、と思った。
もう少し規模と準備期間を大きくして、ロボコンみたいなイベントに
できないかな(LL人口がもっと大きくならないとダメだけど)。
0410342NGNG
あれから、また練習に行列式を計算するプログラムを書いてみた。
コード量が少ないって話題も出てるので、遅いけどコード量が少ないパターンをここ貼る。
行列式とは → http://ysserve.cs.shinshu-u.ac.jp/Lecture/linear/node20.html


def det(mtrx):
  deg = len(mtrx)
  if  deg == 1: return mtrx[0][0]
  return reduce(lambda a,b:a+b ,[0]+[cmp(0.5,(j)%2)*mtrx[j][0]*det([l[1:] for l in mtrx[:j]+mtrx[j+1:]]) for j in range(deg) if mtrx[j] not in mtrx[:j]+mtrx[j+1:]])
# # # test
from random import randint
from time import time
n = randint(2,8)
matrix = [[randint(0,1) for x in range(n)] for y in range(n)]
for i in matrix: print i

t = -time()
ret = det(matrix)
t += time()

print n,'次',t,'sec det(M) =',ret
0411342NGNG
>>409
なんと早いレスにビックリ。
次からは実装の方法での対決と合わせて、
ゲームのロジックでの対決がメインになるといいですね。

2*2行列の行列式:
[[1,2],[3,4]] → 1*4-2*3 = -2
さっきの参照のページには一般の次数の定義が書いてあります。
0412デフォルトの名無しさんNGNG
2日ほど前から Python 始めました。Perl とお別れできそう。
しょうもないことだけど、教えてください。
リストの各要素ごとを足すのってどうすればいいの?
a=[[1.2],[3,4]] と b=[[5,6],[7,8]] から [[1,2,5,6],[3,4,7,8]] を作りたいんです。
どうしてもできなくて、今は

def add(x,y):
return x+y
c=map(add,a,b)

とかしています。あまりの不恰好さに死にそうです。誰か私を助けて!
0413342NGNG
いろいろ試した結果、いちおう成功しましたけど。。。>>412
>>412の方が直感的で良いように思いました。

a=[[1, 2], [3, 4]]
b=[[5, 6], [7, 8]]
print [[z for y in x for z in y] for x in zip(a,b)]
0414デフォルトの名無しさんNGNG
>>412
それでいいと思う。
一行に収めるなら、lambda を使って、
c = map(lambda x, y: x+y, a, b)
0415デフォルトの名無しさんNGNG
>>> map(list.__add__, a, b)
[[1, 2, 5, 6], [3, 4, 7, 8]]
0416デフォルトの名無しさんNGNG
みんな書いてるんで漏れも

[a[i]+b[i] for i in range(len(a))]

>>412が不恰好とは思わないけど。
0417412NGNG
>>413
zip は有用そうですね。覚えておきます。リストの中での for の使い方
も特徴的ですごく面白い!

[x+y for x in a for y in b]

でどうよ?って思ったら直積になっちゃうのね。私バカすぎ。

>>414

なるほど! たかが足すだけのために add を定義しているところが
耐えられなかったんだけど、lambda って方法があるんですね。
調べてみると Lisp からきたキーワードとか。(でも Lisp 知らない)
Java の匿名クラスの関数版みたいなもの??

>>415
あ〜それ!!それを知りたかったの!始めは
map(+,a,b)
とか書いて怒られたり… __add__ って list の static method なのかな??

>>416
あ、それもシンプルでいいかも。っていうかそれくらい気付けよ>自分
上でも書いたけど、ちょっと使うだけのために def で関数定義がなんか
格好悪いかなぁ〜と。

やっぱりPython デスクトップリファレンスだけじゃだめだな、こりゃ…
ちゃんと本買ってこよ。

413さん、414さん、 415 さん、416さんありがとうございました。
0418デフォルトの名無しさんNGNG
>>417
書籍形態にこだわるならともかく、そうでないなら
http://www.python.jp/pub/doc_jp/
で充分だったり。

lambdaは匿名クラスというより匿名関数/匿名メソッド

list.__add__は別にスタティックメソッドというわけじゃないんだけど、
a = [0]かつb = [1]だとして、a.__add__(b)はlist.__add__(a, b)
という意味であるっていうPythonの特徴を利用してる(これがメソッド定義で
必ず第一引数(self)がなければならない理由)。
0419342NGNG
私のが、他の3倍ほど遅かったですね。
リストの内包表記の応用って事で。おねがいします
0420デフォルトの名無しさんNGNG
「かえでIME」は欠陥品。
「辞書登録出来ない」なんてIMEにあり得ない。
しかも、ほいほい落ちるし。バグだらけ。

とても、商品とは思えないね。

BeOSはユーザーが少ないからどうでもいいやと思うなよ。 >PC-CRAFT
0421デフォルトの名無しさんNGNG
わかったから誤爆はやめれ。
0422デフォルトの名無しさんNGNG
質問させてください。
UTF-8の"−"をShift_JISの"−"に変換したいのですが、
JapaneseCodecsをインストールして.codec("sjis")で変換しようとしたら
UnicodeError: Shift_JIS encoding error: invalid character \uff0d
とエラーになってしまいました。
回避策をご存知の方はいらっしゃいますでしょうか?
0423デフォルトの名無しさんNGNG
それってマイナスのつもり?それともダッシュのつもり?

マイナスならsjisやめてcp932にする
ダッシュなら−やめて―にする

でどうだろう。試してないが(ぉぃ
0424デフォルトの名無しさんNGNG
あ、「―」はU+2015な。
0425デフォルトの名無しさんNGNG
>>422
互換文字の「全角マイナス」を使っている事そのものが問題なので、
shift-JIS に encode する前に本当に使いたい文字に置換する必要が
あるかと。(あるいは 423 の言うように cp932 を使うか)

あらかじめ u"\u2212" (数学でのマイナス) に置換するのが正しい
処置でしょうね。
0426422NGNG
>>423-425
ありがとうございます。
今XMLを利用したAA保管庫を作ろうかと思っていて、
−とか〜とかも扱う必要があったのです。
.codec("cp932")
.codec("ms932")
どちらでもいけました。

この2つはshift_jisを完全に包含してるものなんでしょうか?
0427デフォルトの名無しさんNGNG
> この2つはshift_jisを完全に包含してるものなんでしょうか?
MS932 == CP932 は、文字セットはShift_JISの全文字+αなんだけど、
UnicodeとのマッピングルールがShift_JISと違う文字があるので注意。
0428422NGNG
なるほど。基本はShift_JISで、例外的にCP932を使ったほうがいいのかな…?
ぱっと見はCP932オンリーでも問題なさそうなんですけどね。

とりあえず様子を見たいと思います。ありがとうございました。
0429デフォルトの名無しさんNGNG
2chはたぶんcp932だから、AA庫ならそっち基本でいいんじゃないかと思う。
0430デフォルトの名無しさんNGNG
>>428-429
つーか「混ぜるな危険」ってことだよ(w
0431422NGNG
了解、シンプルにcp932オンリーで作ろうと思います〜
0432862NGNG
特定のコードしか使わないんなら base64 化して保存したらいいと思いマース
0433デフォルトの名無しさんNGNG
>>432
意味不明ー
0434デフォルトの名無しさんNGNG
誤爆じゃねーの?
0435デフォルトの名無しさんNGNG
>>432

[WebProg]【半角】メールで2chAAを使うには【Pゴシック】
http://pc5.2ch.net/test/read.cgi/php/1060009605/
0436デフォルトの名無しさんNGNG
そんなことじゃなくてただバイト列として保存しろってことなんだけどな。
ただそのままPythonでXMLに突っ込むとEncodeErrorになるからBase64化したら?
っていう話。
0437デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>><>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<< Python
0438デフォルトの名無しさんNGNG
>>436
やっぱりよく分からん。
base64 でエンコードされた XMLファイルなんて見たことないぞ。
0439デフォルトの名無しさんNGNG
>>438
CDATA
0440デフォルトの名無しさんNGNG
>>439
意味ねぇ。w

素直に文字参照使えよ。
0441デフォルトの名無しさんNGNG
age
0442デフォルトの名無しさんNGNG
こっちがPython本スレ?
スレタイが「1から〜」と0 originでないのが気になるが
0443デフォルトの名無しさんNGNG
>>442
厨の立てた駄スレだけれど、Python入門スレという扱いでいいんじゃないかな。
0444デフォルトの名無しさんNGNG
マイナー言語らしくつつましく。
0445デフォルトの名無しさんNGNG
>>442
> こっちがPython本スレ?
厨の立てた重複スレだよ。
0446デフォルトの名無しさんNGNG
>>445
だったら削除依頼しなよ。

するつもりがないんだったら、何らかの形で利用する道を模索しないと。
入門スレというのはひとつの手だと思う。
0447デフォルトの名無しさんNGNG
入門スレでもなんでもいいから Python の質問しろ厨房ども!
メタ議論はどうでもいい。
0448デフォルトの名無しさんNGNG
メタ議論はヤメタほうがいいということですか?
~~~ ~~~
0449デフォルトの名無しさんNGNG
Zopeのインスコのやり方と使い方を教えて下さい
python2.3.4です
0450デフォルトの名無しさんNGNG
あ、linuxで
0451デフォルトの名無しさんNGNG
それ python の話題じゃないじゃん。
Zopeでpython使ってて問題起きたってならともかく、
インストールの方法すら知らないんでしょ?
Zopeはwebprob板にスレがあったと思うのでそちらでどーぞ。
0452デフォルトの名無しさんNGNG
Python Jython
Zope BitTorrent
PyQt PyGTK

よく使うの(予定)
0453デフォルトの名無しさんNGNG
Jythonのインスコのやり方を教えてください
0454デフォルトの名無しさんNGNG
>>453
http://www.jython.jp/
0455デフォルトの名無しさんNGNG
Pythonが遅いのは何が原因ですか?
遅い分だけ機能面で得をしている部分はどこですか?
普通に使っている分には困らないけど教えてください。
0456デフォルトの名無しさんNGNG
>455
宇宙の法則
0457デフォルトの名無しさんNGNG
すべてプラズマで説明できます。
0458デフォルトの名無しさんNGNG
>>455
Python/ceval.c でも読んでみれば?
0459デフォルトの名無しさんNGNG
>>458
あがとうです。真っ先に
/* XXX TO DO:
XXX speed up searching for keywords by using a dictionary
XXX document it!
*/
と書いてあるのが目に入りました。
有益な仕事をしている対価として遅いんじゃなくて
今までそれほど速くしようとは思ってこなかったということかな。と。
0460デフォルトの名無しさんNGNG
コメント数行読むだけで

> 有益な仕事をしている対価として遅いんじゃなくて

こんな大胆な結論を出すとはかなりの電波ですね。
0461デフォルトの名無しさんNGNG
えー、だったらなんで遅い遅い言われるの?「作るのは早い」じゃぁなくてさ。
べつにこれでいいと思ってるんだったら「速くしたい」ってコメント残しとく?
0462デフォルトの名無しさんNGNG
ちなみに別に煽りや荒らしのつもりは無くて
他の言語でやってないこんなことやあんなことが実行速度を落としてる
みたいなことを聞いてみたいだけのアホですので。
0463デフォルトの名無しさんNGNG
>>462
君がどの程度コンピュータの事を知っているか分からないので
答えようが無い、というのが正直な所。

Perl や Ruby も含めた中間言語インタープリタがコンパイラ系の
言語よりも遅い理由は理解している?
ここらへんからして分かっていないのならばまず「コンパイラと
インタープリタ」あたりの言葉でググって入門ページを探す事。
(コンピュータの入門書を読むのもいいね)
0464デフォルトの名無しさんNGNG
型付けが動的か静的かという観点も知っておいた方がよいね。
0465デフォルトの名無しさんNGNG
>>462
ごもっとも。CPUネイティブなコードにコンパイルするものとは比べてません。
ttp://www-6.ibm.com/jp/developerworks/linux/021220/j_l-psyco.html
とか読んで思ったのはPsycoでできるんだったらなんでPythonでさいしょから
組み込まないの、とか、そういう。
もしかして今や遅いという話そのものがプラズマ?
0466デフォルトの名無しさんNGNG
>>464
あ、そうですね。Javaとは並べること自体おかしい。
PythonはPerlより便利でLispより読みやすいのはわかるので
> 有益な仕事をしている対価として遅いんじゃなくて
は撤回します。すみません。
でもRuby速いよという人にPythonもPsyco使えばとかいうと
Rubyはそんなもの使わなくてもいいと返されそう。
> 今までそれほど速くしようとは思ってこなかったということかな。と。
というのは合ってるのかな。
0467デフォルトの名無しさんNGNG
Python はあくまで教育用言語です。これが大前提。
だから今のパフォーマンスなのね。
0468デフォルトの名無しさんNGNG
>>466
単に Perl や Ruby との比較だったら「思想の違い」くらいの理由しか考えられないですね。

例えば Unicode 対応に対して、Python だと unicode 文字列型に変換して扱うのが
本道だけれども、Ruby だと素の多バイト文字テキストのまま扱おうとする、とか。

Ruby は sed&awk → Perl と来たUnix流テキスト処理言語の末裔だけれども、
Python は BASIC → ABC という流れを汲む教育用言語の末裔。
なのでコスト意識も違ってくる。

まあ、

>> 今までそれほど速くしようとは思ってこなかったということかな。と。
>というのは合ってるのかな。

というので正解だと思います。

そもそも Python の場合、本領は「実行可能な擬似コード」であって、本番の懸案は
(Python で十分に検討した後) C で作る、という発想が強いから、(所詮モックアップ
である)Python のコードでの速度は気にしない、というか下手な最適化によって本質
と関係ないバグが入り込むのを嫌う、というのもあるかも。
0469デフォルトの名無しさんNGNG
>>467
>Python はあくまで教育用言語です。これが大前提。
えっ実用で使われてるじゃん。Redhatとかで。
そんなこと言わないほうがいいのでは?
0470デフォルトの名無しさんNGNG
つい最近、Perl から Python に転んだ者です。
以下、FAQ 等であれば失礼します。検索してもそれらしき情報がなかったので。


http://www.python.jp/Zope/download/JapaneseCodecs
の日本語 codec を使うと、codecs.open() の errors 引数が無視され、何を指定しても
"strict" 扱いになるように思えます。
例えば codecs.open("filename", "r", "ms932", "replace") しても、sjis 範囲外の文字で例外が出ます。

調べた所、 Python/Lib/site-packages/japanese/c/ms932.py 等の StreamReader._read() の最後の return が、
return self.decode(data)[0]
ではなくて
return self.decode(data, self.errors)[0]
なのではないかと思いましたが、どうなんでしょうか?

何か使い方が間違ってたりしますか?
0471デフォルトの名無しさんNGNG
>>469
別に問題ないです。

Python は Perl のような壊滅的な書式を許さないにもかかわらず「ラフに」
書くことができるという意味においての「教育的」配慮が汎用性を生み出して
いるのですから。
0472デフォルトの名無しさんNGNG
つーか、Perl や Ruby が 「教育的」 じゃなさすぎるだけで、Python が普通なだけなんじゃないかと。
昔 Basic が教育用とされたのと同程度に教育的なだけじゃないかな・・・


Ruby は興味あるんだけど、Perl のダメな所を引き継ぎすぎって感じがするんだよなあ。
0473デフォルトの名無しさんNGNG
Ruby ってデフォでマルチバイト対応ってのがウリなだけだろ?
そんなの各言語のUTF8化でお役目御免じゃんw
過去の汚物だな >Ruby
0474デフォルトの名無しさんNGNG
>>470
使い方は間違っています。
対象のファイルは sjis (というか cp932)である事が大前提であって、
対象のファイルが sjis であるかどうか調べる関数ではないですし。
(sjis に無い Unicode 文字を書き込んだ時に replace するだけ)


でもそれはそれとしてバグっぽいですね。
codecs.open("filename", "r", "ascii", "replace")
だとちゃんと replace されますし。


でも仕様の範囲では正常動作している感じ。

import codecs
f = codecs.open("test.txt", "r", "cp932", "replace")
a = f.read()
f.close()
f = codecs.open("testascii.txt", "w", "ascii", "replace")
f.write(a)
f.close()
f = codecs.open("testsjis.txt", "w", "sjis", "replace")
f.write(a)
f.close()

===== test.txt の内容 ======
abcde.
ほげほげ
�W
===== ここまで =====
0475デフォルトの名無しさんNGNG
>>473
同じ言葉をSJIS版Pythonのインストーラーを作っている人にも言ってみよう。
0476デフォルトの名無しさんNGNG
デフォでUTF-8なのはおまえらの大嫌いなTcl。
0477デフォルトの名無しさんNGNG
>>476
大嫌いという訳でもないが(Javaの方が嫌いだ)。
Tkを入れるついでに入れてやってる付属品。
一度も使う機会はないけどな(これからもないだろう)。
0478デフォルトの名無しさんNGNG
>>474
codecs.open() の引数に errors がある以上、未定義バイトの処理を選択できる所までが 「仕様」 だと思うんですけど・・・

ソースみる限り、codec 単体としては replace 等は実装もしてるし、テストにも入ってるんですよね。
ただ codecs.open() の引数が codec に伝わってないだけっぽくて。
0479デフォルトの名無しさんNGNG
>>468 471 472
古いPascalがお手本兼実用だった時代みたいにPythonがお手本兼実用なのですね。
くだらない話にお付き合いいただき感謝します。納得しました。
0480デフォルトの名無しさんNGNG
>>478
>codecs.open() の引数に errors がある以上、未定義バイトの処理を選択できる所までが 「仕様」 だと思うんですけど・・・

unicode よりも大きなセットの文字集合(例えばTRONのTAD)から "r" する時には意味が生じるので、
"r" でも errors を指定出来るのは当然の仕様ですから、それをもって『未定義バイトの処理を選択
できる所までが 「仕様」』とは言い切れない気がする。

まあ例え仕様外であったとしても、この場合 "ascii" での挙動に合わせるのが常識だから、単なる
ミスでしょうね。
作者にメールすれば直すのじゃないかな。
0481デフォルトの名無しさんNGNG
>>480
作者様にメールしてみる事にします。
0482デフォルトの名無しさんNGNG
switch文が無い・・・。萎えた・・・。なんで無いの?
0483デフォルトの名無しさんNGNG
>>482 

入門者がみんな思う事です。
代わりにディクショナリかリストを使います。

foo = 'stop'
print {'go': 'green', 'slow':'yellow', 'stop':'red'}[foo]
->'red'
複雑にしたいならディクショナリに関数を仕込む

0484デフォルトの名無しさんNGNG
>>483
PythonってCoolだね。
0485デフォルトの名無しさんNGNG
値によって処理を変えるような場合どうやんのよ。ディクショナリに
関数を仕込むというのは、caseに書く処理を全部関数にすんのか。
なんか納得できないな。わざわざ関数ポインタで呼び出してるイメージだ。
めんどくさい気がする。。。
あと、ディクショナリだとswitchのdefaultはどうやって実装すんのよ。
0486デフォルトの名無しさんNGNG
http://www.python.jp/pub/doc_jp/lib/typesmapping.html

a.get(k[, x]) a[k] if k in a, else x
0487デフォルトの名無しさんNGNG
>>485
数個の場合は if 〜 elif 〜 else で済ませる。
数が多くてかつ速度が重要な場合、ディクショナリ。

ただ「値によって処理を変えるような場合」は class 定義して
多態を使うべき状況である事も多いから、shitc 文相当の
文法が無いから困る、という事は少ない。
0488デフォルトの名無しさんNGNG
> shitc 文相当の

わざと?
0489デフォルトの名無しさんNGNG
>>485
Cで if ... else if ... ではなく, switch - case を使う理由は
ジャンプテーブルで最適化されることを望んでいるからだよね?
Pythonはもともと遅いので,そんなことはあまり気にしないw.
まぁ条件の数が100とかになるなら,ディクショナリを使うのもあり.
0490デフォルトの名無しさんNGNG
そういえば、行番号が付いてるBASICを使っていた時は、
速度を稼ぐために ON x GOSUB とか多用していたっけ。
0491デフォルトの名無しさんNGNG
てゆうか分岐が 100個もあるものを switch で書こうとするのは、
そもそもの設計が間違っている。
0492デフォルトの名無しさんNGNG
>>491
CPUのエミュレータとかでは結構あるんでは?

まぁ,Pythonでエミュレータなんか書かない…というか
書きたくても書けないけど.
0493デフォルトの名無しさんNGNG
>>492
エミュレータなら命令ごとに関数化して、関数ポインタで呼び出したほうがスマートじゃないかな。
0494デフォルトの名無しさんNGNG
なんでabsが組み込みなのよ。mathの中に入れろよ。
0495デフォルトの名無しさんNGNG
なんでswitchが無いことに不満を感じないんですか?
非常に不思議です。
0496デフォルトの名無しさんNGNG
煽りは無視の方向で。
0497デフォルトの名無しさんNGNG
>>495
shitch どころか goto も無いよ。
ブロックを表す { 〜 } や begin 〜 end も無いし。
無い無い尽くしだね。
0498デフォルトの名無しさんNGNG
まあ煽りだから無視しろというのは、臭いものに蓋だよね。
Pythonの痛い欠点を突かれたから黙殺っていうか。
0499デフォルトの名無しさんNGNG
Pythonに無いのは、
- switch
- do while
- 後置系の条件文
くらいか?
増やそうと思えば簡単に増やせると思うんだが、
いままでそういう動きは今まで起こらなかったのかな?
開発陣の意向?
0500デフォルトの名無しさんNGNG
( ゚д゚)、ペッ >>495,>>497,>>498
0501デフォルトの名無しさんNGNG
>>499
あとよく言われるのは三項演算子。
0502デフォルトの名無しさんNGNG
forはforeachに改名してほしい。
0503デフォルトの名無しさんNGNG
>>500
排他的な態度はRuby厨と変らねえなプゲラ
0504デフォルトの名無しさんNGNG
みんなコードの断片の混じっていないレスも飛ばさずに読んでるんだね。えらいなあ。
0505デフォルトの名無しさんNGNG
>>495
おまいは論理回路がNANDだけで構成できることを知らないのか?
0506デフォルトの名無しさんNGNG
>>505
なにが言いたいのかよくわからない。
0507デフォルトの名無しさんNGNG
なんかswitchに拘ってる人がいるみたいだけど、べつに無くても困らないじゃん。

後置系の条件文は、見た目以外の機能的なメリットは何も無い完全なシンタックス・シュガーだから、
Pythonに取り入れられることはないと思う。
0508デフォルトの名無しさんNGNG
Perl にもないよね > switch
0509デフォルトの名無しさんNGNG
なくてもいいし困らないけど、あっても違和感はない。
Cと違ってcaseの終わりで暗黙的にbreakされるならだけど。
0510デフォルトの名無しさんNGNG
そもそもswitchは便利なのかぁ?
言語によって変えるの面倒じゃん。
0511デフォルトの名無しさんNGNG
>>507
実装できないことをごまかすための詭弁にしか聞こえない。
0512デフォルトの名無しさんNGNG
>>508
最近のPerlにはswitchあるよ。
0513デフォルトの名無しさんNGNG
>>510
Pythonを外せば主要言語間で変える必要ないな。
0514デフォルトの名無しさんNGNG
いやあ python も妬まれるほど日本で有名になったんだね
0515デフォルトの名無しさんNGNG
実装できないなら出来ないって言ってもいいよ?
0516デフォルトの名無しさんNGNG
>>512
まだ無いよ。
6のは switch どころの騒ぎじゃない。
0517デフォルトの名無しさんNGNG
>>515
釣りにしてもアホすぎ
C 相当の switch を、単に条件文が == な if ... else if ... の並びに置き換えるなんて実装できない訳がない。
単に作者の趣味で取り入れないだけだろ。

そもそも C 的な switch は条件が == に限られるのがスクリプト系言語から見ると嫌われる要因じゃないの。
実際 Perl6 の switch 案は大変な事になってるし。

C の switch は処理系次第ではテーブルに置き換わるから速いなんていうけど、
実際適当に作ったプログラムがテーブルで実装される事なんて滅多に無いだろ。
本当にそこまでのチューニングが必要なら必要なら自分でテーブル書くだろ普通。


switch が無いのを不満に思って他の言語に乗り換えるのも自由だし、それを埋めるメリットを見出して
使い続けるのも自由。

俺はあったほうが楽と思うこともあるけど、かと言って他に良いスクリプト言語が無いから使ってる。
0518デフォルトの名無しさんNGNG
まぁ switch 文に関しては明らかにグイドタソに先見の明があったということでしょう。
0519デフォルトの名無しさんNGNG
あきらかに分かってない煽りが多すぎて面白くない。
もっと勉強してから出直してきてくれ。
0520デフォルトの名無しさんNGNG
>>518
もっと勉強してこいや
0521デフォルトの名無しさんNGNG
Pythonやっててswitchが欲しいなんて思った事ない。gotoも。
0522デフォルトの名無しさんNGNG
MLのmatchみたいなのはちょっとほしいかも.
match(xs):
  (car, *cdr):
    ...
  ():
    ...

あーPythonのリストは本当はリストじゃないから,ダメか.
0523デフォルトの名無しさんNGNG
>>517
いくら苦し紛れの反論するとしても、もう少し勉強してからしたら?
無知のくせにしったかぶりしてるのがみっともない。
0524デフォルトの名無しさんNGNG
>>517
ばか?
0525デフォルトの名無しさんNGNG
>>516
Perl6のswitch見てきた.
…変態言語の名に相応しいと思った.
0526デフォルトの名無しさんNGNG
>>525
Pythonごときが、そんな偉そうなことをいえるのか?
0527デフォルトの名無しさんNGNG
>>525
どんなんなん?
0528デフォルトの名無しさんNGNG
Pythonは糞。
キモイ作者にキモイ言語仕様で救いようがない。
Ruby >>>>>>>>>>>>>>>>>>>>>>Python糞>>>>Perl超糞
よかったな。まだ下がいて(大爆笑)
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
0529デフォルトの名無しさんNGNG
↑安置Rubyごくろう
0530デフォルトの名無しさんNGNG
俺は普段はCommonLisperで、スクリプト言語を使うときはPythonもRubyも使うけど、

lambda嫌いとか三項演算子がないのとか、Pythonというのは
思考のスピード > 書くスピード
のときにも、後者に合わせて面倒でもちゃんと書きましょう、という
考えがあるように思う。

LispとかRubyとかは逆に思考のスピードがブレーキを踏まなくて
済むような方向でデザインされてる。

俺はどちらかというとRubyの方が好き。でも使うときはライブラリを調べて
簡単にできそうな方でやってる。Rubyな人はどうも適当なところだけかじって後
はほったらかしというのが多くて、それがヤなところ。
0531デフォルトの名無しさんNGNG
どこまでもオリジナリティのない荒らしだなあ。楽しいかい?
0532デフォルトの名無しさんNGNG
糞言語pyてょんはぺrlと一緒に消えろ。
0533デフォルトの名無しさんNGNG
ユーザの質から言ってRuby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Python >>>>>>>>>>>Perl
0534デフォルトの名無しさんNGNG
Pythonは遅くて構文がキモイ
作者はしがないダッチ野郎
欧州の韓国人とい言われる事でも分かるとおり全てRubyのパクリ
インデント?ぷぷっなにそれまともな言語なの?たのしい?糞虫ども
0535デフォルトの名無しさんNGNG
じきに「PythonからRubyへの移行ガイド 〜猿から人間へ〜」っていう本が出るって知ってた?
0536デフォルトの名無しさんNGNG
Python は「馬鹿のための言語」だけど、
Ruby ば「馬鹿が作る言語」だな。

……Perl は「馬鹿な言語」だけど。
0537デフォルトの名無しさんNGNG
Peerlと一緒に消えればいいのに。
0538デフォルトの名無しさんNGNG
スレ乱立のせいで、
基地外荒しが住みついてしまったぞ。
責任とれ。
0539デフォルトの名無しさんNGNG
Perl叩きでは連帯できるはず
Perlスレは全部WebProgに追い出せ
0540デフォルトの名無しさんNGNG
俺が合理的に次期Pythonに必要な追加仕様を指摘してやろうと
思ってたのにRubyキチガイに議論を乗っ取られた。
0541デフォルトの名無しさんNGNG
Ruby以外は消えろ
0542デフォルトの名無しさんNGNG
スレッドが例外なく荒れるのも言語に魅力が無いから。
Rubyスレを見てみろ。淡々と話してるから。
0543デフォルトの名無しさんNGNG
>>540
http://www.python.org/peps/pep-3000.html
0544デフォルトの名無しさんNGNG
>>530
Python は「ちゃんと書きましょう」となっているには禿同。

Java, Python, Perl と使っているが、Python って意外ときっちりと書かない
といけないけど、Java みたいにキャストとかしなくてもいいから、その辺のバ
ランスがよいと思うんだけど。
# 虎は知らない
0545デフォルトの名無しさんNGNG
Ruby 厨ウザいんだが、Ruby の良さがまったく分からんな。
どうせ、プログラムを作ったことがないような香具師が荒らしてんだろ。

0546デフォルトの名無しさんNGNG
だからさあ、Ruby基地外っぽく振舞っている香具師は
安置Rubyだろ。
Pythonスレが荒らされるのは自業自得。
0547デフォルトの名無しさんNGNG
荒れても気にしない
0548デフォルトの名無しさんNGNG
Python...真の表現は唯一つ
Perl.....解決に至る方法は幾通りも存在する
Ruby.....Perlのパクリでもいいじゃん
0549デフォルトの名無しさんNGNG
rubyはpythonからも色々パクってるじゃん
0550デフォルトの名無しさんNGNG
> LispとかRubyとかは逆に思考のスピードがブレーキを踏まなくて
> 済むような方向でデザインされてる。

こういうこと言う人間に限って、大したもん作ってないんだよな。
反例求む。
0551デフォルトの名無しさんNGNG
「%E3%82%AF%E3%83%A2%E3%81%AE%E5%B7%A3」=>クモの巣
と変換してくれるurlのdecode関数ってあるのでしょうか。
foo("%E3%82%AF%E3%83%A2%E3%81%AE%E5%B7%A3")って感じ
です。
urllib.urlencodeってのは見つけたのですが、上のように
decodeが見つかりません。

http://www.google.co.jp/search?q=%E3%82%AF%E3%83%A2%E3%81%AE%E5%B7%A3
0552デフォルトの名無しさんNGNG
#!/usr/local/bin/python
# encoding: euc-jp

import urllib, cgi

s = 'http://www.google.co.jp/search?'
v = { 'q': 'クモの巣' }
print s
ss = urllib.urlencode(v, True)
print s + ss

r = cgi.parse_qs(ss)
print r['q'][0]
0553デフォルトの名無しさんNGNG
>>552
foo(urlencoded_text)って感じのはなさそうですね。
アドバイスしていただいた方法を使います。
ありがとうございました。_O_
0554552NGNG
>>553
urllib.unquote()

すんません...
0555デフォルトの名無しさんNGNG
>>554
本当にありがとう。>>552 でやっても、urldecodeデータからは
できなかったです。

>>> a = urllib.quote("くもの巣")
>>> print a
%A4%AF%A4%E2%A4%CE%C1%E3
>>> print urllib.unquote(a)
くもの巣
0556デフォルトの名無しさんNGNG
ようするに、Ruby使ってるひとってPythonが気になってしょうがない
だけでしょう。

俺は、Python使ってるけど、Rubyの動向なんて気にならないしな。
その証拠にRubyスレって荒れてないんでしょ。

Rubyスレが荒れてなくて、Python,Perlスレが荒れてんのは、
まつもと以下Ruby野郎が一生懸命荒らしてんでしょ。乙。
0557デフォルトの名無しさんNGNG
517 なんだけど、何が変? >>523 >>524

俺は Perl から Python に乗り換えようと思ってる最中なんだけど、
はっきり言って Python のメリットは唯一つ、Windows との親和性が良い。今の所これだけ。
とゆーか少なくともファイル名に Unicode 使える。

prel5 は未だにシステムコール引数は非 unicode だし、ruby はソース見た感じ全く対応してないっぽかったんで。

自分で使うだけのスクリプトならそんなのどうでも良いんだけど、人に使わせるものになると
Win で動かないと意味ないし、とんでもないファイル名付けてる奴多いしね。


あと、標準ライブラリのエラーがちゃんと全部例外になってる (んだよね?) のも Perl5 と比べると良いなあ。
俺は、スクリプトはたまに使いたくなった時に使うだけだから、いちいち個々の挙動まで覚えてられない。

Perl のアドホックな挙動に時々泣かされた者としては、this.py は結構同感だなあ。
0558デフォルトの名無しさんNGNG
>>556
ものすごく説得力あるけど、
でもそんな事言うと、さらに荒れそうだよ。

只今、Python勉強中..
0559デフォルトの名無しさんNGNG
>>556
Pythonスレが荒れているのは身から出た錆というか、自業自得だよね。

Pythonスレが荒れているのを根拠も無くRubyのせいにしていることこそ、
Rubyが気になって仕方がないように思える。
0560556NGNG
>>559
>Pythonスレが荒れているのは身から出た錆というか、自業自得だよね。
この意味不明な中傷はどうにかならないのか。
もっと具体的に言ってよ。

>Pythonスレが荒れているのを根拠も無くRubyのせいにしていることこそ、
>Rubyが気になって仕方がないように思える。
ここ最近のレス見て、Ruby野郎がうっとうしいなと思って煽ってみただけだよ。

ただのオウム返しみたいな煽りばっかしてないで、もっと具体的なの頼むよ。

ちゃんと実装の事いってる奴もいるけど、おまえみたいなオウム野郎は糞だ。
0561デフォルトの名無しさんNGNG
↑糞虫w
0562デフォルトの名無しさんNGNG
>>556
きみきみ、マジレスしちゃいかんよ。
それと Ruby のせいにするな。煽ってるのはどっちも知らないアホだ。
ESR もいっているように、相手を叩くのではなく、自分を高めることこそが
もっとも相手にダメージを与える。精進せいよ。
0563デフォルトの名無しさんNGNG
switchねえ。
辞書に関数マッピングするか,
getattrとかでon_hogehogeみたいな関数を
動的に取得して呼ぶんじゃないの?

doがつかないのはバックワードコンパチのため。
doを予約語にすると困る人がいるから。
0564デフォルトの名無しさんNGNG
>>560
562がいうとおり、rubyの名を騙って荒らしているのは、rubyもpythonもしらない
ただのアホだろう。それにのればのるほど、荒しの思う壺だってわからんのか?
0565デフォルトの名無しさんNGNG
>>554
Googleではutf-8、yahooではeuc_jpを使っているそうで、
「くもの巣」という文字のurlエンコードが違います。
(Googleでは、%E3%81%8F%E3%82%82%E3%81%AE%E5%B7%A3)
(Yahooでは、%a4%af%a4%e2%a4%ce%c1%e3)

教えてもらった方法では、yahooタイプしかデコード
できません。Googleタイプのデコードってどうするので
しょうか?
[少し板違いになってきてます。すいません。]

yahoo= "%A4%AF%A4%E2%A4%CE%C1%E3"
print cgi.urllib.unquote(yahoo)
#=>くもの巣

google ="%E3%81%8F%E3%82%82%E3%81%AE%E5%B7%A3"
print cgi.urllib.unquote(google)
#=>沓

0566デフォルトの名無しさんNGNG
google = "%E3%81%8F%E3%82%82%E3%81%AE%E5%B7%A3"
unko = urllib.unquote(google)
print unicode(unko, "utf-8").encode("shift_jis")
print unicode(unko, "utf-8").encode("euc_jp") # どっちかでちゃんと表示できるはず
0567デフォルトの名無しさんNGNG
>>566
嘘つくな。お前試してないだろ。

>>> google ="%E3%81%8F%E3%82%82%E3%81%AE%E5%B7%A3"
>>> print unicode(urllib.unquote(google), 'utf-8')
くもの巣
0568567NGNG
すまん俺が悪かった。
おまけに上げてしまったので死ぬ。
0569デフォルトの名無しさんNGNG
試してから書いたが >>567
環境は Windows 2000, CJK Python 2.3.4 (CJK/SJIS)
0570デフォルトの名無しさんNGNG
ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Bruce+Eckel%A4%CE%A1%D6Ruby%A4%CB%A5%A4%A5%A4%A5%BF%A5%A4%A5%B3%A5%C8%A1%D7%A5%B3%A1%BC%A5%CA%A1%BC

ttp://takahr.dhis.portside.net/cgi-bin/rwiki.cgi?cmd=view;name=Python%A4%CF%A4%B3%A4%F3%A4%CA%A4%CB%A4%B9%A4%B4%A4%A4%A4%F3%A4%C0%A4%BE

ttp://c2.com/cgi/wiki?PythonVsRuby
0571デフォルトの名無しさんNGNG
>>566
下の方で表示できました。
>>567
こっちの方法でも動きました。
どうもありがとうございます。_O_
0572デフォルトの名無しさんNGNG
重複スレをあげてんじゃねえよ。

以下のスレへ移動しやがれ。

http://pc5.2ch.net/test/read.cgi/tech/1081264387/
http://pc5.2ch.net/test/read.cgi/tech/1095684242/
0573デフォルトの名無しさんNGNG


ここは Python VS. Ruby 専用


 
0574デフォルトの名無しさんNGNG
本スレ認定
0575デフォルトの名無しさんNGNG
ここのほかにPythonスレあるの?
0576デフォルトの名無しさんNGNG
>>575
ないよ。ここだけ。
0577デフォルトの名無しさんNGNG
>>575
あるけど、このスレ以外は重複スレだから気にしなくて良い。
0578デフォルトの名無しさんNGNG
前スレ
http://pc.2ch.net/tech/kako/980/980786239.html
0579デフォルトの名無しさんNGNG
>>560
> >Pythonスレが荒れているのは身から出た錆というか、自業自得だよね。
> この意味不明な中傷はどうにかならないのか。
> もっと具体的に言ってよ。

これマジで言ってるの?理解力の無い相当な低脳だね。
重複スレで揉めだして、おまえのような馬鹿がスルーできずに相手になって
拍車がかかってるのに。
0580デフォルトの名無しさんNGNG
おっ
次は「仲間のフリ」できたか!
0581デフォルトの名無しさんNGNG
(・∀・)埋め!
0582デフォルトの名無しさんNGNG
Ruby スレで放置されるようになったからこっちに来たんだろうね。。。
0583デフォルトの名無しさんNGNG
Rubyで"end"をいちいちいちいち付けるのがメンドイので今日からPythonにしました
0584デフォルトの名無しさんNGNG
そんな理由で変えるなよ
0585デフォルトの名無しさんNGNG
同じ理由でPascalからCにかえたのでした・・・。
0586ぬるぽNGNG
ぬるぽ
0587デフォルトの名無しさんNGNG
>>586
ガッ
0588デフォルトの名無しさんNGNG
糞スレ上げんなヴォケ
0589デフォルトの名無しさんNGNG
>>588
いいじゃないの、別に。
Pythonユーザって心が狭い奴ばかりなのね。
0590デフォルトの名無しさんNGNG
588がPythonユーザということにしたい
0591588NGNG
僕はcshユーザーでつ。
0592デフォルトの名無しさんNGNG
たしか PyQt の config の方式で揉めたんだよねぇ・・・
0593デフォルトの名無しさんNGNG
anyguiはどうなっちゃったの?
期待してたんだけど。
0594デフォルトの名無しさんNGNG
anyguiに限らず,ネイティブのツールキットを使うGUI wrapperって
失敗する傾向にあるんだよなぁ.
Tkの見た目がもう少し良くなってくれれば,俺は十分なんだけど.
0595デフォルトの名無しさんNGNG
fltkが unicode 対応してくれればなあ。。。
0596デフォルトの名無しさんNGNG
PyQt と pygtk は日本語使えるよ
0597デフォルトの名無しさんNGNG
それじゃ意味ない.X上でしかまともに動かないじゃん.
0598デフォルトの名無しさんNGNG
>>594
時期Tk9ではスタイルが使えて、Gtkっぽい見た目も
使えるようになるよ。今でも実験的にtileという拡張で
スタイルを変えられるウィジェットが使えるよ。
PythonでTkの拡張が使えるのかどうかは知らんけど。
0599デフォルトの名無しさんNGNG
>>598
おぉ.素晴らしい.
tk.eval()があるので,頑張れば拡張は使える…かな.
0600デフォルトの名無しさんNGNG
from xml.sax.saxutils import XMLGenerator
from xml.sax import handler
from xml import sax

output_gen = XMLGenerator()
parser = sax.make_parser()
parser.setFeature(handler.feature_namespaces, True)
parser.setContentHandler(output_gen)
parser.setErrorHandler(handler.ErrorHandler())
f = file(u'test.xml', 'r')
parser.parse(f)
f.close()

なんでこのコードがこけるん……?

File "C:\Python23\lib\xml\sax\saxutils.py", line 131, in startElementNS
name = self._current_context[name[0]] + ":" + name[1]
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
0601デフォルトの名無しさんNGNG
>>600
test.xml の中身は?
namespace 未使用の XML で、
parser.setFeature(handler.feature_namespaces, True)
だから? (未確認)
0602デフォルトの名無しさんNGNG
>>601
2つの名前空間が混在<test.xml
当然validなXML。バリデータはXMLSPY 2004。
名前空間接頭辞の扱いにバグがあるくさい。
0603デフォルトの名無しさんNGNG
投稿日も「ぬるぽ」なのが本物の「ぬるぽ」です。>>586
0604デフォルトの名無しさんNGNG
http://mail.python.org/pipermail/python-list/2002-November/131620.html

これを改良して、クリックされた部分のテキストの位置を座標ではなく、
行と列で求めたいのですが、どうしたらよいでしょうか?
0605デフォルトの名無しさんNGNG
GetInsertionPoint() を使って,キャレットのある場所の pos 値を求めた後に
PositionToXY() を使って x, y (列,行)に変換したらいいんじゃないでしょうか.
0606RNGNG
最近、eclipseでPythonのソレをうまいことアレ出来るって本当ですか?
以前、個人的に試した時は、コンソールにEUCの日本語が出なくて参ったのだけど。
0607デフォルトの名無しさんNGNG
python-mode.el では不満?
0608デフォルトの名無しさんNGNG
dir()の返り値の文字列の配列からキーワードを探す時に、
filter((lambda s:s.find('key' != -1)), dir(target))
をいつもやっているのですが、毎回めんどうです。
apropos(target, 'key')みたいな感じの標準の関数ってないでしょうか?
0609デフォルトの名無しさんNGNG
>>608 標準関数はないね。自分で作ってPYTHONSTARTUPか.pthで読み込むべし。
関係ないけど、[name for name in dir(target) if 'key' in name] のほうが好き。
0610デフォルトの名無しさんNGNG
さらに関係ないけど,リストの内包表記で, if〜 の位置が in〜 より後ろ
ってのに違和感がある.
0611デフォルトの名無しさんNGNG
>>606
Eclipseの出力コンソールにencodingを指定できないのが
原因。
Winなら、site.pyにShift_JISを指定すれば、Unicode文字列を
printするとコンソールで日本語が吐ける。
0612デフォルトの名無しさんNGNG
別スレで質問したのですが、そこは本スレじゃないと指摘されたので、
こちらに移動させて頂きます。

ttp://www.python.org/doc/faq/library.html#threads
ttp://www.idg.co.jp/sw/back/200103/20010316_01_report.html

殆どの場合 Python のスレッドは同時に一つしか動かないと書いてありますが、
実際マルチプロセッサマシンでスケールしないのでしょうか?

Perl や Tcl, Gauche(Scheme) はスレッド毎に VM を持つ仕様のようです。

ttp://perldoc.jp/docs/perl/5.8.0/perlthrtut.pod
ttp://www.tcl.tk/doc/howto/thread_model.html
ttp://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Gauche%3aMT%a4%c8%a5%b7%a5%b0%a5%ca%a5%eb

他の処理系も色々調べたのですが、Java 並みにスレッドを使える言語は
少ない感じです。Python に期待していたのですが、どんな感じでしょうか?
0613デフォルトの名無しさんNGNG
スケールしないと思います.そういう試みもあったらしいけど,
シングルプロセッサでさくさく動く方を優先したらしい.
マルチプロセッサの恩恵を受けたいなら, C でも他の言語でもいいから
恩恵を受けられるソフトウェアに仕事をさせて,そのインタフェースだけ
Python で書けば?ということなんじゃないかな.
分散コンピューティングインタフェースなら,pyMPI(.sf.net) というのが
あるらしいけど,詳しくは知らない.
0614デフォルトの名無しさんNGNG
>>613
やはりそうですか。細粒ロックを作っても処理速度が半分になってしまっては意味が薄い
ですよね。
0615デフォルトの名無しさんNGNG
>>614
Java使えよ。
0616デフォルトの名無しさんNGNG
Jython 使えよ。
0617デフォルトの名無しさんNGNG
>>616
速度もCPythonより速いらしいね.
Jythonに負け,IronPythonに負けるCPython….
0618デフォルトの名無しさんNGNG
>>617
>速度もCPythonより速いらしいね.

そうなの?
0619デフォルトの名無しさんNGNG
>>618
らしい.自分で試したことはないし,そもそもJython自体よく知らないんだけども.
JythonってJavaVMのバイトコードへコンパイルするんだよね?
速いのも納得できる気がする.

ところで,Pythonにファーストクラス継続が導入されないのは,
Jythonで実装できないからだ,とどこかで読んだ気がするんだけど本当なのかな?
0620デフォルトの名無しさんNGNG
rhino は first-class continuation を実装しているから、出来ない事は無さそうだけど。
要はメインのソースツリーに統合されるだけの需要があるかどうかなんじゃないかな。
0621デフォルトの名無しさんNGNG
IronPython は速いようだけど、Jython が CPython より速いって
ソースどこ?
ぐぐってみたけどみあたらないんだが。
0622デフォルトの名無しさんNGNG
じぶんで計測しれよ
0623デフォルトの名無しさんNGNG
>>620
そういえばRhinoWithContinuationsなんてのがあったな.
でもRhinoは単なるJava上のインタプリタなのに対して,
JythonはJavaVMのバイトコードに落してるからきついんじゃないかな.
スタック触れないし.
0624デフォルトの名無しさんNGNG
http://www.gnu.org/software/kawa/Features.html#Features

kawa はバイトコードを吐くけど、continuation を作れるらしい。
JScheme や Bigloo も確かそう。詳しい事は知らないけど。
0625デフォルトの名無しさんNGNG
Kawa is not generally tail-recursive.
だからちょっと躊躇しちゃうなあ。
0626デフォルトの名無しさんNGNG
まぁ、どれも実装を知らないので議論は出来ないな。
継続ってどうも一般受けしない技術みたいだから、それだけでも採用されてない
理由にはなりそうだけど。
0627デフォルトの名無しさんNGNG
>>624
http://www.gnu.org/software/kawa/Restrictions.html#Restrictions
continuationに制限あるっぽい.
0628デフォルトの名無しさんNGNG
大域脱出にしか使えないって事?
0629デフォルトの名無しさんNGNG
Kawa の call/cc は catch/throw で実装してたはず。
……実装してるって言っていいのかなあ。
0630デフォルトの名無しさんNGNG
>>629
努力賞.

Schemeなら限定的なcall/ccでもあった方が嬉しいけど,
Pythonはループ脱出や例外処理が一通り揃ってるから,
その程度のcall/ccじゃ実装したって意味ないよなぁ.

ちょっとStackless Pythonで遊んでみるか.
0631デフォルトの名無しさんNGNG
>>1
 は や く 教 え ろ
0632デフォルトの名無しさんNGNG
Stackless Python のドキュメントどこにあるんだ?
0633デフォルトの名無しさんNGNG
Python と Ruby って、Ruby のほうがずっと遅いと思っていたんだけど、
実際はどうなのかな。性能比較した人いませんか?
0634デフォルトの名無しさんNGNG
>>633
たぶん同じくらい.
ってか,さらに荒れそうな話題をageで書かないでくれ.
0635デフォルトの名無しさんNGNG
>>633はトロール漁法
0636デフォルトの名無しさんNGNG
631 :デフォルトの名無しさん :04/10/23 14:03:08
>>1
 は や く 教 え ろ
0637デフォルトの名無しさんNGNG
>>436
妹の質による。
そこらのアイドルを軽く凌駕する可憐さと、家族の前でも汚い部分は見せない
気遣かいを兼ね備えた妹を持つ漏れの友人は、激しく実妹萌えしてた。
0638デフォルトの名無しさんNGNG
>>637
何の誤爆???
0639デフォルトの名無しさんNGNG
Pythonの妹は?
0640デフォルトの名無しさんNGNG
>>639
Jython
0641デフォルトの名無しさんNGNG
ある日突然、あなたに24個もの台風が発生したらどうしますか?

それも……とびっきり大きくて
とびっきり暴風で
とびっきり大雨連れて
とびっきりの土石流発生。
しかも、そのうえ……
台風達はみんなみんな、とびっきり!
日本のコトが大好きなんです……
0642デフォルトの名無しさんNGNG
奥ゆかしい25号目萌え。
0643デフォルトの名無しさんNGNG
次の命題は正しいか?
「Python はプロトタイプベースのオブジェクト指向言語である。」
0644デフォルトの名無しさんNGNG
次の用語を定義せよ。
「プロトタイプベース」
0645デフォルトの名無しさんNGNG
>>644
インスタンスベースのことです。
0646デフォルトの名無しさんNGNG
試作品を基にしたOOPL?
0647デフォルトの名無しさんNGNG
>>643
(Smalltalkの#become:みたいなズルをせずに)インスタンスの属するクラスを変えられれば
プロトタイプベースだよ。

>>> class A:
... def test(self):
... print "A"
...
>>> class B:
... def test(self):
... print "B"
...
>>> obj=A()
>>> obj.__class__=B
>>> obj.test()
B
0648デフォルトの名無しさんNGNG
>>647
ありがとう。
やっぱり Python はプロトタイプベースと呼べる下地があるのですね。
0649デフォルトの名無しさんNGNG
狭義のプロトタイプベースは、文字通り>>646的意味でしか使わないから、単発で使わずに
>>645のいうインスタンスベースとか、(オブジェクト指向と混同しない程度の文化度が
期待できるところでは)オブジェクトベースとか言い添えた方がいいよ。 老婆より。
0650デフォルトの名無しさんNGNG
ここは ambiguous なインターネットですね
0651デフォルトの名無しさんNGNG
オブジェクトベースるには,インスタンスメソッドが作りにくいのが難点かな.
普通にやろうとすると,
class object: pass
obj = object()
obj.method = lambda self: ...
obj.method(obj) # ←ここの引数が嫌.
なんか周りくどい方法で解決できた気はするけど.
0652デフォルトの名無しさんNGNG
Zope serv はインスタンスですよ
0653デフォルトの名無しさんNGNG
>>651
newモジュールを使うナリよ。
あと、 インスタンスメソッド→インスタンス特異的メソッド ね。

はいそこ、特異メソッド…とかつぶやかないように!w
その呼び名はあの界隈ローカルですから。
ちなみにあれは、ばりばりのクラスベースですから,斬り!
0654デフォルトの名無しさんNGNG
プロトタイプが、、、なんて無知なまましったかで話してると、sumimさんに斬られますよ。
0655デフォルトの名無しさんNGNG
残念! 拙者…Zopeは存じませぬから! 切腹!
0656デフォルトの名無しさんNGNG
Python さわってて Zope で遊ばないなんて信じらんな…
apache よりもおもろいよ、Zope
0657デフォルトの名無しさんNGNG
>>656
Zope ってドキュメントが少ないし、
まともなアプリ作れるようになるまでに相当勉強しないといけない。
PHP 使うほうがずっとまし。
[一年前に触った君 より]
0658デフォルトの名無しさんNGNG
おもしろくても、Cのようにネイティブで高速な
わけでもなく、Javaのように最適化されまくって
速いわけでもない。おもちゃだな。
0659デフォルトの名無しさんNGNG
pythonを勉強しようと思いpython日本語環境2.3.4というものをインストールしたのですが、
pythonIDEが見当たりません。
c言語を少しだけやった時には、コンパイラがあったのですが・・・。
python.exeを実行するとdos窓が開くのですが、皆さんはこれでpythonのプログラムを
作っているのでしょうか?

私の環境は
os;xp sp2
memory;512mb
cpu;pen4 2.4c Ghz
です。わかるかたいましたら、レスお願いします。

0660デフォルトの名無しさんNGNG
>>659
Python IDE 使ったことない。
python.exe実行してDOS窓開くんじゃなくてDOS窓でpython.exe実行する。

0661デフォルトの名無しさんNGNG
>>659
> python.exeを実行するとdos窓が開くのですが、皆さんはこれでpythonのプログラムを
> 作っているのでしょうか?

そういう人も多いと思われ。別の選択肢は IDLE という統合環境を使うこと。
スタートメニューの中に「IDLE (Python GUI)」というのがあると思う。

プログラムファイルには foo.py のように .py で終わるファイル名を付ける。
そうするとファイルのアイコンが蛇マークになる(もしならないなら関連付けが
無効になっているか、ちゃんと .py になっていない)。この状態でアイコンを
右クリックすると「Edit with IDLE」という項目が表示されると思う。これを選べば
IDLE で既存のプログラムファイルを編集したりプログラムを実行したりできる。

IDLE は一風変わった統合環境なので慣れが必要かも。よく分からなければ
メモ帳でプログラムファイルを作って、アイコンをダブルクリックして実行、
という方法でもいい。俺的にはこの方法が楽チン。
0662デフォルトの名無しさんNGNG
instancemethodの定義を追ってくと,
class object:
  def method(self): pass
instancemethod = type(object().method)
と等価っぽいんだが,なんじゃこれは?

def instancemethod(self, f):
  return lambda *args, **kws: return f(self, *args, **kws)
ではダメなのかな?
0663662NGNG
lambdaにreturn付けてしまった….鬱.
0664659NGNG
>>660
>>661
レスありがとうございます。
pythonGUIありました。スタートアップにあったとは・・・orz

まだ、それほどわかっていないのですが、C言語よりはなじみやすく感じ、
この言語だったら長く続けられそうな気がします。ありがとうございました
0665デフォルトの名無しさんNGNG
16進数文字列→intに変換する関数が見つからない.help!
0666デフォルトの名無しさんNGNG
>>665
>>> s = '0a'
>>> eval( '0x' + s )
10
>>>
0667デフォルトの名無しさんNGNG
>>> int("0xFF", 16)
255
>>> int("FF", 16)
255
0668デフォルトの名無しさんNGNG
>>666, >>667
thx!
0669デフォルトの名無しさんNGNG
new-style classってなに?
0670デフォルトの名無しさんNGNG
http://www.python.org/moin/PythonGlossary
> new-style class - Any class that inherits from object. This includes
> all built-in types like list and dict. Only new style classes can
> use Python's newer, versatile features like slots, descriptors,
> properties, getattribute, class methods, and static methods.

object クラスから派生したクラスのこと。list や dict などの組み込み型もこれに含まれる。
新型クラスだけが Python の比較的新しい多才な機能(スロット、デスクリプタ、プロパティ、
getattribute、クラスメソッド、スタティックメソッドなど)を活用できる。
0671デフォルトの名無しさんNGNG
SD 読んだけど Python が扱われなくて良かったよ。
0672デフォルトの名無しさんNGNG
>>671
理由も
0673デフォルトの名無しさんNGNG
いずみちゃんで(;´Д`)ハァハァ できるようでないと、
Pythonを使いこなすのは難しい。
0674デフォルトの名無しさんNGNG
負け惜しみが多いスレですね
0675デフォルトの名無しさんNGNG
Rubyスレの方がよほど潔いな
0676デフォルトの名無しさんNGNG
>>671
結局理由はいえないのかよ
0677デフォルトの名無しさんNGNG
671 じゃないが。記事のレベルがどうにもこうにも。
0678デフォルトの名無しさんNGNG
Pythonでブラウザのレンダリングイメージを取得したいのですが、
可能でしょうか。
OSはLinux、ブラウザはなんでもOKです。
getScreen(URL,outfile,jpg)みたいな感じにしたいんですが。
0679デフォルトの名無しさんNGNG

はい
0680デフォルトの名無しさんNGNG
お前らの開発環境と開発ツール教えて下さいお願いします。
便利なやつ使ってんだろ?
俺はcygwinでIPython使おうと思ったけど、あれhelp()ですぐ落ちて不安定。
0681デフォルトの名無しさんNGNG
>>678 >>679
ライブラリとかですか?情報をお願いします。
0682デフォルトの名無しさんNGNG
>>680
Linuxの場合:
Red Hat Linux 7.3 標準の Python 2.2。エディタは Emacs (python-mode 使用)。
Windowsの場合:
Python.org 謹製 Python 2.3.4。エディタは本体に付属の IDLE。

何の変哲もないが特に不満はない。
0683デフォルトの名無しさんNGNG
>>680
Exuberant Ctags はPythonも対応しているな。
0684デフォルトの名無しさんNGNG
>>678
import os, commands

def getScreen(URL, filename, format):
    os.system("netscape -remote 'openURL(%s)'" % URL)
    os.system("sleep 10") # wait the rendering to finish...
    data = commands.getoutput("xwd -root | convert xwd:- %s:-" % format)
    open(filename, "w").write(data)

if __name__ == "__main__":
    getScreen("http://www.python.org/", "python.jpg", "jpeg")

レンダリングの終了を待つ確実な方法が思いつかなかった。
netscape -remote 'PageUp()' などの無害なコマンドを送ればいいのでは
とオモタけど、レンダリング終了前に PageUp してしまう。

-remote に関しては下記参照。Netscape.ad のコメントも参考になる。
http://wp.netscape.com/newsref/std/x-remote.html
0685デフォルトの名無しさんNGNG
>>680
おまいが「ぱいきち」とか名乗ってPythonShell作れ。
0686デフォルトの名無しさんNGNG
>>684
どうすればよいかまったくわからなかったのですが、684の
コードで理解できました。
ありがとうございました。
http://home.catv.ne.jp/pp/ginoue/memo/screenshot.html
0687デフォルトの名無しさんNGNG
>>684
すんません、例えば
> os.system("netscape -remote 'openURL(%s)'" % URL)
                         ~
                         ↑
                       これ何ですか?
0688デフォルトの名無しさんNGNG
「これ」が指しているのが俺のブラウザだと「R」の文字なんだが。
聞きたいのは %s のことか? それともその後の % のことか?
0689デフォルトの名無しさんNGNG
すんません、
> それともその後の % のことか?
のことです
0690デフォルトの名無しさんNGNG
>>687
python起動して、
>>> "hoge%s" % "fuga"
とかやってみろ。
0691デフォルトの名無しさんNGNG
Cでいうsprintfみたいな機能のやつ
ttp://www.python.jp/pub/doc_jp/lib/typesseq-strings.html
0692デフォルトの名無しさんNGNG
% という演算子(+ や * の仲間)だよ。

7.1 ファンシーな出力の書式化
http://www.python.jp/pub/doc_jp/tut_2.3.3/node9.html
0693デフォルトの名無しさんNGNG
;・∀・)ハゥ!被ったっ!折れ以外にお節介野郎が二人もっ!
0694デフォルトの名無しさんNGNG
>>690
'hogefuga' と帰ってきました。
なるほど。C だと , のやつですね>>%
0695デフォルトの名無しさんNGNG
> C だと , のやつですね>>%

C だと、何だって?
0696デフォルトの名無しさんNGNG
これは何に使うスクリプトなの?
0697デフォルトの名無しさんNGNG
つーか,これでレンダリング結果を得るのは無理ありすぎ.
0698デフォルトの名無しさんNGNG
代案きぼんぬ
0699デフォルトの名無しさんNGNG
re.subとかstring.replaceとか使えば?
0700デフォルトの名無しさんNGNG
何の話?
0701デフォルトの名無しさんNGNG
"hoge%s" % "fuga"
の代案だと思われ。
0702デフォルトの名無しさんNGNG
% のエスケープが \% じゃなくて %% なのが納得いかん
0703デフォルトの名無しさんNGNG
JPythonのネタが全然出てこないねぇ。これも日本人は使ってないのかなと。
0704デフォルトの名無しさんNGNG
JPython はなくなりました
いまは Jython ですので
0705デフォルトの名無しさんNGNG
Python流のコーディング規約みたいなのってある?モジュール名は大文字、
メソッド名は動詞、XXにはプリフィクスをつける、とか、変数名に迷ったらspamとか。
0706デフォルトの名無しさんNGNG
ここらへん
ttp://oldriver.org/python/pep-0008j.html
0707705NGNG
>>706
thx.
0708デフォルトの名無しさんNGNG
Jython使ってましたが、Groovyに移行してしまいました。
Javaとの連携はGroovyのほうが美しかったので。
0709デフォルトの名無しさんNGNG
Python 使いが「Java でも使ってやろうかな」というときに使うのが Jython であって、
Java だけラップした Groovy(使ったことないからよくわかりませんが) は汎用性を犠牲にした分だけ
Java との親和性が Jython と比較して良いということなんじゃないのかな。
Java で生きる人には良い選択なのだろうけど、こっちとしては眼中にない。
0710デフォルトの名無しさんNGNG
>>709
使ったこともないのに他の言語を批判して貶めるのがPython厨の
いつものやり方だよね。
0711デフォルトの名無しさんNGNG
Jythonって開発がぜんぜん進んでないじゃん。
0712デフォルトの名無しさんNGNG
>>708
正解でしょう。
たぶんGroovyのほうがずっと将来性あるし。
0713デフォルトの名無しさんNGNG
Javaとの親密な連携が必要な場合はGroovyの方がいいかもね.
Groovyの特徴は,良くも悪くもJavaにべったりなところ.
0714デフォルトの名無しさんNGNG
Javaで書いたクラスをそのまま呼び出せるの?
0715デフォルトの名無しさんNGNG
>>714
じゃま
うざい
こっちいけ
http://pc5.2ch.net/test/read.cgi/tech/1080052050/
0716デフォルトの名無しさんNGNG
def を使うとなんか
<function test at 0x006B1A70>
って出てくるんですけど、どうしたらいいんでしょう。
testは関数の名前のところにいれました。
0717あぼーんNGNG
あぼーん
0718デフォルトの名無しさんNGNG
>>716
まずPythonをアンインストールしろ.次に
0719デフォルトの名無しさんNGNG
>>716
それは test の名前空間のアドレス
0720デフォルトの名無しさんNGNG
えぇっと、、、理解しました。
スレ汚しごめんよ。(´・ω・`)
0721デフォルトの名無しさんNGNG
>>720
まじで?折れ、蛇使いを自負してるけど>>719の意味が分からん。
def test: ... ってやっただけで print test したのと同じになる理由も思いつかない。
readlineモジュールでなんかやってる?
0722デフォルトの名無しさんNGNG
>>> def hoge():
... pass
...
>>> hoge
<function hoge at 0x00A639F0>

こんな感じのことやったんでしょう
0723デフォルトの名無しさんNGNG
「PerlユーザのためのPython移行ガイド」
読んだけど、実用書そのもの。ホントにPerlはこうでPythonはこう、ってい羅列しかなくて
面白みはなかった。薄めでオライリーより安いし、テーマはいいとこ付いてて実用むけなんだけど
もう一つなんか欲しかった。

オレとしてはclassの定義で
class Foo
def bar(self,boo)

な形の第一引数selfにたいして何のコメントもないのがすげぇひっかかった。
同じ構成のperlコードと比較しているのでわかれよ、ってことなんだろうけど
そこは普通解説するだろ。
0724デフォルトの名無しさんNGNG
>>723
11月中に初めてのPython第2版がリリースされるよ
0725デフォルトの名無しさんNGNG
てゆーか「名前空間のアドレス」って何
0726デフォルトの名無しさんNGNG
お勉強に読むと楽しいソース教えて。
手頃なサイズのやつ。
0727デフォルトの名無しさんNGNG
>>726
http://www.unixuser.org/%7Eeuske/doc/pygame/ChimpLineByLine-j.html

猿でも読める。
0728デフォルトの名無しさんNGNG
>>715
Jythonでションボリなjava開発を楽しくする話はここでしてもいいでしょうか?
ドキドキ
0729708NGNG
あ、Jython->Groovyに行きましたが、
Pythonは使いつづけてますんで。
念のため。
0730デフォルトの名無しさんNGNG
#python-ja ってどうやったら繋げられるの?というかこのチャンネル生きてんの?
0731デフォルトの名無しさんNGNG
>>730
生きてる価値がなぃょ
0732デフォルトの名無しさんNGNG
>>730

ttp://www.python.jp/Zope/PyLog/1095147501/

ここ読んで駄目なら才能ない。
0733デフォルトの名無しさんNGNG
Pythonって同名の関数定義しても警告とか出ないんだね…。言語仕様?
この動作を抑制する方法ってありますか?

あとperlのmy, perl -w のようなことはできない?
0734デフォルトの名無しさんNGNG
>>733
See 'python -h' output.
0735デフォルトの名無しさんNGNG
>>724
Scheme でも警告でないことが多い。
最も最近で定義された関数が有効になるというのは
それはそれできれいだと思う。
0736↑NGNG
レス番ずれてね?
0737デフォルトの名無しさんNGNG
ほんとだ。 >>733 の間違いだね
「ホットゾヌ2」のバグかな。。。
0738デフォルトの名無しさんNGNG
ぬるぽ
0739デフォルトの名無しさんNGNG
ガッ
0740デフォルトの名無しさんNGNG
http://www.python.org/Mirrors.html
これ見るとHTTPのミラーは日本にはないんだね。
日本からだとどこが速いんだろう。
0741デフォルトの名無しさんNGNG
>>740
Python.jp でなんでやらないんだろう?
見るものがあんまし多くないから水増しに良かろうに。
0742デフォルトの名無しさんNGNG
なぜ Jython は Java 1.5 で動きませんか?
0743デフォルトの名無しさんNGNG
文字列中のASCII範囲外の文字を文字参照(&#xxxxx)に変換したいのですが、
そういったライブラリはありませんか?
0744デフォルトの名無しさんNGNG
リファレンスとにらめっこするか、練習問題だと思ってやってみれば?
ここで答えを待ってるより早い。

0745デフォルトの名無しさんNGNG
      __--、、-へニ二、‐、
     ,,-´´, ‐´7 ~ `ヽ ̄ ヽ \
    / /   |     ll   \ ヽ.
   〃 /  ./ ,|  i  l || ヽヽ ヽ `、
  /  /  ./ /{l  |、 l. ||ヽ. } l.  ヽ l
  ! ./l 〃 fT lヽ. ヽ ''フT'ト | |  |. !
    |!| l| |. レ=、\ .y',=:、 | |、  ! |
.    !'ヽl !. {.l“{::f|     |i:::f}”| | } / ! .|i   おねえちゃん
      `| ゞ !. -‐ 、  ‐'-'  | |´/ | |.!   ぱんちっっっっっっっっ
.       r.、 l. i 、   ー   ./| |´| |. | | i 
     /l. l |. l. i _ 、 .. '|ッ、| | | ! | | l 
      / .| ,レヘ.∩/(.   / .l| | |  | | l. l.
    // 〈 'ニユ.|   ><   /l |`ヽ、.! | l. ll
   〃/, ‐ヽ  ヤ_〉=夫=.、/.| |  /`、! |. ||
  〃/./ | `、 `i 〃 ヽ、_》 ! |  | | ヽ.l ||

0746743NGNG
>>744
ないと先へ進まないので書いてはあるんですが、
ちゃんとしたのがないのかなとおもった次第です。

tmp = ""
for ch in unicode:
 esc = ch.encode("unicode_escape")
 if ch != esc:
 ch = "&#%d;" % int(esc.replace("\\u", ""), 16)
tmp += ch
return tmp.encode("ascii")

>>745
姉ゲー?
0747743NGNG
組み込みにord()ってのをみつけた。↑のコードのはずかしさ倍増
0748デフォルトの名無しさんNGNG
# -*- coding: cp932 -*-

s = u"""\
      __--、、-へニ二、‐、
     ,,-´´, ‐´7 ~ `ヽ ̄ ヽ \
    / /   |     ll   \ ヽ.
   〃 /  ./ ,|  i  l || ヽヽ ヽ `、
  /  /  ./ /{l  |、 l. ||ヽ. } l.  ヽ l
  ! ./l 〃 fT lヽ. ヽ ''フT'ト | |  |. !
    |!| l| |. レ=、\ .y',=:、 | |、  ! |
.    !'ヽl !. {.l“{::f|     |i:::f}”| | } / ! .|i   おねえちゃん
      `| ゞ !. -‐ 、  ‐'-'  | |´/ | |.!   ぱんちっっっっっっっっ
.       r.、 l. i 、   ー   ./| |´| |. | | i 
     /l. l |. l. i _ 、 .. '|ッ、| | | ! | | l 
      / .| ,レヘ.∩/(.   / .l| | |  | | l. l.
    // 〈 'ニユ.|   ><   /l |`ヽ、.! | l. ll
   〃/, ‐ヽ  ヤ_〉=夫=.、/.| |  /`、! |. ||
  〃/./ | `、 `i 〃 ヽ、_》 ! |  | | ヽ.l ||
"""

def encode(c):
if c < u"\x80":
return c
else:
return u"&#%d;" % ord(c)

print u"".join([encode(c) for c in s])
0749デフォルトの名無しさんNGNG
>>743
"ほげ".encode("ascii","xmlcharrefreplace")
0750743NGNG
>>749
thx!

>>748
GJ!
0751デフォルトの名無しさんNGNG
>>748
なんじゃこれ
ひどいげんごだね
0752デフォルトの名無しさんNGNG
なぜに Python は 画像処理ソフトで人気がありますか?
画像処理ライブラリがすごいことになってたりすんのかな。
0753デフォルトの名無しさんNGNG
>>752
あるよ。とりあえず PIL かなぁ・・・
0754デフォルトの名無しさんNGNG
インスタントパイソンのページを読んでがんばってるんですが、
この、

class Basket:

# Always remember the *self* argument
def __init__(self,contents=None):
self.contents = contents or []

def add(self,element):
self.contents.append(element)

def print_me(self):
result = ""
for element in self.contents:
result = result + " " + `element`
print "Contains:"+result

のself.contentsというのがどういうことなのかいまいちよくわかりません。
誰か教えてください…お願いします。
0755デフォルトの名無しさんNGNG
>>754
C++で言うメンバー変数、Smalltalkで言うインスタンス変数。
0756デフォルトの名無しさんNGNG
>>754
selfはC++、javaとかのthisと一緒。
クラスでのメソッド定義の第一引数(self)は自インスタンスが生成されたときの
自インスタンスへの参照になる。

この場合self.contents は Basketクラスのインスタンスのcontents変数。

b=Basket()
b.contents

へのアクセスと同義。

でいいのかな。俺も最近始めたばかりだからスコープ定義とか
まだはっきり把握していない。
Pythonマスターからツッコミ希望。

で、俺も質問なんですが
・メンバ変数も宣言なしで使えるのはいいんですがtypoしたとき困らない?
・クラス変数ってどー定義するの?

0757m9っ・∀・)NGNG
>>754
self はオブジェクト自身を保持する変数だよ。
self.contents = ... という代入文は、self が指すオブジェクトの中に
"contents" という変数を作って、次の値を設定しなさい、という意味。

>>> class Basket:
...     def __init__(self, contents=None):
...             print self # 試しにオブジェクト自身を表示してみる
...             self.contents = contents or []
...
>>> foo = Basket() # Basket クラスのインスタンスを作る
<__main__.Basket instance at 0x816975c> # 作ったオブジェクト自身が表示された
>>> foo # 変数に代入されたオブジェクトを表示してみる
<__main__.Basket instance at 0x816975c> # 同じものが表示された
>>> bar = Basket([1, 2, 3]) # 別の Basket インスタンスを作る
<__main__.Basket instance at 0x816bf24> # 新たに作られたオブジェクト自身が表示された
>>> bar # 変数に代入されたオブジェクトを表示してみる
<__main__.Basket instance at 0x816bf24> # やはり同じものが表示された

foo1 と foo2 は別のオブジェクトであることが表示される数値(=オブジェクトID)の
違いから分かる。したがって foo1.contents と foo2.contents も別の変数ということになる。
これも表示してみると分かる。

>>> foo.contents
[]
>>> bar.contents
[1, 2, 3]
0758m9っ・∀・)NGNG
>>756
> メンバ変数も宣言なしで使えるのはいいんですがtypoしたとき困らない?

Pythonマスターは typo などしない!!

> クラス変数ってどー定義するの?

>>> class Basket:
...     contents = []
...
>>> foo = Basket()
>>> bar = Basket()
>>> foo.contents
[]
>>> bar.contents
[]
>>> foo.contents.append(1)
>>> foo.contents
[1]
>>> bar.contents
[1]
>>>
0759デフォルトの名無しさんNGNG
typo の問題は、初期化 (代入) しないで参照するとエラーになるから、全くガー
ドがないわけではないはず...

まぁ、UT ちゃんとやりましょう... ということかな...

0760デフォルトの名無しさんNGNG
import re
print re.search('(h.{1}ge)','hoge hage hige').groups()

とすると、

('hoge',)

こうなってしまうのですが、これを、

('hoge', 'hage', 'hige')

とするにはどうしたらよいでしょうか?
0761m9っ・∀・)NGNG
>>> print re.findall('(h.{1}ge)','hoge hage hige')
['hoge', 'hage', 'hige']

タプルでないとだめ?w
0762デフォルトの名無しさんNGNG
>>761
本当はマッチオブジェクトが欲しいのですが、(マッチオブジェクトを使って
文字列の位置を知りたい)findallだとそれができないので、
どうしてもmatch/searchが使いたいのですがどうにかなりませんか?
0763デフォルトの名無しさんNGNG
finditer()
0764デフォルトの名無しさんNGNG
>>> import re
>>> print [x.span() for x in re.finditer('(h.{1}ge)','hoge hage hige')]
[(0, 4), (5, 9), (10, 14)]
0765760NGNG
>>763
>>764

finditerを使ったらできました。ありがとうございました。

イテレーターが出たときは「難しそうだし、複雑なことは自分ではやらないので
覚えなくてもよかろう」と思って無視していたのですが、
こんなところで使うとは思ってませんでした。
0766デフォルトの名無しさんNGNG
質問です。
・PythonではすべてのクラスのRootクラスは存在しますか?する場合、マニュアルのどのセクションに記述されていますか?
・__add__のようなオーバーロード可能な演算子の一覧はマニュアルのどのセクションに記述されているのでしょうか?
・ブロックごとに変数スコープは作成されますか?
0767デフォルトの名無しさんNGNG
>>766
とりあえず全部嫁
0768デフォルトの名無しさんNGNG
非常にレベルの低い質問だとは思いますが、釣りではありません。
”input”で文字列を格納するにはどうすればよいのでしょうか??
例えば
hello = input()
print hello
数字は可能ですが、文字列を入れるとエラーが出ます。
なぜでしょうか?
0769デフォルトの名無しさんNGNG
文字列の入力には raw_input を使う

hello = raw_input()

input だと入力を式だとみなして評価してしまう.
たとえば input() で 1+2 と入力すると 3 が返る.
0770デフォルトの名無しさんNGNG
- 旧形式クラスの場合には,Root クラスに相当するものはありません.
新形式クラスの場合には object 型が基底クラス.
簡単な説明はチュートリアルの用語集に書いてあります.
詳しい説明はリファレンスマニュアルの 3 章と 7 章に少し書いてあるけど
多分難解で参考にならないでしょう.オライリーの「Pythonデスクトップリファレンス」
に簡単でわかりやすい説明があったと思います.
- オーバロード可能な演算子は,リファレンスマニュアルの 3.3 節「特殊メソッド」
に詳しく書かれています.ライブラリリファレンスの 3.10.1 節には,よく使われる
一部の特殊メソッドについてまとめた対応表がありますよ.
- ブロック文ごとに変数スコープを張るわけではありません.
変数スコープについては,チュートリアルの 9.2 節,
リファレンスマニュアルの 4.1 節などに書かれています.
0771768NGNG
>>769
出来ました!
ありがとうございました。
0772754NGNG
>>755-757
ありがとうございました、助かりました。
0773766NGNG
>>767
目次から当たりをつけてざっと目を通したつもりだったんですが、
「全部嫁」はおっしゃるとおりで。申し訳ないです。

>>770
ありがとうございます。大変助かります!


ドキュメント見て思うのは
「グローバルモジュールインデクス 」はあるけど
他のOOP言語でよくあるクラス階層図がないなぁと。
「Python ライブラリリファレンス」がそれに近い?

ドキュメントに {}はmapping型のdictonary型、
それにdict型が存在するとあったので
試しに
d=mapping()
d=dictory()
と書いてみたらエラー。
d=dict()
は正解。うぬぅ。わからんぜよ・・・。


0774デフォルトの名無しさんNGNG
>>773
素直にまずチュートリアルから始めたら?
0775デフォルトの名無しさんNGNG
流れ的にはオライリー待ちといっとけば正着
0776デフォルトの名無しさんNGNG
>>773
推測するのが好きなら既存のコードを読んでみたら。
ライブラリなりアプリケーションなり好きなものを。
でもって、読んでて分からない部分をマニュアルで調べる、と。
0777デフォルトの名無しさんNGNG
ライブラリリファレンスの 2 章が,だいたい組み込みオブジェクト型の階層に
合わせて書かれていますよ.それぞれの型の素のインスタンスを作成する関数
は,(読みにくいけど) 2.1 節の組み込み関数の中で列挙されています.
0778766NGNG
>>774
マニュアル流し読みしてました。スンマセン。

>>777
有難うございます。
0779デフォルトの名無しさんNGNG
>>773
> ドキュメントに {}はmapping型のdictonary型、
> それにdict型が存在するとあったので
どこに書いてある?
そんなこと今まで知らなかったorz
0780773NGNG
>>779
・Python リファレンスマニュアル 3.2 標準型の階層
マップ型 (mapping)
辞書型 (dictionary)

とありますが、単なる概念の説明なわけですね。きっと。
しかしマニュアルでは論理上の型名と物理型名の
表記上の違いがないような気がする。

dict()は 
・Python チュートリアル 5.4 辞書
にdict()コンストラクタ という表現がありましたが・今見たら
・Python ライブラリリファレンス 2.1 組み込み関数
に説明がありました。
0781m9っ・∀・)NGNG
1.5.2あたりまでは、組み込み型のオブジェクトを作るための方法は
{} や [] や () がすべてで list() や tuple() は型変換のための関数に過ぎなかった。
dict() に至っては相互変換できる組み込み型が無いので存在すらしなかった。
だから例えばマニュアルに「辞書型(dictionary type)」などと書いてあっても
dict() と混同する気遣いはなかったよーに思う。
しかるに list, tuple, dict は今や型そのものなので、
型の名前=プログラム中で使える識別子かと想像するのも無理はないかも。
ある意味では、マップ型(mapping type)やシーケンス型(sequence type)は
説明のための型の分類(カテゴリ)だといえる。

しかし純粋に説明のための分類かといえばそうでもないところがややこしくて、
「Python/C API」の6章(特に6.3節や6.4節)を見ると同じカテゴリに属する型の
オブジェクトは同じAPIで共通して扱えるようになっていることが分かると思う。
これは、例えば sequence type に属するリストやタプルには等しく len() や
スライスが適用できることに相当する。
0782デフォルトの名無しさんNGNG
>>780
Python で「型」と出ていたら JAVA で言うクラスではなく
インターフェイスだと思った方が分かりやすいと思う。
0783m9っ・∀・)NGNG
よーするに分類名=型名じゃないよってことです。
0784デフォルトの名無しさんNGNG
urlで指定したファイル(画像等)はどのようにダウンロードするんですか?
0785m9っ・∀・)NGNG
import urllib
urllib.urlopen("http://www.python.org/pics/pythonHi.gif")
0786デフォルトの名無しさんNGNG
jythonの話っでawtのコードが良く出てくるけど
webでの話ってあんまナイネ。
糊付け言語として使うならビューに使うのが正解かと
思ったがJSPコンパイラに相当するものなさげだし、
あってもインデントと相性悪いし。

ロジック・モデルをフルjythonで書くのが正解?
あとテストコード。
0787デフォルトの名無しさんNGNG
>>780
なるほど.インターフェイスと実装の違いね.
で,今のところマップ型の実装は辞書型しかないと.
最初にmapとdictがあると聞いたときは
ハッシュと二分木とか,複数の実装があるのかと思った.

ちなみに,Pythonのクラスはオブジェクト生成関数みたいなモノなので,
dictはクラス名であると同時に,辞書オブジェクト生成関数であるとも言える.
0788デフォルトの名無しさんNGNG
cvsをインストールして初めて名前を知りました。
pythonてどういう時に使うのでしょうか?
0789デフォルトの名無しさんNGNG
>>788
おまいがいつもググっているときにPythonの恩恵を間接的に受けている
0790デフォルトの名無しさんNGNG
どのような恩恵を受けているのですか?
0791デフォルトの名無しさんNGNG
>>790
君がgoogleに文字列をPOSTしてからPageRankに従ってサイトのリストを
君のブラウザ上に返すまでがほどんどPython若しくはPython謹製でやっているという事実。
0792デフォルトの名無しさんNGNG
謹製という言葉の謎な使い方がまたひとつ。
0793デフォルトの名無しさんNGNG
Python燻製というのもいいな。
0794デフォルトの名無しさんNGNG
Python で2万行の CVS データを読み込んだら
えらく時間かかった。たぶん Perl だと一瞬なんだろうけど。。
Python もう少し速くならないかな。
0795デフォルトの名無しさんNGNG
CVS -> CSV でした。
0796デフォルトの名無しさんNGNG
>>794
あのさ、時間計測してくれないかな?
0797デフォルトの名無しさんNGNG
対Perl比でそこまで差がつくとは思えない.
単純なファイル読み込みなら,対C比でもそんなに悲惨な結果にはならないような.


Pythonが遅いという点には同意しなくもないが.
0798デフォルトの名無しさんNGNG
>>794
csvモジュールを使ったのか、それともCSVパーザを自作したのか知りたいな。
0799デフォルトの名無しさんNGNG
で、みなさんはPythonをてどういう時に使っているのでしょうか?
googleAPIでお話するとき?
0800デフォルトの名無しさんNGNG
shell 自体が Python ですよ
0801デフォルトの名無しさんNGNG
>>800
ファイル操作、外部ブロセス起動などの一般的なシェルタスクは
みなPythonでいちいち記述するんですか???
ネタじゃないなら詳しく。
0802デフォルトの名無しさんNGNG
>>801
いや、今は ipython 使ってるだけだけど・・
0803デフォルトの名無しさんNGNG
>>801 ipythonでぐぐってみてくれ。
0804デフォルトの名無しさんNGNG
>>791
へー

ソースは?
0805デフォルトの名無しさんNGNG
Pythonに
NekoHTML http://www.apache.org/~andyc/neko/doc/html/
みたいにタグの記述ミスにもまけず適当にパースしてくれる
HTMLパーサってない?
0806デフォルトの名無しさんNGNG
>>804
http://www.python.org/Quotes.html
0807794NGNG
>>798
1行に 30 個ぐらいの浮動小数データで、
単に "," で split() して float に変換しているだけなんだけど。。。
だいたい2万行で5秒ぐらいかかる。
0808m9っ・∀・)NGNG
from random import randrange
import time

f = open("float_test.csv", "w")
for i in range(20000):
    f.write(",".join(["%d.%d" % (randrange(-99999, 10000), randrange(0, 1000)) for j in range(30)]))
    f.write("\n")
f.close()

t = time.time()
buffer = []
for line in open("float_test.csv"):
    buffer.append([float(s) for s in line.split(",")])
print time.time() - t


WinXP SP2 (Pen4 3.4GHz), Python 2.3.4 で 1.8 秒前後ですた。
キャッシュがかなり効いてそうだけど。

折れの感覚だと2万行で5秒は許容範囲だなぁ。
0809デフォルトの名無しさんNGNG
>>808の読み出し部分を取り出し、結果のファイル出力を加えてpython/perl/rubyで書いてみた。

プラットフォームはFreeBSD 4.8-RELEASE。実行時間をtimeコマンドで計測。
()内はそのうちの読み出しのみにかかった時間。

Perl 5.8.2: 7.5sec(2.4sec)
Python 2.3.4: 9.9sec(2.8sec)
Ruby 1.8.1: 14.5sec(4.3sec)

perlに書換えれば、1〜3割程度は速くなるかもしれん。OO税のようなものか。
0810809NGNG
-- python
import time, string, sys

start = time.time()
buffer = []
for line in open("float_test.csv"):
buffer.append([float(s) for s in line.split(",")])
sys.stderr.write("%f\n" % (time.time() - start))
for s in buffer:
for t in s:
print("%f" % t)
0811809NGNG
-- perl
use Time::HiRes qw ( time );

$start = time;
open(IN, "float_test.csv");
while (<IN>) {
chop;
my (@s);
foreach $s (split(",")) {
push (@s, $s + 0.0);
}
push(@buffer, \@s);
}
print(STDERR time - $start, "\n");

foreach $s (@buffer) {
foreach $t (@{$s}) {
printf("%f\n", $t);
}
}
0812809NGNG
-- ruby
start = Time.now;
buffer = []
IO.foreach("float_test.csv") { |l|
s = []
l.chop!
l.split(",").each { |t|
s.push(t.to_f)
}
buffer.push(s)
}
$stderr.print((Time.now - start), "\n")

buffer.each { |s|
s.each { |t|
printf("%f\n", t)
}
}
0813デフォルトの名無しさんNGNG
IPythonでパイプるには,やっぱりos.popen?()を使うの?
ログインシェルにするのは厳しいような….
0814デフォルトの名無しさんNGNG
>>809 を鵜呑みにすると Ruby を未来永劫使わないことに決めました
0815デフォルトの名無しさんNGNG
Perl,Ruby 版は各スレのエキスパートに書かせたほうがよろしいかと
0816デフォルトの名無しさんNGNG
他言語との比較はこっちで↓やれば?

最速スクリプト言語決定戦!
http://pc5.2ch.net/test/read.cgi/tech/1074996153/l50

Pythonで書いたコードのボトルネックはCで拡張モジュールとして書き直すのが吉、
と言ってみるテスト。
0817デフォルトの名無しさんNGNG
それなら Perl でも Ruby でも同じことだが
0818デフォルトの名無しさんNGNG
>>809のコードをWindowsでも実行してみたよ。
Pentium4M 1.6GHz WindowsXP SP2。
cygwin bash shell で interpreter script > /dev/null して計った。
左が読み込むまで、右が出力も込み。
Ruby-1.8.1 (ruby-lang.org MSC) 2.764 9.374
Ruby-1.8.1-1 (cygwin gcc) 2.331 31.4
Python-2.3.4 (python.org MCS) 2.183000 6.940000
Python-2.3.4 (cygwin gcc) 1.399000 28.820000
Perl-5.8.5 (PXPerl ?) 1.17113494873047 5.11680889129639
Perl-5.8.5 (cygwin gcc) 2.41000008583069 31.1360001564026
cygwin死ぬほどI/O遅ぇ orz
ちなみにcsvモジュール使って
import csv, time, sys
start = time.time()
buffer = [map(float, row) for row in csv.reader(file("float_test.csv"))]
sys.stderr.write("%f\n" % (time.time() - start))
みたいにしたら、python(MSC) 1.962s python(cygwin) 1.009s だった。
Rubyにもcsvがあるみたいだけど、漏れ程度のRuby初心者が書いても全然速くならんかった。
Perlには標準のcsvモジュールみたいなのがなかった。どのみちなくても十分高速だね。いいなぁ。
0819デフォルトの名無しさんNGNG
結論

Ruby使えねぇええええええええええええええええええええええええええ
0820デフォルトの名無しさんNGNG
召喚するのはやめましょう
0821デフォルトの名無しさんNGNG
ruby だと、read() が速いような気がする。一気に読んで...
ループにすると遅い (最速スレの結果より)。

ruby 分からないので、コード書けません
0822デフォルトの名無しさんNGNG
>>819
そういう餌を蒔いておいてまた後になってしたり顔で

710 :デフォルトの名無しさん :04/11/02 10:00:10
>>709
使ったこともないのに他の言語を批判して貶めるのがPython厨の
いつものやり方だよね。

みたいな事言いにわざわざ来るわけ?
はっきりいってpython使ってるほとんどの奴にとって
rubyが速かろうが遅かろうがどうだって良いし、
自分で思ってる程相手にされてない事にいい加減気付けよ。
0823デフォルトの名無しさんNGNG
Python 2.2.1 rlcompleter.py モジュールの
complete(self, text, state):メソッドの

46 __all__ = ["Completer"]
47
48 class Completer:
49

って記述の意味がわかりません。
__all__ に自分の名前を入れて、んでこの__all__を参照している
ところが見当たりません。名前空間の予約語みたいなもん?
0824デフォルトの名無しさんNGNG
コンストラクタ
0825デフォルトの名無しさんNGNG
ttp://www.python.jp/pub/doc_jp/ref/import.html
0826デフォルトの名無しさんNGNG
q = "python"
urllib.urlopen("http://images.google.co.jp/images?q=" + q).read()

googleでの検索結果を表示したいんですが上手くいきません。
"http://images.google.〜?q=python"のようなURLが実在しない為、
403 Forbiddenとなってしまいます。
このようなCGI等で一時的に作成されるページを取得するには
どうすればよいでしょうか?
0827デフォルトの名無しさんNGNG
URLが実在しないのではなくて,urllibが送信するUser-AgentがGoogleに
受け入れられないんじゃないかな.
0828デフォルトの名無しさんNGNG
http://www.python.jp/pub/doc_jp/lib/module-urllib.html#l2h-2975
を参考にして,User-Agentを設定するといいよ.
class myopener(urllib.FancyURLopener):
 def __init__(self, *args):
  self.version="Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/2004"
  urllib.FancyURLopener.__init__(self, *args)
urllib._urlopener = myopener()
q = "python"
print urllib.urlopen("http://images.google.co.jp/images?q="+q).read()

0829デフォルトの名無しさんNGNG
>>823
あなた、嫌な感じですね。穿ち過ぎでしょ。
みんなもうちょっと余裕を持とうよ。
0830デフォルトの名無しさんNGNG
>>818
むしろCygwinとネイティブとの違いが面白いな.
概ね読み込みでCygwinが勝っているのは,gccの最適化能力が高いってことなんだろうか.
0831デフォルトの名無しさんNGNG
cygwinのI/Oが遅いだけ
0832デフォルトの名無しさんNGNG
HTMLParser.HTMLParserかhtmllib.HTMLParser,どっちを使うべき?
0833m9っ・∀・)NGNG
>>832
ぶっちゃけどっちでもイイけど、htmllib.HTMLParserの方が多機能。
特に、よく使われるタグに対して既定のハンドラが用意されているのが大きい。
よって、
(a)既定のハンドラをオーバーライドすれば足りる場合 → htmllib.HTMLParser
(b)save_bgn/save_end メソッド萌え → htmllib.HTMLParser
(c)<A>タグのhrefの値だけホスィ → htmllib.HTMLParser(.anchorlist)
(d)formatter モジュール萌え → htmllib.HTMLParser
(e)既定のハンドラは不要(デフォルトの動作が邪魔)な場合 → HTMLParser.HTMLParser
(f)handle_starttag() や handle_endtag() だけあればいい場合 → どっちでも桶

(e)の場合にsgmllib.SGMLParserを使っていたのも今は昔・・・。
0834デフォルトの名無しさんNGNG
[Python-ml-jp 2879] でそんな議論してたよ.
0835デフォルトの名無しさんNGNG
>>833
めちゃ親切なレスthx!
今回はHTMLParser.HTMLParserでゴリゴリ書くことに決めた.
htmllib.HTMLParserの萌え要素も捨てがたいけどw
0836826NGNG
>>827-828
ありがとうございます!
早速調べてやってみます。
0837デフォルトの名無しさんNGNG
googleをプログラムから使うならIDとってgoogle API使えよ。
そんなことも理解してないのか糞どもが。
0838826NGNG
出来ました!
googleのイメージ検索結果を全て取得して、
URLをhtmlファイルに書き込みます。
そしてそのhtmlファイルを開くと全ての画像が表示されます。

実用性には欠けますが、
暇があったら試して見てください。
そしてできればアドバイス等頂けるとありがたいです。
ttp://eunjoo.jp/google.txt
0839826NGNG
>>837
それも調べてみたんですが、イメージ検索には対応してませんでした。
0840デフォルトの名無しさんNGNG
>>838
http://eunjoo.jp/seitan/
これ用のスクリプトでつか?

http://www.eunjoo.jp/blog/
0841デフォルトの名無しさんNGNG
pythonからforkしてxpyをreleaseしますた
0842デフォルトの名無しさんNGNG
HEADリクエストで情報を得たいときって,httplibで実装するしかない?
よく考えると,リダイレクトとか結構面倒なんだよなぁ.
0843デフォルトの名無しさんNGNG
なぜHEADリクエスト?
0844デフォルトの名無しさんNGNG
PyJUG に過去スレ一覧置いてくれないかな (w
0845デフォルトの名無しさんNGNG
>>842
urllib2で実現できないことなのかな?
0846デフォルトの名無しさんNGNG
Jython触ってみたけど結構使える印象。
いや結構どころかすごいパワフル。
しかし周りの人間がPythonわかんねーから
検証コードぐらいでしか仕事では使えなそうだ。
なんかもったいない。
0847デフォルトの名無しさんNGNG
>>846
いや、Python を普及させるチャンスでしょう。
0848デフォルトの名無しさんNGNG
Rubyスレが盛り上がっていると、見事にPythonスレは閑散としてるね。
みな工作員としてRubyスレに潜入してて忙しいのかな。
0849デフォルトの名無しさんNGNG
>>845
正直,リファレンスを読んでもurllib2の拡張の仕方がよく分からないので,
urllib2で可能かどうか分からない.
まあ,GETリクエストでヘッダだけ読んで,すぐclose()するのも一つの選択肢では
あるんだけど,どうせデータ本体は必要ないしなぁ.
0850デフォルトの名無しさんNGNG
>>848
pythonスレの活気なんてこのくらいがデフォだと思うけど。
彼らは自分のとこで話題がないからって
わざわざ暴れに来てたのかな。迷惑だよね。
0851デフォルトの名無しさんNGNG
>>848も>>850も種まきご苦労さん。
0852デフォルトの名無しさんNGNG
流れ的にはオライリー待ちだから
0853デフォルトの名無しさんNGNG
初めてのパイソン第2版
翻訳する人、第1版とちがうのねん

ttp://www.bitpranks.com/garage/natsume/yakusyo.htm

なんでイチローリポート?
0854デフォルトの名無しさんNGNG
>>850
まあ超マイナー言語ですからね。
0855デフォルトの名無しさんNGNG
まあ、日本人でも技術英語ぐらいは読めるようになれ、てところだろうな。
0856デフォルトの名無しさんNGNG
>>855
まあ英語じゃなければろくなドキュメントがないですからね。
0857デフォルトの名無しさんNGNG
(・ω・)
0858デフォルトの名無しさんNGNG
既刊のオライリー本には
PyJugに置いてあるありがたいマニュアル以上のこと
書いてありますか?なんか一冊読んでおいたほうがええかな。
0859864NGNG
>>847
同僚に勧めたら
「インデントがねぇ」
と言われた(w

まぁ僕も初めはそう思ったんだけど、
誰が書いても視覚的に同じ構造になるから
慣れたら気に入った。インデント。
0860デフォルトの名無しさんNGNG
インデントといえば本家は python-mode.el をデフォに奨励しているけど
python.vim はなんで無視なんでしょうか?そもそも同じ整形ではない?
0861デフォルトの名無しさんNGNG
vimユーザは虐げられている!

ところでcygwinのpythonでhelp()コマンド使おうとしたら$PYTHONDOCS
設定すれ、言われたんで
$export PYTHONDOCS=$(cygpath -u 'd:\python\Python-Docs-2.3.4-jp-html')
を設定しますた。結果、盛大に文字化け。
export PAGER='w3m'
ってやったら成功。ヤター!

でもscreenの中でやったらw3mがちゃんと動かなくてダメでした。鬱。
0862デフォルトの名無しさんNGNG
しかし、いくら良いと主張されても、こうも人がいないというのは不安に
なるな。日本で使っている人、いるのか?
0863デフォルトの名無しさんNGNG
しぶとく今宵も DiveIntoPython 中〜
0864デフォルトの名無しさんNGNG
form = cgi.FieldStorage() で値を取得したいのですが、
<select multiple="multiple" name="test">
  <option>hoge</option>
  <option>huga</option>
</select>
というリストからhoge,hugaの片方あるいは
両方の値を取得するにはどうすればいいのでしょうか?

value_get=form['test'].valueとした場合、
hoge,huga両方選択すると以下のエラーが出ます。
   AttributeError: 'list' object has no attribute 'value'
args = ("'list' object has no attribute 'value'",)

以下を用いると、片方ひとつのみ選択した場合にエラーになります。
value_get=''
tmp = form['test']
for S in tmp:
  value_get = value_get + S.value

   TypeError: iteration over non-sequence
   args = ('iteration over non-sequence',)

0865デフォルトの名無しさんNGNG
えっと今日からPython厨になろうと思う.Perl/Java/C使いなのです.
Pythonのlambdaはstatementを理解しないみたいなんだけど,
実行時に動的に関数を作りたい場合はどうすればいいの?
eval()つかってがんばってインデントした文字列を評価するしかない?
0866デフォルトの名無しさんNGNG
>>859
俺も最初は戸惑ったほうだけどね。
慣れたら逆にendとか使っているほうが助長に見えるくらい中毒に・・・。

一年位前、仕事でPL/Iを使っていたけど、アレにはもう戻れないだろうなあ(苦笑
0867865NGNG
>>866
プログラムを書く際のインデントは慣れの問題だと思うんだけど,
実行時にプログラムを動的に生成したいときにもインデント付の
文字列を生成してeval()する必要があるのはどうかと思う.
一時的にもはずせんもんかのぉ.

>>859
金曜にまったく同じことを同僚に話したんだけど,もしかしたら同じ会社か?
まぁ食わず嫌いもなんなので,今日からちょっとまじめにPythonを勉強しよう
と思ってるよ.
漏れ的にはPerlのObject指向でそこそこ満足してるので、perlにあと
Try/Catch/finallyだけが付けばいいのにと思う.
0868デフォルトの名無しさんNGNG
>>864
複数選択可能なフォームコントロールから値を読む場合は,
http://www.python.jp/pub/doc_jp/lib/node404.html
にあるように,getlist() で値を取ってくるといいよ.
0869865NGNG
と思ったらPerlにも例外機構をサポートするモジュール
(Exception.pmとかError.pm)がありますた.すれ汚しスマソ.

でもせっかくなのでPython勉強するデス(`・ω・´)
0870デフォルトの名無しさんNGNG
Python用Vimの設定
http://www.nims.go.jp/cmsc/staff/arai/python/python-vim.html
0871デフォルトの名無しさんNGNG
>>865
一応 lambda で関数作れることになってるけど,
式が1個書けるだけというきつい制限があったりで
あんまり大々的に使わんとです.
代わりにやるとしたらこうか?

def makeAdd(n):
    def add(x):
        return x+n
    return add

>>> f = makeAdd(365)
>>> print f(1)
366
0872デフォルトの名無しさんNGNG
pickleって異なるランタイムのバージョンでも読み書きできますか?
0873デフォルトの名無しさんNGNG
現状の pickle プロトコルは
ttp://www.python.jp/pub/doc_jp/lib/node63.html
新しいバージョンの pickle で古いバージョンの pickle ストリームを
書き出すときには, dump()/dumps() でプロトコルを指定する.
ttp://www.python.jp/pub/doc_jp/lib/node64.html
読み出した pickle ストリームのプロトコルバージョンを判別する方法は
ちょっと判らなかった.
0874デフォルトの名無しさんNGNG
>>867
インデントは、いくら慣れだといわれても参入障壁が高すぎる。
慣れればよいといわれても信用できないし、慣れるとしてもそれまで
苦痛なのも嫌。。世の中に同じ意見の人はとてつもなく多いよ。

>>868
Perlで良いと思うよ。
0875デフォルトの名無しさんNGNG
ソース書く時にインデントしないプログラマってそんなに多かったのか。
0876デフォルトの名無しさんNGNG
メモ帳でコード書いてる人がこんなに多かったなんて。
0877デフォルトの名無しさんNGNG
YAMLもそうだが、空白や改行に構文上の意味がある、というのは
CやSGML等の他の言語の慣習と異なるので、意外にやりにくい。
コードを他所からカット&ペーストしたときに、一時的にせよ構文的に間違った状態に
なってしまう、というのは、他の言語では味わえない不安感だ。
まあ人間は慣れるけどね。
0878864NGNG
>>868
むぅ、こんなところに書いてあったとは…orz
助かりました、ありがとございます。

xyzzyのpy-modeで書いてます。便利ですよー
0879デフォルトの名無しさんNGNG
この前,どうも変なところで構文エラーが出て困ってたんだけど,
タブとスペースが混じったのが原因だった.
インデント否定派ではないけど,こういうことがあるとチョット怖い.

{ ... }をインデントに変換するトランスレータ書いたら需要あるのかな.
lambdaの制限を取り除けるのは結構いいかも.
0880デフォルトの名無しさんNGNG
jython2.1+JDK1.4に重大な問題が。
javaへのトランスレータ
 jythonc -a test.py
を実行するとPy.assertが予約語とかぶってるからコンパイルできない言われる。
手パッチ当てないとダメみたい。

http://sourceforge.net/mailarchive/forum.php?forum_id=5587&max_rows=25&style=nested&viewmonth=200405
>>---------------
if you really have to compile with JDK 1.4, the following changes are
necessary:

Py.java
-------
change the name of the two static assert() methods to assert_()

CodeCompiler.java
-----------------
change the two following lines in method assert_stmt() from
"org/python/core/Py", "assert",
to
"org/python/core/Py", "assert_",

Then make sure that you delete all your $py.class files.
I"m sorry to have no diff available, but the changes should be pretty
straightforward.

Please also note that this is solved in cvs HEAD.
>---------------
HEADじゃなくてリリース版で直して欲しい。
ついでにjythoncが内部で起動しているjavacからのメッセージが文字化けすると思われ。
UNIXならLANC=Cで解決したんだが、cygiwn上だと効かない…。
windowsではどう設定すればいいのでしょうカ。
0881デフォルトの名無しさんNGNG
>>877
Pythonは読みやすくていいんだけど,自分が書くとなるとそれが恐
くてPythonに手が出せません.読んで天国書いて地獄
0882デフォルトの名無しさんNGNG
おまいら,とりあえずこれで我慢汁.

from sys import *

nest_lv = 0
for line in stdin:
sline = line.strip()
if sline == "{":
nest_lv += 1
elif sline == "}":
nest_lv -= 1
else:
print "\t" * nest_lv + sline
0883デフォルトの名無しさんNGNG
言ってる側からインデントが….orz

from sys import *

nest_lv = 0
for line in stdin:
    sline = line.strip()
    if sline == "{":
        nest_lv += 1
    elif sline == "}":
        nest_lv -= 1
    else:
        print "\t" * nest_lv + sline
0884m9っ・∀・)NGNG
みんな、煩雑で困るほどコードのコピペってするの?
個人的にはコピペが必要なことってほとんどない・・・。
Emacs だとインデントの削除は kill-rectangle (C-x r k)、
インデントの追加は indent-rigidly (C-x TAB) で楽勝、
というファクタも大きいかも知れず。
0885デフォルトの名無しさんNGNG
pythonってよく分からないんだけど
インデントがずれてると違う動作になるの?
0886デフォルトの名無しさんNGNG
*正しくインデントした場合*
sum=0
for i in range(3):
 print "%d を足しています" %(i)
 sum += i
print "合計は %d です" %(sum)
出力
0 を足しています
1 を足しています
2 を足しています
合計は 3 です
* sum += i のインデントを間違えた場合 *
for i in range(3):
 print "%d を足しています" %(i)
sum += i # <- ここが間違っている
print "合計は %d です" %(sum)
出力
0 を足しています
1 を足しています
2 を足しています
合計は 2 です # <- ループから抜けた後の i (=2) しか足してない

Cで単独の文をループさせるときに波括弧で囲わない癖のある人が時々ハマるミスに似てる.
0887デフォルトの名無しさんNGNG
ここにコピペするとインデント無くなるけど、Cなら{}があるし
単独文でも{}が省略されていることが明らかだから復元可能だよね。

pythonはインデント無くなると元のソースがどっちだったのか分からなくなるよね。
0888デフォルトの名無しさんNGNG
>>886
あたりまえだろボケ
だから使い物にならないって言ってるんだよ。
0889デフォルトの名無しさんNGNG
使いづらいが、使いものにならない、というほどでもない。
perlの$みたいなもの。
慣れると、endがないことが(よくある小さなブロックで)可読性を上げる。
0890m9っ・∀・)NGNG
消えたインデントを見抜ける人でないと(Pythonを使いこなすのは)難しい。トカイッテミルテスト
0891デフォルトの名無しさんNGNG
>>890
perl の $ とは全然違うよ。
何にしろ、pythonのインデントは使いたいと思う気持ちを萎えさせるのが最悪。
0892デフォルトの名無しさんNGNG
perl の $ も使いたいと思う気持ちを萎えさせるわけだが。要は慣れだし。
0893デフォルトの名無しさんNGNG
そうむきにならんでも。
python使ってればそういうインデントに
気を遣ってないコード読まないで済むだけで俺は満足。
0894デフォルトの名無しさんNGNG
少なくとも、pascalのbegin〜endがベストということはない。
rubyのendも妙に浮いている。
個人的にはC風に{}が良いと思うが、
それも括弧の開きと閉じを関連づけるeditorの支援が得られるという前提だ。
0895デフォルトの名無しさんNGNG
世の中に、インデントで制御構造の範囲を指示する言語なんて
極めて少数ということから考えても、その方式がわかりにくい・よみにくい
ということは明らか。慣れれば良いと言うのは、言うだけはいくらでも言える
が、まったく実際的ではない。
0896デフォルトの名無しさんNGNG
つーか,元々,
> Cで単独の文をループさせるときに波括弧で囲わない癖のある人が時々ハマるミスに似てる.
このようなミスを防ぐためにインデントによるブロック構造を導入したわけだが.
0897デフォルトの名無しさんNGNG
>>895
エディタの問題でしょ? 粘着ネチズンだなあ
0898デフォルトの名無しさんNGNG
>>897
Perlのように波括弧必須にすればよいだけの話なのでその理由は却下
0899m9っ・∀・)NGNG
世の中に、ひらがなとカタカナと漢字を混ぜて書く言語なんて
極めて少数ということから考えても、その方式がわかりにくい・よみにくい
ということは明らか。慣れれば良いと言うのは、言うだけはいくらでも言える
が、まったく実際的ではない。
0900デフォルトの名無しさんNGNG
ハングルのみのウリナラは実際的だぞ
0901m9っ・∀・)NGNG
そんなことより次スレのタイトルを考えよう。
俺的には↓これで。

◆PYTHONって死滅しちゃうの?◆
0902デフォルトの名無しさんNGNG
>>901
とりあえず他のPythonスレを使い切る方向で.
0903デフォルトの名無しさんNGNG
Python スレ多すぎると文句いわれるから
次スレは立てたくないんだがどうか

【たぷるタソ】Pythonのお勉強 5【ハァハァ】
http://pc5.2ch.net/test/read.cgi/tech/1081264387/
【self】ぱいそんぱいそん!4【pass】
http://pc5.2ch.net/test/read.cgi/tech/1098108764/
【たぷるタソ】Pythonのお勉強 5【ハァハァ】
http://pc5.2ch.net/test/read.cgi/tech/1081264387/
Pythonのお勉強 Part6
http://pc5.2ch.net/test/read.cgi/tech/1095684242/
0904デフォルトの名無しさんNGNG
たぷるスレも920まで行ってるから,そっちも一緒に「Pythonのお勉強 Part6」に
移動ということでどう?
0905デフォルトの名無しさんNGNG
何だこのスレはw

Jython、Groovy、JRuby - どれが一番効率的?
http://pc5.2ch.net/test/read.cgi/tech/1100563765/
0906デフォルトの名無しさんNGNG
次はピクルスレを。
0907デフォルトの名無しさんNGNG
>>900
事実、小学校で膨大な時間を漢字の書き取りに費やし、
PC使うにもIMEという面倒な機構が必要になっているわけで、
避けて通れるものなら避けたい言語だろう。
0908デフォルトの名無しさんNGNG
>>902
立てといたよ

次スレ
http://pc5.2ch.net/test/read.cgi/tech/1100604113/
0909デフォルトの名無しさんNGNG
早いよ。使い切ろうよ。あっちもこっちも読むの疲れるんだよ。
ってかスレ名からすると妨害か。
0910デフォルトの名無しさんNGNG
これとこれ↓
http://pc5.2ch.net/test/read.cgi/tech/1098108764/
http://pc5.2ch.net/test/read.cgi/tech/1100604113/
を削除依頼したいと思うんだが,初めてなので助言よろ.

・そもそも削除依頼は簡単に通るものなのか
・削除理由は「荒らしによるスレ乱立」でいいのか.
0911デフォルトの名無しさんNGNG
削除依頼するなら一つ残してあと全部削除依頼しなきゃ。
そうじゃないなら使い分けの基準を明確化してね。
0912デフォルトの名無しさんNGNG
>>909
>>901
0913デフォルトの名無しさんNGNG
>>911
このスレとタプルスレは既に900overなので,>>910の2つのスレを削除すれば
事実上「Pythonのお勉強 Part6」に一本化される.
0914デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1098108764/
は、まともなやりとりもされているので、削除はまずいと思う。
0915デフォルトの名無しさんNGNG
このスレがそもそも重複スレなんだから、(ry
0916デフォルトの名無しさんNGNG
>>914
確か,そのスレも今回のような流れで立てられたんだよな….
まともなやりとりも多少あるのは知ってるけど,ここは思い切って削除した方が
いいような気がする.
とはいえ,スレ削除の基準をよく知らないので,あまり強いことは言えないが.
0917デフォルトの名無しさんNGNG
どーせまた立てられるだけだからほっとくのが吉。
そもそもどういう理由で削除依頼するんだ?
0918デフォルトの名無しさんNGNG
>>914
昔そのスレに誘導されたんだけど、今にして思えば騙された気がする(w
初心者からするとただでさえ情報すくないのに
スレ開いたらネタスレで
ぱいそんぱいそん〜〜 AA略
以外書き込みなかったりしたらショック。せっかくPythonに興味持った人が
どっかいっちゃうかも知れぬ。
0919デフォルトの名無しさんNGNG
ttp://www.python.jp/pub/doc_jp/lib/crypto.html
暗号化・復号化しようと思ったら追加パッケージ入れるしかないすかね?
rotorは撤廃って書いてあるし…
0920デフォルトの名無しさんNGNG
> m9っ・∀・)
会社の仕事はPythonでやってるんですか?
0921デフォルトの名無しさんNGNG
ゾープジャパンさん、活動がみえてきません。
関西支部を作りなさい。これは命令です。
0922m9っ・∀・)NGNG
>>919
何をどう暗号化したいかによるんじゃないの?
排他的論理和とかビットシフトによる単純な暗号化でも足りるとか、
別のアプリによって暗号化の方法が決まってるとかいろいろあるっしょ。

>>920
規模の大きな開発には使ってないなあ。電卓+α的な使い方が多い。
出力の検算とか、アルゴリズムのプロトタイプに使ったりもする。
日曜プログラミングはほとんど Python のみです。
0923デフォルトの名無しさんNGNG
Win2K + VS2003でPython(2.3)をC/C++で組み込もうとPython.hをインクルードしたら
デバッグ用のlibファイルが必要とかコンパイルエラーが出てきた。
リンカ曰く、「Python23_d.libがネーヨ。」
リリースコンパイルなら通るんだけど・・・。

もしかして、Pythonを自前でコンパイルする必要あり?
0924923NGNG
今のところは
#ifdef _DEBUG
#undef _DEBUG
#include <python.h>
#define _DEBUG
#else
#include <python.h>
#endif
で対処しています・・・。
0925919NGNG
>>922
ビットシフトで事足りる気がしてきました…サンクスですた
0926デフォルトの名無しさんNGNG
>>923
ttp://marc.free.net.ph/message/20040802.103348.973939b8.html
を読むと,自分でやれと書いてありますね...
python23.lib を python23_d.lib にコピーしたら一応動くそうです.
0927デフォルトの名無しさんNGNG
>>925
Blowfishぐらい同梱されてても、、、とは思うよね。
0928デフォルトの名無しさんNGNG
>>921
http://www.itmedia.co.jp/enterprise/articles/0411/17/news095.html
単にスタイルシートいじってただけでした。
つぅか年会費って何だ?オプソ精神に従ってドネーション整備しろよ。彼らは馬鹿ですか?
0929923NGNG
>>926
thanx。自前でコンパイルしました。
0930デフォルトの名無しさんNGNG
>>927
初めて知りますた。ぜひ取り込んで欲しいけどもう2.4には入んないかな
0931デフォルトの名無しさんNGNG
すでにどのOSにも手軽なpackage systemがあるから
「標準で入ってた方が俺が楽だから」は、標準に含める理由にならないんじゃないかなあ。

あと、暗号関係のコードは多倍長演算ライブラリ(libgmp)にも依存して、Pythonの世界だけじゃ
済まないかもしれない。
0932デフォルトの名無しさんNGNG
google先生はpythonでできています。
デスクトップサーチがリリースされるときにpythonを知っておくと良いことが
起きるでしょう。
0933デフォルトの名無しさんNGNG
>>933
またそうやって誇大広告を・・・
0934デフォルトの名無しさんNGNG
>>933
ぷっ
0935デフォルトの名無しさんNGNG
もう暗号関係コードの輸出規制はなくなったんだっけ?
0936デフォルトの名無しさんNGNG
PythonCardおもしれー
0937デフォルトの名無しさんNGNG
っぱい
0938デフォルトの名無しさんNGNG
Python製のblogは、pyblosxomとCOREBlog以外に何がある?
0939デフォルトの名無しさんNGNG
pythonはblogツールに向いていないからダメだ
0940デフォルトの名無しさんNGNG
>>938
http://pc5.2ch.net/test/read.cgi/tech/1081264387/882

pyblogger
blogninja
...
0941デフォルトの名無しさんNGNG
f=File("test.txt",'w')
f.write("test")
ここで任意の漢字コードをいくつか適用したいのです。
文字そのものはpykf等で変わりますが、ファイルはShift_JISで保存されて化けてしまうです。
FAQっぽいので、どこか良さげな資料などないでしょうか。
PyJUGのPython 2.3.4(Win32)です。
0942デフォルトの名無しさんNGNG
>>941
f.write("test") だと ascii でも Shift_JIS でも euc_jp でも utf-8 でも同じだね。w

ソース自体のエンコードは何になっているの?

# -*- coding: utf-8 -*-
# -*- coding: euc_jp -*-
# -*- coding: cp932 -*-
f=file("test.txt",'w') 
f.write("日本語文字列を書き込んでみる test.") 
f.close()

IDLE を使って、最初のエンコーディング指定を入れ替えて save して試してみれば
ちゃんとソースが書かれたエンコードに合わせて書き出されるのが分かると思う。
0943デフォルトの名無しさんNGNG
書き出し用に漢字コードを指定したいのなら
import codecs
f = codecs.open("test.txt", "wb", "EUC-JP")
f.write(u"Unicodeの日本語文字列")
0944941NGNG
>>942
コード省略しすぎました。本来は変数で行間で変換してるということで。
ソースはSjisです。一行目にその特殊なコメント入れてIDLEで走らせましたが、
結果変わらずでした。

>>943
これだ、と思ったのですが
codecs.pyがなにか文句言って処理してくれません。
UnicodeError: EUC-JP encoding error: invalid character \x83
求めるところはここなので、少し粘ってみます。
0945m9っ・∀・)NGNG
# -*- coding: shift_jis -*-
などのファイルエンコーディングを指定せずに
u"Unicodeの日本語文字列" のような文字列リテラルを書いている
と見た。
0946デフォルトの名無しさんNGNG
当たりですた。
始めて3日目でして。みなさまのおかげで坊主にならなくて済みそうです
0947デフォルトの名無しさんNGNG
>>946
http://www.python.jp/Zope/articles/japanese/Python4Japanese-2
ここを一通り読んでおくと良いよ。

翻訳物の本やテキストだと日本語がらみの問題は出てこないのでちょっと気付かないよね。
(付属のチュートリアルにも一通りは書かれているのだけれども)
0948デフォルトの名無しさんNGNG
0949デフォルトの名無しさんNGNG
test
0950デフォルトの名無しさんNGNG
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< Boooooooooo!!
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< BooBooBoo!!!
Boo〜〜〜〜!    >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」               ̄     / /


0951デフォルトの名無しさんNGNG
googleの結局どの部分にPython使ってるのさ。
0952デフォルトの名無しさんNGNG
http://www-db.stanford.edu/~backrub/google.html

Most of Google is implemented in C or C++ for efficiency and can run in either Solaris or Linux.
Both the URLserver and the crawlers are implemented in Python.
0953デフォルトの名無しさんNGNG
Pythonは影の主役としての役割が多いよね。
〜が得意っていうのがなくて何でもソツなくこなす感じ。
逆に言えばつまんない言語なのかも。
日本じゃ知名度もまーだまだな感じだし。
0954デフォルトの名無しさんNGNG
>>952
URLserver ってwebサーバとは違うんかな。
0955デフォルトの名無しさんNGNG
WebサーバがサービスするのはURLではないわな。
0956デフォルトの名無しさんNGNG
すみません、超初心者な質問ですが、
ttp://www.honors.montana.edu/~jjc/easytut/easytut/node5.html#SECTION00530000000000000000
のExercisesで全てくっつけて表示しろというのができません。
とりあえず書いてみたのですが、

# Input Strings
str1 = raw_input("Please Input String 1:")
str2 = raw_input("Please Input String 2:")
# Input Integers
int1 = input("Please Input Integer 1:")
int2 = input("Please Input Integer 2:")
#Print Results
print "Result is ",str1 + str2,int1,int2 ←この行をどうすればよいかがわかりません
print "Multiplies the two numbers is",int1 * int2

どうすればよいのでしょうか。
0957デフォルトの名無しさんNGNG
str1 + str(int1)
0958デフォルトの名無しさんNGNG
>>957
str型に変換すればいいということですね。ありがとうございました。
0959デフォルトの名無しさんNGNG
とりあえず Python チュートリアルは全部読もうね♪
0960デフォルトの名無しさんNGNG
ぼくのようにプログラミングのPの字もしらなくてPythonはじめたいと思った場合は、
どのようなサイトから見たらよいですか?

.pyというファイルを作ってテキストでプログラムを打つことはだいたいわかるのですが、
ひらきかたがわかりません
ばかですごめんなさいでもおねがいします
0961デフォルトの名無しさんNGNG
>>960
とりあえずIdleでいいんじゃない。
0962デフォルトの名無しさんNGNG
http://ar.aichi-u.ac.jp/python/
http://ar.aichi-u.ac.jp/python/gui/
http://www.python.jp/pipermail/python-ml-jp/2004-April/002879.html
http://www.python.jp/pub/doc_jp/tut_2.3/
0963960NGNG
ありがとうございます。
ぼく、がんばります。
0964デフォルトの名無しさんNGNG
>>962
> http://ar.aichi-u.ac.jp/python/
これは参考にしないほうが良いような。

c:\にソースを置けとか言っちゃってるし。
0965デフォルトの名無しさんNGNG
>>960
http://www.freeml.com/info/[email protected]
http://homepage1.nifty.com/kazuf/python_kikai.html
質問はここでするのがおすすめ。
わからないことがあったらまずはGoogleで検索しよう!
0966デフォルトの名無しさんNGNG
>>965

いいトシこいたオトナのくせに自分を機械伯爵なんて呼ぶなよ。
警察に通報されるぜ。
0967デフォルトの名無しさんNGNG
誰?
0968デフォルトの名無しさんNGNG
関数(ローカルスコープ)の中で、モジュール(グローバルスコープ)の変数に代入するのにglobal文を使うように、関数(ネストスコープ)の中にネストされて定義されている関数(ローカルスコープ)の中で、外側の関数(ネストスコープ)の変数に代入する方法は、
ありますか?
0969デフォルトの名無しさんNGNG
代入はどうがんばってもできません。でも変更はできます、なぜか。

def outer():
  c = 0
  d = []
  def inner():
    c = 100
    d.append(100)
  inner()
  print c
  print d
outer()
0970デフォルトの名無しさんNGNG
> なぜか。
pythonの代入はbindだから。

内側で c=100 すると、cという同じ名前の新しい箱を別途用意して、100をそこに放りこむ。
0が入った外側のcの箱は、0が入ったままでかわらない。

d.append(100)は、dの箱に入った配列を操作するので、外側のdにも伝わる。
0971デフォルトの名無しさんNGNG
最近ちゃんとプログラムを学び始めたんですが、何か簡単な目標というか
「これぐらいなら考えればできるだろ」みたいなお題をもらえないでしょうか。
0972デフォルトの名無しさんNGNG
1~10000のうち素数である数を抽出する
簡単すぎるか・・
0973デフォルトの名無しさんNGNG
2chのdatをフェチッてきて特定文字列をアボーンに書き換える。
0974デフォルトの名無しさんNGNG
ふつうに電卓を作るとか
0975デフォルトの名無しさんNGNG
Python処理系組込みエディタを作って公開するとか
0976デフォルトの名無しさんNGNG
stableかつ十分な機能でドキュメントとサンプルコードがよく整備されたクロスプラットフォームGUIライブラリを作って公開するとか
0977デフォルトの名無しさんNGNG
>>969
御回答ありがとうございました。
今、『はじめてのPython 第二版』を読んでいるのですが、
同書P243「13.3.1 変数の扱い」「変数に値を代入する」の記述は、誤りのようですね。
0978971NGNG
ありがとうございます。とりあえず素数の抽出やってみます。
0979デフォルトの名無しさんNGNG
>>977
> 同書P243「13.3.1 変数の扱い」「変数に値を代入する」の記述は、誤りのようですね。
間違ってないよ。「最も内側の関数で〜」と書いてあるでしょ。
0980デフォルトの名無しさんNGNG
>>979

>>977と別人です。
まとめてみると

>最も内側の関数でネストスコープの変数Xに値を代入する(あるいは変更する)には
>最も内側の関数の中でのglobal宣言が必要です。

def outer():
c = 0
d = []
def inner():
global c
c = 100
d.append(100)
inner()
print c
print d
outer()

------------------
$ python scope.py
0
[100]
$
------------------
やっぱり間違ってるような。
0981デフォルトの名無しさんNGNG
>>966
機械仮性に質問するとどうでもいい事とか役に立たない方法ばっかり答えてくるのがうざい。
お前は質問に答えたいのかと。しょぼい雑学を自慢したいだけちゃうんかと。
他の人が答えた後にいちいちしゃしゃり出てくるのもキモイ。
C57テクノロジー?馬鹿ですか?テストの点数合計ごときExcelでやれよ。オナニくさ杉。


と、まだ地球にいる漏れは思うのだが?
0982979NGNG
なんか、ずれた解答をしてたようなので、もう一度。

>>977
「変数に値を代入する」の話なので、変数の値を“変更”といっているのは、
代入演算子を使ってのことと解するべきでしょう。
あとは 970氏のいうとおり。

>>980
こういうこと。

c = 50 ;グローバル変数
def outer():
c = 0 ;ローカル変数
d = []
def inner():
global c
c = 100 ;グローバル変数
d.append(100)
inner()
print c ;ローカル変数
print d
outer()
print c ;グローバル変数
0983979NGNG
訂正。
やっぱり、『初めてのPython』の記述が変なのか。
ちょっと頭冷やしてから出直してきます。
0984デフォルトの名無しさんNGNG
>>982
コメントは # で書くべきではないかと。
0985デフォルトの名無しさんNGNG
元Lisper/Schemerなんだよ、きっと。
0986デフォルトの名無しさんNGNG
ネストスコープの変数に、内側の関数から代入する方法はない、らしい。
http://mail.python.org/pipermail/python-list/2003-December/198875.html
0987デフォルトの名無しさんNGNG
となると、『初めてのPython 第2版』のあの記述は…。
原書の正誤表にはそんなことは書かれていないし、訳がおかしいのかな。
http://www.oreilly.com/catalog/lpython2/errata/
0988デフォルトの名無しさんNGNG
だれか原書持ってこーい
0989デフォルトの名無しさんNGNG
http://www.rmi.net/~lutz/errata-lp.html
0990デフォルトの名無しさんNGNG
>>989
それ1st ediition
0991デフォルトの名無しさんNGNG
次スレ張っておきますね。
URL: http://pc5.2ch.net/test/read.cgi/tech/1104156256/
0992デフォルトの名無しさんNGNG
降雪記念age!

梅!梅!
0993デフォルトの名無しさんNGNG
梅doc! 梅doc!
0994デフォルトの名無しさんNGNG
ume-
0995デフォルトの名無しさんNGNG
このスレも終了でやっとPythonスレが統一されると思ったのに。
0996デフォルトの名無しさんNGNG
正直、このスレが立った時は1000行くなんて思わなかった。
0997デフォルトの名無しさんNGNG
DiveIntoPython厨〜
0998デフォルトの名無しさんNGNG
Py
0999デフォルトの名無しさんNGNG
Pyht
1000デフォルトの名無しさんNGNG
このスレは Pyhton の提供でお送りいたしました

次スレはこちらです
http://pc5.2ch.net/test/read.cgi/tech/1104156256/

        〜  終了  〜
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。