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

Pythonのお勉強 Part15

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/12(日) 22:51:44
日本 Python ユーザ会
http://www.python.jp/Zope/
Python オフィシャルサイト
http://www.python.org/
Python 2.5
http://www.python.org/download/releases/2.5/
IronPython
http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
まとめ wiki
http://www7a.biglobe.ne.jp/~yasozumi/python/wiki/
Pythonの入門書「みんなの Python」
http://www.amazon.co.jp/gp/product/479733665X/

Pythonのお勉強 Part14
http://pc8.2ch.net/test/read.cgi/tech/1161272096/
0577デフォルトの名無しさん2006/12/01(金) 11:49:33
>>576
あぁ、なるほど。ありがとうございます。うまくいきました。
クラスオブジェクトのままではだめか……
0578デフォルトの名無しさん2006/12/01(金) 12:59:37
[(0, 1), (2, 3), ... , (n-2, n-1)]を生成するのに
zip(range(0, len(n), 2), range(1, len(n), 2))とやったんですが
もうちょいスマートなやり方ないですかね?
05795782006/12/01(金) 13:01:38
あ、nは偶数という前提で。
0580デフォルトの名無しさん2006/12/01(金) 13:01:52
>>> n = 10
>>> [(i, i+1) for i in range(0, n, 2)]
[(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)]
0581デフォルトの名無しさん2006/12/01(金) 13:17:04
どうもありがとうございます。

思いつかなかった自分にへこむ・・・・・・
0582Python初心者(復活)2006/12/01(金) 16:42:36
>>536 Yr Cmt Tks.
>>537,538
色々とあるもんですねぇ。
そこで、無理やりgeneratorで実装してみました。
def foo(n):
  a = [n]
  i = 0
  while 1 :
    val = (yield i)
    if val is not None:
      a[0] += val
      print a[0]
    else:
      print 'send(any number)!'

f = foo(1)
f.next() #<-これが無いとエラーになる。
f.send(2)
f.send(3)
f.send(4)
f.next() #<-これは正常に動作する。
f.send(5)
f.next() #<-これは正常に動作する。

これからするとgeneratorにはいきなり値を
渡すことが出来ないことになるが?
(TypeError: can't send non-None value to a
just-started generator)
他に最初から値を渡す方法があるので
しょうか?
0583デフォルトの名無しさん2006/12/01(金) 17:36:45
importするモジュール名を変数で指定できますか。
モジュール名を実行時に指定するわけです。
現状の構文とは相容れないとはわかってますが、
exec("import %s" % name) よりスマートな方法があれば教えてください。
0584デフォルトの名無しさん2006/12/01(金) 17:42:54
>>> sys = __import__("sys")
>>> sys
<module 'sys' (built-in)>
0585デフォルトの名無しさん2006/12/01(金) 19:53:47
sendはyieldで停止しているジェネレータを再開するときにyieldに値を
返させる関数だから、停止してない最初に呼べないのはあたりまえ。許した
としても、yieldで停止した後に呼ばれたsendで上書きされるので意味がない。
0586デフォルトの名無しさん2006/12/01(金) 20:35:39
> 現状の構文とは相容れないとはわかってますが、

何でそう思った?
0587デフォルトの名無しさん2006/12/01(金) 20:44:23
R○○○だとrequire 'hoge'できるのにPythonではできないの?ウンコだね!


という流れだと予想。
0588デフォルトの名無しさん2006/12/02(土) 04:56:38
>>584
さんくすです。そうか、ライブラリじゃなくて組み込み関数だったのか。
このままだと代入先があらかじめわかってないとだめなので
mod_name = 'mymodule'
locals()[mod_name] = __import__(mod_name)
でいくことにしました。execよりは見た目複雑ですけど、これでOKです。

