Python程序设计实例:可查询修改、添加、测验、朗读的英语词典
前言
利用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程序设计实例:可查询修改、添加、测验、朗读的英语词典相关推荐
- python程序实例教程基础-Python程序设计实例教程
图书简介 配套资源:电子课件,习题答案,教学大纲,源代码 本书特色: ★本书共14个项目,主要包括Python编程基础.网络爬虫.数据分析和数据可视化四大部分内容. ★全部代码适用于Python 3. ...
- python编程实例教程-Python程序设计实例教程
图书简介 配套资源:电子课件,习题答案,教学大纲,源代码 本书特色: ★本书共14个项目,主要包括Python编程基础.网络爬虫.数据分析和数据可视化四大部分内容. ★全部代码适用于Python 3. ...
- python程序设计教程题库_Python程序设计题库-查询
Python程序设计题库-查询,将学生内部认知过程和外部行为结合起来,即方法.我国基础教育课程改革中的目标分类归纳为.布鲁姆的目标分类理论由组成.教学设计是依据教学理论学习理论和传播理论,运用系统科学 ...
- 2021年全国高校Python程序设计课程高级研修班通知
各高校教务处,各相关院系负责人: 依据教育部办公厅关于印发<教育部高等学校教学指导委员会章程>的通知(教高厅[2018]4号),教育部高等学校教学指导委员会的任务之一是:组织师资培训,沟通 ...
- 董老师又双叒叕送书啦,6本《Python程序设计实用教程》
2021年全国高校Python课程高级研修班(线上) 中国大学MOOC"Python程序设计基础"第4次开课 教材信息: <Python程序设计实用教程>,ISBN:9 ...
- Python Flask实现查询和添加数据
Python Flask实现查询和添加数据 在其他的文章里,我写了 Flask 对数据库进行增删改查的方法,也写了 Flask 将数据返回给前端的方法. 这篇文章,将两者串联起来,实现从前端到数据库的 ...
- djang-模型层(model)--添加,查询,修改
上篇带大家简单做了一下图书表的创建.简单的查看和删除,今天会先简单介绍添加和修改,因为添加和修改与删除一样都很简单,本篇会相对多介绍一点单表查询,大家都知道数据库中查询是最重要的一部分,毕竟无论是修改 ...
- python在律师上作中的实例_基于Python的律师信息查询接口调用代码实例
基于Python的律师信息查询接口调用代码实例代码描述:基于Python的律师信息查询接口调用代码实例 代码平台:聚合数据 #!/usr/bin/python # -*- coding: utf-8 ...
- python 入门到实践期末考试常出现的考试内容_零基础Python入门及实践应用_章节测验,期末考试,慕课答案查询公众号...
零基础Python入门及实践应用_章节测验,期末考试,慕课答案查询公众号 更多相关问题 不属于厌食证的病因病机为:() A.喂养不当 B.他病伤脾 C.先天不足 D.气滞血瘀 E.情志失调 点刺四缝穴 ...
最新文章
- asp.net 验证正则表达式
- HTML5中figure标签使用实例
- python抽奖概率设计_辞职转行不如学Python,那些下载安装的坑,你真的都避开了嘛?...
- Open XML应用安全(2)OLE机制
- Spring集成–第2节–更多世界
- java abstractrequest,Java AbstractJackson2HttpMessageConverter類代碼示例
- vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式
- sql SET DATEFORMAT对日期处理的影响
- Kali Linux 和 渗透测试
- Python语法特点如注释规则、代码缩进、编码规范等
- 递归生成数独java_[leetcode] 37. 解数独(Java)(dfs,递归,回溯)
- 调试24L01经验总结
- 论文阅读笔记(十一)——Mobilenet-SSDv2: An Improved Object Detection Model for Embedded Systems
- 区块链技术视频资料下载(不断更新中)
- LCP 19. 秋叶收藏集(C++)---动态规划解题
- BYD Mes系统接入示例图源码
- AMR文件结构解析——时长解析
- C/C++ DNS 查询IP地址
- 【报告分享】2021年度小红书高效种草营销手册-标记我的生活-小红书(附下载)
- ch01变量和数据结构
热门文章
- 卡米洛特程 全景图:一种假说
- php语句以什么符号结束,c语言语句以什么结束,c语言语句的结束标志
- Render、RenderChildren和RenderControl
- git 命令行忽略提交_Git忽略提交的3种方法及Git忽略规则
- SQL数据库损坏,报错,原因及注意事项
- 模拟阴阳师抽卡-vue
- SHA1加密算法(spring boot)
- rsa算法举例_RSA算法简单实例
- DB2: Reorg之后表中记录在磁盘上存放的顺序
- deallocate mysql_MySQL中预处理语句prepare、execute与deallocate的使用教程