描述

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输入用空格分隔的两个正整数n和m,表示后面要接收m个人的n门课的成绩的输入。随后的m行,每行输入用空格分隔的n个成绩。题目保证m和n都在(0-100]之间。请分行输出每门课的平均成绩。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入

第一行输入用空格分隔的两个正整数n和m‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
随后的m行,每行输入用空格分隔的n个成绩。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出

分行输出每门课的平均成绩

输入用空格分隔的两个正整数n和m

  1. n,m = map(int, input().split()) # 同一行中输入 m,n 并映射为整数

随后的m行,每行输入用空格分隔的n个成绩。

  1. sheet = [] # 创建一个空列表
  2. for i in range(m):
  3. sheet.append(list(map(float, input().split()))) # 将每行的输入根据空格切分为列表,并映射为浮点数,转为列表加入到sheet中

先输入测试数据,查看列表中的数据和格式:

  1. n,m = map(int, input().split())
  2. sheet = []
  3. for i in range(m):
  4. sheet.append(list(map(float, input().split())))
  5. print(sheet)

输入:
5 3
89 90 78 93 80
90 91 85 88 86
91 92 83 89 90.5
输出
[[89.0, 90.0, 78.0, 93.0, 80.0],
[90.0, 91.0, 85.0, 88.0, 86.0],
[91.0, 92.0, 83.0, 89.0, 90.5]]
分行输出每门课的平均成绩,即取出列表各元素中相同序号的子元素求和再除课程门数。课程门数为m,也可以用len(sheet)获取。

  1. for i in range(n): # 遍历 n 门课程
  2. score = [] # 创建空列表
  3. for x in sheet: # 遍历每个人的成绩单
  4. score.append(x[i]) # 取得每个人第 i 门课程的成绩,将所有人第 i 门课程成绩放入一个列表中进行统计
  5. print(sum(score)/m) # 计算课程平均成绩

上面的代码可以用列表推导式实现:

  1. for i in range(n): # 遍历 n 门课程
  2. print(sum([x[i] for x in sheet])/len(sheet))
  3. # 将所有人第 i 门课程成绩放入一个列表中,同时用sum计算其和,再除以成绩个数

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
完整参考程序如下:

  1. n,m = map(int, input().split())
  2. sheet = []
  3. for i in range(m):
  4. sheet.append(list(map(float, input().split())))
  5. for i in range(n):
  6. score = []
  7. for x in sheet:
  8. score.append(x[i])
  9. print(sum(score)/m)

  1. n,m = map(int, input().split())
  2. sheet = []
  3. for i in range(m):
  4. sheet.append(list(map(float, input().split())))
  5. for i in range(n):
  6. print(sum([x[i] for x in sheet])/len(sheet))