""" 一些共同操作 """ import random import config import os from imagebuilder import imageBuilder def generateObjectAnswer(rightper,studentdata,object_course_data,single_choice_order,multi_choice_order,choice): """ 生成客观题作答 """ object_len = len(object_course_data) if object_len==0: return "" choice_num = int(object_len * rightper / 100) right_sample = object_course_data.sample(choice_num) right_sample.set_index(["大题号(只能用小写数字)", "小题号(只能用小写数字)"], inplace=True) right_index = list(right_sample.index) # 生成作答信息 answerdata = "" order = 1 for object_key, object_data_single in object_course_data.iterrows(): if (object_data_single["大题号(只能用小写数字)"], object_data_single["小题号(只能用小写数字)"]) in right_index: answerdata = answerdata + "," + object_data_single["标准答案"] else: if order in single_choice_order: # 单选题时 f = lambda x: [b for b in x if b != object_data_single["标准答案"]] answerdata = answerdata + "," + random.choice(f(choice)) elif order in multi_choice_order: # 多选题时 while True: question_num = random.choice(range(1, len(choice) + 1)) answer = random.sample(choice, question_num) answer.sort() if "".join(answer) != object_data_single["标准答案"]: answerdata = answerdata + "," + "".join(answer) break # print("失败继续随机",answer,object_data_single["标准答案"]) else: # 判断题时 f = lambda x: [b for b in x if b != object_data_single["标准答案"]] answerdata = answerdata + "," + random.choice(f(["A", "B"])) order = order + 1 object_answerdata = answerdata[1:] return object_answerdata def generateSubjectAnswer(student_data,subject_course_data): """ 生成主观题作答 """ subject_answer_List = [] subject_len = len(subject_course_data) if subject_len != 0: for subject_key, subbject_data_single in subject_course_data.iterrows(): subject_answer_List.append("%s %s %d %d" % ( student_data["准考证号"], student_data["姓名"], int(subbject_data_single["大题号(只能用小写数字)"]), int(subbject_data_single["小题号(只能用小写数字)"]))) return subject_answer_List else: return [] def generategxSubjectAnswer(student_data,subject_course_data): """ 生成主观题作答 """ subject_answer_List = [] subject_len = len(subject_course_data) if subject_len != 0: for subject_key, subbject_data_single in subject_course_data.iterrows(): subject_answer_List.append("%s %s %d %d" % ( student_data["准考证号"], student_data["姓名"], int(subbject_data_single["大题号"]), int(subbject_data_single["小题号"]))) return subject_answer_List else: return [] def generateSignTable(student_data_frame,student_data_signtable_group): """ 生成签到表 """ for signcode, student_sign_data in student_data_signtable_group: sign_list = "" for key, student_data in student_sign_data.iterrows(): #避免超出范围 if student_data["absent"]==False: sign_list = sign_list + "," + str(student_data["准考证号"]) # 存入文件 print(sign_list) signoutputpath = str(config.examId) + os.sep + "image" + os.sep + "package" + os.sep + str(config.examId) + os.sep + str( signcode) if not os.path.exists(signoutputpath): os.makedirs(signoutputpath) signimage = imageBuilder(int(config.image_width) // 2, int(config.image_length), color=(255, 255, 255, 255)) signimage.draw_text(0, 200, sign_list[1:100]) signimage.saveimage(signoutputpath + os.sep + "1.jpg")