使用Python编写打字训练小程序

Python实现练打字小程序 新人第一天,话不多说,直接上源码。 阅读详情
你眼中的程序猿
5847426-6bece6b926a0c25d.gif
你眼中的程序猿

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

训练打字

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


5847426-f05e78e5d839978b.gif
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_uppercase
string.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.py

from tkinter import *
import random
import string
from datetime import datetime

root = 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文件玩我们自己的打字练习题了:


5847426-3bdf8c15d3063e19.gif
python打字exe
The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。
希望每周一至五清晨的7点10分,都能让清风Python的知识文章叫醒大家!谢谢……

5847426-612ae1f58118218c.png
清风Python

期末人福音——用Python写个自动批改作业系统 最近一些软件的搜题、智能批改类的功能要下线。退1024步讲,要不要自己做一个自动批改的功能啊?万一哪天孩子要用呢!昨晚我做了一个梦,梦见我实现了这个功能,如下图所示:功能简介:作对了,能打对号;做错了,能打叉号;没做的,能补上答案。醒来后,我环顾四周,赶紧再躺下,希望梦还能接上。基本思路其实,搞定两点就成,第一是能识别数字,第二是能切分数字。首先得能认识5是5,这是前提条件,其次是能找到5、6、7、8这些数字区域的位置。前者是图像识别,后者是图像切割。•对于图像识别,一般的套路是下面这样的(CNN卷积神经网 阅读详情

相关推荐

看我使用Python秒变高级程序员

当然是祝大家新年快乐啦,哈哈哈哈今天都已经初二了,你还在卷嘛?反正我这几天一直没有卷,哈哈哈哈哈分享几个祝福语吧。

阿玥的小博客 4238

python3 打字小游戏

打字游戏

事实证明的博客 1439

Python编写打字训练小程序

你眼中的程序猿 别人眼中的程序猿,是什么样子?打字如飞,各种炫酷的页面切换,一个个好似黑客般的网站破解。可现实呢? 二指禅的敲键盘,写一行代码,查半天百度…那么如何能让我们从外表上变得更像一个程序猿呢?当然是训练我们的打字速度了啊! 训练打字 很羡慕那些盲打速度炒鸡快的人,看起来就比较炫酷。但很多IT男打字速度并不快,甚至还有些二指禅的朋友们,太影响装13效果了。那么今天我们就来使用Python写一个打字训练的小工具吧。先来看看使用效果… 我们使用Python内置的GUI模块Tkinter来编写一个打字测试的小工具。点击开始测试,系统随机生成20个字符串,然后用户按照题目进行作答后,点击交

Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇)

在前面第二篇文章中已简要地对类里面的功能有所说明,现在主要就剩下 configuration_project()函数和monitoring_data()函数了。 configuration_project()函数就是依次进行实例化、调用功能、创建玩家(自己)和电脑玩家对象,开启线程调用死循环的方法; 而monitoring_data()函数里面就是实时进行监测小车移动时的数据变化,在这里面time....

qq_59142194的博客 2955

冰河木马实验(V8.4)

简述: 百科词条 冰河木马开发于1999年,跟灰鸽子类似,在设计之初,开发者的本意是编写一个功能强大的远程控制软件。但一经推出,就依靠其强大的功能成为了黑客们发动入侵的工具,并结束了国外木马一统天下的局面,跟后来的灰鸽子等等成为国产木马的标志和代名词。 冰河的服务器端程序为G-server.exe,客户端程序为G-client.exe,默认连接端口为7626。其中攻击者使用G-client.e...

野原新之助 1万+

工业异常检测评价指标(I-AUROC、PRO等)

模型评价指标:TPR、FPR、Recall、ROC、AUC、AUROC、IoU、PRO、AUPRO等

qq_1532145264的博客 7434

支持pygame的python有哪些版本_Python、PyGame游戏项目

英文打字游戏项目需求分析英文打字小游戏,要有多界面交互,界面整洁、美观。可调节游戏等级难度,可配置游戏信息。要有游戏分数,游戏时间,动画特效,背景音乐,不同游戏等级的历史最高分记录。拼写成功的英文单词显示中文意思。支持长按回删键[backspace],快速删除单词字母。多种游戏困难等级让玩家可以侧重提高打字速度、或者练习英语单词。游戏开始界面游戏开始选项游戏设置选项游戏历史最高选项实现各选项点击进...

weixin_39860166的博客 796

智能车竞赛走马观碑组:如何高效识别目标板并优化绕行策略(附实战代码)

本文深入探讨了智能车竞赛走马观碑组中,如何构建从图像识别到路径决策的全栈优化方案。针对目标板识别与绕行策略的核心难点,文章详细解析了基于MobileNetV2的高效识别流水线、结合预瞄点与纯追踪算法的平滑路径规划,以及横向与纵向协同控制策略,并提供了实战代码与调试指南,旨在全面提升小车的比赛表现。

o5p6q的博客 884

Python打字练习小游戏源代码

