Python Homework Checker
S3a Lv3

Python Homework Checker(根据Excel名单对照文件夹中学生作业进行检查是否提交作业)

​ 现在一般的作业都是网上提交文件为主,我们总会有一些作为收作业的人会烦恼谁还没交作业,所以我就这个问题写了一段小代码来检测哪个人没交作业。

​ 原理是读入作业所在的文件夹里面所有的文件名称,将这些文件名称和你要收集的名单对比,将没有的名单输出 以下是一个用Python检查学生是否提交作业的程序,它可以检查一个文件夹中是否存在按学生学号命名的PDF文件,以确定哪些学生已经提交作业。本程序使用openpyxlos库,因此需要确保安装了这两个库。

​ 如果Excel文件中有多列信息,我们可以使用列标题来查找学号所在的列。我们还需要根据学号来提取姓名,因为文件夹中的PDF文件名是“学号-姓名”格式。

​ 这个程序首先查找Excel文件中包含“学号”标题的列,并记录该列的列字母。然后它遍历文件夹中的PDF文件,对于每个PDF文件,它会提取学生学号和姓名,并将学号和姓名添加到已提交字典中。然后它遍历Excel文件中的每一行,使用学号列的列字母来提取学生学号,并使用学号在已提交字典中查找对应的姓名,并打印出相应的提交状态。

代码复现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

import openpyxl
import os

# 定义文件夹路径和Excel文件路径
folder_path = "D:\\University\\Sophomore_second\\R222A1035120001工程项目管理与经济决策\\R222A1035120001工程项目管理与经济决策"
excel_path = "D:\\University\\Sophomore_second\\R222A1035120001工程项目管理与经济决策\\R222A1035120001学生名单0310.xlsx"

# 打开Excel文件
wb = openpyxl.load_workbook(excel_path)
sheet = wb.active

# 创建一个空的字典来存储已经提交作业的学生学号
submitted = {}

# 查找Excel文件中学号所在的列
headers = [cell.value for cell in sheet[1]]
if "学号" not in headers:
print("Error: cannot find the column containing student IDs.")
exit()

student_id_column = headers.index("学号") + 1

# 遍历文件夹中的PDF文件,检查是否存在按学生学号命名的PDF文件
for filename in os.listdir(folder_path):
if filename.endswith(".pdf"):
student_id, student_name = filename[:-4].rsplit("-", 1) # 分离学号和姓名
submitted[student_id] = student_name

# 遍历Excel文件中的学生名单,检查哪些学生已经提交作业
for row in sheet.iter_rows(min_row=2, values_only=True):
student_id = str(row[student_id_column - 1])
if student_id in submitted:
pass
else:
print(f"{row[1]} ({student_id}) has not submitted the homework.")


 Comments
Comment plugin failed to load
Loading comment plugin