>>586
import モジュール名 と
import 変数名 との区別がつけられないからです。
現状の構文では、import XXX によって、モジュール名と、そのモジュールを代入する変数の両方を同時に指定している訳で、
これが import 'モジュール名' だとモジュールを代入する変数を文字列で指定することになり、pythonのしくみとしてはおかしいかなと思いました。
rubyとは違って、モジュールを変数に代入するのがpythonなので、これは仕方ないと思ってます。
0589デフォルトの名無しさん2006/12/02(土) 08:25:05
>>588
動的にモジュールを決めてロードしたいだけなら、モジュール名と同じ名前で束縛する必要はない。
temp_module = __import__('mymodule')
として、モジュールオブジェクトtemp_moduleの属性にアクセスするだけでいいと思うよ。
0590デフォルトの名無しさん2006/12/02(土) 13:26:42
>>589
だな。
むしろ変数名のほうがコロコロ変わったんじゃ使いにくいだろね。
>>588のやりたいことがいまいちよくわからん。
0591デフォルトの名無しさん2006/12/02(土) 14:32:34
>>588
> 現状の構文では、import XXX によって、モジュール名と、そのモジュールを代入する変数の両方を同時に指定している訳で、

import A as B という構文もあるわけだが。
0592デフォルトの名無しさん2006/12/02(土) 15:18:43
>>589-591
はいはい、見当違いレス乙。
588の下の段落は586へのレスだろうが。
0593デフォルトの名無しさん2006/12/02(土) 15:50:25
>>592
馬鹿乙
0594デフォルトの名無しさん2006/12/02(土) 16:10:15
其の者はRxxxの優位性を示そうと虎視眈々と狙ってゐた。
0595Python初心者(復活)2006/12/02(土) 16:29:40
>>585 :デフォルトの名無しさん :2006/12/01(金) 19:53:47
>sendはyieldで停止しているジェネレータを再開するときにyieldに値を
>返させる関数だから、停止してない最初に呼べないのはあたりまえ。
これは納得。
>許したとしても、yieldで停止した後に呼ばれたsendで上書きされるの
>で意味がない。
許せば少なくとも、停止させるだけの無意味なf.next()を書く必要が
なくなるので意味はある。

ところで、先生!
>>582
if val is not None:
      a[0] += val
      print a[0]
    else:
      print 'send(any number)!

f = foo(1)
f.next() #<-これが無いとエラーになる。
f.send(2)
f.send(3)
f.send(4)
f.next() #<-これは正常に動作する。
f.send(5)
f.next() #<-これは正常に動作する。

最初のf.next()の時だけ何故、else:節が実行されない
のでしょうか?
0596デフォルトの名無しさん2006/12/02(土) 16:46:16
yieldで止まってるから。つか仕様嫁。sendはyieldから返る値を指定するnextなの。
1.最初にsend(x)する
2.yield iでジェネレータが止まる。呼び出し側にはiが返る
3.次にsend(y)する
4.yieldがyを返し、ジェネレータが実行を再開して次のyieldでまた止まる。
だからxは意味がない。
0597デフォルトの名無しさん2006/12/02(土) 17:15:44
>>593
バカはお前だボケ。文盲は黙ってろな。
0598デフォルトの名無しさん2006/12/02(土) 17:26:45
>>597
馬鹿乙
0599デフォルトの名無しさん2006/12/02(土) 18:14:06
>>597
文盲乙
0600デフォルトの名無しさん2006/12/02(土) 21:44:04
>>589は>>588の上の段へのレスなわけだが。
0601デフォルトの名無しさん2006/12/02(土) 21:50:19
実践Python、なんでぜんぜん話題にならないの?
発売前もそうだけど、発売されてからも全然わだいにならないのはなぜ?
誰も注目してないの?
そんなにひどい内容なの?
やっばり「しっぱい」なの?
0602デフォルトの名無しさん2006/12/02(土) 21:57:07
>>596
補足しとくと、
仕様書を読むだけでなく実際にジェネレータを定義して試してみればわかるが、
最初にsend(x)できるのはxがNoneの時だけ。
0603デフォルトの名無しさん2006/12/03(日) 00:31:06
>>601
Zope関係者乙
0604デフォルトの名無しさん2006/12/03(日) 00:42:14
>>601
内容がひどいからというよりも、書いてる人が偉くも偉そうでもなくて煽りどころがないからじゃないの。
0605デフォルトの名無しさん2006/12/03(日) 01:01:39
>>601
Blog検索で調べてみたけど、言及数が少ないなー。
普通に話題になってないだけだと思われ。

Pythonもこういう駄本が出版されるようになったということか。
ま、いいことですな。

