python制作小字典,查询功能报错,哪出问题了?

f=open("英文词典.txt","a+")

dic={"haha":"哈哈","hello":"你好"}

for key in dic.keys():
    f.write(key+"  "+dic[key])
f.close()    
def add(NE,NC):
    f=open("英文词典.txt","a+")
    couple="{} {}".format(NE,NC)
    f.write(couple+"\n")
    f.close()
    return 

def search(E):
    f=open("英文词典.txt","a+")
    while True:
        line=f.readline()
        line=line.replace('\n','')
        ls=line.split()
        print(ls)
        dic[ls[0]]=ls[1]
        if not line:
            break
    c=get(E,False)
    f.close()
    if c==False:
        print("\n查询不到结果")
    else:    
        print("\n您要查询的结果是",c)
    return
    
while True:
    print("请输入要使用的功能:1.添加 2.查询 3.退出")
    n=input()
    if n=='1':
    
        e=input("请输入要添加的 英文\n")
        c=input( "请输入要添加的中文\n")
        add(e,c)
    
    if n=='2':
        p=input("请输入要查询的单词\n")
        search(p)
    if n=='3':
        break
    
exit()   
 

其实只是要在程序初始时读取一次txt文件就行。

只要添加时同时也添加到dic字典,就不需要每次查询时都重新读取一次txt文件,直接从dic字典中查找就好。

另外"haha":"哈哈","hello":"你好" 直接就在dic字典中,也不需要写到txt文件中。

 

dic={"haha":"哈哈","hello":"你好"}

def load():
    f=open("英文词典.txt","r",encoding='utf-8')
    while True:
        line=f.readline()
        if not line:
            break
        line=line.replace('\n','')
        ls=line.split()
        print(ls)
        dic[ls[0]]=ls[1]
    f.close()

def add(NE,NC):
    dic[NE]=NC
    f=open("英文词典.txt","a+",encoding='utf-8')
    couple="{} {}".format(NE,NC)
    f.write(couple+"\n")
    f.close()
    return

def search(E):
    c=dic.get(E,False)
    if c==False:
        print("\n查询不到结果")
    else:
        print("\n您要查询的结果是",c)
    return

load()
while True:
    print("请输入要使用的功能:1.添加 2.查询 3.退出")
    n=input()
    if n=='1':
        e=input("请输入要添加的 英文\n")
        c=input( "请输入要添加的中文\n")
        add(e,c)
    if n=='2':
        p=input("请输入要查询的单词\n")
        search(p)
    if n=='3':
        break
exit()

 

f=open("英文词典.txt","a+",encoding='utf-8')

dic={"haha":"哈哈","hello":"你好"}
for key in dic.keys():
    f.write(key+" "+dic[key]+"\n")
f.close()
def add(NE,NC):
    f=open("英文词典.txt","a+",encoding='utf-8')
    couple="{} {}".format(NE,NC)
    f.write(couple+"\n")
    f.close()
    return

def search(E):
    f=open("英文词典.txt","r",encoding='utf-8')
    while True:
        line=f.readline()
        if not line:
            break
        line=line.replace('\n','')
        ls=line.split()
        print(ls)
        dic[ls[0]]=ls[1]
    c=dic.get(E,False)
    f.close()
    if c==False:
        print("\n查询不到结果")
    else:
        print("\n您要查询的结果是",c)
    return

while True:
    print("请输入要使用的功能:1.添加 2.查询 3.退出")
    n=input()
    if n=='1':

        e=input("请输入要添加的 英文\n")
        c=input( "请输入要添加的中文\n")
        add(e,c)

    if n=='2':
        p=input("请输入要查询的单词\n")
        search(p)
    if n=='3':
        break

exit()

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y