大一python题库刷题训练_python实现合工大试题库自动刷题

1 #coding= utf-8

2 importre3 importrequests4 importxlrd5

6 save_url = "http://tkkc.hfut.edu.cn/student/exam/manageExam.do?1479131327464&method=saveAnswer"

7 #index用于提示题目序号

8 index = 1

9 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/41.0",10 "Host": "tkkc.hfut.edu.cn",11 "X-Requested-With": "XMLHttpRequest",12 }13

14 ses =requests.session()15 ID = input("请输入学号\n")16 Pwd = input("请输入密码\n")17 logInfo ={18 "logname": ID,19 "password": Pwd20 }21 login_url = "http://tkkc.hfut.edu.cn/login.do?"

22 res = ses.post(login_url, data=logInfo, headers=headers)23

24 #用于存放excel中question,answer键值对的字典

25 result =dict()26

27

28 #retries默认为2,表示尝试次数。以防某种原因,某次连接失败

29 def craw(url, retries=2):30 try:31 b = ses.post(url, headers=headers)32 b.encoding = 'utf-8'

33 d =b.text34 title = re.findall(r' (.*?)","', d, re.S)[0]35 returntitle36 exceptException as e:37 print(e)38 if retries >0:39 return craw(url, retries=retries - 1)40 else:41 print("get failed", index)42 return ''

43

44

45 #从字典中根据题目找到并返回答案

46 defanswer_func(t):47 return result.get(title, "Not Found")48

49

50 #将找到的答案提交给服务器

51 def submit(ans, id, id2, id3, id4, index, retries=2):52 dx = ["false", "false", "false", "false", "false"]53 try:54 if ans.find('A') != -1:55 dx[0] = "true"

56 if ans.find('B') != -1:57 dx[1] = "true"

58 if ans.find('C') != -1:59 dx[2] = "true"

60 if ans.find('D') != -1:61 dx[3] = "true"

62 if ans.find('E') != -1:63 dx[4] = "true"

64 if ans.find('正确') != -1:65 ans = "A"

66 if ans.find('错误') != -1:67 ans = "B"

68 data2 = {"examReplyId": id3,69 "examStudentExerciseId": id2,70 "exerciseId": id,71 "examId": id4,72 "DXanswer": ans,73 "PDanswer": ans,74 "DuoXanswerA": dx[0],75 "DuoXanswerB": dx[1],76 "DuoXanswerC": dx[2],77 "DuoXanswerD": dx[3],78 "DuoXanswerE": dx[4]}79 body = ses.post(save_url, data=data2, headers=headers)80 wb_data =body.text81 print(wb_data, index)82 exceptException as e:83 print(e)84 if retries >0:85 return submit(ans, id, id2, id3, id4, index, retries=retries - 1)86 else:87 print("get failed", index)88 return ''

89

90

91 #此变量用于判断用户是否要继续刷课

92 finished =093

94 while finished ==0:95 start_url = input("请输入测试页面URL\n")96

97 myfile = xlrd.open_workbook('exercise.xls')98 lenOfXls =len(myfile.sheets())99

100 #读取XLS中的题目和答案,存进字典(将这段程序放在这,是因为当用户有多门试题库时,刷完一门,切换到另一门时,不用关闭程序只需切换题库Excel即可)

101 for x inrange(0, lenOfXls):102 xls =myfile.sheets()[x]103 for i in range(1, xls.nrows):104 title =xls.cell(i, 0).value105 if x != 2:106 answer = xls.cell(i, 7).value107 else:108 answer = xls.cell(i, 2).value109 result[title] =answer110

111 body = ses.get(start_url, headers=headers)112 body.encoding = 'utf-8'

113 wb_data =body.text114 #print(wb_data)

115

116 urlId = re.findall(r'do\?(.*?)&method', start_url, re.S)[0]117

118 eval = re.findall(r'eval(.*?)]\);', wb_data, re.S)[0]119

120 examReplyId = re.findall(r'examReplyId=(.*?)&examId', wb_data, re.S)[0]121

