前言

利用Python设计一款可以用查询、朗读、添加、测试的英语词典小程序是非常方便的

主要功能

查询、添加、修改、测验、朗读、退出

主要思路

其数据类型应为字典类型,导入英语词典文本文档(dict.txt),通过正则表达式修改其格式,再通过dict()改为字典类型,通过dict.get()查询,以追加模式打开dict.txt,进行添加,用键值对比较来进行测试。设计菜单函函数menu()来选择相应功能

主要函数

read_dict()            处理dict.txt

showmenu()         显示菜单

select()                  查询单词

add()                      添加单词

sayword(str)          朗读单词

quit()                       退出

main()                     主函数

主要流程

主要过程及代码

一、导入词典,建立其文本文档(dict.txt),并将编码格式改为utf-8

二、read_dict()函数

使用正则表达式来处理dict.txt,使其后续可以转为字典类型

def read_dict():fo = open("dict.txt","r",encoding="utf-8")dt = fo.read()fo.close()pattern = re.compile(r"([a-z\.-]+)\s([^\n]+)\n",re.I|re.S)#查找:英文+空格+字符串+\ndt=pattern.findall(dt)return dict(dt)#将[(英文,字符串),...]转为字典

在使用正则表达式时,应先引入 import re,正则表达式代码如下

 pattern = re.compile(r"([a-z\.-]+)\s([^\n]+)\n",re.I|re.S)

三、showmenu() 显示菜单函数

def showmenu():menu = """欢迎使用词典1.查询2.添加3.修改4.测验:请根据读音拼写单词9.退出"""print(menu)

四、select() 查询函数

def select(n=0):dict4=read_dict()    str1 = input("输入查询的单词:")value = dict4.get(str1,"字典库中未找到")if value == "字典库中未找到":print("字典库中未找到,请输入该单词的中文翻译>>>")add(str1)else:#默认显示查询结果,并发音print(value)sayword(str1)if n !=0:   #不能按行修改,只能将dict变量重新写入dict.txt文件中str2 = input("输入要修改的中文单词:")if str2 !='':dict4[str1] = str2fo = open("dict.txt","w+")str3 = str(dict4).replace(",",",\n").replace(":"," ")str3 = re.sub("[\{\}']","",str3)fo.write(str3)fo.close()

五、sayword(str) 朗读函数

文本朗读需要调用第三方库 import pyttsx3 ,安装详细过程,请参考主页Python笔记七

def sayword(str):engine = pyttsx3.init()volume = engine.getProperty('volume')engine.setProperty('volume', 0.6)engine.setProperty('rate', 120)voices = engine.getProperty('voices')engine.setProperty('voice', voices[1].id)engine.say(str)engine.runAndWait()

六、add()函数 添加函数

使用追加的模式,打开dict.txt,自动追击在其文本文档后

def add(str1=""):fo = open("dict.txt","a+")if str1=="":str1 = input("输入要添加的英文单词:")str2 = input("输入要添加的中文单词:")str="\n{} {}".format(str1,str2)fo.write(str)fo.close()return

七、quit()函数 退出函数

这个直接调用exit()函数即可

def quit():print("感谢使用")exit()

八、test()函数 测验函数

使用random.sample()函数来获取字典中的随机值,再通过if判断键与用户输入的值是否匹配即可

注意Python3.x版本即将弃用random.sample()函数

def test():dict4=read_dict()score = 0tmpwd = random.sample(dict4.items(),20)#从字典dict4中随机取20个key#tmpwd = random.choicefor i in range(len(tmpwd)):#word = dict4.popitem()#3.7之前,返回一个随机键值对word = tmpwd[i]        sayword(word[0])str1 = input("请根据读音拼写单词(按回车重新听读音,输入h进行提示,输入q退出):")while str1 =="" or str1=='h':if str1 == 'h':print(word)sayword(word[0]) str1 = input("请根据读音拼写单词(按回车重新听读音,输入h进行提示,输入q退出):")if str1=='q':breakelif str1==word[0]: score+=5print("回答正确!",end = "")else:print("回答错误,加油!",end = "")print("你当前分数为{}".format(score))

九、main()函数

主函数主要是根据用户输入来执行相应操作

