プログラミング入門II 宿題 2025.05.07

Back


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


Back