猫史档案馆


【python不难】听写小工具2.0

用户:碳烤小火龙碳烤小火龙查看:1 回复:2 评论:1 创建时间:2019-01-18T22:20:28


Python 听写工具2.0

啦啦啦!咳咳咳~近日对上次开发的一个工具做了个常规性的升级。。。

上个版本的教程详情:https://shequ.codemao.cn/community/170941

提一下本次升级的重点内容:听写报告生成功能!

这个功能有什么用呢?

让我们来看看~

在上一个版本里,每次听写过后你得到的反馈只有一个对话框。

现在我对这个反馈做出了强化~

 

就像这样,刚刚我听写工具2.0 听写了2个单词+2个中文。并各答对一个错误一个。

它就会自动生成一份报告。厉害吧(快夸我~快夸我!)

还有的就是听取了之前一些人的建议,对听写内容打乱顺序,随机听写。

center_image

好了废话不多说我们来看下怎么做吧?

首先要求大家准备以下几件事情:

  1. Xlsxwriter库。这个不会的童鞋可以 windows+R 输入cmd

打开命令行输入: pip install xlsxwriter. 就可以了。

以上便是新功能的构成库---用这个库我们可以做到创建并写入excel 表格

然后还有什么需要准备呢?

准备2 .基础代码

本教程是对上个教程做出来的实物进行功能添加。

所以想要做出来起码有一份基础版本的成品。

如果没做出来怎么办?没关系。

详情:https://shequ.codemao.cn/community/170941

按照这份教程一步一步来。

 

Ok,让我们来看一下代码:

import pyttsx3
import random
import easygui
import xlsxwriter

speaker = pyttsx3.init()
correct =0
wrong =0
all_number = easygui.integerbox('数量')
number = 0
word = []
number_sheet = 1

#写入excel的原始数据
workbook = xlsxwriter.Workbook('听写数据反馈.xlsx')
worksheet = workbook.add_worksheet('数据')
headings = ['听写单词','单词答案','是否正确']
worksheet.write('A1',headings[0])
worksheet.write('B1',headings[1])
worksheet.write('C1',headings[2])

#获取听写的单词
for x in range (all_number):
        word_now = easygui.enterbox('听写的单词')
        word.append(word_now)
#开始听写     
for x in range (all_number):
        number_sheet += 1
        #number_sheet是我建立计量行数的变量
        number = random.randint(0,len(word) - 1)
        #number 是用于抽取单词随机数的变量
        word_answer = word[number]
        speaker.say('ready to listen word')
        #speaker.say() 括号里的内容会被扬声器发音出来
        speaker.say(word_answer)
        speaker.runAndWait()
        #runAndWait()等待的意思
        answer =easygui.enterbox('刚刚听写的单词')
        #开始要求你开始听写了
        worksheet.write('A'+str(number_sheet),word_answer)
        worksheet.write('B'+str(number_sheet),answer)
        
        #判断正确或错误,并作出对应的行为
        if answer == word_answer:
                worksheet.write("C"+str(number_sheet),'正确')
                easygui.msgbox('正确')
                correct += 1
        else:
                worksheet.write('C'+str(number_sheet),'错误')
                easygui.msgbox('错误')
                wrong += 1
        word.pop(number)
#最后的提示标语
number_sheet += 1 
worksheet.write('A'+str(number_sheet),'听写总量:'+str(all_number))
workbook.close()
easygui.msgbox('你答对了'+str(correct),'个','数据已经保存')

以上就是全部的代码。

大家可以看到我更改了一些变量名。大家自己删掉基础版本的所有变量的初始化。

然后对照着上面来进行变量初始化就好了。

 

好的接下来我来给大家解刨一下一些重点代码~

#写入excel的原始数据
workbook = xlsxwriter.Workbook('听写数据反馈.xlsx')
worksheet = workbook.add_worksheet('数据')
headings = ['听写单词','单词答案','是否正确']
worksheet.write('A1',headings[0])
worksheet.write('B1',headings[1])
worksheet.write('C1',headings[2])

