首页 > 解决方案 > 我如何计算每列和每行的平均值并沿 10*3 数组打印

问题描述

我希望它将平均值打印为另一列和行我在尝试运行它时也不断收到此错误

文件“desktop/exercise10.py”,第 25 行,在 a[i][n+1] = total / m IndexError: list assignment index out of range

import stdio
a = [[99.0,85.0,98.0],
     [98.0,57.0,79.0],
     [92.0,77.0,74.0],
     [94.0,62.0,81.0],
     [99.0,94.0,92.0],
     [80.0,76.5,67.0],
     [76.0,58.5,90.5],
     [92.0,66.0,91.0],
     [97.0,70.5,66.5],
     [89.0,89.5,81.0]]
     
m = 10
n = 3
for i in range(m):
    for j in range(n):
        stdio.write(a[i][j])
        stdio.write(' ')
    stdio.writeln()

for i in range(m):
    total = 0.0
    for j in range(n):
        total += a[i][j]
    a[i][n] = total / m
 
for j in range(n):
    total = 0.0
    for i in range(m):
        total += a[i][j]
    a[m+1][j] = total / n

标签: python

解决方案


您可以使用 append 在列表末尾插入一个元素。检查下面的代码:

a = [[99.0,85.0,98.0],
     [98.0,57.0,79.0],
     [92.0,77.0,74.0],
     [94.0,62.0,81.0],
     [99.0,94.0,92.0],
     [80.0,76.5,67.0],
     [76.0,58.5,90.5],
     [92.0,66.0,91.0],
     [97.0,70.5,66.5],
     [89.0,89.5,81.0]]

for i in range(len(a)):
    a[i].append(sum(a[i])/len(a[i]))

list_avg_column = []
for j in range(len(a[0])):
    avg_column = 0
    for i in range(len(a)):
        avg_column += a[i][j]
    list_avg_column.append(avg_column/len(a))
a.append(list_avg_column)

# print information
import stdio

for i in range(len(a)):
    for j in range(len(a[0])):
        stdio.write(a[i][j])
        stdio.write(' ')
    stdio.writeln()

推荐阅读