|
ホーム 戻る
第14章 基本的なスクリプト
" 恋人の誘いの歌
このような酒宴も 甘美な語らいほどに
僕の心を 楽しませてはくれないし、
これほど豊かな御馳走さへも、
睦み合うことほど 嬉しくはないのです。
愛する人よ やがてすることを
ひきのばしても 楽しいことなどありましょうか、
いずれすることは すぐ行うがよく、
僕には一刻の猶予も 耐え難いのです。
さあ 急いで、愛する妹よ
そして わが恋人よ
僕の瞳の輝く光よ
はたまた僕の心の愛のすべてよ
(瀬谷幸男・完訳 ケンブリッジ歌謡集)"
1.カレンダーを作る
wday=("sun","mon","tue","wed","thu","fri","sat") def cal0(n,m): # n: 0、1,2,3,4,5、6
# 0・・・・:日曜から土曜まで
# その月の1日の曜日:例 5はfri #m:その月の日数例8月は31
#2008年8月はcal0(5,31) for x in wday: print " ",x, 曜日を表示 print for x in range(0, n): print " ---", ーーーを表示 for x in range(0, m+1): 日を表示 print "%5d"%x, 書式5カラムで if (x+n)%7==0 :print 7で割ったあまりが0でないとき表示 cal0(6,31)
sun mon tue wed thu fri sat --- --- --- --- --- --- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
例2 面積を求める
from math import * def v(r): return 4*pi*r*r*r/3 print v(3) print v(4) print v(5)
(1)リスト内包表記(式)
>>> clist=[] >>> for s in 'python': clist.append(ord(s))
>>> clist [112, 121, 116, 104, 111, 110] >>> clist=[ord(s) for s in 'python'] リストコンプリヘンジョン 内包表記 結果としてリストが返る >>> clist ’python’繰り返し変数 ord() 関数 戻り値が要素のリスト
[112, 121, 116, 104, 111, 110]
>>> sq=[x**2 for x in range(10)] x二乗ノリストを作る >>> sq [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> sq=[(x,x**2) for x in range(5)] >>> sq [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)] タブルのリストを作る
>>> val=10 >>> [x for x in range(1,val) if val % x ==0] [1, 2, 5]
>>> l= [ x +y for x in (1,2,3) for y in (100,200,300)] forを複数記述
>>> l [101, 201, 301, 102, 202, 302, 103, 203, 303]
>>> for x in (1,2,3): 内包表記を使用しないとき for y in (100,200,300): l.append(x+y)
>>> l [101, 201, 301, 102, 202, 302, 103, 203, 303]
(2)イテレータ
複数の要素をもったデータを順番に取り出す手段
イテレート可能オブジェクト
iter()関数
next()関数 次の要素を取り出す関数
>>> i = iter([1,2,3]) [1,2,3]をイテレータオブジェクトに変換 >>> i.next() 次の要素を取り出す 1 >>> i.next() 2 >>> i.next() 3 >>> i.next() 次の要素はない
Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> i.next() StopIteration
pythonのコレクションはすべてイテレート可能
辞書型 キーの一覧を返す
open()関数で得られるオブジェクトはファイルを一行読み込んで処理
>>> dic={'a':1,'b':2,'c':3} >>> for key in dic: print key
a c b
(3)ジェネレータ(内部イテレータ)
内部にyield文がある
イテレーションの処理を簡単に定義できる。
|