Solution: Task I to Task IV
The solution to the previously assigned challenges: Task I to Task IV.
We'll cover the following...
Brace yourself, it’s time to cover each task turn by turn to work out the project in a systematic manner. You can run each executable and verify the answers for different values.
Explanation
Task 1: Read matrix from a file
You were to read the matrix from a file using the context manager protocol, save it in the nested list, and create a Matrix
object out of it.
Look at the code below.
from matrix import Matriximport contextlib# Generator function decorated@contextlib.contextmanagerdef readFile(filename, mode):myfile = open(filename, mode) # Executed before the blockyield myfilemyfile.close() # Executed after the block# Reading matrix from filedef read_matrix(filename):matrix = []with readFile(filename, 'r') as fp:for line in fp:matrix.append([int(num) for num in line.split()])return matrix# Reading matricesmatrix1 = Matrix(read_matrix('matrix1.txt'))matrix2 = Matrix(read_matrix('matrix2.txt'))
Look at the files matrix1.txt and matrix2.txt. They both contain a matrix.
Now, look at main. At line 17, we are opening the file using the readFile
generator decorated by @contextmanager
. The file is opened before stepping into the with-block. So, we opened the file before yield
. Then, at line 9, we yielded the generator. We read each line.
See line 19. The format of the text file allows us to split the line into a list, with whitespace as a separator, by using the split()
function. So, each line is treated as a row, and each value in the row stands in a column. We append each line (list) in a standard list matrix
, and return it after the whole file is read.
At line 25 and line 26, we are sending matrices ...