Python打字练习小游戏源程序,随机产生一串字符,可对打字练习的正确率和时间进行统计,运行截图如下: from tkinter import * import random import string from datetime import datetime root = Tk() root.title("Python打字练习 By:Python代码狂人") Label(root, text='系统题目:').grid(row=0) Label(root, text='用户作答:').grid(ro

Python代码大全 5890

如何利用air780e与stm32c8c6进行通信实现给手机发送一条英文短信的功能?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1237

第25节:cesium 地形开挖综合实例-地下管网(含源码+视频)

地图开挖综合示例,包括底图切换,绘制开挖区域,移除开挖区域,影藏地图等等。

qq_29384639的博客 1782

python打字_Python编写打字训练小程序

你眼中的程序猿别人眼中的程序猿,是什么样子?打字如飞,各种炫酷的页面切换,一个个好似黑客般的网站破解。可现实呢? 二指禅的敲键盘,写一行代码,查半天百度…那么如何能让我们从外表上变得更像一个程序猿呢?当然是训练我们的打字速度了啊!训练打字很羡慕那些盲打速度炒鸡快的人,看起来就比较炫酷。但很多IT男打字速度并不快,甚至还有些二指禅的朋友们,太影响装13效果了。那么今天我们就来使用Python写一个打...

weixin_39727743的博客 309

SAP 发票凭证反向冲销

发票凭证反向冲销: 业务模拟: MIRO发票校验后,生成发票凭证号: 事务代码MR8M,输入凭证号码,反向冲销(类似于MIGO入库后的反向冲销): 此时进入MIRO查看,发现冲销成功,可以再次做MIRO发票校验: ...

willieyuan的博客 7708

python打字_使用Python编写打字训练小程序

你眼中的程序猿别人眼中的程序猿,是什么样子?打字如飞,各种炫酷的页面切换,一个个好似黑客般的网站破解。可现实呢? 二指禅的敲键盘,写一行代码,查半天百度…那么如何能让我们从外表上变得更像一个程序猿呢?当然是训练我们的打字速度了啊!训练打字很羡慕那些盲打速度炒鸡快的人,看起来就比较炫酷。但很多IT男打字速度并不快,甚至还有些二指禅的朋友们,太影响装13效果了。那么今天我们就来使用Python写一个打...

weixin_39597399的博客 434

使用VNA(Vector Network Analyzer)对S参数进行去嵌(二)

无论是使用 EM 仿真工具创建的简化模型(如一段理想传输线)还是复杂模型用于测试夹具,现在都需要使用该 S 参数模型执行去嵌入过程。

小孟同学的博客 6109

SI好文翻译:铜箔表面纹理对损耗的影响:一个有效的模型(一)

Paul G. Huray发表在DesignCon2010的提出铜箔表面雪球模型的论文。第一部分说明之前的铜箔表面模型只适用于5GHz以内,超过5GHz后就不再准确。

小孟同学的博客 2172

[转载] 使用Python编写打字训练小程序

参考链接: 在Python中切换大小写(替换) 你眼中的程序猿 别人眼中的程序猿,是什么样子?打字如飞,各种炫酷的页面切换,一个个好似黑客般的网站破解。可现实呢? 二指禅的敲键盘,写一行代码,查半天百度…那么如何能让我们从外表上变得更像一个程序猿呢?当然是训练我们的打字速度了啊! 训练打字 很羡慕那些盲打速度炒鸡快的人,看起来就比较炫酷。但很多IT男打字速度并不快,甚至还有些二指禅的朋友们,太影响装13效果了。那么今天我们就来使用Python写一个打字训练的小工具吧。先来看看使用效果…...

ld909的博客 375

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用Python编写打字训练小程序升级版

升级版:主要功能是根据data.txt文件中的内容进行拼写训练 type.py # -*- coding: utf-8 -*- # @Software : PyCharm # @version :Python 3.7.3 # @File : type.py from tkinter import * import random import string from datetim...

小妖666个人笔记 822

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python之自练小程序(字符串方法)

# 编写者:song # 编写for循环,利用索引遍历出每一个字符'''msg='hello egon 666'for i in msg: print(i)''' # 编写while循环,利用索引遍历出每一个字符'''msg = 'hello egon 666' i = 0 while i<len(msg): print(msg[i]) i+=1'''# msg='hello

基尔霍夫的猫 672

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python小程序 --指法练习

python实现的键盘指法小程序

波波诸葛伟 1530

Python为你规划十一黄金周假期!

放假?放什么假? 只有对社会没有用的人才会放假! 像我这样国家栋梁之才怎么能放假? 我就是来为人民服务的——加班、干活! 最近项目太忙了,今天娱乐下就不更文章了,提前祝大家十一快乐,哈哈。 往期文章精选 Android手机打造你的Python&Java开发工具! 来看看Python炫酷的颜色输出与进度条打印 Python开发英语单词自测工具,助你逆袭单词王! 使用Python开发小说下...

清风Python 488

python自动化办公入门书籍-Python如此神奇,让繁琐工作自动化 (文中含Python基础)...

原标题:Python如此神奇,让繁琐工作自动化 (文中含Python基础)"你在2个小时里完成的事,我们3个人要做两天。”21世纪早期,我的大学室友在一个电子产品零售商店工作。商店偶尔会收到一份电子表格,其中包含竞争对手的数千种产品的价格。由3个员工组成的团队,会将这个电子表格打印在一叠厚厚的纸上,然后3个人分一下。针对每个产品价格,他们会查看自己商店的价格,并记录竞争对手价格较低的所有...

weixin_37988176的博客 114
上一篇: Python中lambda的使用,与它的三个好基友介绍!
下一篇: Python批量检测服务器端口可用性与Socket函数使用
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值