Python: пропущенная цифра при печати столбца - PullRequest
0 голосов
/ 12 ноября 2018

Я не понимаю, почему мои цифры не печатаются правильно из столбца Matrix.

Отсутствуют завершающие цифры после первой цифры. Тем не менее, он выполняет правильные операции. Я не уверен, почему вывод такой, и просмотрел мой код несколько раз. Возможно, я не ловлю что-то.

Мне нужна ваша помощь в поиске логической ошибки.

class Matrix:
    def __init__(self, Rowsp=[[]]):  
        """Matrix Constructor"""
        self.Rowsp = Rowsp
        self.Colsp = [[self.Rowsp[j][i] for j in range(len(self.Rowsp))] for i in range(len(self.Rowsp[0]))]

    def copy(self):
        """ 
        Returns a copy of the matrix for calculations
        """
        copy = []
        rows = len(self.Rowsp)
        cols = len(self.Rowsp[0])

        for i in range(rows):
            copy.append(list())
            for j in range(cols):
                copy[i].append(self.Rowsp[i][j])

        return Matrix(copy)

Инкубационные

def setCol(self, j, u):
    """
    changes the j-th column to be the list u. 
    If u is not the same length as the existing columns, 
    then the constructor should raise a ValueError 
    with the message Incompatible column length.
    """
    rows = len(self.Rowsp)
    if (len(u) != rows):
        #raise ValueError - SWAP OUT FOR VAL ERROR
        print("ERROR: Incompatible column length")
    else:
        j -= 1
        for i in range(rows):
            self.Rowsp[i][j] = u[i]

def setRow(self, i, v):
    """
    changes the i-th row to be the list v. 
    If v is not the same length as the existing rows, 
    then the constructor should raise a ValueError 
    with the message Incompatible row length. 
    """
    if len(self.Rowsp[0]) != len(v):
        #raise ValueError - SWAP OUT FOR VAL ERROR
        print("ERROR: Incompatible row length")
    else:
        self.Rowsp[i - 1] = v

def setEntry(self, i, j, a):
    """
    changes the existing a_{ij} entry in the matrix to a 
    """
    self.Rowsp[i - 1][j - 1] = a

Геттеры

def getCol(self, j):
    """
    returns the j-th column as a list. 
    """
    return self.Colsp[j - 1]

def getRow(self, i):
    """
    returns the i-th row as a list v.  
    """
    return self.Rowsp[i - 1]

def getEntry(self, i, j):
    """
    returns the existing a_{ij} entry in the matrix.
    """
    return self.Rowsp[i - 1][j - 1]

def getColSpace(self):
    """
    returns the list of vectors that make up the column space of the matrix object 
    """
    c = self.Colsp.copy()
    return c

def getRowSpace(self):
    """
    returns the list of vectors that make up the row space of the matrix object 
    """
    r = self.Rowsp.copy()
    return r

Контрольный пример

print("The 2nd row is:", A.getRow(2))
print("The 3rd column is:", A.getCol(3))
print()

A.setRow(2, [40, 50])
A.setCol(2, [30, 4, 1])

print(A)

Мой результат:

The 2nd row is: [40, 50, 60]
The 3rd column is: [3, 6]

ERROR: Incompatible row length
ERROR: Incompatible column length
10  20  30
40  50  60

Что я должен получить:

The 2nd row is: [40, 50, 60]
The 3rd column is: [30, 60]

ERROR: Incompatible row length.
ERROR: Incompatible column space.
10  20  30  
40  50  60  
...