基于Python实现自动查找未交作业人员名单

为了解决检查班级作业的繁琐过程,作者利用Python编写了一段代码来自动找出未交作业的同学。目前代码基础版只能识别以名字命名的文件,无法处理如读后感等特殊情况,但已能显著提高效率,相比手动检查有明显优势。作者计划在未来进行完善。

因为经常需要收班级同学作业,每次都得检查齐了没,要是少了又要看是谁没交,就很烦。于是乎就像想写个python小代码跑一跑。这是个基础的,总之就是还没有完善了。之后可能会完善也可能就这样了。反正也就我和pua我的室友用得到。

没完善是什么意思呢。就是交上来的文件中文字符只能是名字,或者说只能是一类东西,如果交上来一个王小明的西游记读后感,那这个程序就找不出来了,那这个怎么找呢?这不是没完善嘛¥%……

# -*- coding = utf-8 -*-

import xlrd
import os
import re 

data = xlrd.open_workbook('***班级名单的绝对/相对路径***')
table = data.sheet_by_index(0)
set_All_Persons = set(table.col_values(2)) # 名单中第三列是姓名

dirs = "***目标文件夹绝对路径***"

set_Done_Persons0 = os.listdir(dirs) # 这一个函数就可以取出目标文件夹所有文件的文件名

set_Done_Persons = [] # 先初始化一个已经交了作业的人员名单列表

for i in set_Done_Persons0:
    res = ''.join(re.findall('[\u4e00-\u9fa5]',i)) # \u4e00-\u9fa5是ASCII码的所有中文字符,这里
    set_Done_Persons.append(res) # 这里是把正则处理过的每个名字放在人员名单列表里

set_Done_Persons = set(set_Done_Persons) # 强制类型护转化为集合,好用.difference,我也不知道list有没有类似的,有的话可以说下

set_Undo_Persons = set_All_Persons.difference(set_Done_Persons) # 这个就是处理过后,没有叫作业的人员名单集合了

print("%d%s"%(len(set_Undo_Persons),"人未交:"))
count = 0
for i in set_Undo_Persons:
    count += 1
    if count%6==0:
        print()
    print(i,end=', ')

先这样写吧。总比一个一个对好吧,完善的再说,下次一定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值