凡科网免费建站

凡科网免费建站

凡科网免费建站:使用Python编写打字训练小程序

你眼中的程序猿

别人眼中的程序猿 是什么样子 打字如飞 各种炫酷的页面切换 一个个好似黑客般的网站破解。可现实呢 二指禅的敲键盘 写一行代码 查半天百度…那么如何能让我们从外表上变得更像一个程序猿呢 当然是训练我们的打字速度了啊

训练打字

很羡慕那些盲打速度炒鸡快的人 看起来就比较炫酷。但很多IT男打字速度并不快 甚至还有些二指禅的朋友们 太影响装13效果了。那么今天我们就来使用Python写一个打字训练的小工具吧。先来看看使用效果…

我们使用Python内置的GUI模块Tkinter来编写一个打字测试的小工具。点击开始测试 系统随机生成20个字符串 然后用户按照题目进行作答后 点击交卷 系统将对比我们的输入结果 来计算正确率 并使用涂色将系统与用户的答案进行对比。

生成随机数

首先我们需要生成键盘上的字符。当然我们可以0-9 A-Z,a-z,!-)等等的一个个枚举出键盘上的按键。但有没有更快捷的操作呢 你需要了解下string模块。这里介绍下几个string默认提供的内容

import string# 列举数字string.digits 0123456789 # 列举小写字母string.ascii_lowercase abcdefghijklmnopqrstuvwxyz # 列举大写字母string.ascii_uppercase ABCDEFGHIJKLMNOPQRSTUVWXYZ # 列举所有标点符号string.punctuation ! #$% \ ()* ,-./:; ? [\\]^_ {|}~ # 列举所有空白符string.whitespace \t\n\r\x0b\x0c string.ascii_letters string.ascii_lowercase string.ascii_uppercasestring.printable string.ascii_letters string.digits string.whitespace string.punctuation

剩余的内容 我们只需要进行相关读写判断即可 整体代码如下

# -*- coding: utf-8 -*-# Author : 王翔# JianShu : 清风Python# Date : 2019/8/25 20:59# Software : PyCharm# version Python 3.7.3# File : TypingTest.pyfrom tkinter import *import randomimport stringfrom datetime import datetimeroot Tk()root.title( Python打字练习题 By:清风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)class TypingTest: def __init__(self): self.time_list [] self.letterNum 20 self.letterStr .join(random.sample(string.printable.split( )[0], self.letterNum)) self.examination_paper def time_calc(self): self.time_list.append(datetime.now()) yield def create_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 ) def score(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() if len(self.examination_paper) self.letterNum: v3.set( 输入数据有误 作答数大于考题数 ) else: right_num 0 for z in range(len(self.examination_paper)): if self.examination_paper[z] self.letterStr[z]: right_num 1 else: wrong_index.append(z) if right_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(lambda x: 4. str(x 3), wrong_index)) text.insert(END, 作答 %s\n % self.examination_paper) for i in range(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()

我们将最终的代码 打包成exe工具 即可脱离python环境 在单独的电脑上执行exe文件玩我们自己的打字练习题了

The End

OK,今天的内容就到这里 如果觉得内容对你有所帮助 欢迎点击文章右下角的“在看”。 期待你关注我的公众号清风Python 如果觉得不错 希望能动动手指转发给你身边的朋友们。

作者 清风Python

 

相关推荐



扫描二维码分享到微信

在线咨询
联系电话

400-888-8866