首页 > 软件开发 > 编程语言 >

如何用Python做一个打字速度训练器

来源:互联网 2023-03-17 00:04:43 版权归原作者所有,如有侵权,请联系我们

对于经常使用电脑的人来说,打字是必不可少的了,提高打字速度可以提升工作效率。下面就来教大家如何用Python制作一个打字速度练习器。vJ8办公区 - 实用经验教程分享!

vJ8办公区 - 实用经验教程分享!

如何用Python做一个打字速度训练器?vJ8办公区 - 实用经验教程分享!

如何用Python做一个打字速度训练器?vJ8办公区 - 实用经验教程分享!

工具/原料

  • 电脑一台
  • Python3 环境,fuzzywuzzy模块,python-Levenshtein模块

准备&思路

  • 1

    首先要搭建好Python3 的环境,并安装fuzzywuzzy模块和python-Levenshtein模块(pip install)这里不详细解说。vJ8办公区 - 实用经验教程分享!

    如何用Python做一个打字速度训练器?vJ8办公区 - 实用经验教程分享!

  • 1该信息未经授权抓取自百度经验
  • 2

    制作思路:①我们需要生成26个小写字母,并将其储存到列表中;再把大小写所有字母储存到列表中。②询问用户是否在题目中加入大写字母(默认只有小写字母),并询问出题的字符长度。③根据用户的选项进行随机出题,并计算题目完成时间和答题准确率。vJ8办公区 - 实用经验教程分享!

  • 代码编写

  • 1

    import string,random,time #导入string,random,time模块

    vJ8办公区 - 实用经验教程分享!

    from fuzzywuzzy import fuzz #从fuzzywuzzy中导入fuzz

    vJ8办公区 - 实用经验教程分享!

    letters_low = list(string.ascii_lowercase) #把所有小写英文字母储存在列表中

    vJ8办公区 - 实用经验教程分享!

    # print(letters_low)

    vJ8办公区 - 实用经验教程分享!

    letters_all = list(string.ascii_letters) #把所有大小写英文字母储存在列表中

    vJ8办公区 - 实用经验教程分享!

    # print(letters_all)vJ8办公区 - 实用经验教程分享!

  • 2

    while True: #循环

    vJ8办公区 - 实用经验教程分享!

    yn = str(input('是否要在题目中加入大写字母(Y/N):')) #询问用户并获取输入

    vJ8办公区 - 实用经验教程分享!

    if yn.lower() == 'y' or yn.lower() == 'n': #如果输入了“Y”或“N”,就退出循环,注意用lower()把字母转为小写再进行比较,可以适应大小写

    vJ8办公区 - 实用经验教程分享!

    break

    vJ8办公区 - 实用经验教程分享!

    elif yn.lower() != 'y' and yn.lower() != 'n': #如果输入其他内容,就打印一条提示

    vJ8办公区 - 实用经验教程分享!

    print('请输入“Y”或“N”!n')vJ8办公区 - 实用经验教程分享!

    while True: #循环

    vJ8办公区 - 实用经验教程分享!

    try: #用 try except 语句捕获异常

    vJ8办公区 - 实用经验教程分享!

    n = int(input('请输入题目字符的长度:')) #获取输入

    vJ8办公区 - 实用经验教程分享!

    break #如果没有任何异常就跳出循环

    vJ8办公区 - 实用经验教程分享!

    except ValueError: #这里如果产生类型错误的异常,则会打印提示

    vJ8办公区 - 实用经验教程分享!

    print('请输入整数!n')

    vJ8办公区 - 实用经验教程分享!

    vJ8办公区 - 实用经验教程分享!

    如何用Python做一个打字速度训练器?vJ8办公区 - 实用经验教程分享!

  • 3

    if yn.lower() == 'n': #如果用户输入“N”(或者“n”),就不会在题目中加入大写字母,只有小写字母

    vJ8办公区 - 实用经验教程分享!

    while True:

    vJ8办公区 - 实用经验教程分享!

    letters = '' #空白题目

    vJ8办公区 - 实用经验教程分享!

    for i in range(n): #用循环来生成指定长度的题目

    vJ8办公区 - 实用经验教程分享!

    letter_n = random.randint(0,len(letters_low) - 1) #len(letters_low)是指letters_low的长度,因为Python列表[0]表示列表第一项,所以必须要 减1

    vJ8办公区 - 实用经验教程分享!

    letters = letters_low[letter_n] #进行随机出题(只包含小写字母)

    vJ8办公区 - 实用经验教程分享!

    print('请输入题目中的字母:',letters) #letters是题目

    vJ8办公区 - 实用经验教程分享!

    start = time.time() #记录时间戳(开始计时)

    vJ8办公区 - 实用经验教程分享!

    user_in = str(input('')) #获取用户输入

    vJ8办公区 - 实用经验教程分享!

    end = time.time() #再次记录时间戳(结束计时)

    vJ8办公区 - 实用经验教程分享!

    accuracy = fuzz.ratio(user_in,letters) #用fuzzywuzzy模块比较字符串的相似程度(计算准确率)

    vJ8办公区 - 实用经验教程分享!

    print('答题准确率:',accuracy,'%;','作答用时:',end - start,'秒') #打印准确率和作答用时(时间戳相减)vJ8办公区 - 实用经验教程分享!

    如何用Python做一个打字速度训练器?vJ8办公区 - 实用经验教程分享!

  • 4

    elif yn.lower() == 'y': #如果用户输入“Y”或“y”),就在题目中加入大写字母,区分大小写

    vJ8办公区 - 实用经验教程分享!

    while True:

    vJ8办公区 - 实用经验教程分享!

    letters = '' #空白题目

    vJ8办公区 - 实用经验教程分享!

    for i in range(n): #用循环来生成指定长度的题目

    vJ8办公区 - 实用经验教程分享!

    letter_n = random.randint(0,len(letters_all) - 1)

    vJ8办公区 - 实用经验教程分享!

    letters = letters_all[letter_n] #进行随机出题(包含大小写字母)

    vJ8办公区 - 实用经验教程分享!

    print('请输入题目中的字母:',letters) #letters是题目

    vJ8办公区 - 实用经验教程分享!

    start = time.time() #开始计时

    vJ8办公区 - 实用经验教程分享!

    user_in = str(input('')) #获取用户输入的题目

    vJ8办公区 - 实用经验教程分享!

    end = time.time() #结束计时

    vJ8办公区 - 实用经验教程分享!

    accuracy = fuzz.ratio(user_in, letters) #用fuzzywuzzy模块计算答题准确率(区分大小写)

    vJ8办公区 - 实用经验教程分享!

    print('答题准确率:',accuracy,'%;','作答用时:',end - start,'秒') #打印准确率和作答用时vJ8办公区 - 实用经验教程分享!

    如何用Python做一个打字速度训练器?vJ8办公区 - 实用经验教程分享!

  • 5

    #完整代码vJ8办公区 - 实用经验教程分享!

    import string,random,time #导入string,random,time模块

    vJ8办公区 - 实用经验教程分享!

    from fuzzywuzzy import fuzz #从fuzzywuzzy中导入fuzz

    vJ8办公区 - 实用经验教程分享!

    letters_low = list(string.ascii_lowercase) #把所有小写英文字母储存在列表中

    vJ8办公区 - 实用经验教程分享!

    # print(letters_low)

    vJ8办公区 - 实用经验教程分享!

    letters_all = list(string.ascii_letters) #把所有大小写英文字母储存在列表中

    vJ8办公区 - 实用经验教程分享!

    # print(letters_all)vJ8办公区 - 实用经验教程分享!

    while True: #循环

    vJ8办公区 - 实用经验教程分享!

    yn = str(input('是否要在题目中加入大写字母(Y/N):')) #询问用户并获取输入

    vJ8办公区 - 实用经验教程分享!

    if yn.lower() == 'y' or yn.lower() == 'n': #如果输入了“Y”或“N”,就退出循环,注意用lower()把字母转为小写再进行比较,可以适应大小写

    vJ8办公区 - 实用经验教程分享!

    break

    vJ8办公区 - 实用经验教程分享!

    elif yn.lower() != 'y' and yn.lower() != 'n': #如果输入其他内容,就打印一条提示

    vJ8办公区 - 实用经验教程分享!

    print('请输入“Y”或“N”!n')vJ8办公区 - 实用经验教程分享!

    while True: #循环

    vJ8办公区 - 实用经验教程分享!

    try: #用 try except 语句捕获异常

    vJ8办公区 - 实用经验教程分享!

    n = int(input('请输入题目字符的长度:')) #获取输入

    vJ8办公区 - 实用经验教程分享!

    break #如果没有任何异常就跳出循环

    vJ8办公区 - 实用经验教程分享!

    except ValueError: #这里如果产生类型错误的异常,则会打印提示

    vJ8办公区 - 实用经验教程分享!

    print('请输入整数!n')vJ8办公区 - 实用经验教程分享!

    if yn.lower() == 'n': #如果用户输入“N”(或者“n”),就不会在题目中加入大写字母,只有小写字母

    vJ8办公区 - 实用经验教程分享!

    while True:

    vJ8办公区 - 实用经验教程分享!

    letters = '' #空白题目

    vJ8办公区 - 实用经验教程分享!

    for i in range(n): #用循环来生成指定长度的题目

    vJ8办公区 - 实用经验教程分享!

    letter_n = random.randint(0,len(letters_low) - 1) #len(letters_low)是指letters_low的长度,因为Python列表[0]表示列表第一项,所以必须要 减1

    vJ8办公区 - 实用经验教程分享!

    letters = letters_low[letter_n] #进行随机出题(只包含小写字母)

    vJ8办公区 - 实用经验教程分享!

    print('请输入题目中的字母:',letters) #letters是题目

    vJ8办公区 - 实用经验教程分享!

    start = time.time() #记录时间戳(开始计时)

    vJ8办公区 - 实用经验教程分享!

    user_in = str(input('')) #获取用户输入

    vJ8办公区 - 实用经验教程分享!

    end = time.time() #再次记录时间戳(结束计时)

    vJ8办公区 - 实用经验教程分享!

    accuracy = fuzz.ratio(user_in,letters) #用fuzzywuzzy模块比较字符串的相似程度(计算准确率)

    vJ8办公区 - 实用经验教程分享!

    print('答题准确率:',accuracy,'%;','作答用时:',end - start,'秒') #打印准确率和作答用时(时间戳相减)vJ8办公区 - 实用经验教程分享!

    elif yn.lower() == 'y': #如果用户输入“Y”或“y”),就在题目中加入大写字母,区分大小写

    vJ8办公区 - 实用经验教程分享!

    while True:

    vJ8办公区 - 实用经验教程分享!

    letters = '' #空白题目

    vJ8办公区 - 实用经验教程分享!

    for i in range(n): #用循环来生成指定长度的题目

    vJ8办公区 - 实用经验教程分享!

    letter_n = random.randint(0,len(letters_all) - 1)

    vJ8办公区 - 实用经验教程分享!

    letters = letters_all[letter_n] #进行随机出题(包含大小写字母)

    vJ8办公区 - 实用经验教程分享!

    print('请输入题目中的字母:',letters) #letters是题目

    vJ8办公区 - 实用经验教程分享!

    start = time.time() #开始计时

    vJ8办公区 - 实用经验教程分享!

    user_in = str(input('')) #获取用户输入的题目

    vJ8办公区 - 实用经验教程分享!

    end = time.time() #结束计时

    vJ8办公区 - 实用经验教程分享!

    accuracy = fuzz.ratio(user_in, letters) #用fuzzywuzzy模块计算答题准确率(区分大小写)

    vJ8办公区 - 实用经验教程分享!

    print('答题准确率:',accuracy,'%;','作答用时:',end - start,'秒') #打印准确率和作答用时vJ8办公区 - 实用经验教程分享!

    如何用Python做一个打字速度训练器?vJ8办公区 - 实用经验教程分享!

  • 注意事项

    • 注意缩进和语法
    • 注意一定要安装python-Levenshtein模块,否则fuzzywuzzy模块会出警告

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!vJ8办公区 - 实用经验教程分享!


    标签: python编程

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号