首頁>技術>
前言

目前時間有些不足,等忙完了會再更新此文章,描述對應的演算法或改進程式碼。 當輸出題目時,等待一段時間才會輸出答案,你可以在建構函式中修改對應的值。

一、檔案結構

以txt為字尾的文字結構,同指令碼放置在同一個目錄下 需要注意的是每個題目的前面必須含有一個乘號作為標誌(標記只需要含有對應符號就行) 每一個題目下面必須有一個等號,且等號下一行就是答案,答案只能是一行儲存。(之後或許會改進) 注意:檔案結尾不能含有空行或其他的資訊,尾行必須是一個答案的文字

二、程式碼

# 作者:小狐狸# 背題指令碼import timeimport randomclass FoxRecite(object):    def __init__(self,name):        self.name = name    #檔名        self.lis = []       #從檔案獲取的文字        self.dic = {}       #題目及答案,鍵為題目,值為答案        self.title = ""     #考察的題目        self.answer = ""    #考察的答案        self.num = 25       #輸出時每行的字元個數        self.wait = 5      #輸出題目後,等待wait秒輸出答案        if ".txt" not in self.name: #若輸入的檔名不包含字尾時            self.name += ".txt"    def get(self): #獲取題目及答案        with open(f"{self.name}") as fp:  #讀取檔案            self.lis = fp.readlines() #將每行的內容作為列表元素存入        i = 0        while True: #遍歷儲存的文字資訊            if i==len(self.lis): #結束                break            if "*" in self.lis[i]:  #遇到*號標記時,表明下一行內容為標題                       title = self.lis[i+1]               #記錄題目                title = title.replace("\n","")      #刪除換行符                self.dic[title] = ""                 i += 2                              #跳過*標記及題目            if "=" in self.lis[i]:  #遇到=號標記時,表明下一行內容為答案                answer = self.lis[i+1]                answer = answer.replace("\n","")    #刪除換行符                self.dic[title] = answer                i += 2                              #跳過#標記及題目    def choose(self): #隨機抽取一個題目        pos = random.randint(1,len(self.dic))       #隨機選取的題目位置        num = 1        for i,j in self.dic.items(): #遍歷字典            if pos==num: #找到對應位置時                self.title = i                self.answer = j            num += 1    def exam(self): #輸出題目進行考察        #對題目新增換行符        i = 0        num = 1        lis = list(self.title)        while i<len(self.title):             if num%self.num==0: #達到換行個數時                lis[i] += "\n"#在對應列表的對應元素新增換行符            num += 1            i += 1        #輸出題目        print("《題目》")        print(self.title)        #對答案新增換行符        i = 0        num = 1        lis = list(self.answer)        while i<len(self.answer):             if num%self.num==0: #達到換行個數時                lis[i] += "\n"#在對應列表的對應元素新增換行符            num += 1            i += 1        time.sleep(self.wait)    #等待使用者做答        #輸出答案        print("《答案》")        print("".join(str(i) for i in lis))if __name__=='__main__':    name = input("請輸入檔名:")    f = FoxRecite(name)    f.get() #獲取題目、答案資訊    while True:        print("-------------------")        print("|  0. 退出        |")        print("|  1. 答題        |")        print("-------------------")        flag = int(input("請選擇: "))        if flag==1:            f.choose()      #隨機抽取題目            f.exam()        #進行考察            time.sleep(1) #等待        else:            break
後記

近期有很多朋友透過私信諮詢有關Python學習問題。為便於交流,完整程式碼後臺私信小編01即可

19
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Vue中的methods方法