2次元のリストを利用して 1 から 200 までの範囲の乱数を100個用意し10×10の2次元表示にしますが,各行と各列の和も求めて,以下のように表示するプログラムを作成しましょう.
Student number: s236099 183 16 125 189 52 29 50 118 24 166 | 952 132 32 49 113 122 86 106 58 109 88 | 895 15 192 171 98 182 75 138 58 164 86 | 1179 16 21 69 122 73 96 79 81 163 88 | 808 70 165 167 175 68 179 191 15 120 94 | 1244 152 119 14 195 36 179 77 144 20 38 | 974 106 79 18 108 137 10 146 147 65 106 | 922 146 109 165 67 29 196 175 118 23 23 | 1051 61 7 75 183 149 65 11 98 175 39 | 863 194 199 67 86 10 128 37 50 71 34 | 876 -------------------------------------------------- 1075 939 920 1336 858 1043 1010 887 934 762 ------------------------ |
和を求める関数 sum() を使うと行の和を求めるのに便利です.列の和も sum で求めようとするなら,行と列を転置したリストの作成が必要になります.
一方で,和についてはその都度計算して表示することも可能ではあります.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください. 指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください. |
解答例
# ############################# # # プログラミング入門II 宿題 2024.5.1 # 学生番号: s236099 # 氏名: 松江 花子 # # ############################# import random print('Student number: s236099') print('') lst_random = [[random.randint(1, 200) for _ in range(10)] for _ in range(10)] sum_line = [None] * 10 sum_col = [None] * 10 lst_trans = [[None for _ in range(10)] for _ in range(10)] for i in range(10): for j in range(10): lst_trans[i][j] = lst_random[j][i] for i in range(10): sum_line[i] = sum(lst_random[i]) sum_col[i] = sum(lst_trans[i]) for i in range(10): for j in range(10): print(f'{lst_random[i][j]:4} ', end = '') else: print(f' | {sum_line[i]:4}') else: print('-' * 50) for i in range(10): print(f'{sum_col[i]:4} ', end = '') else: print() print('\n------------------------\n') |
# ############################# # # プログラミング入門II 宿題 2024.5.1 # 学生番号: s236099 # 氏名: 松江 花子 # # ############################# import random print('Student number: s236099') print('') lst_random = [[random.randint(1, 200) for _ in range(10)] for _ in range(10)] for i in range(10): sum_line = 0 for j in range(10): print(f'{lst_random[i][j]:4} ', end = '') sum_line += lst_random[i][j] else: print(f' | {sum_line:4}') else: print('-' * 50) for i in range(10): sum_col = 0 for j in range(10): sum_col += lst_random[j][i] else: print(f'{sum_col:4} ', end = '') else: print() print('\n------------------------\n') |
|
行と列を入れ替えたリストを作り,行と列のリストの和を求める | 反復処理で列の和を求める |