2016-04-27 2 views
0

Программы я написал программу таким образом, что основные вызывают следующие функции:Python 3 матрицы вход

getMatrix - создает и возвращает матрицу 3 х 3

printMatrix - печатает строку матрицы по строкам

sumRow - возвращает сумму элементов одной строки матрицы (проход в матрице и индекс строки)

Проблема, с которой я столкнулся, заключается в том, что она запрашивает ввод дважды, а не один раз.

def getMatrix(): 
    matrix = [] 
    numberOfRows = eval(input("Enter the number of rows: ")) 
    numberOfColumns = eval(input("Enter number of columns: ")) 
    for row in range(numberOfRows): 
     matrix.append([]) 
     for column in range(numberOfColumns): 
     value = eval(input("Enter an element and press enter: ")) 
     matrix[row].append(value) 
    return matrix 

# Print 2 dimensional list 
def printMatrix(matrix): 
    matrix = getMatrix() 
    for row in range(len(matrix)): 
     for column in range(len(matrix[row])): 
     print(matrix[row][column], end = " ") 
     print() 

# Add each element in row to total 
def sumRow(matrix): 
    for row in range(len(matrix[0])): 
     total = 0 
     for column in range(len(matrix)): 
     total += matrix[row][column] 
     print("Sum for matrix", row, "is", total) 

def main(): 
    matrix = getMatrix() 
    printMatrix(matrix) 
    total = sumRow(matrix) 
main() 

ответ

0

В main:

matrix = getMatrix() 
printMatrix(matrix) 

В printMatrix:

matrix = getMatrix() 

который сразу маскирует matrix аргумент вы прошли в, кстати.

В getMatrix:

matrix = [] 
numberOfRows = eval(input("Enter the number of rows: ")) 
numberOfColumns = eval(input("Enter number of columns: ")) 

Вы должны использовать int(), кстати, не eval().

Таким образом, существует два вызова getMatrix(), что означает два запроса на ввод. Удалить matrix = getMatrix() от printMatrix. Во всяком случае, это не то, что должна выполнять эта функция.

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