プログラミング入門II
2024.04.24
リスト その1

Back to index page



  1. 本日の作業内容

  2. 前回の宿題について

    今季最初の課題でしたが,全体的にはかなり良かったようです.エラーや無限ループになるものもなく,安心しました.今後もしっかりやっていきましょう.

    軽微なミスが以下のようにありましたので,こちらは以後注意しましょう.

    解答用紙の番号間違い: b2320

    出力時番号間違い: b2316 b2333

    以下は気になったプログラムの例です.参考にしてください.

    for _ in range(5):
        num = 0
    
        while num < 80:
            num2 = random.randint(10, 99)
            print(f'{num2} ', end = '')
            num = num2
        else:
            print('')
    

    上のように必要のない変数を用意して書いてあるものが何件かありました.無駄な変数は使わないようにしましょう.

    for _ in range(5):
        while True:
            num = random.randint(10,99)
            print(f'{num}')
            if num > 80:
                print(f'{num}')
                break
                   
    
    else:
        print()
    

    改行しないための処理が無いので,5行になる表示ではなく,以下のようになってしまいます.自分で見てもわかるはずなので,ちゃんと対応してから提出してください.

    82
    82
    89
    89
    61
    67
    17
    12
    63
    87
    87
    93
    93
    66
    18
    14
    12
    38
    19
    59
    32
    99
    99
    

    for i in range(5):
        num = 0
        while num <= 80:
            num = random.randint(10, 99)
            print(f'{num} ', end = '')
        else:
            print()
    

    上の条件では80が出ても終わりませんね.

    for _ in range(5):
        for _ in range(100):
            r = random.randint(10,99)
            print(f'{r} ',end = '')
            if (r >=80):
                break
    

    とりあえず100回くらいやれば80以上の数も出るだろうから,というような処理は歓迎しません.

    for _ in range(5):
    
        num = 0
    
        while num <= 80:
            num = random.randint(10,99)
            print(f'{num}' , end = '')
    
        print('')
    

    print() 関数のところでスペースを入れていないので,下のような表示になります.自分でも実際に実行させてみているはずなので,ちゃんとしたものにしてから提出してください.

    3293
    544787
    40114335426827705848565630797399
    3755392271643837472378151753266890
    128095
    

    for _ in range(5):
            count = 0
            while count < 1:
                num = random.randint(10, 99)
                print(f'{num} ', end = '')
                if num >= 80:
                    count += 1
                else:
                    count += 0
            else:
                print()
    

    if - else にしないといけないものですか?まったく無駄な行(何もしない行)がありますよね.

    num = random.randint(10,99)
    
    for _ in range(5):
    
        num = random.randint(10,99)
        
        while True:
            print(f'{num} ', end = '')
            if num >= 80:
                print()
                break
            else:
                num = random.randint(10,99)
    

    まず最初に発生させる乱数 num が不要ですよね.乱数の発生が都合3回ありますが,それは要りません.

    for i in range(5):
            while True:
                    num = random.randint(10,99)
                    if num >= 80:
                            print(f'{num}')
                            break
                    else:
                            print(f'{num} ',end = '')
    

    処理は間違っていないのですが,インデントがTAB2個分になっています.横にずれる量が多いと,それはそれで見にくいので,ちゃんと4文字分のTABで書いてください.

  3. 前回の復習

    昨年度行ったプログラミング入門Iの範囲のPythonに関する復習で反復処理と文字列に関する演習問題に取り組みました.ただ,それは実際に学習したものの一部にすぎませんので,やらなかった部分についてもしっかりと見返しておいてください.

  4. リスト

    プログラミング言語であればどの言語でも「配列」が用意されています.複数の値を一つの名前で扱うことができる便利なものです.今回学習する「リスト」は,教科書の p.165 にも書いてあるように,「配列をパワーアップさせた」ものです.その分機能が多いので,すべてを理解するには相当な時間がかかります.今回は教科書に沿って基本的なところを見ていくことにします.

    1. 概略

      教科書の p.166 にまとめてある 1 から 9 番までの記述がリストをきちんと説明しているので,まずは,ここをしっかり理解しましょう.また,Fig.7-2 もよく見て理解しましょう.Python はオブジェクト指向型の言語なので,リストもオブジェクトへの参照ということで,型の異なる値などもひとまとめにして扱える便利なものです.

      1. データの構造
      2. リストは複数の値を一つにまとめていますので,リスト自体を print 関数で表示すると,その形態のままで出力されます.以下の例で確認してみてください.

        lst = [1, 2, 3, 4]
        
        print(lst)    
        

      3. 要素の値のみの表示
      4. リストの要素を順に表示するときはインデックスを使用して反復処理を用いて行います.

        lst = [1, 2, 3, 4]
        
        for i in range(0,4):
            print(lst[i])
        

    2. 生成

      リストはリスト表記演算子 [ ] をつかって生成できます.また,list 関数を使っても作成できます.

      ただし,教科書では基本的には最初に要素を確定させたリストを用意して,その要素に対して処理をする例ばかりが出ています.まず,何か自動でリストを作るという作業となると,教科書 p.169 の None を使う,教科書 p.178 の insert メソッドを使う,もしくは次回行う予定の内包表記を使う必要があります.とりあえず下に None と insert メソッドを使用する方法を載せておきます.

      lst = [None] * 10
      
      for i in range(0,10):
          lst[i] = i
      
      print(lst)
      
      lst = []
      
      for i in range(0,10):
          lst.insert(i,i)
      
      print(lst)
      
      None を使う方法 insert を使う方法

      この授業では今回は None を使う方法を紹介します.内包表記については後日改めて紹介します.
    3. 要素のアクセス

      リストの要素はインデックスによってアクセスできます.前回まで学習した文字列と同様,インデックスは 0 番から始まります.また,こちらも文字列と同様 負の数によって末尾の要素からの順番でもアクセスできます.

    4. 2次元リスト

      次回行います.

    5. コピー

      こちらも次回行います.

  5. 演習

    今回の演習問題です.

  6. 宿題

    宿題はいつものようにレポート提出システムを使用します.今回も18:00以降に閲覧可能となりますので,提出をよろしくお願いします.

  7. 次回の予習範囲

    次回は教科書のp.190-199の範囲を学習しますので,予習をしてきてください.


目次ページに戻る