Python.use(better) 課題:行番号
‖記事一覧‖ Python.use(better)《Python3.1》
課題:行番号
《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28
事例:モジュールを起動する
■ 全項目を確認する
全ステップの「項目」を確認するには、関数 do を利用します。
$ python scale.py >>> do() ... 10: step_body -- def body(name, start=1, end=None, number=True): ... >>>
■ 各項目を実行する
各ステップの「動作」を確認するには、関数 do に実引数を指定します。
>>> do(10) >>> # -------------------------------------------------- step_body >>> path '/Applications/Python 3.1/Extras/Demo/scripts/queens.py' >>> ex_body(path, end=5) 1: #! /usr/bin/env python 2: 3: """N queens problem. 4: 5: The (well-known) problem is due to Niklaus Wirth. >>> ex_body(path, start=81) 81: q.solve() 82: print("Found", q.nfound, "solutions.") 83: 84: if __name__ == "__main__": 85: main() >>> ex_body(path, 14, 18) 14: class Queens: 15: 16: def __init__(self, n=N): 17: self.n = n 18: self.reset() >>>
指定したファイルの内容を、行番号付きで出力します。
- キーワード引数 end= によって終了行を指定できます。
- キーワード引数 start= によって開始行を指定できます。
事例:コードの解説
def body(name, start=1, end=None): seq, n = _body(name, start, end) s = "{{0:{0:d}d}}: {{1}}".format(len(str(n))) return [s.format(start+i, e) for i, e in enumerate(seq)] def _body(name, start, end): s = open(name).readlines(); N = len(s) if not end: end = N+1 return s[start-1:end], N ## ---------------------------------------- def ex_body(name, start=1, end=None): for e in body(name, start, end): print(e,end="") print()
》こちらに移動中です《
↑TOP
■ #1: dict.get
histo = {} #1:
for _ in range(100):
n = randint(0, 9)
histo[n] = histo.get(n, 0) + 1
変数 histo は、ヒストグラム(度数分布)を管理します。メソッド get を利用すると、
- 乱数 n がキーに含まれるなら、対応する値が得られ、
- 乱数 n がキーに含まれないなら、規定値 0 が得られるので、
同じ乱数 n が見つかると、対応する値をひとつずつ増やします。
■ #2: dict.values
for k,v in histo.items(): #2: print("{0:d}[{1:2d}]{2}".format(k, v, scale(v))) print("sum:",sum(histo.values()))
メソッド values を利用すると、ヒストグラム histo の値要素を列挙する、ジェネレーターが得られます。
- 組み込み関数 sum によって、値要素の総和が得られます。
■ #3: dict.items
for e in "min","max": #3: value = eval("%s(histo.values())"%e) s = [k for k,v in histo.items() if v==value] print("%s: %d %s"%(e,value,s))
メソッド items を利用すると、ヒストグラム histo の要素対 k,v を列挙する、ジェネレーターが得られます。