Pythonのお勉強 Part8

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2006/03/09(木) 01:40:41
RubyだかPerlだと文が値を持つので
def max(a,b)
if a>b then a else b end
end
と書けるとか誇られちゃったりしてる記述がありますが、
def max(a,b):
if a > b:
return a
else:
return b
で何か不都合とかあるのでしょうか?
Pythonだけしか知らないと「式」も「文」も区別が付かないので
余計謎が深まります(「式」=「戻り値のある文」って説明になってないよぉ)。
953デフォルトの名無しさん:2006/03/09(木) 01:56:05
式だけでは論理的には部品に過ぎない。
文となって初めてプログラムと呼べる。
954デフォルトの名無しさん:2006/03/09(木) 01:57:51
>>952
言いたいこととはズレるけど

def MAX(a, b):
 return (a>b and a) or b

で出来たよ
955デフォルトの名無しさん:2006/03/09(木) 02:01:11
式だと
a = if n > 0 then "big" else "little" end
とか
a = case n
when 0
"zero"
when 1, 3
"odd"
when 2, 4
"even"
end
と書けるのが少し嬉しい
956デフォルトの名無しさん:2006/03/09(木) 02:08:07
>>952
Python 2.5 では a if a > b else b と書けるようになる予定。
http://mail.python.org/pipermail/python-dev/2005-September/056846.html
957デフォルトの名無しさん:2006/03/09(木) 03:50:11
>>954
その使いかたは危険。
(0 > -1) and 0 or -1 => -1
958デフォルトの名無しさん:2006/03/09(木) 10:11:57
そろそろ演算子の優劣とかがワケワカになってきた
従来の内包表記ですでに結構微妙

自分で書く分にはカッコを補ったりしてるけど…
959デフォルトの名無しさん:2006/03/09(木) 11:26:37
and と or の短絡をそのままCの三項演算子みたいに使うと危ないんだよな
if cond then expr1 else expr2
みたいのは
(cond and (expr1, ) or (expr2, ))[0]
だっけ?
960デフォルトの名無しさん:2006/03/09(木) 13:00:48
これ以上短くしようとすると構文が歪むだけだから無理しなくていいよ
961デフォルトの名無しさん:2006/03/09(木) 13:41:42
lightson.dip.jp/zope/ZWiki/006_e3_82_b3_e3_83_a1_e3_83_b3_e3_83_88
にあるコメントなんですけど,
"""と"""で囲まれた部分って複数行にわたるストリングスではないのですか?
関数部分にあるのは関数のdocstringですよね
962デフォルトの名無しさん:2006/03/09(木) 14:26:14
学級新聞の内容に突っ込んでも仕方ないだろ。
963デフォルトの名無しさん:2006/03/09(木) 16:35:52
ML で御大二人が熱くなってるけど…

ym さんの言っていることを否定してまで
反論する理由は何もないと思うんだけどな。
964デフォルトの名無しさん:2006/03/09(木) 17:05:40
どこのMLかもわからん
965デフォルトの名無しさん:2006/03/09(木) 18:28:53
Python-ml-jp 3491 以降くらい
966デフォルトの名無しさん:2006/03/09(木) 18:50:53


  M L で や れ こ の ヘ タ レ が

