xy_eleanor 2023-05-12 08:48 采纳率: 80%
浏览 24
已结题

Python制作英文学习字典

#“制作英文学习字典”要求:
(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:代码中各模块都是什么意思呢?(可暂不回答)

  • 写回答

2条回答 默认 最新

  • 阳光宅男xxb 2023-05-12 09:03
    关注

    题目要求已经写了格式是:英文单词,中文解释

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月12日

悬赏问题

  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?