aklnibi 2021-12-31 21:48 采纳率: 50%
浏览 779
已结题

Python有关制作英文学习词典问题。

制作英文学习词典。编写程序制作英文学习词典,词典有 3 个基本功能:添加、
查询和退出。程序读取源文件路径下的 txt 格式词典文件,若没有就创建一个。
词典文件存储方式为“英文单词 中文单词”,每行仅有一对中英释义。程序会根据
用户的选择进入相应的功能模块,并显示相应的操作提示。当添加的单词已存在
时,显示“该单词已添加到字典库”;当查询的单词不存在时,显示“字典库中未找
到这个单词”。用户输入其他选项时,提示“输入有误”。

  • 写回答

4条回答 默认 最新

  • 神仙别闹 2021-12-31 22:21
    关注

    可以参考下这个

    
    #英文字典
     
     
    def oppendict():
        dir = 'mydict.txt'
        dicts = {}
        tf=open(dir,'r+')
        print('本字典已有的内容:')
        for item in tf:
            k,v=tuple(item.replace('\n','').split(':'))
            print(k,v)
            dicts[k]=v
        tf.close()
        return dicts
     
    dicts=oppendict()
     
    #查字典
    def lookup():
        quest=input("请输入要查询的单词")
        result=dicts.get(quest,"字典库中未找到这个单词")
        print('该单词的解释为:'+result+'\n')
     
    #插入新单词
    def inserts():
        word = input("请输入要插入的单词:")
        if dicts.get(word):
            print('该单词已添加到字典库'+'\n')
        else:
            explain=input("请输入该单词的解释:")
            dicts[word]=explain
     
     
    #更新单词解释
    def renew():
        word = input('请输入需要更新解释的单词:')
        explain=input("请输入单词的新解释:")
        dicts[word]=explain
     
     
    #删除
    def deldict():
        word = input('请输入删除的单词:')
        if dicts.get(word):
            del dicts[word]
        else:
            print('没有这个单词')
        print(dicts)
     
    #存档
    def savedict():
        dir='mydict.txt'
        tf = open(dir,'w+')
        for item in dicts.items():
            tf.write(':'.join(item) + '\n' )
        tf.close()
     
    def meun():
        meuns=['1.查询','2.新增','3.更新','4.删除','5.退出']
        funcname = ['','lookup','inserts' ,'renew' , 'deldict']
        while True:
            print('\n'.join(meuns))
            trs = eval(input('请用数字选择:'))
            if trs==5:
                break
            elif trs in range(1,5):
                eval(funcname[trs])()
            else:
                print('输入有误'+'\n')
     
     
     
    if __name__=='__main__':
        print('欢迎使用本字典'.center(20,'='))
        meun()
        print('再见'.center(20,'='))
        savedict()
        dicts = oppendict()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 关注

    你题目的解答代码如下:

    #-*- coding:utf-8 -*-
    
    class System():
        def __init__(self):
            self.data = {}
            self.load()
            while True:
                print("********** 菜单 ***********")
                print("\t1.查询")
                print("\t2.添加")
                print("\t3.删除")
                print("\t4.保存并退出")
                print("****************************")
                s = input("请输入1-4选择功能并按回车:")
                if s=="1":
                    self.inquire()
                elif s=="2":
                    self.add()
                elif s=="3":
                    self.delete()
                elif s=="4":
                    self.save()
                    print('保存并退出字典')
                    break
                else:
                    print('输入有误')
    
        def load(self):
            try:
                with open("dictdata.txt","r", encoding='utf-8') as f:
                    for s in f.readlines():
                        k,v = s.strip().split(" ",1)
                        self.data[k] = v
            except IOError:
                self.data = {}
    
        def save(self):
            with open("dictdata.txt","w", encoding='utf-8') as f:
                for k,v in self.data.items():
                    f.write(f'{k} {v}\n')
    
        def inquire(self):
            s = input("输入要查询的单词:")
            if s in self.data.keys():
                print("单词:",s)
                print("解释:",self.data[s])
            else:
                print('字典库中未找到这个单词')
    
        def add(self):
            s = input("输入要添加的单词:")
            if s in self.data.keys():
                print("该单词已添加到字典库")
            else:
                self.data[s] = input("输入中文解释:")
    
        def delete(self):
            s = input("输入要删除的单词:")
            if s in self.data.keys():
                del self.data[s]
                print("删除成功")
            else:
                print('字典库中未找到这个单词')
    
    sys = System()
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    评论 编辑记录
  • 南七灵 2021-12-31 22:35
    关注
    
    def search():  # 查找
        try:
            fo = open("dictionary.txt", 'r')
        except IOError:
            fo = open("dictionary.txt", 'w+')
        word2 = input("请输入查找的单词:")
        ls = []
        judge = "not"
        for line in fo:
            line = line.replace("\n", "")
            ls = line.split("\n")
            lsn = ""
            judge = "yes"
            for s in ls:
                lsn += "{}".format(s)
            if word2 in lsn:
                print(lsn[:])
                word2 = "yes"
                break
            else:
                judge = "not"
        if judge == "not":
            print("字典库中未找到这个单词")
        fo.close()
    # -----------------------------------------------------------------------------------
    
    
    def add():
        ww = input("请输入你要添加的单词:")
        flag = 0
        dic = {}
        try:
            f = open("dictionary.txt", 'r')
        except IOError:
            f = open("dictionary.txt", 'w+')
        for line in f.readlines():
            line = line.replace("\n", "")
            line = list(line.split(","))
            key = line[0]
            coment = line[1:]
            dic[key] = coment
            if ww in dic.keys():
                f.close()
                flag = 1
                print("输入的单词已经存在!")
                break
            else:
                f.close()
        if flag != 1:  # 如果输入的单词不存在,则进行汉语意思的输入,若有多个意思,则用英文逗号隔开
            fw = open("dictionary.txt", 'a')
            mean = input("若有多个意思,用英文逗号隔开:")
            fw.write(ww+':'+mean+'\n')
            fw.close()
    
    
    if __name__ == '__main__':
        print("请选择功能:\n1.查询\n2.添加\n3.退出")
        n = int(input())
        if n == 1:
            search()
        elif n == 2:
            add()
        elif n == 3:
            exit()
        else:
            print("输入有误")
    
    
    评论 编辑记录
  • cvpytorch 2022-01-01 15:11
    关注
    
    import os
    
    def add_word(): #添加单词
        words_list = [] #用来暂时存放单词
        word = input("请输入你要添加的单词和解释(用一个空格键隔开中英文):")
        with open('单词本.txt','a+') as f:
            f.seek(0) #光标移到文件开头,以备检查单词
            words = f.readlines() #将txt每行元素读取成列表形式赋值给words
            for element in words:
                element = element.split(' ') #用空格将中英文切分
                words_list.append(element[0]) #后面用来比较单词是否存在
            sub_word = word.split(' ')
            if sub_word[0] in words_list:
                print("该单词已添加到字典库")
            else:
                f.seek(2) #光标移到文件开头,以备添加单词
                f.write(word)
                f.write('\n') #写完换行,一行一行写
    
    def query(): #查询单词
        words_list = [] #用来暂时存放单词
        meaning_list = [] #用来暂时存放释义
        word = input("请输入你要查询的单词:")
        with open('单词本.txt','r') as f:
            words = f.readlines()
            for element in words:
                element = element.split(' ')
                words_list.append(element[0])
                meaning_list.append(element[-1]) #后面用来返回单词释义
            if word in words_list:
                index = words_list.index(word) #找到要查询的单词在暂存列表里的索引
                print("含义:",meaning_list[index]) #for语句中对应顺序存放中英文,从而可以根据英文索引找到对应中文索引,从而得到索引下的元素
            else:
                print("字典库中未找到这个单词")
    
    menu_choice = [1, 2, 3]
    print("功能选择:")
    print("1、添加")
    print("2、查询")
    print("3、退出")
    menu = eval(input("您的选择是(请输入数字,例如:1):"))
    flag = menu in menu_choice #标识符
    while not flag:
        print("输入有误")
        menu = eval(input("请重新输入:"))
        flag = menu in menu_choice #重新赋值
    while flag:
        if os.path.exists('单词本.txt'):
            if menu==1:
                add_word()
            elif menu==2:
                query()
            else:
                exit()
        else:
            with open('单词本.txt','w'):
                pass #创建单词本
        menu = eval(input("您的选择是(请输入数字,例如:1):"))
        flag = menu in menu_choice #最后两行是为了多次使用,直到你想要退出
    
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月1日
  • 已采纳回答 1月1日
  • 创建了问题 12月31日

悬赏问题

  • ¥15 QT 实现 RSTP 语音对讲功能
  • ¥50 AES魔改之后的安全性关于PRF(相关搜索:密码学)
  • ¥15 有没有谁能高分通过 reCaptcha v3验证,国外网站。有兴趣留言,有偿。
  • ¥15 用C语言写的一个程序遇到了两个问题第一是偏移正确但读取不到坐标,第二个问题是自己定义的函数实现不了获取指定进程模块。
  • ¥15 在安装Anaconda时总是闪退怎么办?
  • ¥15 对图中电路进行以下几个方面的分析
  • ¥15 对图中电路进行以下几个方面的分析
  • ¥15 对图中电路进行以下几个方面的分析
  • ¥15 对图中电路进行以下几个方面的分析
  • ¥500 抖音主页视频预存加载卡bug