给定学生的选课名单(学生选课名单.txt文件),每次实验课作业学生以word文档进行提交,现需设计程序根据选课名单中的学号或者姓名,对每次实验课学生是否交作业的情况进行判断,将没有交作业文档的学生的姓名学号打印并保存到本地文件中。
时间: 2024-02-05 17:13:35 浏览: 117
好的,这个任务可以用Python来完成。首先,我们需要读取选课名单,将学生的学号和姓名存储到一个字典中,学号作为键,姓名作为值。然后,我们需要遍历每次实验课的作业文件,判断每个学生是否提交了作业。
以下是代码实现:
```python
# 读取选课名单
students = {}
with open('学生选课名单.txt', 'r') as f:
for line in f:
# 将每一行按照空格分割,获取学号和姓名
student_info = line.strip().split()
student_id = student_info[0]
student_name = student_info[1]
students[student_id] = student_name
# 遍历每次实验课作业文件,判断学生是否提交作业
missing_homework = []
for student_id in students:
# 假设每个学生的作业文件名为“学号-姓名.docx”
filename = '{}-{}.docx'.format(student_id, students[student_id])
try:
with open(filename, 'r') as f:
# 如果能成功打开文件,则说明学生已经提交了作业
pass
except FileNotFoundError:
# 如果文件不存在,说明学生没有提交作业
missing_homework.append((student_id, students[student_id]))
# 将没有交作业的学生信息保存到文件中
with open('没有交作业的学生.txt', 'w') as f:
for student_id, student_name in missing_homework:
f.write('{} {}\n'.format(student_id, student_name))
```
在上述代码中,我们先定义了一个空字典`students`,用于存储学生的学号和姓名。然后,我们使用`with open()`语句打开选课名单文件,并逐行读取文件内容。对于每一行,我们使用`strip()`方法去除首尾空格,使用`split()`方法按照空格分割字符串,获取学号和姓名,并将其以键值对的形式存储到`students`字典中。
接下来,我们遍历每个学生,并假设每个学生的作业文件名为“学号-姓名.docx”。我们使用`try...except`语句尝试打开每个学生的作业文件,如果能成功打开文件,则说明学生已经提交了作业;如果文件不存在,说明学生没有提交作业,我们将其学号和姓名存储到`missing_homework`列表中。
最后,我们将`missing_homework`列表中的学生信息保存到本地文件中。我们使用`with open()`语句打开文件,将学生信息逐行写入文件中。注意要使用`\n`换行符将每个学生信息分隔开。
完成上述代码后,您只需要修改文件名和文件路径,将学生选课名单文件和作业文件放在同一目录下,运行程序即可。程序会自动检查每个学生是否提交了作业,并将没有交作业的学生信息保存到本地文件中。
阅读全文