7.4 简易英汉字典(project)

目录

相关知识

第1关 读文件到字典中

第2关 翻译单词

第3关 翻译句子


相关知识

简易英汉字典

文件 dict.txt 里存储了英语单词及其中文释义,单词与释义间保证用空格分隔,需要注意的是释义中可能还有空格存在。文件内容形如:

  1. above prep.在...之上,高于
  2. above-mentioned adj.上述的
  3. abreast adv.并肩,并列
  4. abridge v.省略,摘要
  5. abroad adv.国外,海外
  6. all adj.所有的 n.一切
  7. live v.居住,生存 adj.活的

问题:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入英文句子,输出英文句子中每个单词的中文释义,每行一个单词。可连续输入句子,输入一句翻译一句,直接输入回车时退出查询。单词与释义间用一个空格分隔,当单词在词典中不存在时,输出'这个词我不明白'。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

第1关 读文件到字典中

def create_dict(filename):
    """接收表示文件名的字符串参数,读文件中的单词及释义,以单词为键,其他部分为值创建字典。
    多个释义间可能是逗号或空格分隔,但单词与第一个释义间至少有一个空格,
    将文件每一行根据空格切分一次,切分结果分别作为键和值创新字典。
    返回字典。
    """
    #####################Begin#####################################
    # 此处去掉注释符号“#”并补充你的代码
    dic = {}                                    # 创建空字典  
    with open(filename, 'r', encoding='utf-8') as data:  
        for x in data:                          # 遍历文件对象  
            x = x.strip().split(maxsplit=1)     # 每行根据空格切分为列表,只切分一次  
            dic.update({x[0].lower(): x[1]})    # 列表的两个元素作为字典的键和值加入字典中  
    print(len(dic)) 
   
    #####################End#####################################


if __name__ == '__main__':
    file = './dict.txt'           # 表示文件名的字符串,表示位于当前路径下的'dict.txt'文件
    word_dic = create_dict(file)  # 调用函数返回字典类型的数据

第2关 翻译单词

def create_dict(filename):  
    """读文件中的单词及释义,以单词为键,其他部分为值创建字典。  
    多个释义间可能是逗号或空格分隔,但单词与第一个释义间至少有一个空格,  
    将读文件并根据空格切分一次,切分结果分别作为键和值创新字典。"""  
    dic = {}                                    # 创建空字典  
    with open(filename, 'r', encoding='utf-8') as data:  
        for x in data:                          # 遍历文件对象  
            x = x.strip().split(maxsplit=1)     # 每行根据空格切分为列表,只切分一次  
            dic.update({x[0].lower(): x[1]})    # 列表的两个元素作为字典的键和值加入字典中  
    return dic


def translate(dic, word):
    """接收两个参数,第一个是读文件创建的字典,第二个参数为要查询的单词,字符串
    根据文件创建的字典,从中查询单词word,
    如果查询单词存在,元组形式返回词与词的释义;
    如果查询不存在,返回'这个词我不明白'
    """
    # 并补充你的代码
    word = word.lower()
    if word in dic:
        return word + ' ' + dic[word]
    else:
        return word + ' ' + '这个词我不明白'

def translate_word():
    """调用此函数时,先输出提示信息:'请输入查询的单词:'
    用户可循环输入欲翻译的单词,若直接输入回车时,输出'查询结束,正在退出...'。
    输入非空时输出翻译结果
    """
    # 并补充你的代码  
    while True:
        words = input('请输入查询的单词:')
        if words != '': #判断是否为回车键
            print(translate(word_dic, words))
        else:
            print('查询结束,正在退出...')
            break


if __name__ == '__main__':
    file = './dict.txt'           # 表示文件名的字符串,表示位于当前路径下的'dict.txt'文件
    word_dic = create_dict(file)  # 调用函数返回字典类型的数据
    print('载入字典数据成功!')
    translate_word()              # 翻译单词

第3关 翻译句子

import string

def create_dict(filename):  
    """读文件中的单词及释义,以单词为键,其他部分为值创建字典。  
    多个释义间可能是逗号或空格分隔,但单词与第一个释义间至少有一个空格,  
    将读文件并根据空格切分一次,切分结果分别作为键和值创新字典。"""  
    dic = {}                                    # 创建空字典  
    with open(filename, 'r', encoding='utf-8') as data:  
        for x in data:                          # 遍历文件对象  
            x = x.strip().split(maxsplit=1)     # 每行根据空格切分为列表,只切分一次  
            dic.update({x[0].lower(): x[1]})    # 列表的两个元素作为字典的键和值加入字典中  
    return dic


def translate(dic, word):
    """接收两个参数,第一个是读文件创建的字典,第二个参数为要查询的单词,字符串
    根据文件创建的字典,从中查询单词word,
    如果查询单词存在,元组形式返回词与词的释义;
    如果查询不存在,返回'这个词我不明白'
    """
    # 并补充你的代码
    word = word.lower()
    if word in dic:
        return word + ' ' + dic[word]
    else:
        return word + ' ' + '这个词我不明白'

def sentence_to_words():
    """调用此函数时,先输出提示信息'请输入查询的句子:'
    用户输入欲翻译的句子
        若输入非空时,先将"n't"替换为 ' not'、"'s"替换为 ' is',再将标点符号替换为空格。
    根据空格将句子切分为单词的列表,调用translate逐个单词进行翻译。
    用户可重复多次输入,每输入一名翻译一句,
    若直接输入回车时,输出'查询结束,正在退出...'。然后结束程序。
    """
    # 并补充你的代码
    while True:
        words = input('请输入查询的句子:')
        if len(words) == 0:  # 判断是否为回车键
            print('查询结束,正在退出...')
            break
        else:
            words = words.replace("n't", ' not').replace("'s", ' is')
            words = words.replace(",", ' ').replace(".", ' ')  # 具体需要替换多少种标点看测试内容
            words = words.split()
            for i in words:
                i = i.lower()
                print(translate(word_dic, i))

if __name__ == '__main__':
    file = './dict.txt'           # 表示文件名的字符串,表示位于当前路径下的'dict.txt'文件
    word_dic = create_dict(file)  # 调用函数返回字典类型的数据
    print('载入字典数据成功!')
    sentence_to_words()           # 翻译句子
    

做你该做的事情,尽管有时事与愿违,但这并不代表你的努力毫无意义。🌹

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值