目录
相关知识
简易英汉字典
文件 dict.txt
里存储了英语单词及其中文释义,单词与释义间保证用空格分隔,需要注意的是释义中可能还有空格存在。文件内容形如:
above prep.在...之上,高于
above-mentioned adj.上述的
abreast adv.并肩,并列
abridge v.省略,摘要
abroad adv.国外,海外
all adj.所有的 n.一切
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() # 翻译句子
做你该做的事情,尽管有时事与愿违,但这并不代表你的努力毫无意义。🌹