This repository has been archived on 2024-06-23. You can view files and clone it, but cannot push or open issues or pull requests.
mathdeptv2/工具/错题重做来源清点.py

92 lines
3.4 KiB
Python

import os,re,json
outputfile = "临时文件/已做题目.txt"
classid = "2023届高三02班"
new_dir = r"C:\Users\weiye\Documents\wwy sync\23届\四月错题重做"
old_dirs = [
r"C:\Users\weiye\Documents\wwy sync\23届\暑假概率初步续",
r"C:\Users\weiye\Documents\wwy sync\23届\上学期测验卷",
r"C:\Users\weiye\Documents\wwy sync\23届\上学期周末卷",
r"C:\Users\weiye\Documents\wwy sync\23届\第一轮复习讲义",
r"C:\Users\weiye\Documents\wwy sync\23届\其他讲义与试卷",
r"C:\Users\weiye\Documents\wwy sync\23届\赋能",
r"C:\Users\weiye\Documents\wwy sync\23届\正态分布及成对数据新课",
r"C:\Users\weiye\Documents\wwy sync\23届\下学期测验卷",
r"C:\Users\weiye\Documents\wwy sync\23届\下学期周末卷",
r"C:\Users\weiye\Documents\wwy sync\23届\第二轮复习讲义"
]
def id_related(id,prodict,idrespdict):
for rid in prodict[id]["related"]:
if rid in idrespdict:
return True
return False
with open(r"../题库0.3/Problems.json","r",encoding="u8") as f:
data = f.read()
pro_dict = json.loads(data)
# 收集数据构建已做过的题目的id与试卷-题号-题序对应字典
id_resp_dict = {}
for dir in old_dirs:
for texfile in os.listdir(dir):
if ".tex" in texfile:
with open(os.path.join(dir,texfile),"r",encoding="u8") as f:
data = f.read()
ids = re.findall(r"\((\d{6})\)",data)
for id in ids:
if not id in id_resp_dict:
id_resp_dict[id] = [os.path.join(os.path.split(dir)[1],texfile[:-4])+"--题序"+str(ids.index(id)+1)]
else:
id_resp_dict[id].append(os.path.join(os.path.split(dir)[1],texfile[:-4])+"--题序"+str(ids.index(id)+1))
new_texfiles = [f for f in os.listdir(new_dir) if ".tex" in f]
output = ""
for texfile in new_texfiles:
with open(os.path.join(new_dir,texfile),"r",encoding="u8") as f:
data = f.read()
ids = re.findall(r"\((\d{6})\)",data)
output += texfile[:-4] + "\n"
print(texfile[:-4])
output += ",".join(ids) + "\n"
print(",".join(ids))
for id in ids:
if id in id_resp_dict:
results = "\n".join([(id + "\t" + r) for r in pro_dict[id]["usages"] if classid in r])
print("(%s)\t(已做题)\t%s"%(id,",".join(id_resp_dict[id])))
print(results)
output += "(%s)\t(已做题)\t%s\n"%(id,",".join(id_resp_dict[id]))
output += results + "\n"
elif id_related:
rel_ids = pro_dict[id]["related"]
origins = []
for id1 in rel_ids:
if id1 in id_resp_dict:
origins += id_resp_dict[id1]
print("(%s)\t(关联题)\t%s"%(id,",".join(origins)))
output += "(%s)\t(关联题)\t%s\n"%(id,",".join(origins))
for id1 in rel_ids:
results = "\n".join([(id1 + "\t" + r) for r in pro_dict[id1]["usages"] if classid in r])
if len(results) > 2:
print(results)
output += results + "\n"
else:
print("(%s)\t(无关题)")
output += "(%s)\t(无关题)\n"
results = "\n".join([(id + "\t" + r) for r in pro_dict[id]["usages"] if classid in r])
print(results)
output += results + "\n"
print("")
output += "\n"
with open(outputfile,"w",encoding="u8") as f:
f.write(output)