7-1 各科成绩统计值计算 分数 10 全屏浏览题目 切换布局 作者 yqhyzy 单位 上海海洋大学 要求:顺序生成n个学生的学号及语文、数学和英语成绩,然后分别计算输出各科成绩的平均分、标准差及中位数。其中n由input()输入,学生学号从2023101开始顺序编号,各科成绩由randint生成[60,100]中的随机整数,随机数种子设为10, n为5时生成的数据及输出结果如下所示。 [['学号', '语文', '数学', '外语'], ['2023101', '96', '62', '87'], ['2023102', '90', '96', '60'], ['2023103', '73', '89', '91'], ['2023104', '77', '70', '62'], ['2023105', '93', '91', '80']] 输入样例: 在这里给出一组输入。例如: 5 输出样例: 在这里给出相应的输出。例如: 各科平均分:语文85.80,数学81.60,外语76.00 各科方差:语文10.18,数学14.74,外语14.27 各科中位数:语文90.00,数学89.00,外语80.00
时间: 2023-08-06 19:17:43 浏览: 635
以下是 Python 代码实现:
```python
import random
import statistics
# 随机生成 n 个学生的学号和成绩
def generate_scores(n):
scores = [['学号', '语文', '数学', '外语']]
for i in range(1, n+1):
score = [
str(2023100+i+1),
str(random.randint(60, 100)),
str(random.randint(60, 100)),
str(random.randint(60, 100))
]
scores.append(score)
return scores
# 计算列表中指定列的平均值、方差和中位数
def calc_stats(lst, col):
data = [int(x[col]) for x in lst[1:]]
mean = statistics.mean(data)
variance = statistics.variance(data)
median = statistics.median(data)
return mean, variance, median
# 读取输入的学生数
n = int(input())
# 随机生成学号和成绩
scores = generate_scores(n)
# 计算各科成绩的平均分、方差和中位数
ch_mean, ch_var, ch_median = calc_stats(scores, 1)
math_mean, math_var, math_median = calc_stats(scores, 2)
eng_mean, eng_var, eng_median = calc_stats(scores, 3)
# 输出结果
print("各科平均分:语文{:.2f},数学{:.2f},外语{:.2f}".format(ch_mean, math_mean, eng_mean))
print("各科方差:语文{:.2f},数学{:.2f},外语{:.2f}".format(ch_var, math_var, eng_var))
print("各科中位数:语文{:.2f},数学{:.2f},外语{:.2f}".format(ch_median, math_median, eng_median))
```
代码运行说明:
1. 将代码保存为 `score.py` 文件;
2. 运行代码;
3. 输入学生数,例如 `5`;
4. 根据输入的学生数生成随机的学号和成绩;
5. 计算各科成绩的平均分、方差和中位数;
6. 输出结果。
阅读全文