盲法介绍及python盲打练习系统

一:盲打简介与优点

  简介:盲打是指打字的时候不用看键盘或看稿打字时的视线不用来回于文稿和键盘之间的行为,盲打可使输入的速度增加。盲打要求打字的人对于键盘有很好的定位能力。

  优点:通过练习盲打来提高打字的速度,让自己的手速跟上自己思维的速度,做到心到手到,这样不仅可以提高效率,而且可以提高自己的注意力和思维的活跃程度。ACM集训也对盲打有要求。

  盲打无论对于打字员还是程序员来说,都是很有必要掌握的技巧,设想一下,同样一个算法,除去思路,别人用一两分钟写完了,你加上看键盘的时间却用了七八分钟,岂不是很浪费时间呢。有时候差距就是这样拉大的。


二:如何练习

1.手指位置

  五指微下屈,两个大拇指控制空格键,左手另四指分别放在A、S、D、F四键上,右手另四指分别放在J、K、L、:键上,这样左右两个食指就分别放在F键和J键,这两个键上都有上小凸起,用手一摸就摸到了。

2.手指分工

  两个拇指只负责一个空格键,另外六指都是控制一个竖排的键,按照键盘的位置,向右倾斜,左手小拇指是Q、A、Z三键,右手小拇指是P、:、?三键,为什么说是六指呢?因为两个食指的任务繁重一点,食指要控制两排竖排的键,如:右食指是U、J、M、Y、H、N六个键,左食指是R、F、V、T、G、B六键。这样十指的分工就完成了,只要记住各键的位置和各指的按键就可以练习盲打了。

3.盲打技巧

  现在大部分用的是拼音输入法的盲打,但是大部分人用的只有食指,虽然也可以时间长进行记忆,但是并不适用与正确的盲打方法。
  有关五笔,形码的盲打就不介绍了。

4. 图片



三:键盘字母排列顺序的口诀

  众所周知,计算机键盘字母是按一种杂乱无章的顺序排列的。要死记硬背记住26个无序字母的排列顺序,显然很困难。而不记住键盘字母的排列顺序,势必影响学习打字和提高打字速度。(当初键盘设计者就是怕打字太快,损坏键盘,故意打乱了字母的排列顺序。)

  下面的口诀可以快速记录键盘位置:

  七(qī)碗(wǎn)鹅(é)肉(ròu)汤(tāng),已( yǐ)无(wú)一(yī)我(wǒ)婆(pó)。
  爱(ài)上(shǎng)豆(dòu)腐(fǔ)羹(gēng)。回(huí)家(jiā)快(kuài)乐(lè)。

四:python打字练习系统

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

root = Tk()
root.title("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))
				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()

效果如下:

posted @ 2019-11-30 13:27  一只帅气的IT小昂  阅读(1341)  评论(0编辑  收藏  举报