输入10个学生5门课的成绩,分别用函数实现 1.计算每个学生的平均分 2.计算每门课的平均分 3.找出所有50个分数中最高的分数及所对应的学生和科目 4。计算平均分方差
时间: 2023-06-23 20:08:40 浏览: 125
好的,我来帮您实现这几个函数。
首先,我们需要一个数据结构来存储学生成绩。可以使用一个二维列表来存储,第一维表示学生,第二维表示课程。
```python
scores = [[0]*5 for _ in range(10)]
```
这样就初始化了一个10行5列的列表,每个元素初始值为0。接下来可以编写计算平均分的函数。
```python
def avg_score_by_student(scores):
avg_scores = []
for s in scores:
avg_scores.append(sum(s)/len(s))
return avg_scores
def avg_score_by_course(scores):
avg_scores = []
for j in range(len(scores[0])):
total = 0
for i in range(len(scores)):
total += scores[i][j]
avg_scores.append(total/len(scores))
return avg_scores
```
这两个函数分别计算每个学生的平均分和每门课的平均分。可以使用内置的sum函数和len函数来计算平均值。接下来实现找出最高分数的函数。
```python
def find_highest_score(scores):
highest_score = max(max(s) for s in scores)
for i in range(len(scores)):
for j in range(len(scores[i])):
if scores[i][j] == highest_score:
return (i+1, j+1, highest_score)
```
这个函数使用嵌套的for循环遍历每个分数,找出最高分数及其对应的学生和科目。注意要将学生和科目的下标加1,因为列表下标从0开始。
最后一个函数是计算平均分方差的函数。
```python
def variance(scores):
avg = sum(sum(s) for s in scores)/(len(scores)*len(scores[0]))
var = sum((x-avg)**2 for s in scores for x in s)/(len(scores)*len(scores[0]))
return var
```
这个函数先计算所有分数的平均值,然后使用嵌套的列表推导式计算方差。
完整代码如下:
```python
scores = [[0]*5 for _ in range(10)]
# 输入学生成绩
for i in range(len(scores)):
print(f"请输入第{i+1}个学生的成绩:")
for j in range(len(scores[i])):
scores[i][j] = int(input(f"第{j+1}门课:"))
# 计算每个学生的平均分
def avg_score_by_student(scores):
avg_scores = []
for s in scores:
avg_scores.append(sum(s)/len(s))
return avg_scores
# 计算每门课的平均分
def avg_score_by_course(scores):
avg_scores = []
for j in range(len(scores[0])):
total = 0
for i in range(len(scores)):
total += scores[i][j]
avg_scores.append(total/len(scores))
return avg_scores
# 找出最高分数
def find_highest_score(scores):
highest_score = max(max(s) for s in scores)
for i in range(len(scores)):
for j in range(len(scores[i])):
if scores[i][j] == highest_score:
return (i+1, j+1, highest_score)
# 计算平均分方差
def variance(scores):
avg = sum(sum(s) for s in scores)/(len(scores)*len(scores[0]))
var = sum((x-avg)**2 for s in scores for x in s)/(len(scores)*len(scores[0]))
return var
avg_scores_by_student = avg_score_by_student(scores)
avg_scores_by_course = avg_score_by_course(scores)
highest_score = find_highest_score(scores)
var = variance(scores)
print(f"每个学生的平均分:{avg_scores_by_student}")
print(f"每门课的平均分:{avg_scores_by_course}")
print(f"最高分数是:{highest_score[2]},对应学生:{highest_score[0]},科目:{highest_score[1]}")
print(f"平均分方差:{var}")
```
阅读全文