1から100までの整数を乱数により50個発生させリストにした後で集合として保存します.同じことをもう1回行って2つの集合を用意し,以下のベーン図の各領域に要素が何個あるかを答えるプログラムを作成しましょう.
なお,Aの部分は1から100までの数の内2つの集合に入っていない数で,Bは集合1にのみ含まれる数,Cは両方の集合に含まれる数,Dは集合2のみに含まれる数です.
Student number: s246099 Set 1 1 2 3 5 6 9 12 13 14 15 20 21 22 23 24 27 31 34 38 39 42 43 45 46 52 53 54 55 58 64 66 67 81 85 89 90 92 93 95 97 98 Set 2 3 5 7 9 11 15 16 17 19 22 25 27 28 30 31 32 35 39 40 41 45 47 52 58 60 62 63 68 71 72 74 76 77 78 82 83 86 89 90 94 96 99 A: 30 -- 4 8 10 18 26 29 33 36 37 44 48 49 50 51 56 57 59 61 65 69 70 73 75 79 80 84 87 88 91 100 B: 28 -- 1 2 6 12 13 14 20 21 23 24 34 38 42 43 46 53 54 55 64 66 67 81 85 92 93 95 97 98 C: 13 -- 3 5 90 39 9 45 15 52 22 89 58 27 31 D: 29 -- 7 11 16 17 19 25 28 30 32 35 40 41 47 60 62 63 68 71 72 74 76 77 78 82 83 86 94 96 99 ------------------------ |
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください. 指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください. |
解答例
# ############################# # # プログラミング入門II 宿題 2025.5.21 # 学生番号: s246099 # 氏名: 松江 花子 # # ############################# import random print('Student number: s246099') print() all = {i for i in range(1, 101)} lst1 = [random.randint(1, 100) for _ in range(50)] lst2 = [random.randint(1, 100) for _ in range(50)] s1 = set(lst1) s2 = set(lst2) print('Set 1\n', *sorted(s1)) print() print('Set 2\n', *sorted(s2)) print() s_A = all - s1 - s2 s_B = s1 - s2 s_C = s1 & s2 s_D = s2 - s1 print(f'A: {len(s_A)} --', *s_A) print(f'B: {len(s_B)} --', *s_B) print(f'C: {len(s_C)} --', *s_C) print(f'D: {len(s_D)} --', *s_D) print('\n------------------------\n') |