122 examId = re.findall(r'', wb_data, re.S)[0]123

124 exerciseId = re.findall(r'exerciseId":(.*?),', eval, re.S)125

126 examSEId = re.findall(r'examStudentExerciseId":(.*?),', eval, re.S)127

128 examStudentExerciseId = re.findall(r'"examStudentExerciseId":(.*?),"exerciseId"',129 wb_data, re.S)[0]130

131 print(examStudentExerciseId)132 examStudentExerciseId =int(examStudentExerciseId)133

134 #id对应exerciseID,id2对应examStudetExerciseId

135 for id inexerciseId:136 next_url = r"http://tkkc.hfut.edu.cn/student/exam/manageExam.do?%s&method=getExerciseInfo&examReplyId=%s&exerciseId=%s&examStudentExerciseId=%d" %(137 urlId, examReplyId, id, examStudentExerciseId)138 title =craw(next_url)139 ans =answer_func(title)140 submit(ans, id, examStudentExerciseId, examReplyId, examId, index)141 #time.sleep(1)

142 index += 1

143 examStudentExerciseId = examStudentExerciseId + 1

144 #input函数获取到的为字符串,所以进行Type conversion

145 finished = int(input("继续请输入0,退出请输入1\n"))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MODIS数据说明

MODIS目前主要存在于两颗卫星上:TERRA和AQUA。TERRA卫星每日地方时上午10:30时过境,因此也把它称作地球观测第一颗上午星(EOS-AM1)。AQUA每日地方时下午过境,因此称作地球观测第一颗下午星(EOS-PM1)。两颗星相互配合,每1-2天可重复…

IOS学习笔记二十三对象归档(NSKeyedArchiver、NSKeyedUnArchiver、NSCodeing)

1、NSKeyedArchiver、NSKeyedUnArchiver 1)、archiveRootObject:toFile 归档对象到这个路径文件 2)、unarchiveObjectWithFile:从这个路径文件把对象进行恢复 对象归档这里我们可以理解Android里面的序列化,就是把对象保存到文件持久化&am…

.NET 为大型应用接入 ApplicationStartupManager 启动流程框架

对于大型的应用软件,特别是客户端应用软件,应用启动过程中,需要执行大量的逻辑,包括各个模块的初始化和注册等等逻辑。大型应用软件的启动过程都是非常复杂的,而客户端应用软件是对应用的启动性能有所要求的&#xff0…

6-子查询理解

单行子查询 1.查询工资比200号员工工资高的员工 分析: 比200号员工工资高,首先需要知道的是200号员工的工资,可以通过sql语句 SELECT SALARY FROM HR.EMPLOYEES WHERE EMPLOYEE_ID200;得到 然后需要的是写一条SQL语句:查询工资大于?的数据 SELECT * FROM HR.EMPLOY…

计算机文化教程实验基础知识,《计算机文化基础上机实验教程》孙家启、黄晓梅、刘奎 著_孔网...

《计算机文化基础上机实验教程》是安徽省高等学校“十一五”规划教材——《计算机文化基础教程》的配套实验教材。本教程共安排了19个实验,内容包括计算机基础知识(1个实验)、windows2000中文操作系统(3个实验)、中文文字处理软件Word2000(5个实验)、中文电子表格处…

思科为其核心网络业务增加了订阅服务

据国外媒体报道,思科系统公司的核心网络业务于周二开始进军订阅服务市场,其向大型企业宣布了一系列新的安全和自动化工具。 这个新的“直观网络”代表了思科如何从其旗舰业务中获得收入的重大变化。San Jose公司一直依赖于网络设备的销售,这些…

fpga map测试_一种基于SELECTMAP的可配置且高速的FPGA配置电路及实现方法与流程

本发明属于计算机工程领域,与SoC密切相关。具体涉及一种FPGA配置电路及实现方法。背景技术:随着大数据的发展,计算能力的提升,人工智能近两年迎来了新一轮的爆发。2016年谷歌AlphaGo赢得了围棋大战后,人工智能在产业界…

超全局变量数组get post requerst resver的使用规则

