1、需要生成键盘上的字符,string模块生成字符。
当然可以0-9,A-Z,a-z!等等,把键盘上的按钮一个个举出来。
importstring #列举数字 string.digits >>>'0123456789' #列出小写字母 string.ascii_lowercase >>>'abcdefghijklmnopqrstuvwxyz' #列举大写字母 string.ascii_uppercase >>>'ABCDEFGHIJKLMNOPQRSTUVWXYZ' #列出所有标点符号 string.punctuation >>>'!"#$%&\'()*+,-./:;?@[\\]''''|##39; #列出所有空白符 string.whitespace >>>'\t\n\r\x0b\x0c' string.ascii_letters= string.ascii_lowercase+string.ascii_uppercase string.printable= string.ascii_letters+string.digits +string.whitespace+string.punctuation
2、判断剩余内容的相关读写。
fromtkinterimport* importrandom importstring fromdatetimeimportdatetime root=Tk() root.title("Python打字练习Bython打字练习:清风Python") Label(root,text='系统题目:').grid(row=0) Label(root,text='用户回答:').grid(row=1) Label(root,text='考试成绩:').grid(row=2) v1=StringVar() v2=StringVar() v3=StringVar() v1.set("点击'开始测试'按钮开始出题") e1=Entry(root,text=v1,state='disabled',width=40,font=('宋体',14)) e2=Entry(root,textvariable=v2,width=40,font=('宋体',14)) e3=Label(root,textvariable=v3,width=40,font=('宋体',10),foreground='red') e1.grid(row=0,column=1,padx=10,pady=20) e2.grid(row=1,column=1,padx=10,pady=20) e3.grid(row=2,column=1,padx=10,pady=20) text=Text(root,width=80,height=7) text.grid(row=4,column=0,columnspan=2,pady=5) classTypingTest: def__init__(self): self.time_list=[] self.letterNum=20 self.letterStr=''.join(random.sample(string.printable.split('')[0],self.letterNum)) self.examination_paper='' deftime_calc(self): self.time_list.append(datetime.now()) yield defcreate_exam(self): text.delete(0.0,END) #e3.delete(0,END) v1.set(self.letterStr) self.time_calc().__next__() text.insert(END,"开始:%s\n"%str(self.time_list[-1])) user_only1.config(state='active') defscore(self): wrong_index=[] self.time_calc().__next__() text.insert(END,"结束:%s\n"%str(self.time_list[-1])) use_time=(self.time_list[-1]-self.time_list[-2]).seconds self.examination_paper=v2.get() iflen(self.examination_paper)>self.letterNum: v3.set("输入数据错误,答题数大于考题数") else: right_num=0 forzinrange(len(self.examination_paper)): ifself.examination_paper[z]==self.letterStr[z]: right_num+=1 else: wrong_index.append(z) ifright_num==self.letterNum: v3.set("完全正确,正确率%.2f%用时:%s秒"%((right_num*1.0)/self.letterNum*100,use_time)) else: v3.set("正确率%.2f%用时:%s秒"%((right_num*1.0)/self.letterNum*100,use_time)) #e2.delete(0,END) text.insert(END,"题目:%s\n"%self.letterStr) tag_info=list(map(lambdax:'4.'+str(x+3),wrong_index)) text.insert(END,"作答:%s\n"%self.examination_paper) foriinrange(len(tag_info)): text.tag_add("tag1",tag_info[i]) text.tag_config("tag1",background='red') user_only1.config(state='disabled') TypingTest=TypingTest() Button(root,text="开始测试",width=10,command=TypingTest.create_exam).grid(row=3,column=0,sticky=W,padx=30,pady=5) user_only1=Button(root,text="交卷",width=10,command=TypingTest.score,state='disable') user_only1.grid(row=3,column=1,sticky=E,padx=30,pady=5) mainloop()
3、将最终代码打包成exe工具,可以脱离python环境,在单独的电脑上执行exe文件,即可打字练习。
以上是Python实现打字训练程序的方法,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。