プログラミング入門I
1月19日の提出状況

Back to index page



  1. 目次

  2. 前回の宿題について

    以下は例によって問題のあるプログラムの例です.今後の参考にしてください.

    今回もだいたいできていたようなのですが,以下のように問題のあるものもありました.最後でしたので,残念です.ここまで Python の基礎を学習してきましたが,今後の研究や仕事で活かせるといいですね.

    Nunbers common to all lists:
    

    最後の最後にスペリングのミスです.残念です.

    lists = []
    sets = []
    for _ in range(4):
        lst = [random.randint(1, 30) for _ in range(20)]
        lst.sort()
        lists.append(lst)
        sets.append(set(lst))
    for lst in lists:
        print(*lst)
    common = sets[0]
    for s in sets[1:]:
        common &= s
    not_appeared = set(range(1, 31)) - set().union(*sets)
    print()
    print('Numbers common to all lists:', *common)
    print('Numbers not appeared in lists:', *not_appeared)
    

    さて,この人はちょくちょくネット検索かAI検索によるソースを出してくる人なのですが,今回はどうだったのでしょうかね?共通項を探すための操作で,実はリスト sets の最初の要素である集合が壊れてしまうので,結果がおかしくなります.下の実行例を見てもらうとわかるのですが,2番目以降に入っていない数字が一度も出ない数字になってしまっています.結果を自分でよく確認してほしかったところですね.

    2 2 7 7 8 8 9 10 12 13 14 14 14 19 19 21 23 27 27 29
    2 2 2 2 3 5 7 9 10 11 13 13 13 14 17 19 19 21 24 30
    3 3 4 6 13 14 15 15 15 18 19 19 20 22 23 25 28 29 29 29
    1 2 2 6 8 9 10 11 13 14 14 14 14 15 16 22 25 26 26 29
    
    Numbers common to all lists: 13 14
    Numbers not appeared in lists: 27 12
    

    lst1 = [random.randint(1,30) for k in range(20)]
    lst2 = [random.randint(1,30) for k in range(20)]
    lst3 = [random.randint(1,30) for k in range(20)]
    lst4 = [random.randint(1,30) for k in range(20)]
    
    lst1 = sorted(lst1)
    lst2 = sorted(lst2)
    lst3 = sorted(lst3)
    lst4 = sorted(lst4)
    
    print(*lst1)
    print(*lst2)
    print(*lst3)
    print(*lst4)
    print()
    
    s1 = set(lst1)
    s2 = set(lst2)
    s3 = set(lst3)
    s4 = set(lst4)
    
    s12 = s1 & s2
    s34 = s3 & s4
    s_all = s12 & s34
    
    print('Numbers common to all lists: ',end='')
    print(*s_all)
    
    s_n = set([i for i in range(1,31)])
    s_n = s_n - s1
    s_n = s_n - s2
    s_n = s_n - s3
    s_n = s_n - s4
    
    print('Numbers not appeared in lists: ',end='')
    print(*s_n)
    

    最後にこれも悲しいです.こういうことを反復処理に落とし込むのがプログラミングの醍醐味ですからね.これはダメダメなやつです.


目次ページに戻る