from tkinter import *
import random
import string
from 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 = 20self.letterStr = ''.join(random.sample(string.printable.split(' ')[0], self.letterNum))self.examination_paper = ''def time_calc(self):self.time_list.append(datetime.now())yielddef 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]).secondsself.examination_paper = v2.get()if len(self.examination_paper) > self.letterNum:v3.set("输入数据有误,作答数大于考题数")else:right_num = 0for z in range(len(self.examination_paper)):if self.examination_paper[z] == self.letterStr[z]:right_num += 1else: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()

Python:练习打字游戏相关推荐

  1. python小游戏开发,使用python实现英语打字游戏

    需求分析 英文打字小游戏,要有多界面交互,界面整洁.美观,可调节游戏等级难度,可配置游戏信息. 要有游戏分数,游戏时间,动画特效,背景音乐,不同游戏等级的历史最高分记录. 拼写成功的英文单词显示中文意 ...

  2. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇)

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇) 代码实现 窗口类 小车类 玩家类 电脑类 赛道类 小树类 打字类 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) ...

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

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇) 资源下载 完整代码 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) Python 打字小游戏开发,来体验不一样的 ...

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

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) 前言 游戏素材准备 游戏项目结构 项目里面的类说明 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇) Python ...

  5. python:pygame小游戏(三)—— 打字游戏

    代码一:实现字符下落的基本功能 """ 打字游戏 1. 声明列表word.xx(x坐标值).yy(y坐标值) 2. 创建init()函数,初始化三个列表 3. 第四部分: ...

  6. python打字游戏增加开始页面_pygame实现打字游戏

    本文实例为大家分享了pygame实现打字游戏的具体代码,供大家参考,具体内容如下 1.基本代码 下面的代码完成了每一秒在界面的顶部随机生成一个新的字母 # -*- coding=utf-8 -*- i ...

  7. pygame简单的俄罗斯方块游戏和简单的打字游戏

    1.pygame简单的俄罗斯方块游戏 一.对战的方块管理 定义一个BlockManage管理对战的方块 根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在 ...

  8. java d打字游戏_java实现快速打字游戏

    本文实例为大家分享了java实现打字游戏的具体代码,供大家参考,具体内容如下 import java.util.Random; import java.util.Scanner; public cla ...

  9. python列表两两相减_用Python做打字软件,让你的打字快如闪电!附超详解和源码链接

    版本正在更新--,目前1.3.2 项目结果 GIF制作十分粗劣,自己看着都揪心,不过基本看清楚了 详细解释 下面我会详细解释一下,如果不看,就不看吧,直接向下看源码,传送门 基本结构+标题标签+提示+ ...

  10. 《Python和Pygame游戏开发指南》——2.16 pygame.display.update()函数

    本节书摘来自异步社区<Python和Pygame游戏开发指南>一书中的第2章,第2.16节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区" ...

最新文章

  1. web3j官网的完整中文翻译(java开发区块链以太坊应用的开源类库)
  2. C++ 内存泄漏检测:valgrind和AddressSanitizer
  3. c2065 未声明的标识符 解决ok
  4. 周梁伟:聊天室架构 如何跳出传统思维来设计?
  5. springboot websocket发送和接收消息代码资源下载
  6. 计算机教师应该读的书籍,信息技术教师读书心得
  7. vue限制只能输入数字_vue的input中,如何限制只能输入number
  8. html+input改变图标,JS Input里添加小图标的两种方法
  9. python写ini文件_Python读写ini文件
  10. 全面详解互联网企业开放API的 “守护神”
  11. python文件或目录损坏且无法读取,data\sogoupy\verify.ini已损坏且无法读取,啥意思?谢谢?...
  12. APP在推广之渠道为王(二 )
  13. MES系统在汽车零部件行业的应用
  14. js点击弹框优酷视频,并控制视频播放和暂停及重新载入的方法
  15. NOI Online 2020 Round1 准备计划
  16. 蓝牙4.0BLE中协议栈详解
  17. ubuntukylin-16.04安装
  18. 分段函数c语言编程noi,NOI1.4-13分段函数
  19. JAVA大厅有100盏灯,100人100盏灯(详解)
  20. shell教程(二) 四种工作模式

热门文章

  1. 计算机二级该怎么学,计算机二级自学要多久 怎样复习
  2. 阿里云邮箱发送邮件,多人多附件
  3. 【微信小程序】史上最全的《Java面试题及解析》,理论+实战双管齐下!
  4. 【转】中国人唯一不认可的成功——就是家庭的和睦,人生的平淡
  5. 2004中国城市综合竞争力排名
  6. 如何提升w ndows10系统网速,Win10专业版系统网速慢的解决方法
  7. bash-記錄修改OFS和ORS讓$0重新計算
  8. 伪元素写竖线_[CSS] 用伪元素:after实现分割线和气泡
  9. 非线性规划模型、0-1整数规划模型
  10. flutter 基础知识点总结