967デフォルトの名無しさん:2006/03/09(木) 19:05:24
     !    //  | !/  / / /\  ',  ヽ V
   │   //    | /   //| / _ヽ l   | j|
   │  /.|    |l  ア メ / / /´  `、|   ∨
     ',  //|    |! / ‐ 、  ´ ! ´__  l|    |
     ヽ/ |     |,、‐'' "丶´   '´ ̄`ヾ|    |
     / /|      |                |    |
      { |/|     |        i     │  ハ
     ∧ !l |     |        _      /   | ヽ  あらあら、うふふ♪
     / : :V│     |        ̄‐´   /|   l \ 〉 
   /::: : /´ |      |> 、       ,.ィl: : l   ,'  ヽ
  /'"´ _\ |    | : : : |` - 、 _,. ´ |l: /  /\  /
  レ '´   ヽ!     |ヽ: : :|        V  /   \>
968デフォルトの名無しさん:2006/03/09(木) 19:38:21
>>963
ちゃんと読んでないけど、
ymたんは「LANGの設定=OS全体のグローバルな設定」と短絡してる希ガス。
ムネオたんの解説は(問題の解としての好き嫌いは別にして)正しい。
969デフォルトの名無しさん:2006/03/09(木) 19:51:39

       ,..-一-、          
.     |o   |_                   ||  ||
    r―――  .|  ヽ    r,===、. ll   ll ==== ll''~~ヾ ,,.===.、 r,==.、
   (   r―-一'   )     .ll.   ll  ||   ||   ||  ll   || ||   || ll   ||
   ヽ_|  ____.ノ     .ll、___,ll  ||   ||   ||.   ll   ll ヾ_ , リ ll   ll
      |    o|      ll`~~~   ``==ll  ``= ~   ~   ~~~
      ヽ__ノ       ll       =''~

      iilll|||||||llllii

970デフォルトの名無しさん:2006/03/09(木) 20:09:29
>>968
>ちゃんと読んでないけど、
>ymたんは「LANGの設定=OS全体のグローバルな設定」と短絡してる希ガス。
>ムネオたんの解説は(問題の解としての好き嫌いは別にして)正しい。

LANG=en_US.UTF-8 python だけでいいのなら、environment.plistで端末デフォルトを変更させようとする方がアレだと思うけどなぁ。
971デフォルトの名無しさん:2006/03/09(木) 20:16:26
質問者が一番大人という滑稽さ
972デフォルトの名無しさん:2006/03/09(木) 20:35:48
"この場合の" 解決策
"一番タイプ数の少ない" 解決策

"応用範囲の広い" 解決策
"今後の未来世界においてあるべき" 解決策


いろいろあるし弊害とかも理解しようよってのが本筋だと思う
"xxが正しい" って言っちゃうのはちょっとイタイ...

(投稿すると詳しく丁寧に教えてくださるので感謝・尊敬はしています。
あくまで今回の件に関しての感想ね)
973デフォルトの名無しさん:2006/03/09(木) 20:48:44
ソースコード(test.py)を実行するときにはPythonシェル上では
>>> import test
以外に何がありますか?
974デフォルトの名無しさん:2006/03/09(木) 20:54:29
execfileとか、os.systemとか
975デフォルトの名無しさん:2006/03/09(木) 20:58:12
名前空間汚れるような気がするからexecfileのが好きだが、ゴミ.pywできるんで20点減点
976デフォルトの名無しさん:2006/03/09(木) 21:44:35
てめー!!インデントむちゃくちゃなもん貼るなっつーのつーの!!
977デフォルトの名無しさん:2006/03/09(木) 21:50:47
皆最初は失敗するものさ
978デフォルトの名無しさん:2006/03/09(木) 21:57:03
>>> import test
>>> del test
979デフォルトの名無しさん:2006/03/09(木) 22:06:34
print strhoge.encode('xxx-xx') するのは旧式なやり方、
というのがようワカランかった。 なんでこの書き方は古いって言われるの?
OSや環境に左右されない確実な方法だと思って漏れは愛用していたんだが。
980デフォルトの名無しさん:2006/03/09(木) 22:10:10
ムネオタン、永田議員みたいにはりきってたのに、あっさり足元すくわれてカワイソス (´・ω・)
981デフォルトの名無しさん:2006/03/09(木) 23:02:27
>>969
皆ほめてくれないけど、頑張ったんだよね。よしよし…。
982デフォルトの名無しさん:2006/03/09(木) 23:13:07
少なくともMac OS Xでは鈴木さんのやり方が一番まとも
983デフォルトの名無しさん:2006/03/09(木) 23:22:20
OSXでLANG設定したらTeXの出力がみんな化けるようになった。
984デフォルトの名無しさん:2006/03/09(木) 23:45:35
いやどっちが正しいとかいう話じゃなくて目的によって
分かれる話なんですよ。

ただ、"こうあるべき"っていう話は度がすぎると
押し付けがましくなっちゃうっていうわけで、
エロい方には珍しいパターンの展開だったなぁっていうだけだと思う。



そろそろ次スレかな
985デフォルトの名無しさん:2006/03/10(金) 00:12:29
LANG=ja_JP.eucJP pythonで、、、

>>> print u'あいう'
あいう
>>> import sys
>>> sys.stdout.write(u'あいう')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

糞だなこの仕様。
986デフォルトの名無しさん:2006/03/10(金) 00:47:47
perlのunicode対応よりまし
987デフォルトの名無しさん:2006/03/10(金) 00:59:10
>>982 えー? [Python-ml-jp 3502]によれば標準出力をファイルにリダイレクトしたら
エラーになっちゃうんでしょ?それがまとも?
988デフォルトの名無しさん:2006/03/10(金) 01:00:30
>>> import codecs, sys
>>> Writer = codecs.getwriter("euc-jp")
>>> sys.stdout = Writer(sys.__stdout__)
>>> sys.stdout.write(u'あいう\n')
あいう
>>> print u'あいう'
あいう
>>>
989デフォルトの名無しさん:2006/03/10(金) 01:01:18
ローマ字表記最強
990デフォルトの名無しさん:2006/03/10(金) 01:05:08
早く寝なさい
991デフォルトの名無しさん:2006/03/10(金) 01:07:04
だから全部現代英語にしちまえばいいんだよbyアイザック=アシモフ
992デフォルトの名無しさん:2006/03/10(金) 01:10:15
他のMLの話、超うざい。読んでない奴だって居るんだ。そっちでやれ。
993デフォルトの名無しさん:2006/03/10(金) 01:14:47
>>992
っ[チラシの裏]
994デフォルトの名無しさん:2006/03/10(金) 01:15:14
日本語じゃなくても Unicodeではまったことがあった。
データベースにSQL渡す時に「SQLは string type にしろ!」ってエラーが出た。
どう見ても文字列なのにどういうこっちゃって調べたら
スクリプト内に書いたSQL文が Unicode Typeになってるのが原因だった。
それで結局 str関数で変換したら通るようになった。
995デフォルトの名無しさん:2006/03/10(金) 01:29:45
>>> u'じゃあ次スレは0からを使いきりでよろしく'
u'¥u3058¥u3083¥u3042¥u6b21¥u30b9¥u30ec¥u306f¥uff10¥u304b¥u3089¥u4f7f¥u3044¥u304d¥u308a¥u3067¥u3088¥u308d¥u3057¥u304f'
996デフォルトの名無しさん:2006/03/10(金) 01:54:36
print "44Ki44OD44OB44On44Oz44OW44Oq44Kx".decode("base64").decode("utf-8")
997デフォルトの名無しさん:2006/03/10(金) 11:41:04
>>> print "44Ki44OD44OB44On44Oz44OW44Oq44Kx".decode("base64").decode("utf-8")

Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeError: ASCII encoding error: ordinal not in range(128)
998デフォルトの名無しさん:2006/03/10(金) 12:13:55
u'\uff9c\uff9b\uff80'
999☆次スレ☆:2006/03/10(金) 13:20:01
Pythonについて0から教えてください
http://pc8.2ch.net/test/read.cgi/tech/1126073956/l50
1000デフォルトの名無しさん:2006/03/10(金) 13:21:22
たぷるタソ (;´Д`) ハァハァ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。