小程式開發試題庫找答案功能
期末考试考完无聊在刷试题库。然后CY来我寝室,提醒我可以搞个自动在excel里找答案的程序,他给了思路之后就马上开始动工。
所谓带有我们学校特色的试题库就是下载excel表格,作业和考试题都在网页上,我们要在excel里找答案。把这个过程理了一下,程序主要实现以下功能:
1、监视剪贴板的变化;
2、如果检测到剪贴板内容变化,则根据剪贴板里的内容,利用正则表达式在试题库的题目里找到第一个最匹配的题目;
3、在控制台输出答案。
考虑到python有丰富的库,要连接到excel或者监视剪贴板不是什么麻烦事。于是选用python开发。
xlrd用来实现读取excel文件,pythonwin用来监视剪贴板。
def getText(): w.OpenClipboard() d = w.GetClipboardData(win32con.CF_TEXT) w.CloseClipboard() return d def setText(aString): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_TEXT, aString) w.CloseClipboard()
网上搜的函数,实现得到剪贴板的内容和设置剪贴板的内容.
读取放在桌面的excel文件,又度娘了一下通过注册表得到桌面的位置
= _winreg.QueryValueEx(key, )[0]
之后通过xlrd库的函数打开.xls文件并选中sheet
xlsfile = xlrd.open_workbook(get_desktop()+'\\exercise.xls') mysheet = xlsfile.sheet_by_name('1')
然后需要实现监视剪贴板的功能。监听器这种东西太麻烦我是不会干的,所以每隔1s检查剪贴板的内容是否变化。
if(q != getText()): q=getText() else: time.sleep(1) continue
得到剪贴板里的内容后,用正则表达式匹配题目,如果匹配成功就输出答案。这里涉及编码问题,我也不知道为什么这样写,反正是实现了。。。
row (re.search(+q.decode()+, mysheet.cell(row,0).value)!== 1 +mysheet.cell(row,77= mysheet.cell(row,7
这里为什么要setText(mysheet.cell(row,7).value)呐,因为考试时候鼠标是不能离开浏览器的,把cmd明目张胆的放在一遍也不好,所以把搜索的答案放到剪贴板里,这样把cmd最小化就行了,把答案赋值给q防止q != getText()对答案再进行匹配,嘿嘿嘿。。。
试题库的题型可能有三种:单选题,多选题和判断题,是分在三个sheet里的,如果题目在某个sheet中没找到就换另外的sheet匹配题目。附上完整代码:
#coding=utf-8try: import xlrd import win32clipboard as w import win32con import re import time import os import _winregexcept Exception,e: print edef getText(): w.OpenClipboard() d = w.GetClipboardData(win32con.CF_TEXT) w.CloseClipboard() return d def setText(aString): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_TEXT, aString) w.CloseClipboard()try: def get_desktop(): try: key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, r'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders') return _winreg.QueryValueEx(key, "Desktop")[0] except Exception,e: print eexcept Exception,e1: print e1try: xlsfile = xlrd.open_workbook(get_desktop()+'\\exercise.xls')except Exception,e: print e try: mysheet = xlsfile.sheet_by_name('1')except Exception,e: print e'''try: print('%d rows, %d cols'%(mysheet.nrows, mysheet.ncols)) except Exception,e: print e'''q = ''try: while(1): if(q != getText()): q=getText() else: time.sleep(1) continue flag = 0 for row in range(mysheet.nrows): if(re.search('.*'+q.decode('gb2312')+'.*', mysheet.cell(row,0).value)!=None): os.system('cls') flag = 1 try: print mysheet.cell(row,0).value except Exception,e: print e print 'Answer: '+mysheet.cell(row,7).value setText(mysheet.cell(row,7).value) q = mysheet.cell(row,7).value break if(flag == 0): tsheet = xlsfile.sheet_by_name('2') for row in range(tsheet.nrows): if(re.search('.*'+q.decode('gb2312')+'.*', tsheet.cell(row,0).value)!=None): os.system('cls') flag = 1 try: print tsheet.cell(row,0).value except Exception,e: print e print 'Answer: '+tsheet.cell(row,2).value setText(tsheet.cell(row,2).value.encode('gb2312')) q = tsheet.cell(row,2).value.encode('gb2312') break if(flag == 0): tsheet = xlsfile.sheet_by_name('3') for row in range(tsheet.nrows): if(re.search('.*'+q.decode('gb2312')+'.*', tsheet.cell(row,0).value)!=None): os.system('cls') flag = 1 try: print tsheet.cell(row,0).value except Exception,e: print e print 'Answer: '+tsheet.cell(row,7).value setText(tsheet.cell(row,7).value.encode('gb2312')) q = tsheet.cell(row,7).value.encode('gb2312')except Exception, e: print EmptyClipboard
几点说明:
1、使用的电脑上必须有excel,不能是WPS,因为连接的库是对excel操作的
使用的电脑上必须有excel,不能是WPS,因为连接的库是对excel操作的
使用的电脑上必须有excel,不能是WPS,因为连接的库是对excel操作的
因为很重要所以说三遍
2、遇到这种情况,没出现题目,别慌,Answer还是可信的,这是python编码的问题= =并不知道怎么解决。。
3、测试了600题,解决了好多BUG,应该不会出现用到一半出错的情况。附上测试结果(测试时再吃饭,不免手抖。。)
【相关推荐】
1. 微信小程序源码下载
以上是小程式開發試題庫找答案功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

小程式開發中的PHP權限管理與使用者角色設定隨著小程式的普及和應用範圍的擴大,使用者對於小程式的功能和安全性提出了更高的要求,其中權限管理和使用者角色設定是保證小程序安全性的重要一環。在小程式中使用PHP進行權限管理和使用者角色設定能夠有效地保護使用者的資料和隱私,以下將介紹如何實現此功能。一、權限管理的實作權限管理是指依據使用者的身分和角色,授予不同的操作權限。在小

PHP在小程式開發的頁面跳轉與路由管理隨著小程式的快速發展,越來越多的開發者開始將PHP與小程式開發結合。在小程式開發中,頁面跳轉和路由管理是非常重要的一部分,它能夠幫助開發者實現頁面之間的切換和導航操作。 PHP作為常用的伺服器端程式語言,可以很好地與小程式互動和資料傳遞,下面我們來詳細了解PHP在小程式中的頁面跳轉與路由管理。一、頁面跳轉基

如何在uni-app中實現小程式開發和發布隨著行動互聯網的發展,小程式成為了行動應用程式開發的重要方向。而uni-app作為一個跨平台的開發框架,可以同時支援多個小程式平台的開發,如微信、支付寶、百度等。以下將詳細介紹如何使用uni-app開發和發布小程序,並提供一些具體的程式碼範例。一、小程式開發前準備在開始使用uni-app開發小程式之前,需要先做一些準備工

小程式開發中的PHP安全防護與攻擊防範隨著行動網路的快速發展,小程式成為了人們生活中重要的一部分。而PHP作為一種強大而靈活的後端開發語言,也被廣泛應用於小程式的開發。然而,安全問題一直是程式開發中需要重視的面向。本文將重點放在小程式開發中PHP的安全防護與攻擊防範,同時提供一些程式碼範例。 XSS(跨站腳本攻擊)防範XSS攻擊是指駭客透過向網頁注入惡意腳本

今天我們來學習微信小程式中PHP開發的下拉式選單實作方法。微信小程序是一種輕量級的應用程序,用戶可以在微信裡直接使用,而且不需要下載安裝,非常方便。而PHP是一種非常流行的後端程式語言,也是與微信小程式配合很好的語言。下面我們就來看看如何在微信小程式中使用PHP開發下拉式選單。首先,我們需要準備好開發環境,包括PHP、微信小程式開發工具和伺服器。然後我們

小程式開發中的PHP資料快取與快取策略隨著小程式的快速發展,更多的開發者開始關注如何提高小程式的效能和回應速度。其中一個重要的最佳化手段是使用資料快取來減少對資料庫和外部介面的頻繁存取。而在PHP中,我們可以利用各種快取策略來實現資料快取。本文將介紹PHP中的資料快取原理,並提供幾個常見的快取策略的範例程式碼。一、資料快取原理資料快取是指將資料存放在記憶體中,以

小程式開發中的PHP頁面動畫效果與互動設計導語:小程式是一種在行動裝置上運行的應用程序,能夠提供類似原生應用程式的體驗。而在小程式開發中,PHP作為常用的後端語言,可以為小程式頁面增添動畫效果與互動設計。本文將介紹一些常用的PHP頁面動畫效果與互動設計,並附上程式碼範例。一、CSS3動畫CSS3提供了豐富的屬性與方法,用於實現各種動畫效果。而在小

UniApp實作位元組跳動小程式的開發與上線流程解析位元組跳動小程式作為一種新興的行動應用開發方式,正逐漸在業界流行起來。在開發位元組跳動小程式之前,我們需要了解如何使用UniApp來實現開發和上線的流程。一、UniApp簡介UniApp是一套基於Vue.js開發的以HTML5、App、小程式為多端統一開發的框架,透過編寫一套程式碼,可以同時在多個平台上運行,包括字
