ホーム     戻る

第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文がある

イテレーションの処理を簡単に定義できる。