2016-04-27 5 views
0

Das Programm i ein Programm geschrieben, so dass die folgenden Hauptfunktionen aufrufen:Python 3- Matrixeingang

getMatrix - erzeugt und gibt eine 3 x 3-Matrix

printMatrix - druckt die Matrix Zeile für Zeile

sumRow - gibt die Summe der Elemente einer einzelnen Zeile der Matrix zurück (übergeben in der Matrix und dem Zeilenindex)

Das Problem, mit dem ich konfrontiert bin, ist, dass es die Eingabe zweimal anstelle von einmal verlangt.

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() 

Antwort

0

In main:

matrix = getMatrix() 
printMatrix(matrix) 

In printMatrix:

matrix = getMatrix() 

Welche sofort maskiert das matrix Argument Sie übergeben, durch die Art und Weise.

In getMatrix:

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

Sie sollten int() verwenden, nebenbei gesagt, nicht eval().

So gibt es zwei Aufrufe an getMatrix(), was zwei Anfragen für die Eingabe bedeutet. Entfernen Sie matrix = getMatrix() von printMatrix. Das ist es nicht, was diese Funktion eigentlich machen soll.