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

Back


教科書 p.186 にリストを用いて行列を表現する方法の説明があります.ここでは,要素として1から20までの整数(乱数)を持つ3行3列の行列を2つ作り,その和の行列を求めてみましょう.以下のように表示するようなプログラムを作成しましょう.

Student number: s246099

|  5  8  8 |   | 21  17  17 |   | 26  25  25 |
|  9 19 17 | + |  3  15  21 | = | 12  34  38 |
|  9  5 10 |   | 19  15   6 |   | 28  20  16 |

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

2重の for 文で上のような表示を実現しますが,内側には for 文が3つ入ります.それぞれの行列の1行分を for 文で作ります.また,2行目だけ演算子などが入りますが,それには if 文が必要です.

和の行列を求めてから表示する方法と,和の行列を作らないままで表示する方法の2通りがあります.
なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.これらは解答用紙にあらかじめ入っているものを自分のものに修正するだけでよいので,必ず行ってください.

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

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


解答例

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

import random

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

matrix1 = [[random.randint(1, 21) for _ in range(3)] for _ in range(3)]
matrix2 = [[random.randint(1, 21) for _ in range(3)] for _ in range(3)]

matrix_sum = [[matrix1[i][j] + matrix2[i][j] for j in range(3)] for i in range(3)]

for i in range(3):
    print('| ', end = '')
    
    for j in range(3):
        print(f'{matrix1[i][j]:2} ', end = '')

    if i == 1:
        print('| + |', end = '')
    else:
        print('|   |', end = '')

    for j in range(3):
        print(f' {matrix2[i][j]:2} ', end = '')

    if i == 1:
        print('| = |', end = '')
    else:
        print('|   |', end = '')

    for j in range(3):
        print(f' {matrix_sum[i][j]:2} ', end = '')
    else:
        print('|')
    

print('\n------------------------\n')
# #############################
#
# プログラミング入門I 宿題 2026.1.15
# 学生番号:  s246099    
# 氏名:     松江 花子   
#
# #############################

import random

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

matrix1 = [[random.randint(1, 21) for _ in range(3)] for _ in range(3)]
matrix2 = [[random.randint(1, 21) for _ in range(3)] for _ in range(3)]

for i in range(3):
    print('| ', end = '')
    
    for j in range(3):
        print(f'{matrix1[i][j]:2} ', end = '')

    if i == 1:
        print('| + |', end = '')
    else:
        print('|   |', end = '')

    for j in range(3):
        print(f' {matrix2[i][j]:2} ', end = '')

    if i == 1:
        print('| = |', end = '')
    else:
        print('|   |', end = '')

    for j in range(3):
        print(f' {matrix1[i][j] + matrix2[i][j]:2} ', end = '')
    else:
        print('|')
    

print('\n------------------------\n')
和の行列を作る方法和の行列を作らない方法


Back