超全局变量数组的概念不同于全局变量,这里我主要说的是用来接收信息用的。其实在以往已经大量使用了首先:get数组,速度较好,但是相对不是很安全。post数组,可以接收大的数据量,较安全,最常用。r…

遥感RS植被指数大全整理

本文整理了遥感中的常见指数及计算方法:植被指数、归一化植被指数、比值植被指数、差值植被指数、土壤调节植被指数、变换的土壤调节植被指数、修整的土壤调节植被指数、正交植被指数、绿度植被指数。 目录 一、VI - Vegetation Index - 植被指数 二、NDVI - Normalized Dif…

if函数python_pythonif函数

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python的内置的函数round() a 1.12586 #保留小数的函数,四舍五入,参数为保留小数点后的位数 pr…

IOS学习笔记二十四(NSData归档多个对象和归档对象实现深复制)

1、NSData归档多个对象 一、之前我写的学习笔记都是归档一个对象,如果需要归档多个对象我们需要借助NSData 二、步骤 1)、NSMutableData作为参数,构建 NSKeyedArchiver对象 2)、调用NSKeyedArchiver的encodeXXX 3)、调用NSKeyed…

Android渠道包自动化验证

随着产品发布越来越快,渠道包越来越多,渠道包自动化验证重要性逐渐凸显出来,需要将大把的人力从中解放出来,且避免人工失误造成的验证不完全;最近客户端产品尝试使用渠道包自动化测试的方法,这里说说我们目…

Foundatio - .Net Core用于构建分布式应用程序的可插拔基础块

简介Foundatio - 用于构建分布式应用程序的可插拔基础块•想要针对抽象接口进行构建,以便我们可以轻松更改实现。希望这些块对依赖注入友好。•缓存:我们最初使用的是开源 Redis 缓存客户端,但后来它变成了具有高许可成本的商业产品。不仅如此…

JQuery 判断滚动条是否到底部

1 BottomJumpPage: function () {2 var scrollTop $(this).scrollTop();3 var scrollHeight $(document).height();4 var windowHeight $(this).height();5 if (scrollTop windowHeight scrollHeight) { //滚动到底部执…

开讲啦观后感2017计算机科学家,开讲啦观后感2017

1 开讲啦观后感2017(一)是因为有爱,我才付出的,因为是我爱的,而我又付出了,所以我会更爱。这是郑教授的演讲《你为什么读大学》中给我映像最深刻的一句话。我也能从这句话中找到我读大学的原因因为我爱。古时候说你十年寒窗苦读&a…

ENVI IDL读写数据

最近写程序不知道怎么写envi标准格式文件的头文件,在网上搜了半天,也没找到相关的信息。找到一个 ENVI_SETUP_HEAD函数,也不知怎么用。下面的内容可能以后用的着,先留着吧。 引用自:http://bbs.esrichina-bj.cn/ESRI/v…

php 解压zip

2019独角兽企业重金招聘Python工程师标准>>> /*** 解压zip* param type $file* param type $destination* return boolean*/public function unzip_file($file, $destination){ $zip new ZipArchive() ; if ($zip->open($file) ! TRUE) {return $this->error…

python是偏向bs还是cs_CS与BS架构区别、比较、及现状与趋势分析

一、简介CS即Client/Server(客户机/服务器)结构,C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。但是该结构的程序是针对性开发,变更不够灵活,维护和管理的难度…

python数据分析软件_Python数据分析工具

Numpy Python没有提供数组功能,虽然列表可以完成基本的数组功能,但他不是真正的数组。Numpy内置函数处理速度是c语言级别,因此尽量使用内置函数,避免出现效率瓶颈的现象。 Numpy的安装: Windows中,pip inst…

Java之TimeUnit

1、TimeUnit介绍 位于这个包下 import java.util.concurrent.TimeUnit; 2、使用 一般比如多少分钟转多少毫秒、多少秒转多少毫秒、多少小时转多少分钟,还可以使用线程休息的方法, 底层还是用Thread.sleep()实现,代码可读性好点&#xff0c…