Skip to content.

kagome.lab.tkikuchi.net

Sections
Personal tools
You are here: Home » Members » tkikuchi's Home » 授業 » 専門コア情報処理演習(2006) » リストとループ
Views

リストとループ

Document Actions
プログラムの中で繰り返しをします

リスト

  • これまでに,整数・実数・長い整数の「数」と,文字列が出てきました。
  • 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 に残しておいてください。評価の対象とします。
Created by tkikuchi
Last modified 2007-02-16 21:27
 

Powered by Plone

This site conforms to the following standards: