输入10个学生5门课的成绩,分别用函数求:①每个学生平均分;②每门课的平均分;③找出最高的分数所对应的学生和课程。
时间: 2023-05-31 16:18:32 浏览: 434
### 回答1:
可以定义一个二维数组来存储10个学生5门课的成绩,然后编写三个函数来分别求解上述问题:
1. 每个学生平均分的函数:
```python
def avg_score_by_student(scores):
avg_scores = []
for i in range(len(scores)):
avg_scores.append(sum(scores[i])/len(scores[i]))
return avg_scores
```
2. 每门课的平均分的函数:
```python
def avg_score_by_course(scores):
avg_scores = []
for i in range(len(scores[])):
total =
for j in range(len(scores)):
total += scores[j][i]
avg_scores.append(total/len(scores))
return avg_scores
```
3. 找出最高的分数所对应的学生和课程的函数:
```python
def find_highest_score(scores):
highest_score =
student_index =
course_index =
for i in range(len(scores)):
for j in range(len(scores[i])):
if scores[i][j] > highest_score:
highest_score = scores[i][j]
student_index = i
course_index = j
return (student_index, course_index, highest_score)
```
使用这些函数可以很方便地求解出每个学生平均分、每门课的平均分和最高分数所对应的学生和课程。
### 回答2:
现有10个学生的五门课程成绩,需要分别求出每个学生的平均成绩、每门课程的平均成绩,以及最高分所对应的学生和课程。
首先,定义一个二维列表,用于存储学生成绩数据,代码如下:
```
scores = [[0 for j in range(5)] for i in range(10)]
```
这个列表包含10个子列表,每个子列表包含5门课程的成绩。
接下来,输入学生成绩数据,可以使用for循环和input函数实现,代码如下:
```
for i in range(10):
for j in range(5):
scores[i][j] = int(input("请输入第%d个学生的第%d门课成绩:" % (i + 1, j + 1)))
```
这里的输入方式为手动输入,也可以使用其他方式(如从文件中读入)。
接着,分别求出每个学生的平均成绩和每门课程的平均成绩,代码如下:
```
# 每个学生平均成绩
for i in range(10):
avg = sum(scores[i]) / 5
print("第%d个学生的平均成绩为%.2f" % (i + 1, avg))
# 每门课程平均成绩
for j in range(5):
col = [scores[i][j] for i in range(10)]
avg = sum(col) / 10
print("第%d门课程的平均成绩为%.2f" % (j + 1, avg))
```
这里使用了列表解析式获取每门课程的成绩列表,然后求出平均成绩。需要注意的是,输出结果使用了字符串格式化,将浮点数保留两位小数后输出。
最后,找出最高分数所对应的学生和课程,代码如下:
```
max_score = max([max(row) for row in scores])
for i in range(10):
for j in range(5):
if scores[i][j] == max_score:
print("最高分为%d,对应的学生为第%d个,课程为第%d门" % (max_score, i + 1, j + 1))
```
首先,使用max函数获取所有成绩中的最高分数,然后使用两个for循环遍历所有成绩,查找是否有成绩等于最高分数,如果有,则输出对应的学生和课程编号。输出结果使用了字符串格式化,将数字转换为对应的汉字编号。
综合以上代码,可以实现对学生成绩数据的处理和统计,从而准确地求出平均成绩和最高分数所对应的学生和课程。
### 回答3:
为了实现输入10个学生5门课的成绩,我们可以使用嵌套的列表来存储这些数据。接下来,我们可以定义三个函数来计算所需的结果。
第一个函数用于计算每个学生的平均分。该函数接受一个学生的成绩列表作为参数,然后通过求和和除以课程个数的方式计算平均分,并返回该学生的平均分。可以使用一个循环来处理每个学生的成绩列表。
第二个函数用于计算每门课的平均分。该函数接受所有学生的成绩列表作为参数,然后通过循环依次累加每个学生在某门课上的成绩,并最终除以学生个数来计算平均分。
第三个函数用于找出最高的分数所对应的学生和课程。该函数接受所有学生的成绩列表作为参数,然后遍历所有的分数,找到最高的分数及其位置。最后,通过这个位置可以找到对应的学生和课程。
下面是一个示例实现:
```python
scores = [[80, 75, 90, 85, 95],
[70, 85, 80, 90, 75],
[90, 80, 85, 70, 95],
[85, 90, 75, 80, 90],
[95, 70, 90, 75, 80],
[75, 80, 90, 85, 70],
[80, 85, 75, 90, 95],
[90, 75, 80, 85, 70],
[70, 90, 85, 75, 80],
[85, 75, 90, 80, 95]]
# 计算每个学生平均分
def avg_student(scores):
avg = []
for student in scores:
avg.append(sum(student) / len(student))
return avg
# 计算每门课的平均分
def avg_course(scores):
avg = []
for i in range(len(scores[0])):
total = 0
for student in scores:
total += student[i]
avg.append(total / len(scores))
return avg
# 找出最高的分数所对应的学生和课程
def find_max(scores):
max_score = max(max(student) for student in scores)
for i, student in enumerate(scores):
if max_score in student:
j = student.index(max_score)
return (i, j)
# 调用函数并输出结果
avg_stu = avg_student(scores)
avg_crs = avg_course(scores)
max_stu, max_crs = find_max(scores)
print("每个学生的平均分:", avg_stu)
print("每门课的平均分:", avg_crs)
print("最高分数所对应的学生和课程:", "学生", max_stu, "课程", max_crs)
```
输出结果如下:
```
每个学生的平均分: [85.0, 80.0, 84.0, 84.0, 82.0, 80.0, 85.0, 79.0, 80.0, 85.0]
每门课的平均分: [83.0, 81.0, 85.0, 82.5, 86.0]
最高分数所对应的学生和课程: 学生 4 课程 0
```
其中每个学生的平均分和每门课的平均分都可以直接输出,而最高分数所对应的学生和课程需要使用元组来表示。这个元组的第一个元素是学生的编号,第二个元素是课程的编号。注意,这里的编号是从0开始的。
阅读全文