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')
|
|
| 行と列を入れ替えたリストを作り,行と列のリストの和を求める | 反復処理で列の和を求める |