>>604
みんぱいの作者タソはZope関係者に粘着されてたんでしょう?
実践Pythonの著者もZope関係者らしいが(WWWWWWWWWW
0606デフォルトの名無しさん2006/12/03(日) 01:06:29
>>601
何を話題にしろと?どこに注目しろと?

・・・表紙?
0607デフォルトの名無しさん2006/12/03(日) 01:07:00
>>604
ttp://kashino.exblog.jp/4781584
これが日本語で出版されるPython入門本の決定番だ!という気持ちであり、
もちろん今もその気持ちだが

話題にならない本の作者にしては十分偉そうじゃね?(w
0608デフォルトの名無しさん2006/12/03(日) 03:55:06
困ったときのZope&ぱい本叩き。わかりやすいなwwww
0609デフォルトの名無しさん2006/12/03(日) 10:32:57
>>608
>困ったときの

誰か困っているの?
0610デフォルトの名無しさん2006/12/03(日) 13:35:13
>>607
いや、ほとんど社交辞令みたいなもんだろそれ
0611デフォルトの名無しさん2006/12/03(日) 15:56:32
あのぅZopeのスレがないようなので...
Zopeの管理画面にfavicon.icoを表示させたいんですが
どこ置けばいいですか?
0612デフォルトの名無しさん2006/12/03(日) 16:47:37
>>611
おまえ2chのトップに「2ちゃんねる検索」のフォームが貼ってあることを知ってるか?

http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=zope&COUNT=50
0613Python初心者(復活)2006/12/03(日) 18:39:29
>>596 Tks fr Res.
>>602
>yieldで止まってるから。

f.next() #<-これは何もOPしない。しかし無いとエラー。
f.send(2)
f.send(3)
f.send(4)
f.next() #<-else節のsend(any number)!をOP
f.send(5)
f.next() #<-else節のsend(any number)!をOP

しつこいようですが、最初のf.next()が
yieldで止まってelse節まで実行しないなら、
何故?二番目や三番目のf.next()は
else節を実行するのでしょうか?
0614デフォルトの名無しさん2006/12/03(日) 19:15:52
簡略化した

while 1:
    yield
    #else節

で説明すれば、最初のnext()は「関数の最初から」「次に出くわすyieldまで」
を実行する。その間にelse節はないので実行されない。

二回目以降のnext()は「止まっているyield」から「次に出くわすyieldまで」
を実行する。yieldの後else節があるので、それを実行した後while 1で戻されて
yieldで止まる。つか、最初のnextが気に入らないなら無理にジェネレータを
使う必要ない希ガス。
0615デフォルトの名無しさん2006/12/03(日) 20:21:12
つか、糞本ですが買ってくださいとか言われる方が困る
心持ちとしてはすごくまっとー
>>607は厨房か、ひっきーか?
正直社会人の感性ではないな
0616デフォルトの名無しさん2006/12/03(日) 20:23:58
http://www.python.org/dev/peps/pep-0342/ の consumer でおk

def consumer(func):
    def wrapper(*args,**kw):
        gen = func(*args, **kw)
        gen.next()
        return gen
    wrapper.__name__ = func.__name__
    wrapper.__dict__ = func.__dict__
    wrapper.__doc__ = func.__doc__
    return wrapper

@consumer
def func(n):
    while 1:
        val = yield n
        if val is not None:
            n += val
        else:
            print "send(any number)!"

f = func(1)
print f.send(2)
print f.send(3)
print f.send(4)
0617デフォルトの名無しさん2006/12/03(日) 20:33:23
>>615
>つか、糞本ですが買ってください

そうだね、
たとえ本当に糞本だったとしても、普通はそんなことは言わないね。
0618デフォルトの名無しさん2006/12/03(日) 22:27:42
ttp://blog.livedoor.jp/dankogai/archives/50704894.html
0619デフォルトの名無しさん2006/12/04(月) 07:32:22
>>617
同人のノリですな。キモイよね。
0620デフォルトの名無しさん2006/12/04(月) 09:42:54
くわしいな
0621デフォルトの名無しさん2006/12/04(月) 10:10:48
>>618
>ttp://blog.livedoor.jp/dankogai/archives/50704894.html
>著者は日本でもトップレベルのPythonistasだ。

ググっても名前が全然出てこないんだけど...。
何で有名な人なの?
0622デフォルトの名無しさん2006/12/04(月) 11:18:31
有名人とは書いてないだろ。トップレベルなんだろ。何がトップかは放っといてやれ。
0623Python初心者(復活)2006/12/04(月) 12:00:28
>>614
良く分かりました。Tks.
>>615
Really Pythonic Code!
0624デフォルトの名無しさん2006/12/04(月) 12:25:13
>>623
>Really Pythonic Code!

お前が言うなよ(WWWWWWW
つか,参照先間違ってね?
0625デフォルトの名無しさん2006/12/04(月) 14:09:50
>>616
これはカッコいい!デコレータってすごいな!
0626デフォルトの名無しさん2006/12/04(月) 14:17:04
すみません、また対話環境の日本語なのですが、少し進展がありました。
うまく動かない環境では、
"ほげ".decode(エンコード名)と
u"ほげ" の内容が一致しないのです。

--------------------------------
Python 2.3.5 (#2, Sep 4 2005, 22:01:42)
[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2

>>> "ほげ".decode('euc-jp')
u'\u307b\u3052'
>>> u"ほげ"
u'\xa4\xdb\xa4\xb2'

--------------------------------
Python 2.3.4 (#1, Nov 4 2004, 14:06:56)
[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2

>>> "ほげ".decode("utf-8")
u'\u307b\u3052'
>>> u"ほげ"
u'\xe3\x81\xbb\xe3\x81\x92'

--------------------------------
Python 2.4.3 - Enthought Edition 1.0.0.beta4 (#69, Jul 13 2006, 15:35:31)
[MSC v.1310 32 bit (Intel)] on win32

>>> "ほげ".decode('mbcs')
u'\u307b\u3052'
>>> u"ほげ"
u'\u307b\u3052'
0627デフォルトの名無しさん2006/12/04(月) 14:24:01
対話環境で日本語が正常に処理されるのは、最後のWinXP版のみなのですが、
これだけが二つの式の内容が一致しています。
残りはいずれも、u"ほげ"の側はデコードされていません。元のエンコードの
ままです。

そこで予想を立てたのですが、Python2.3以前では、対話環境では u"ほげ"を
デコードしないのではないかと思うのです。

ということでお願いなのですが、print u"ほげ"がうまく行く方、行かない方、
それぞれPythonのバージョンを教えていただけないでしょうか?

ただし、すみませんがsitecustomize.py を設定している方に限ります。
http://lowlife.jp/nobonobo/zine/5/6.html
0628デフォルトの名無しさん2006/12/04(月) 14:38:11
すみません、長すぎるのでまとめます。

対話環境で

>>>print u"ほげ"
ほげ

がうまく表示される方、されない方、
それぞれPythonのバージョンを教えていただけないでしょうか?
できたらOS等の環境もお願いします。
0629デフォルトの名無しさん2006/12/04(月) 14:55:49
そんな回りくどいことをしなくても、すずきせんせいに聞けばちゃんと教えてくれるよ。
0630デフォルトの名無しさん2006/12/04(月) 15:37:33
>>627
> Python2.3以前では、対話環境では u"ほげ"を
> デコードしないのではないかと思うのです。

その通りだと思われ。
06316262006/12/04(月) 15:39:31
すみません、どうもPythonのバージョンは直接は関係ないようです。
むしろ問題は、対話環境自体のようです。
同じWinXPの Python 2.4.3 - Enthought Edition 1.0.0.beta4 でも、対話
環境の種類で結果が変わりましたので。

---------------------------
# 通常の対話シェル
>>> "ほげ".decode("cp932")
u'\u307b\u3052'
>>> u"ほげ"
u'\u307b\u3052'

---------------------------
# IDLE 1.1.3
>>> "ほげ".decode('cp932')
u'\u307b\u3052'
>>> u"ほげ"
u'\x82\xd9\x82\xb0'

---------------------------
# IPython 0.6.15 -- An enhanced Interactive Python.
In [6]: "ほげ".decode('cp932')
Out[6]: u'\u307b\u3052'

In [7]: u"ほげ"
Out[7]: u'\x82\xd9\x82\xb0'
06326262006/12/04(月) 15:42:58
すると解決策は、

・Pythonのバージョンを上げて、その標準の対話環境を使う
・u"ほげ"のデコードに対応した対話シェルを捜す

このどちらかになりそうです。
しかし、前者はなかなか難しいし、
後者も、IDLEとIPythonがダメですからねえ。うーん。
0633デフォルトの名無しさん2006/12/04(月) 15:52:22
"ほげ".decode("mbcs") とか unicode("ほげ", "mbcs") とか書けばいいジャマイカ。
"mbcs" のところは環境依存。

汎用性のある方法が分かっているのにヌルーするのはなぜ?
06346262006/12/04(月) 16:08:31
>>633
その理由は、
・"ほげ".decode("cp932")と書くより、u"ほげ"の方が簡単
・スクリプトファイルの中では u"ほげ" と書いているので、統一したい
 (スクリプト内では当然、エンコーディング指定は冒頭の一箇所のみにしたい)
・違うサーバごとに、対話環境で違うエンコーディングを打ち込むのは混乱する
 "ほげ".decode("cp932"|"euc-jp"|"utf-8")

などです。
0635デフォルトの名無しさん2006/12/04(月) 16:09:38
毎回エンコーディングを指定するのが面倒ならテキトーな関数なり派生クラスを定義して使うとか。
ちなみに以下の例ではキー入力のエンコーディングはファイルシステムのエンコーディングと同じに違いないっ!と仮定。

>>> import sys
>>> class u(unicode):
def __new__(cls, s, enc=sys.getfilesystemencoding()):
return unicode(s, enc)

>>> u("ほげ")
u'\u307b\u3052'
06366262006/12/04(月) 16:30:22
>>635
これは面白いですね!ありがとうございます。ちょっといじってみました。

>>> class u(object):
...   import sys
...   def __new__(cls, s, enc=sys.getdefaultencoding()):
...     return s.decode(enc)
...
>>> u("ほげ")
u'\u307b\u3052'

u"ほげ"にカッコをつけるだけですむのは確かに楽です。しかし、

>>> u"ほげ"
u'\xa4\xdb\xa4\xb2'

こちらが直らないのは、やはり残念ですね。
0637デフォルトの名無しさん2006/12/04(月) 16:49:44
sys.stdin.encodingやらsys.stdout.encodingやらがasciiになってるんじゃないの?

ttp://python.matrix.jp/tips/compatibility/interact_encoding.html
とかが参考にならんか?
06386262006/12/04(月) 17:18:27
>>637
> sys.stdin.encodingやらsys.stdout.encodingやらがasciiになってるんじゃないの?

残念ながら、なっていません。
DebianではEUC-JP、RedHatではUTF-8、WinXPではCP932です。

> http://python.matrix.jp/tips/compatibility/interact_encoding.html
> とかが参考にならんか?

残念ながら、ならないようです。
環境変数「PYTHONSTARTUP」に
interact.py
# -*- encoding: mbcs -*-
などを各サーバに指定してみましたが、結果は同じでした。

そもそもこのページには、内容に疑問があります。
mbcs, cp932, shift_jisはほとんど同じもので、ひらがなの文字化けの原因には
ならないと思うのですが。
0639デフォルトの名無しさん2006/12/04(月) 17:53:51
あんまり関係ないけど、>>637のページ、
> \python25\python -c "import sys; print sys.stdout.encoding"
cp932
> \python25\python -c "import sys; print sys.stdout.encoding" > out.txt
> more out.txt
None
という違いがあることも書いてあるといいかもね。
0640デフォルトの名無しさん2006/12/04(月) 18:11:36
>>639
リダイレクトしても、結果は変わらなかったぞ(Python2.3 on Linux)。
2.5だとそうなるの?
06416402006/12/04(月) 18:13:37
ごめん、こちらの間違いだった。
print sys.stdout.encoding を
間違えて sys.getdefaultencoding() にしちまってた。
0642デフォルトの名無しさん2006/12/04(月) 19:28:42
>>618
まとめると

A: 判型が微妙
B: レイアウトが微妙
C: 実践というタイトルが微妙
D: サンプルコードが微妙
E: 著者は無名、(何がかは微妙だけど)トップ

なるほど、これでは話題になるわけがないな.
0643デフォルトの名無しさん2006/12/04(月) 19:40:31
>>642
必死だな
0644デフォルトの名無しさん2006/12/04(月) 19:56:39
この種の内容のない煽り書き込みは、何が目的なんだろうか?

『みんなのPython』はぼろくそに叩かれていたけれど、人に借りて読んでみたら
ごく普通の入門書だった。まあ買う気はないけど。
Rubyも散々な言われようだったけど、使ってみたら、好みは分かれるだろうが
悪い言語じゃなかった。

この煽りどもの暗い情熱はどこから涌いてくるのだろうか?
ママの愛情が足りなかったのか?
0645デフォルトの名無しさん2006/12/04(月) 19:56:49
python-devすげいな
0646デフォルトの名無しさん2006/12/04(月) 21:54:11
科学技術計算にはRubyとPythonどっちがいいんだろう?
ワタシはMatlab鹿使えないんですが.
0647デフォルトの名無しさん2006/12/04(月) 21:57:32
>>646
好みのライブラリが揃ってるほう
0648デフォルトの名無しさん2006/12/04(月) 22:02:40
>>644
いや、ここ2chだし。責任って重石の取れた、匿名筆談ならこんなもん。
人間の品性にどんな希望を抱いてるか知んないけど、
リアル以上に下司の声が大きいくらいが、むしろ自然じゃないか。

どんな板・話題でも、下層民のルサンチマンは所嫌わず。
努力してそうしてるわけではない。
0649デフォルトの名無しさん2006/12/04(月) 22:11:49
おい、おまえら。下層民とか言われてるぞ。
0650デフォルトの名無しさん2006/12/04(月) 22:21:22
>>646
Rubyの事情は良く知らないんだけど、たぶんPythonでいいと思う。
NumPy, SciPy, mathplotlibといった、洗練されたライブラリが大量にあるから。
0651デフォルトの名無しさん2006/12/04(月) 22:41:26
ボク下層民です。
648さんごめんなさい。
0652デフォルトの名無しさん2006/12/04(月) 22:52:01
>>644
みんぱいの場合は、作者本人への粘着もあったよな
Zope関係者の仕業と言うことになってるんだっけか?
0653デフォルトの名無しさん2006/12/04(月) 23:10:13
>>644
>Rubyも散々な言われようだったけど
Matzも他言語をよく扱下ろすからな。同情できん。
0654デフォルトの名無しさん2006/12/04(月) 23:37:07
自分の基準で何を言うかや、どの情報を採るかを決めるのは、
ある意味とっても健全だわな。
なんて書いてて思ったんだけど、mixiにPythonコミュってある?
0655デフォルトの名無しさん2006/12/04(月) 23:53:35
今ちょろっと検索かけただけだけど思ったよりあるっぽいね
0656デフォルトの名無しさん2006/12/05(火) 00:23:07
>>646
Windowsだったら、この Python Enthought Editionをまず使ってみてよ。
http://code.enthought.com/enthon/
これさえインストールすれば、数値計算に必要なライブラリやツールが
ほぼすべて揃う。つうか盛りだくさん過ぎて使い切れない。
これで不足だったら、そのあとで他の選択肢を考えればいいよ。
0657デフォルトの名無しさん2006/12/05(火) 02:17:34
>>646
Matlabで用が足りているなら学習コストをかけてPythonを使う必要はない希ガス。
科学技術計算以外のこと「も」やりたいなら超お勧めだけどね。
0658デフォルトの名無しさん2006/12/05(火) 02:35:20
多分、研究室とは別に、自宅に用意したいんだろう。
そういう時、無料というメリットは大きい。
あと、SCILABとかと違って、汎用言語だというのは、
欠点でもあるけど、メリットでもある。
自分の場合、計算結果をRDBに保存する必要がでてきて、
ああPythonでよかったと思った。
0659デフォルトの名無しさん2006/12/05(火) 03:28:45
scipyは大分よくなったけど、数値計算を楽にしたいと思っているのならまだ今はmatlabを使った方がいい。
06606462006/12/05(火) 11:55:46
みなさんどうも.風邪を引いて家で論文読みです.
matlabだけだと学校出た後にきついかなと思ったのと,
ゲームとかも作れるようになりたいなと思ったので質問しました.
>>656 のmac版はないかなぁ…
0661デフォルトの名無しさん2006/12/05(火) 11:57:29
自分で探します
0662Python初心者(復活)2006/12/05(火) 13:10:27
>>624
>つか、糞本ですが買ってください
>>616のコードも良いけど、>>615のこれも
結構Really Pythonicだと思わん?
泣けるで…

ところで、
三項演算子はandとorの組み合わせで代用可能だと、
どこかで読んだ覚えがある。
x = 2
print ('One' if x == 1 else 'Not One')
print (('One' and x == 1) or 'Not One')
これはうまく作動するが、x = 1 になると下の式は
Trueを返す???
正しくはどうやるんでしょうか?
0663Python初心者(復活)2006/12/05(火) 13:21:21
口はばったいことを敢えて言わせてもらえば、
始めてのPythonにしてもそうだが、外人が書く本は
どこか著者が全力で書いている部分がある。
そこが読者の心を打つ。
ところが日本人が書く本は、どこかこの程度で
いいじゃん的な部分が見られて萎える。

これは内容が分かり易いとか難しいとかを
超えたものだと思う。
自らの著作に対する姿勢の問題じゃないか。
0664デフォルトの名無しさん2006/12/05(火) 13:25:22
>>662
・・・・・・・・・・。

print x == 1 and 'One' or 'Not One'
0665デフォルトの名無しさん2006/12/05(火) 13:29:13
>>662
ただ、Pythonだと0は偽になるんで、値が0の時を真にしたい場合にハマる危険がある。
0666デフォルトの名無しさん2006/12/05(火) 13:30:28
>>662
Pythonの and と or はLISP風。
http://www.shido.info/py/python2.html#operator

タプルを使ったエラー回避。まあ2.5には三項演算子があるわけだが。
http://web.archive.org/web/20060109122923/http://www.geocities.jp/shido_takafumi/py/python2.html#operator
0667デフォルトの名無しさん2006/12/05(火) 13:40:20
>>663
ぶっちゃけ得られる銭が全く違うからなぁ・・・
日本では専門書なんて売れないから印税なんて雀の涙
米国では図書館が買ってくれるだけれも馬鹿にならない
そういう文化インフラが嫌になるくらい違うんだよね
0668デフォルトの名無しさん2006/12/05(火) 13:42:29
>>665
そうだね。トリッキーな書き方はPythonに似合わない気がする。
素直に if 文で分けるか、2.5 以降の三項演算子を使うのが吉。
0669デフォルトの名無しさん2006/12/05(火) 16:43:30
>>663
>どこか著者が全力で書いている部分がある。

全力で書きすぎて厚くなってしまった本をありがたがるのは
体力がありあまっているガイジンかオマエみたいな変わり者だけだよ
0670デフォルトの名無しさん2006/12/05(火) 17:34:53
初めてのPythonには仕事や教育の現場で得た経験が詰まってる。
日本のpy本はまとめサイト級(ほめ言葉)って気がする(読んでないから知らんけど)。
0671デフォルトの名無しさん2006/12/05(火) 17:41:06
>>670
>読んでないから知らんけど

ハイハイ、妄想しがちなヒキコモリは黙っていてね
0672デフォルトの名無しさん2006/12/05(火) 18:01:12
zope乙
0673デフォルトの名無しさん2006/12/05(火) 22:04:46
>>663
そんなあなたにはmatzの本がおすすめ。
0674デフォルトの名無しさん2006/12/05(火) 23:07:52
pydevでコンソールでutf-8文字化けしないようにってできまつか?
0675デフォルトの名無しさん2006/12/06(水) 14:41:32
twistedの2.5はまだですか
0676Python初心者(復活)2006/12/06(水) 21:19:19
>>664,665,666,668 Tks.
>ただ、Pythonだと0は偽になるんで、値が0の時を
>真にしたい場合にハマる危険がある。
x = 0
print x == 0 and 'Zero' or 'Not Zero'
これ、ハマらないようだけど?
■ このスレッドは過去ログ倉庫に格納されています