这一段很简单: 首先是创建一个excel 表格:

xlsxwriter.Workbook('听写数据反馈.xlsx')

这段代码的意思就是创立一个 叫听写数据反馈的xlsx文件。

这句代码前面是一个变量。为什么要把它赋成变量,详情在上个教程贴我有做过解释:

例如,你可以写个程序来跟踪罐子里糖豆的数目。因为糖是要被吃掉的,所以罐里糖豆的数目可能会随着时间的推移而改变。你可以使用一个变量来表示不同时间的糖豆数目,而无需在每次糖豆数目变化时重新修改程序。

差不多是这个意思

好了下段代码:

worksheet = workbook.add_worksheet('数据')

这段代码的意思相当于 在我建立好的 excel 表格里面,加一张叫做 ‘数据’ 的纸,‘数据’是名字,没有任何的意义,只是为了方便大家了解它的作用而已。

 

紧接着的:

headings = ['听写单词','单词答案','是否正确']
worksheet.write('A1',headings[0])
worksheet.write('B1',headings[1])
worksheet.write('C1',headings[2])

worksheet.write() 这个语法有两个必须输入的内容,在括号里要求输入的值是,哪行哪列,第二个便是输入什么内容:

看图:

center_image

Tips:输入的内容可以是一个变量,列表第几项。但不能是数字,必须是字符串类型的数据。

 

下一段增加的点是:

#获取听写的单词
for x in range (all_number):
        word_now = easygui.enterbox('听写的单词')
        word.append(word_now)
#开始听写     
for x in range (all_number):
        number_sheet += 1
        #number_sheet是我建立计量行数的变量
        number = random.randint(0,len(word) - 1)
        #number 是用于抽取单词随机数的变量
        word_answer = word[number]
        speaker.say('ready to listen word')
        #speaker.say() 括号里的内容会被扬声器发音出来
        speaker.say(word_answer)
        speaker.runAndWait()
        #runAndWait()等待的意思
        answer =easygui.enterbox('刚刚听写的单词')
        #开始要求你开始听写了
        worksheet.write('A'+str(number_sheet),word_answer)
        worksheet.write('B'+str(number_sheet),answer)
        
        #判断正确或错误,并作出对应的行为
        if answer == word_answer:
                #如果输入等于答案那么就写入 C列 第 number_sheet(for 循环第一句时候出现过这个变量,是用于计量该把数据写入第几行的值)行,写入数据为正确。
                worksheet.write("C"+str(number_sheet),'正确')
                easygui.msgbox('正确')
                correct += 1
        else:
                #如果输入等于答案那么就写入 C列 第 number_sheet(for 循环第一句时候出现过这个变量,是用于计量该把数据写入第几行的值)行,写入数据为错误。 
                worksheet.write('C'+str(number_sheet),'错误')
                easygui.msgbox('错误')
                wrong += 1
        #列表后面跟着的pop () 括号里的是删除的项
        word.pop(number)
#最后的提示标语
number_sheet += 1 
#写入总量
worksheet.write('A'+str(number_sheet),'听写总量:'+str(all_number))
workbook.close()
easygui.msgbox('你答对了'+str(correct),'个','数据已经保存' 

上面的注释我都写的非常清楚。

就不一一解释了。最后的效果展示一下:

好啦,本期就到这里了。之后发现有什么补充不到位的我会在下方帖子进行补充。

如果大家在开发 这个听写工具的时候碰到了什么困难 欢迎在下方评论区留言

也可以喵QQ 私聊: 2596086597

谢谢大家~!

小火龙要去炭烤了。


回复

上一页1 页 / 共 1下一页
碳烤小火龙碳烤小火龙

啦啦啦

 

点赞0


评论


wwwloadwwwload

emotion_编程猫_加油

点赞0


评论