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

Back


教科書 p.232 の集合に関する操作を利用することを行います.1 から 30 までの整数を乱数により20回発生させることを4回行い,その4回全部に登場した数と一回も出なかった数を求め,以下のように表示するプログラムを作成しましょう.なお,結果の判定が簡単になるようにするために,4回の乱数の組は数値の小さい順(昇順)に表示させてください.一方,共通する数や出なかった数はソートしなくて構いません.

Student number: s246099

4 4 6 9 10 11 12 15 15 16 17 19 19 21 23 25 26 27 28 29
1 2 4 5 5 5 9 10 10 11 12 12 14 14 16 16 21 22 28 30
4 4 4 5 8 10 14 15 16 19 20 20 20 21 25 26 26 29 29 30
4 4 7 7 8 9 14 15 18 18 19 21 22 23 23 26 27 27 27 27

Numbers common to all lists: 4 21
Numbers not appeared in lists: 24 3 13

------------------------

共通する数と一回も出なかった数どちらも存在しない場合もありますが,その際には数の表示の部分は空欄で構いません.
なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.これらは解答用紙にあらかじめ入っているものを自分のものに修正するだけでよいので,必ず行ってください.

解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください.

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


解答例

# #############################
#
# プログラミング入門I 宿題 2026.1.19
# 学生番号:  s246099    
# 氏名:     松江 花子   
#
# #############################

import random

print('Student number: s246099')  
print()

lst = [[random.randint(1, 30) for _ in range(20)] for _ in range(4)]
num_set = {i + 1 for i in range(30)}

for i in range(4):
    lst[i].sort()
    print(*lst[i])
 
common = set(lst[0])

for i in range(1, 4):
    common &= set(lst[i])

for i in range(4):
    num_set -= set(lst[i])

print()
print('Numbers common to all lists:', *common)
print('Numbers not appeared in lists:', *num_set)

print('\n------------------------\n')


Back