搜尋
首頁微信小程式小程式開發小程式開發試題庫找答案功能

    期末考试考完无聊在刷试题库。然后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. 微信小程序源码下载

2. 微信小程序demo:仿商城

以上是小程式開發試題庫找答案功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版