リストとループ

(菊地先生のオンラインテキスト2006年版に基づく),
2017.12.8 python3に対応

リスト

今日の演習ディレクトリ作成

リストの例

        list

補足説明

ループ

for ループ

ループの例(2)


 実行
$ chmod +x loop.py
$ ./loop.py
1 x 12 = 12
2 x 12 = 24
3 x 12 = 36
4 x 12 = 48
5 x 12 = 60
6 x 12 = 72
7 x 12 = 84
8 x 12 = 96
9 x 12 = 108
10 x 12 = 120
11 x 12 = 132
12 x 12 = 144

補足


  • ここで,range(x, y) x から y (未満) の整数のリストを生成する組み込み関数です。
  • for i in range(1,13):
    •  まず[1,2,3,4,5,6,7,8,9,11,12]のリストを作成
    • この要素をiに順番に代入して、字下げのある部分(この場合、print i)を実行
  • また,「文字列フォーマット」の使用法については 参考書 5.3節(p99) を参照してください。

  •         print ( 'a=%d' %  (a)  )


    解説   
    • printと %のあいだに 表示するフォーマット(書式)、%のあとの( )  に表示する変数名を指定する。

    • 上記の場合 ”文字列"a="の後ろにaの値を10進数整数で表示”という意味になる
    • 表示する変数が複数ある場合は(a,b,c)などのように,でつなぐ。

書式

  • 書式は下記のコードで指定します。例えば、%dは10進数の整数で表示せよ、という意味になります。
コード
対応する 型
%s
文 字列
%c
文 字
%d
10 進数整数
%i
整 数
%x
16進表 記
%f
浮 動小数点数 e.g, 0.0000123
%e
浮 動小数点数(指数表記) 1.230000e5



while ループ


 実行: 同じ結果になる事を確認してください。
$ chmod +x loop.py
$ ./loop.py
...

ループのループ


 実行:
$ chmod +x loopd.py
$ ./loopd.py
  1 :  1   2   3   4   5   6   7   8   9  10  11  12
  2 :  2   4   6   8  10  12  14  16  18  20  22  24
  3 :  3   6   9  12  15  18  21  24  27  30  33  36
  4 :  4   8  12  16  20  24  28  32  36  40  44  48
  5 :  5  10  15  20  25  30  35  40  45  50  55  60
  6 :  6  12  18  24  30  36  42  48  54  60  66  72
  7 :  7  14  21  28  35  42  49  56  63  70  77  84
  8 :  8  16  24  32  40  48  56  64  72  80  88  96
  9 :  9  18  27  36  45  54  63  72  81  90  99 108
 10 : 10  20  30  40  50  60  70  80  90 100 110 120
 11 : 11  22  33  44  55  66  77  88  99 110 121 132
 12 : 12  24  36  48  60  72  84  96 108 120 132 144


プログラム作法
   "DRY" Do not  Repeat Yourself!!
   プログラムのコピー&ペーストは諸悪の根源

        同じような手順や、繰り返しがあったとき 
         コピー&ペーストでいいか。。。 は 絶対にダメ。
   修正があったときには、同じ作業の繰り返しになります。
      全部変更しなって自分の首をしめる、プログラムも解読しにくくなる。
   ループや関数を使いましょう。

息抜き ーPythonでお絵描きー


pythonには、簡単なペンプロッタのような動きをするturtleという教育用グラフィクス
モジュールが含まれています。

インタラクティブモードで下記を実行してみましょう。

#以下はコメントですので入力しないでください
   
>> from turtle import *      # turtleを使用する前にインポートが必要
>> clear()          # タートルグラフィックス用のウインドウが現れる(画面をきれいにする)。
>> forward(100)        #100画素前進
>> right(90)         #右へ90°回転(逆はleft())
>> forward(100)                #100画素前進


ここで学んだforループを使って六角形を書いてみましょう。
>> clear()
>> for i in range(6):    #以下を6回繰り返し
>>      forward(100)
>>      right(60)

問題

以下の問題の解答(スクリプトと実行例)をhonda@is.kochi-u.ac.jpにメールで送ってください。
スクリプトはメール本文内にも記入するとともに、添付ファイルとしてもつけてください。
作業はpython/03の なかで行うものとし、作成したスクリプトは残しておいてください(評価の対象とします)。
なお、スクリプトはメールの本文(答え)に入れるとともに、添付ファイルとしても提出してください。

締め切り           12/14 17:00
サブジェクト    p3 kadai

1.   下記のような九九の計算表を出力するプログラムを作成し、実行 してください。このときforループを使用するもの(q11.py)と、whileループを使用するもの(q12.py)の2種類を作成してください。             1の段   1   2   3   4    5    6    7   8    9
            2の段   2   4   6   8   10  12  14  16  18
                            ..........中略....
            9の段   9  18 27  36  45  54  63  72  81

2.   次のような手順で、キーボードから入力した数値の合計を求めるものとします。実際に Python プログラム (q2.py) の形にして、実行してください。 3.  turtleを使用して、図形を表示するスクリプトg.pyを作成してください。どのような図形を作成するか記述(少なくとも6角形よりは複雑である事) して、スクリプトの内容と表示された画面のスクリーンショット*をとって、メールに含めてください。また、スクリプトそのもの、表示画面のスクリーンショットなお、スクリプトには、必ず for ループを含むようにしてください。
turtleについてのより詳しい説明はこちらにあります。


*スクリーンショットの方法