開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)
- Script言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のIII部(ステートメント)13章(whileループとforループ)の練習問題を解いてみる。
1.
ループのelseブロックが実行されるのは、ループから抜け出したとき。(ただしbreak文によって抜け出した場合は除く。)
コード(TextWrangler)
#!/usr/bin/env python #encoding: utf-8 i = 0 j = 0 while i < 10: print i i += 1 else: print 'elseブロック1' while j < 10: print j j += 1 if j == 5: break else: print 'elseブロック2' print '終了'
入出力結果(Terminal)
$ ./python_program.py 0 1 2 3 4 5 6 7 8 9 elseブロック1 0 1 2 3 4 終了 $
2.
Pythonで「カウンタ」を使用したループのコードを書くには、whileループの場合は問1のような方法、forループを使用する場合はrange関数を使った次のような方法がある。
入出力結果(Terminal)
$ python Python 2.7.2 (default, Feb 12 2012, 23:50:38) [GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> for x in range(10): ... print x ... 0 1 2 3 4 5 6 7 8 9 >>> for x in range(0,10,2): ... print x ... 0 2 4 6 8 >>> quit() $
3.
forループの反復処理は、処理対象のオブジェクトを引数として、iterというビルトイン関数が自動的に呼び出されて、nextメソッドを持つオブジェクトが戻される。
入出力結果(Terminal)
>>> l=[1,2,3,4,5] >>> for x in l: ... print x, ... 1 2 3 4 5 >>> i=iter(l) >>> i.next() 1 >>> i.next() 2 >>> i.next() 3 >>> i.next() 4 >>> i.next() 5 >>> i.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration >>>
4.
forループとリスト内包表記は、どちらも同様の処理を行える、同様の処理をforループからリスト内包表記に、あるいはその逆に書き換えることが出来る。
入出力結果(Terminal)
>>> l=[1,2,3,4,5] >>> for i in range(len(l)): ... l[i] = l[i]**2 ... >>> l [1, 4, 9, 16, 25] >>> l=[1,2,3,4,5] >>> l=[x**2 for x in l] >>> l [1, 4, 9, 16, 25] >>>
5.
Pythonの反復処理は、
- forループ
- リスト内包表記
- map関数(ビルトイン関数)
- sorted関数(ビルトイン関数)
等の種類がある。
6.
テキストのファイルの内容を1行ずつ読み込む場合、forループを使って次のようにすればいい。
入出力結果(Terminal)
>>> for line in open('python_program.py'): ... print line, ... #!/usr/bin/env python #encoding: utf-8 i = 0 j = 0 while i < 10: print i i += 1 else: print 'elseブロック1' while j < 10: print j j += 1 if j == 5: break else: print 'elseブロック2' print '終了' >>> quit()
0 コメント:
コメントを投稿