students_data.txt文件直接在目录中新建并输入数据,包含了若干学生的信息,每个学生信息占一行,学生信息从左到右分别为:学号( int 类型)、姓名(字符串类型)、年级( int 类型),各学生信息以空格分隔。编写一个程序,找出所有年级高于三年级的学生,将符合条件的学生的学号和姓名按行为单位,保存到新文件 students _5.txt。
时间: 2024-02-06 19:09:57 浏览: 13
可以使用Python来实现该功能,代码如下:
```python
# 打开原始文件并读取数据
with open('students_data.txt', 'r') as f:
lines = f.readlines()
# 遍历每行数据,筛选出年级高于三年级的学生
selected_lines = []
for line in lines:
stu_id, name, grade = line.strip().split()
if int(grade) > 3:
selected_lines.append(f'{stu_id} {name}\n')
# 将筛选出的数据写入新文件
with open('students_5.txt', 'w') as f:
f.writelines(selected_lines)
```
需要注意的是,程序中使用了 `strip()` 方法去除每行数据中的空格和换行符,使用 `split()` 方法将每行数据按空格分隔成三个部分,并将其中的年级部分转换为整数类型进行比较。最后将符合条件的学生信息保存到新文件 `students_5.txt` 中。
相关问题
用python写输入若干个学生的姓名Name、性别Gender、年龄Age,把它存储到文件students.txt中,每个数据项占一行。
可以使用以下代码实现:
```python
# 获取输入
num = int(input("请输入学生人数:"))
students = []
for i in range(num):
name = input("请输入第{}个学生的姓名:".format(i+1))
gender = input("请输入第{}个学生的性别:".format(i+1))
age = input("请输入第{}个学生的年龄:".format(i+1))
students.append([name, gender, age])
# 写入文件
with open("students.txt", "w") as f:
for s in students:
f.write(s[0] + "\n")
f.write(s[1] + "\n")
f.write(s[2] + "\n")
```
首先通过 `input` 获取输入的学生人数和每个学生的信息,将其存储在一个二维列表 `students` 中。
然后使用 `with open` 打开文件,以写入模式打开文件,将每个学生的信息写入文件中。注意每个数据项占一行,因此需要在每一个数据项后面加上换行符 `\n`。
从键盘输入学生若干信息,并把这些学生信息保存在一个文件中,文件名由键盘输入指定C语言
你可以使用以下代码实现从键盘输入学生信息并将其保存到文件中:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
struct Student {
char name[20];
int age;
char sex[10];
};
int main() {
char filename[50];
struct Student students[MAX_STUDENTS];
int num_students = 0;
// 获取文件名
printf("请输入文件名:");
fgets(filename, sizeof(filename), stdin);
filename[strlen(filename) - 1] = '\0';
// 从键盘输入学生信息
while (num_students < MAX_STUDENTS) {
printf("请输入学生姓名(输入exit退出):");
fgets(students[num_students].name, sizeof(students[num_students].name), stdin);
students[num_students].name[strlen(students[num_students].name) - 1] = '\0';
if (strcmp(students[num_students].name, "exit") == 0) {
break;
}
printf("请输入学生年龄:");
scanf("%d", &students[num_students].age);
getchar();
printf("请输入学生性别:");
fgets(students[num_students].sex, sizeof(students[num_students].sex), stdin);
students[num_students].sex[strlen(students[num_students].sex) - 1] = '\0';
num_students++;
}
// 将学生信息保存到文件中
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("无法打开文件 %s\n", filename);
exit(1);
}
for (int i = 0; i < num_students; i++) {
fprintf(fp, "%s,%d,%s\n", students[i].name, students[i].age, students[i].sex);
}
fclose(fp);
printf("学生信息已保存到文件 %s 中\n", filename);
return 0;
}
```
这段代码首先获取用户输入的文件名,然后使用一个 while 循环从键盘输入学生信息,每输入一个学生信息就将其保存到一个结构体数组中,最后将所有学生信息保存到文件中。保存到文件的格式为每行一个学生信息,学生信息的各个字段用逗号分隔。注意要用 fgets 函数读取字符串,以避免输入缓冲区中的换行符干扰下一次输入。