プログラミング入門I 宿題 2024.05.01

Back


要素が1から4までの整数のリストを作成します.次に,リストの要素をランダムにする作業を繰り返し,もとの1から4に戻ると終了するプログラムを作成しましょう.なお,下の見本のように何回目の作業で一致したかを見るために,回数を表示させます.数値の表示には3桁分の幅を確保しておけば大丈夫です.

  0:  1 2 3 4
  1:  3 4 2 1
  2:  2 1 3 4
  3:  1 4 2 3
  4:  1 2 4 3
  5:  2 4 3 1
  6:  3 1 2 4
  7:  4 3 2 1
  8:  1 3 2 4
  9:  2 1 4 3
 10:  1 2 4 3
 11:  4 2 1 3
 12:  4 2 1 3
 13:  4 1 3 2
 14:  4 2 1 3
 15:  2 3 4 1
 16:  2 1 3 4
 17:  2 1 4 3
 18:  2 1 4 3
 19:  2 4 3 1
 20:  2 3 1 4
 21:  1 4 2 3
 22:  1 2 4 3
 23:  1 3 2 4
 24:  4 3 2 1
 25:  4 2 3 1
 26:  2 4 3 1
 27:  4 2 3 1
 28:  1 2 3 4

リストを複製する必要がありますが,シャローコピーでもディープコピーでもどちらでも構いません.また,要素のランダム化は以下のように shuffle 関数を使用して実現できます.

random.shuffle(lst)

上の操作ですが,この結果を何かに代入したりする必要はありません.このままでリスト lst の要素がシャッフルされたものに変わります.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


  • 解答例
  • # #############################
    #
    # プログラミング入門II 宿題 2024.5.1
    # 学生番号:  s236099
    # 氏名:     松江 花子
    #
    # #############################
    
    import random
    import copy
    
    print('Student number: s236099')
    print('')
    
    lst = [n + 1 for n in range(4)]
    print('  0: ', *lst)
    
    lst2 = copy.copy(lst)
    
    i = 1
    while True:
        random.shuffle(lst2)
        print(f'{i:3}: ', *lst2)
        i += 1
        
        if lst == lst2:
            break
    
    
    print('\n------------------------\n')
    


    Back