def main():#显示程序功能showmenu()n = (input("请输入相应功能序号:"))#根据输入调用相应功能:查询select(),添加add(),退出quit()while 1:if n =='1':select()elif n =='2':add()elif n =='3':select(1)elif n =='4':test()elif n =='9':quit()else:print("输入有误!")n = (input("请输入相应功能序号:"))

至此所有函数及其代码展示结束

完整代码

# 英文词典
from fileinput import close
from sys import getallocatedblocks
import pyttsx3
import re
import random
import pprint
def showmenu():menu = """欢迎使用词典1.查询2.添加3.修改4.测验:请根据读音拼写单词9.退出"""print(menu)
def read_dict():fo = open("dict.txt","r",encoding="utf-8")dt = fo.read()fo.close()pattern = re.compile(r"([a-z\.-]+)\s+(.+)",re.I)#查找:英文+空格+字符串+\ndt=pattern.findall(dt)#print(dt)return dict(dt)#将[(英文,字符串),...]转为字典
def select(n=0):dict4=read_dict()    str1 = input("输入查询的单词:")value = dict4.get(str1,"字典库中未找到")if value == "字典库中未找到":print("字典库中未找到,请输入该单词的中文翻译>>>")add(str1)else:#默认显示查询结果,并发音print(value)sayword(str1)if n !=0:   #不能按行修改,只能将dict变量重新写入dict.txt文件中str2 = input("输入要修改的中文单词:")if str2 !='':dict4[str1] = str2fo = open("dict.txt","w+")str3 = str(dict4).replace(",",",\n").replace(":"," ")str3 = re.sub("[\{\}']","",str3)fo.write(str3)fo.close()#return str1
def sayword(str):engine = pyttsx3.init()volume = engine.getProperty('volume')engine.setProperty('volume', 0.6)engine.setProperty('rate', 120)voices = engine.getProperty('voices')engine.setProperty('voice', voices[1].id)engine.say(str)engine.runAndWait()
def add(str1=""):fo = open("dict.txt","a+")if str1=="":str1 = input("输入要添加的英文单词:")str2 = input("输入要添加的中文单词:")str="\n{} {}".format(str1,str2)fo.write(str)fo.close()return
def quit():print("感谢使用")exit()
def main():#显示程序功能showmenu()n = (input("请输入相应功能序号:"))#根据输入调用相应功能:查询select(),添加add(),退出quit()while 1:if n =='1':select()elif n =='2':add()elif n =='3':select(1)elif n =='4':test()elif n =='9':quit()else:print("输入有误!")n = (input("请输入相应功能序号:"))
def test():dict4=read_dict()score = 0tmpwd = random.sample(dict4.items(),20)#从字典dict4中随机取20个key#tmpwd = random.choicefor i in range(len(tmpwd)):#word = dict4.popitem()#3.7之前,返回一个随机键值对word = tmpwd[i]        sayword(word[0])str1 = input("请根据读音拼写单词(按回车重新听读音,输入h进行提示,输入q退出):")while str1 =="" or str1=='h':if str1 == 'h':print(word)sayword(word[0]) str1 = input("请根据读音拼写单词(按回车重新听读音,输入h进行提示,输入q退出):")if str1=='q':breakelif str1==word[0]: score+=5print("回答正确!",end = "")else:print("回答错误,加油!",end = "")print("你当前分数为{}".format(score))
dict4 = {}#全局变量字典
dict4=read_dict()#将正则表达式执行后的dt赋值给全局变量dict4
#print(dict4)
#pprint.pprint(dict4)
main()

功能测试

至此英语字典的所有基本功能已经完成,本程序的特点在于通过正则表达式来代替了replace()函数,并在字典原基础上增加了文本朗读功能,基本完成了一个词典程序功能的开发。

