2014-10-22 22 views
0

Это волшебная квадратная программа, которая может узнать, является ли матрица размера магическим квадратом. Когда я запускаю код, я получаю ошибку TypeError: объект «int» не подлежит расшифровке. Я решил изменить строку = int (i) на строку = i, но это просто дало мне еще одну ошибку. Брус использовать NumpyTypeError: объект 'int' не является итерируемым. Файл чтения Python

EDIT: Теперь я получаю эту TypeError ошибку: 'INT' объект не итерацию

текстовый файл:

1 1 
6 8 

Вот код:

def main(): 
    filNam = "matrix8.txt" 
    matrix = (readMatrix(filNam)) 
    rowNum = 0 
    colNum = 0 
    print(rowSum(matrix, rowNum)) 

def readMatrix(filNam): 
    matrixList = [] 
    numFile = open(filNam, "r") 
    lines = numFile.readlines() 
    for line in lines: 
     line = line.split() 
     row = [] 
     for i in line: 
      row.append(int(i)) 
     matrixList.append(row) 
    return matrixList 

def eachNumPresent(matrix): 
    if len(matrix) % 2 != 0: 
     return False 
    else: 
     return True 

def rowSum(matrix, rowNum): 
    for row in matrix[rowNum]: 
     row = sum(int(row)) 
     rowNum = rowNum + 1 
    return i 


def colSum(matrix): 
    length = len(matrix) 
    col_rows = 0 
    for i in range(length): 
     col_rows = col_rows + matrix[i][0] 
     return col_rows 

main() 

ответ

1

Проблема заключается в том, что матрица «сглаживается» в одну длинную строку. Чтобы исправить это, вы должны прочитать & построить матрицу по строкам.

Изменение:

def readMatrix(filNam): 
    matrixList = [] 
    numFile = open(filNam, "r") 
    lines = numFile.readlines() 
    for line in lines: 
     line = line.split() 
     for i in line: 
      line = int(i) 
      matrixList.append(line) 
    return matrixList 

к:

def readMatrix(filNam): 
    matrixList = [] 
    numFile = open(filNam, "r") 
    lines = numFile.readlines() 
    for line in lines: 
     line = line.split() 
     row = [] # 1st change 
     for i in line: 
      row.append(int(i)) # 2nd change 
     matrixList.append(row) #3rd change 
    return matrixList 

изменение коды и запуск его на входе, представленном в вопросе печатает 2, которая является суммой первой строки в матрице.

Смежные вопросы