python程序设计给定学生的选课名单(学生选课名单.txt文件),每次实验课作业学生以word文档进行提交,现需设计程序根据选课名单中的学号或者姓名,对每次实验课学生是否交作业的情况进行判断,将没有交作业文档的学生的姓名学号打印并保存到本地文件中。
时间: 2023-09-10 18:05:16 浏览: 122
学生选课系统设计与实现python-源码
### 回答1:
好的,这里有一个Python程序的框架,可以实现你的需求。请注意将以下代码中的`选课名单.txt`和`作业目录`替换为你自己的文件路径。
```python
import os
# 读取选课名单
students = {}
with open('选课名单.txt', 'r', encoding='utf-8') as f:
for line in f:
# 假设选课名单的格式为 学号 姓名
student_id, student_name = line.strip().split()
students[student_id] = student_name
# 检查每个学生是否提交了作业
missing_homework = []
for student_id, student_name in students.items():
# 在作业目录中查找该学生的作业文件
homework_path = os.path.join('作业目录', f'{student_id}.docx')
if not os.path.exists(homework_path):
missing_homework.append((student_id, student_name))
# 打印未交作业的学生姓名学号,并保存到本地文件
with open('未交作业学生名单.txt', 'w', encoding='utf-8') as f:
for student_id, student_name in missing_homework:
print(student_id, student_name)
f.write(f'{student_id} {student_name}\n')
```
这个程序的主要思路是先读取选课名单,然后遍历每个学生,检查他们是否提交了作业。如果没有提交作业,则将其加入到`missing_homework`列表中。最后,将未交作业的学生姓名和学号打印出来,并保存到本地文件`未交作业学生名单.txt`中。
### 回答2:
为了实现对学生是否交作业的情况进行判断,我们可以按照以下步骤设计程序:
1. 读取选课名单txt文件,获取学生的学号和姓名信息,并存储在一个字典中。字典的键为学号,值为姓名。
2. 获取所有实验课作业的文件名列表,可以使用Python的os模块中的os.listdir()函数来获取指定文件夹下的所有文件名。
3. 遍历实验课作业文件名列表,在每个文件名中提取学生的学号。可以使用正则表达式来匹配文件名中的学号信息。
4. 判断提取到的学号是否在选课名单字典中存在。如果不存在,则说明该学生在选课名单中不存在,跳过该文件的处理。
5. 如果学号存在于选课名单字典中,判断该文件是否存在。如果不存在,则说明该学生没有交作业,将其姓名和学号保存到一个列表中。
6. 遍历完所有实验课作业文件后,将没有交作业的学生的姓名和学号打印出来,并将其保存到本地文件中。可以使用Python的内置函数open()来创建并写入文件。
下面是示例代码:
```python
import os
import re
# 读取选课名单
students = {}
with open('学生选课名单.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
for line in lines:
parts = line.strip().split(',')
students[parts[0]] = parts[1]
# 获取实验课作业文件名列表
homework_files = os.listdir('实验课作业文件夹路径')
# 存储没有交作业的学生信息的列表
no_homework_students = []
# 遍历实验课作业文件
for filename in homework_files:
# 提取学生学号
match = re.search(r'(\d+)', filename)
if match:
student_id = match.group(1)
if student_id in students:
# 判断文件是否存在
if not os.path.isfile(filename):
# 没有交作业的学生
no_homework_students.append((students[student_id], student_id))
# 打印和保存没有交作业的学生信息
with open('没有交作业的学生.txt', 'w', encoding='utf-8') as f:
print('没有交作业的学生:')
for student in no_homework_students:
print('姓名:', student[0], '学号:', student[1])
f.write('姓名:' + student[0] + ', 学号:' + student[1] + '\n')
```
上述代码中,需要根据实际情况修改学生选课名单文件、实验课作业文件夹路径以及保存没有交作业的学生文件的路径和文件名。
阅读全文