#“制作英文学习字典”要求:
(1)编写程序制作英文学习字典,字典有三个基本功能:查询、添加和退出。具体要求如下:
(a)程序读取源文件路径下的CSV/txt文件,若没有就创建一个CSV/txt文件。
(b)字典文件存储方式为“英文单词,中文解释”,每行仅有一对英文和中文解释。
(c)实现英文单词及中文解释的添加功能,如果添加的单词已经存在,则提示“该单词已经添加到字典库”,当查询的单词不存在时,显示“字典库中未找到这个单词”。用户输入其他选项时,提示“输入有误!”
dic = {}
digits = '0123456789'
path = 'dic.txt'
def readFile(path, arg):
try:
file = open(path,arg,encoding = "utf-8")
except:
file = open(path,'w',encoding= "utf-8")
return file
def readWords():
file = readFile(path, 'r')
while True:
line = file.readline()
if not line:
break
word = line.split(' ',2)
dict[word[0]] = word[1][:-1]
file.close()
def writeFile(word,dsp):
file = readFile(path,'a')
file.write('{} {}\n'.format(word, dsp))
file.close()
def modifyFile(word, dsp):
file = readFile(path,'r')
line = file.readlines()
flen = len(line) -1
for i in range(flen):
if word in line[i]:
file.close()
line[i] = '{} {}\n'.format(word, dsp)
file = readFile(path,'w')
file.writelines(line)
break
file.close()
def editMode():
print('*'*50)
print('*'*50)
while True:
word = input("(按数字键退出)请输入想添加或修改的单词")
if word in digits:
print('*'*50)
print('*'*50)
return
try:
print("该单词已经存在,当前解释是:{}".format(dict[word]))
except:
print('您添加的是一个新单词')
print("-----------------------")
description = input("输入解释:\n")
try:
dict[word] += ',%s'%description
modifyFile(word, dict[word])
except KeyError:
dict[word] = '%s'%description
writeFile(word,dict[word])
print('----------------添加完成---------------')
def searchMode():
print('*'*50)
print('*'*50)
while True:
word = input("(按数字键退出)想查的单词:")
if word in digits:
print('*'*50)
print('*'*50)
return
print("-----------------------------------")
try:
print(dict[word])
except KeyError:
print('对不起,这个单词未收录')
print("------------------------------------------")
def interface():
readWords()
def switch(option):
funcdic={
1:lambda :searchMode(),
2:lambda :editMode(),
3:lambda :exit()
}
return funcdic[option]()
while True:
print("-------------欢迎使用-------------")
print("1.查询单词\n2.添加单词\n3.退出\n")
option =int(input("请输入选择:"))
switch(option)
interface()
#问题1:存储中英词汇的文档有什么要求?如果是文本文档格式,内部应该是什么要求?
#问题2:代码中各模块都是什么意思呢?(可暂不回答)