要素が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') |