Python程序设计实例:可查询修改、添加、测验、朗读的英语词典相关推荐

  1. python程序实例教程基础-Python程序设计实例教程

    图书简介 配套资源:电子课件,习题答案,教学大纲,源代码 本书特色: ★本书共14个项目,主要包括Python编程基础.网络爬虫.数据分析和数据可视化四大部分内容. ★全部代码适用于Python 3. ...

  2. python编程实例教程-Python程序设计实例教程

    图书简介 配套资源:电子课件,习题答案,教学大纲,源代码 本书特色: ★本书共14个项目,主要包括Python编程基础.网络爬虫.数据分析和数据可视化四大部分内容. ★全部代码适用于Python 3. ...

  3. python程序设计教程题库_Python程序设计题库-查询

    Python程序设计题库-查询,将学生内部认知过程和外部行为结合起来,即方法.我国基础教育课程改革中的目标分类归纳为.布鲁姆的目标分类理论由组成.教学设计是依据教学理论学习理论和传播理论,运用系统科学 ...

  4. 2021年全国高校Python程序设计课程高级研修班通知

    各高校教务处,各相关院系负责人: 依据教育部办公厅关于印发<教育部高等学校教学指导委员会章程>的通知(教高厅[2018]4号),教育部高等学校教学指导委员会的任务之一是:组织师资培训,沟通 ...

  5. 董老师又双叒叕送书啦,6本《Python程序设计实用教程》

    2021年全国高校Python课程高级研修班(线上) 中国大学MOOC"Python程序设计基础"第4次开课 教材信息: <Python程序设计实用教程>,ISBN:9 ...

  6. Python Flask实现查询和添加数据

    Python Flask实现查询和添加数据 在其他的文章里,我写了 Flask 对数据库进行增删改查的方法,也写了 Flask 将数据返回给前端的方法. 这篇文章,将两者串联起来,实现从前端到数据库的 ...

  7. djang-模型层(model)--添加,查询,修改

    上篇带大家简单做了一下图书表的创建.简单的查看和删除,今天会先简单介绍添加和修改,因为添加和修改与删除一样都很简单,本篇会相对多介绍一点单表查询,大家都知道数据库中查询是最重要的一部分,毕竟无论是修改 ...

  8. python在律师上作中的实例_基于Python的律师信息查询接口调用代码实例

    基于Python的律师信息查询接口调用代码实例代码描述:基于Python的律师信息查询接口调用代码实例 代码平台:聚合数据 #!/usr/bin/python # -*- coding: utf-8 ...

  9. python 入门到实践期末考试常出现的考试内容_零基础Python入门及实践应用_章节测验,期末考试,慕课答案查询公众号...

    零基础Python入门及实践应用_章节测验,期末考试,慕课答案查询公众号 更多相关问题 不属于厌食证的病因病机为:() A.喂养不当 B.他病伤脾 C.先天不足 D.气滞血瘀 E.情志失调 点刺四缝穴 ...

最新文章

  1. asp.net 验证正则表达式
  2. HTML5中figure标签使用实例
  3. python抽奖概率设计_辞职转行不如学Python,那些下载安装的坑,你真的都避开了嘛?...
  4. Open XML应用安全(2)OLE机制
  5. Spring集成–第2节–更多世界
  6. java abstractrequest,Java AbstractJackson2HttpMessageConverter類代碼示例
  7. vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式
  8. sql SET DATEFORMAT对日期处理的影响
  9. Kali Linux 和 渗透测试
  10. Python语法特点如注释规则、代码缩进、编码规范等
  11. 递归生成数独java_[leetcode] 37. 解数独(Java)(dfs,递归,回溯)
  12. 调试24L01经验总结
  13. 论文阅读笔记(十一)——Mobilenet-SSDv2: An Improved Object Detection Model for Embedded Systems
  14. 区块链技术视频资料下载(不断更新中)
  15. LCP 19. 秋叶收藏集(C++)---动态规划解题
  16. BYD Mes系统接入示例图源码
  17. AMR文件结构解析——时长解析
  18. C/C++ DNS 查询IP地址
  19. 【报告分享】2021年度小红书高效种草营销手册-标记我的生活-小红书(附下载)
  20. ch01变量和数据结构

热门文章

  1. 卡米洛特程 全景图:一种假说
  2. php语句以什么符号结束,c语言语句以什么结束,c语言语句的结束标志
  3. Render、RenderChildren和RenderControl
  4. git 命令行忽略提交_Git忽略提交的3种方法及Git忽略规则
  5. SQL数据库损坏,报错,原因及注意事项
  6. 模拟阴阳师抽卡-vue
  7. SHA1加密算法(spring boot)
  8. rsa算法举例_RSA算法简单实例
  9. DB2: Reorg之后表中记录在磁盘上存放的顺序
  10. deallocate mysql_MySQL中预处理语句prepare、execute与deallocate的使用教程