Python基本编程 - 2D列表

时间:2016-01-17 16:15:35

标签: python list function matrix

我是Python编程的新手。我有这个任务:

在本实验中,您将使用Python中的二维列表。执行以下操作:

  1. 编写一个函数,使用以下标题返回矩阵中指定列中所有元素的总和 def sumColumn(matrix,columnIndex)
  2. 编写一个逐行显示矩阵元素的函数,其中每行的值显示在一个单独的行上(参见下面的输出)。输出的格式必须与示例输出中的格式相匹配,其中行上的值由单个空格分隔。

  3. 编写一个读取3×4矩阵的测试程序(即主函数)并显示每列的总和。总和应格式化为小数点后正好包含一个有效数字。必须输入用户的输入,如下面的示例程序运行,其中逐行读取输入,并且行中的值由单个空格分隔。

  4. 示例程序运行如下:

    为第0行输入一个3乘4的矩阵行:2.5 3 4 1.5 为第1行输入3乘4矩阵行:1.5 4 2 7.5 为第2行输入3乘4矩阵行:3.5 1 1 2.5

    矩阵是 2.5 3.0 4.0 1.5 1.5 4.0 2.0 7.5 3.5 1.0 1.0 2.5

    第0列的元素总和为7.5 第1列的元素总和为8.0 第2列的元素总和为7.0 第3列的元素总和为11.5

    这是我到目前为止的代码:

    def sumColumn(matrix, columnIndex):
        total = (sum(matrix[:,columnIndex]) for i in range(4))
        column0 = (sum(matrix[:,columnIndex]) for i in range(4))
    
        print("The total is: ", total)
        return total
    
    def main ():
        for r in range(3):
            user_input = [input("Enter a 3-by-4 matrix row for row " + str(r) + ":", )]
            user_input = int()
    
    
        rows = 3
        columns = 4
        matrix = []
        for row in range(rows):
            matrix.append([numbers] * columns)
            print (matrix)
    
    main()
    
     it prints out:
    [[0, 0, 0, 0]]
    [[0, 0, 0, 0], [0, 0, 0, 0]]
    [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
    

    我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可能只是将其用作参考,否则您将永远不会学到任何东西

PROMPT = "Enter a 3-by-4 matrix row for row %s:"

def sumColumn(matrix, columnIndex):

    return sum([row[columnIndex] for row in matrix])

def displayMatrix(matrix):

    #print an empty line so that the programs output matches the sample output
    print

    print "The matrix is"
    for row in matrix:
        print " ".join([str(col) for col in row])

    #another empty line
    print

    for columnIndex in range(4):
        colSum = sumColumn(matrix, columnIndex)
        print "Sum of elements for column %s is %s" % (columnIndex, colSum)

def main ():

    matrix = [map(float, raw_input(PROMPT % row).split()) for row in range(3)]
    displayMatrix(matrix)

if __name__ == "__main__":
    main()