读取scores.txt文件生成数组
时间: 2023-07-18 14:31:02 浏览: 65
好的,以下是Python代码实现:
```python
# 读取scores.txt文件生成数组
with open("scores.txt", "r") as f:
students = []
for line in f:
scores = list(map(int, line.strip().split()))
students.append(scores)
# 输出成绩
for i, scores in enumerate(students):
print("学生{}的成绩为:{}".format(i+1, scores))
```
这段代码会读取之前写入scores.txt文件中的成绩数据,并将其转化成二维数组students。然后会输出每个学生的成绩。
相关问题
读取scores.txt文件生成数组。 4.根据该数组数据绘图,该图包括四个小图,图一为各个科目的平均分的竖向条形图,图二为各个学生平均分和python成绩关系的散点图,图三为python成绩各分段的学生人数占比(优秀(90-100分)、良好(70-90分)、及格(60-70分)、不及格(小于60分)饼图,图四为30位学生的总分排名的横向条形图。
好的,以下是Python代码实现:
```python
import matplotlib.pyplot as plt
import numpy as np
# 读取scores.txt文件生成数组
with open("scores.txt", "r") as f:
students = []
for line in f:
scores = list(map(int, line.strip().split()))
students.append(scores)
students = np.array(students)
# 绘制图一:各个科目的平均分的竖向条形图
subjects = ["语文", "数学", "英语", "Python"]
mean_scores = np.mean(students, axis=0)
plt.bar(subjects, mean_scores)
plt.title("各个科目的平均分")
plt.xlabel("科目")
plt.ylabel("平均分")
plt.show()
# 绘制图二:各个学生平均分和python成绩关系的散点图
x = students[:, 3] # Python成绩
y = np.mean(students[:, :3], axis=1) # 语文、数学、英语平均分
plt.scatter(x, y)
plt.title("各个学生平均分和Python成绩关系")
plt.xlabel("Python成绩")
plt.ylabel("平均分")
plt.show()
# 绘制图三:Python成绩各分段的学生人数占比饼图
bins = [0, 60, 70, 90, 100] # 分数段
labels = ["不及格", "及格", "良好", "优秀"]
counts, _ = np.histogram(students[:, 3], bins=bins)
plt.pie(counts, labels=labels, autopct='%1.1f%%')
plt.title("Python成绩各分段的学生人数占比")
plt.show()
# 绘制图四:30位学生的总分排名的横向条形图
total_scores = np.sum(students, axis=1)
rank = np.argsort(-total_scores) # 降序排列
plt.barh(np.arange(1, 31), total_scores[rank])
plt.title("30位学生的总分排名")
plt.xlabel("总分")
plt.ylabel("排名")
plt.show()
```
这段代码会读取scores.txt文件中的成绩数据,并将其转化成numpy数组students。然后会绘制四个图表:各个科目的平均分的竖向条形图、各个学生平均分和Python成绩关系的散点图、Python成绩各分段的学生人数占比饼图和30位学生的总分排名的横向条形图。
某班有10名同学,建立学生结构体类型,包括学号、姓名、3门课程的成绩,用C语言编写程序,读入已准备好的文本文件student1.txt,为结构体数组变量赋值,计算每名学生的平均成绩及名次。结果输出到屏幕的同时保存到student2.txt文件中。
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 50 // 最大字符串长度
#define NUM_OF_STUDENT 10 // 学生数量
#define NUM_OF_COURSE 3 // 课程数量
// 学生结构体
typedef struct {
int id; // 学号
char name[MAX_LEN]; // 姓名
float scores[NUM_OF_COURSE]; // 3门课程的成绩
float average_score; // 平均成绩
int rank; // 名次
} Student;
// 读取文件并初始化学生数组
void init_students(Student *students, const char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file %s.\n", filename);
exit(1);
}
for (int i = 0; i < NUM_OF_STUDENT; i++) {
fscanf(fp, "%d %s %f %f %f", &students[i].id, students[i].name,
&students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
students[i].average_score = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / NUM_OF_COURSE;
students[i].rank = 1; // 初始名次为1
}
fclose(fp);
}
// 计算名次
void calculate_rank(Student *students) {
for (int i = 0; i < NUM_OF_STUDENT; i++) {
for (int j = 0; j < NUM_OF_STUDENT; j++) {
if (students[i].average_score < students[j].average_score) {
students[i].rank++;
}
}
}
}
// 输出学生信息
void print_students(Student *students, const char *filename) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("Failed to open file %s.\n", filename);
exit(1);
}
printf("ID\tName\tScore1\tScore2\tScore3\tAverage Score\tRank\n");
fprintf(fp, "ID\tName\tScore1\tScore2\tScore3\tAverage Score\tRank\n");
for (int i = 0; i < NUM_OF_STUDENT; i++) {
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t\t%d\n", students[i].id, students[i].name,
students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].average_score, students[i].rank);
fprintf(fp, "%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t\t%d\n", students[i].id, students[i].name,
students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].average_score, students[i].rank);
}
fclose(fp);
}
int main() {
Student students[NUM_OF_STUDENT];
const char *input_file = "student1.txt";
const char *output_file = "student2.txt";
init_students(students, input_file);
calculate_rank(students);
print_students(students, output_file);
return 0;
}
```
其中,假设 `student1.txt` 的内容如下:
```
1001 Tom 90 85 95
1002 Jack 80 90 85
1003 Lily 75 85 80
1004 Lucy 85 80 90
1005 Mike 90 95 85
1006 John 70 80 75
1007 Sarah 80 85 90
1008 Jane 95 90 85
1009 David 85 90 80
1010 Bob 90 80 75
```
程序将会输出以下内容:
```
ID Name Score1 Score2 Score3 Average Score Rank
1001 Tom 90.0 85.0 95.0 90.0 3
1002 Jack 80.0 90.0 85.0 85.0 6
1003 Lily 75.0 85.0 80.0 80.0 9
1004 Lucy 85.0 80.0 90.0 85.0 5
1005 Mike 90.0 95.0 85.0 90.0 3
1006 John 70.0 80.0 75.0 75.0 10
1007 Sarah 80.0 85.0 90.0 85.0 5
1008 Jane 95.0 90.0 85.0 90.0 3
1009 David 85.0 90.0 80.0 85.0 5
1010 Bob 90.0 80.0 75.0 81.7 8
```
同时,程序会在当前目录下生成一个名为 `student2.txt` 的文件,其内容与上述输出相同。