一、要求
37题选项为1时,38,39皆是1;
37题选项不为1时,38,39的选项之和不能全大于100%
二、代码
# coding: utf-8
import csv
import os
import numpy as np
import xlrd
files = os.listdir('.') # 列出当前目录下所有的文件
f = open('校验结果.csv', 'w', newline='', encoding='GB18030')
csv_writer = csv.writer(f)
csv_writer.writerow(["sheet页名", "校验结果"])
for filepath in files:
portion = os.path.splitext(filepath)
if portion[1] == ".xls":
dir = (portion[0] + ".xls")
wb = xlrd.open_workbook(dir)
sheets = wb.sheet_names()
for i in range(len(sheets)):
table = wb.sheets()[i]
row = table.nrows
# 第一层判断:每个题目是否作答;答案是否在选项范围内;答案个数是否超出要求的数量
for j in range(3, row):
# 没有作答
if table.cell_value(j, 8) == '':
csv_writer.writerow([sheets[i], "未通过校验,第" + "{}".format(j - 2) + "题未作答!"])
# 作答了但选项范围有误
else:
# 2个选项的#1
if j == 3 and table.cell_value(j, 8) not in range(1, 3):
csv_writer.writerow([sheets[i], "未通过校验,第" + "{}".format(j - 2) + "题超出选项范围!"])
# 6个选项的#2,17,30,38,39
if j in np.array([4, 19, 32, 40, 41]) and table.cell_value(j, 8) not in range(1, 7):
csv_writer.writerow([sheets[i], "未通过校验,第" + "{}".format(j - 2) + "题超出选项范围!"])
# 7个选项的#3,37,42,43
if j in np.array([5, 39, 44, 45]) and table.cell_value(j, 8) not in range(1, 8):
csv_writer.writerow([sheets[i], "未通过校验,第" + "{}".format(j - 2) + "题超出选项范围!"])
# 4个选项的4,6,8,9,10,11,12,14,19,21,28,31
if j in np.array([6, 8, 10, 11, 12,