《02》スケール課題〈Python 2.x 版〉

実録:はじめてのプログラミング記事一覧
《02》スケール課題

《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
2009年1月15日(木)

今日の進捗

Comment
本人:野中 課題と同じ結果が得られるようになりましたが思ったほど楽ではありませんでした。
担当:伊藤 初めてのプログラミング言語Python だと、Java の for 文に象徴される「情報隠蔽の原則」に反するコード〈for と別れる50の方法《1》for 文の隘路 - 続・ひよ子のきもち〉を記述できなくなるので、「反面教師」として Java の問題点を体験しておくといいですよ。次章でデータ構造を学ぶので、その後で復習をかねて、より深く理解できるように指導をお願いします(to 本間さん)。

本日のワンポイント

研修テキストでは、while/for が等価にならない事例として、break/continue について紹介しています。

def ex():
    for e in range(9):
        print e,
    print

>>> ex()
0 1 2 3 4 5 6 7 8 

まず、比較したいもとの動作を確認しておきます。

def ex():
    for e in range(9):
        print e,
        if e>3: break
    print

>>> ex()
0 1 2 3 4
def ex():
    e = 0
    while e<9:
        print e,
        if e>3: break
        e += 1
    print

>>> ex()
0 1 2 3 4

次に、break の影響について考察します。

def ex():
    for e in range(9):
        print e,
        if e>3: continue
    print

>>> ex()
0 1 2 3 4 5 6 7 8
def ex():
    e = 0
    while e<9:
        print e,
        if e>3: continue
        e += 1
    print

>>> ex()
0 1 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
Traceback (most recent call last):
  ...
KeyboardInterrupt
    
そして、continue の影響について考察します。

Tips

この課題は、プログラムが暴走(無限ループなど)したときの対処法を伝授する好機にもなります。《ひよ子》
Last updated♪09/03/01