Views
リストとループ
プログラムの中で繰り返しをします
リスト
- これまでに,整数・実数・長い整数の「数」と,文字列が出てきました。
- Python ではこれらの「オブジェクト」の「並び」として,リストがあります。
- リストについては第6章に詳しい解説があります。
今日の演習ディレクトリ作成
- 前回同様、演習ディレクトリを作成してからやってください。
$ cd $ cd python $ mkdir 09 $ cd 09
リストの例
>>> a = [1, 2, 3] >>> a[0] 1 >>> b = ['ham', 'egg', 'bacon'] >>> b ['ham', 'egg', 'bacon'] >>> b[-1] 'bacon'
補足説明
- 教科書を読みましょう (^^)
- リストの要素は番号で呼び出すことができます。
- 最初は 0 (ゼロ)から始まります。
- 要素を最後から数えるには - (マイナス)を付けます。
ループ
- ループは「繰り返し」ともよびます。
- 今までのプログラムは書かれた順序どおりに実行されますが、ループでは指示に従って「ブロック」を繰り返し実行します。
- ループについては第10章(whileループとforループ)に詳しい解説があります。
for ループ
- for ループは,リストから順に1つずつ「要素」を取り出し変数に代入して,リストの最後の要素に到達するまで,繰り返し実行します。
>>> a [1, 2, 3] >>> for i in a: ... print i ...[改行] 1 2 3
- ここで注意しなければならないのは,Python では for ループの中で実行される部分をインデント(字下げ) しなければならないことです。
- インデントには通常 4 文字の空白(半角) を使います。
ループの例(2)
- 次の例をファイル (a.py) に作成して実行してみよう。
- (~/python/09 にファイルを作成すること)
#!/usr/bin/env python # -*- coding: utf-8 -*- # a.py --- for ループの練習 for i in range(1, 13): print '%d x 12 = %d' % (i, i*12)
補足(ループの例2)
- ここで,range(x, y) は x から y (未満) の整数のリストを生成する組み込み関数です。また,「文字列フォーマット」の使用法については教科書 5.3節(p99) を参照してください。
while ループ
- while ループでは,指定された条件に合う間,繰り返し実行します。次の例を実行してみましょう。
#!/usr/bin/env python # -*- coding: utf-8 -*- # b.py --- while ループの練習 j = 1 while j <= 12: print '%d x 12 = %d' % (j, j*12) j = j + 1
ループのループ
- 次の例では2重のループを扱っています。ループの中にループが現れると、インデントが2回行われることに注意てください。
#!/usr/bin/env python # -*- coding: utf-8 -*- # c.py --- 2重のループ for i in range(1,13): print '%3d :' % i , for j in range(1, 13): print '%3d ' % (i*j) , print
問題1.
- 次のような手順を使うとキーボードから入力した数値の合計を求めることができます。実際に Python プログラム (q1.py) にして実行してください。
- 合計に使う変数を 0 にする。
- キーボードから数値を入れる。
- 入力した数値が 0 より大きい間次のブロックを繰り返す:
- 合計に数値を加える。
- キーボードから数値を入れる。
- 合計を印刷する
問題2.
- time.sleep(n) は n 秒間実行を停止する関数です。コマンドラインで引数として入力した数値の秒数の間,秒のカウントアップを実行し,次に *** BANG *** と出力するプログラム (q2.py) を作りなさい。
参考実行例:
$ ./q2.py 5 1 2 3 4 5 *** BANG ***
問題3.
- print chr(7) で、端末から音を出すことができます。また、教科書 p199 にあるように、range() は様々なリストを作ることができます。これらを使って、 コマンドライン引数で入力された秒数の間、カウントダウンを実行し、最後に 端末から音を出すプログラム (q3.py) を作りなさい。
解答の送信
- 解答は、"メール":mailto:tkikuchi+ci2006@is.kochi-u.ac.jp?subject=09_ListLoop で送ってください。
- また,今回の演習の結果できたファイルはそのまま ~/python/09 に残しておいてください。評価の対象とします。