主要内容是校设课程的习题和课外学习的一些习题。
欢迎关注 『Python习题』 系列,持续更新中
欢迎关注 『Python习题』 系列,持续更新中
文件dict.txt里存储了英语单词及其中文释义,单词与释义间保证用空格分隔,需要注意的是释义中可能还有空格存在。文件内容形如:
above prep.在...之上,高于
above-mentioned adj.上述的
abreast adv.并肩,并列
abridge v.省略,摘要
abroad adv.国外,海外
all adj.所有的 n.一切
live v.居住,生存 adj.活的
运行程序时先输出:
载入字典数据成功!查询单词请输入“1”,查询句子请输入“2”
输入’1’时,完成问题1,输入’2’时完成问题2,输入其他数据时,输出 '输入错误,请重新运行程序!'
问题1:
连续读入多个单词,输出单词的释义,当单词在词典中不存在时,输出'这个词我不明白'。直接输入回车时退出查询。
问题2:
输入英文句子,输出英文句子中每个单词的中文释义,每行一个单词。可连续输入句子,输入一句翻译一句,直接输入回车时退出查询。单词与释义间用一个空格分隔,当单词在词典中不存在时,输出'这个词我不明白'。
注意:句子中若存在's 则用 is 替换,n't 用 not 替换。
(实际上我一开始做题目n’t 没有替换也过了所有测试点,和替换is思路一样)
使用题目给出的编程模板,实现上述两个问题。
要求读入1,则实现问题1(连续查单词的释义);
读入2,则实现问题2(连续读入英文句子并逐一输出句子里单词和释义。
输出单词时,所有字母均转换为小写输出,若该单词有多个词性,不改动文件里释义的格式,直接输出。
输入:
1
All
woo
wool
输出:
载入字典数据成功!查询单词请输入“1”,查询句子请输入“2”
1
请输入查询的单词:All
all adj.所有的 n.一切
请输入查询的单词:woo
woo 这个词我不明白
请输入查询的单词:wool
wool n.羊毛,毛线
请输入查询的单词:
查询结束,正在退出...
输入:
2
To be or not to be, that's a question.
输出:
载入字典数据成功!查询单词请输入“1”,查询句子请输入“2”
2
请输入查询的句子:To be or not to be, that's a question.
to prep.向,到
be v.是,存在
or conj.或者,即,否则
not adv.不
to prep.向,到
be v.是,存在
that adj.那,那个 adv.那么
is 这个词我不明白
a 一个
question n.问题,疑问 v.询问
请输入查询的句子:
查询结束,正在退出...
输入:
5
输出:
载入字典数据成功!查询单词请输入“1”,查询句子请输入“2”
输入错误,请重新运行程序!
有异常数据干扰,thursday
旁边多了一个异常符号]
,所以要用replace
去掉这个异常
def create_dict(filename):
"""接收表示文件名的字符串参数,读文件中的单词及释义,以单词为键,其他部分为值创建字典。
多个释义间可能是逗号或空格分隔,但单词与第一个释义间至少有一个空格,
将文件每一行根据空格切分一次,切分结果分别作为键和值创新字典。
返回字典。
"""
word_dic = {}
ls = []
with open(filename, "r", encoding='UTF-8') as f:# encoding='UTF-8'防止编码问题错误
for line in f.readlines():# readlines表示读取所有行
line = line.strip('\n').replace("]", " ") # 去掉列表中每一个元素的换行符。此外还要replace因为真的是天坑,给我们的文件中 thursday ]n.星期四 这个单词有个“]”干扰
line = line.split(" ") # 分割成列表
# print(line)
word_dic[line[0]] = line[1]#把这一行内容加入字典
return word_dic
单词的获取很简单,就是句子要分割后再用for循环
调用对于单词的搜索函数。
s = input("请输入查询的句子:")
while (s != ""):
s=s.replace(".", " ").replace(", ", " ").replace("'s", " is").replace("n't"," not").split(" ")#分割和替换
for i in s:#如果说分割出了空的字符串,不进行判断直接跳过
if i=="":
continue
getWord=translate(word_dic, i)
print(getWord[0],getWord[1])
s = input("请输入查询的句子:")
print('查询结束,正在退出...')
import string
def create_dict(filename):
"""接收表示文件名的字符串参数,读文件中的单词及释义,以单词为键,其他部分为值创建字典。
多个释义间可能是逗号或空格分隔,但单词与第一个释义间至少有一个空格,
将文件每一行根据空格切分一次,切分结果分别作为键和值创新字典。
返回字典。
"""
word_dic = {}
ls = []
with open(filename, "r", encoding='UTF-8') as f:# encoding='UTF-8'防止编码问题错误
for line in f.readlines():# readlines表示读取所有行
line = line.strip('\n').replace("]", " ") # 去掉列表中每一个元素的换行符。此外还要replace因为真的是天坑,给我们的文件中 thursday ]n.星期四 这个单词有个“]”干扰
line = line.split(" ") # 分割成列表
# print(line)
word_dic[line[0]] = line[1]#把这一行内容加入字典
return word_dic
def translate(dic, word):
"""接收两个参数,第一个是读文件创建的字典,第二个参数为要查询的单词,字符串
根据文件创建的字典,从中查询单词word,
如果查询单词存在,元组形式返回词与词的释义;
如果查询不存在,返回'这个词我不明白'
"""
word=word.lower() #小写
if dic.get(word, '这个词我不明白') != '这个词我不明白':
return word, dic.get(word, '这个词我不明白')
else:
return word,'这个词我不明白'
def sentence_to_words():
"""调用此函数时,先输出提示信息'请输入查询的句子:'
用户输入欲翻译的句子
若输入非空时,先将"n't"替换为 ' not'、"'s"替换为 ' is',再将标点符号替换为空格。
根据空格将句子切分为单词的列表,调用translate逐个单词进行翻译。
用户可重复多次输入,每输入一名翻译一句,
若直接输入回车时,输出'查询结束,正在退出...'。然后结束程序。
"""
s = input("请输入查询的句子:")
while (s != ""):
s=s.replace(".", " ").replace(", ", " ").replace("'s", " is").replace("n't"," not").split(" ")#分割和替换
for i in s:#如果说分割出了空的字符串,不进行判断直接跳过
if i=="":
continue
getWord=translate(word_dic, i)
print(getWord[0],getWord[1])
s = input("请输入查询的句子:")
print('查询结束,正在退出...')
# 点击在此输入一行或多行代码
def translate_word():
"""调用此函数时,先输出提示信息:'请输入查询的单词:'
用户可循环输入欲翻译的单词,若直接输入回车时,输出'查询结束,正在退出...'。
输入非空时输出翻译结果
"""
s = input("请输入查询的单词:")
while (s != ""):
print(translate(word_dic, s)[0],translate(word_dic, s)[1])
s = input("请输入查询的单词:")
print('查询结束,正在退出...')
# 点击在此输入一行或多行代码
if __name__ == '__main__':
file = 'dict.txt' # 表示文件名的字符串,表示位于当前路径下的'dict.txt'文件
word_dic = create_dict(file) # 调用函数返回字典类型的数据
# print(word_dic)
print('载入字典数据成功!查询单词请输入“1”,查询句子请输入“2”')
choice = input() # 输入操作选项
if choice == '1':
translate_word() # 翻译单词
elif choice == '2':
sentence_to_words() # 翻译句子
else:
print('输入错误,请重新运行程序!')
大家喜欢的话,给个,点个关注!给大家分享更多有趣好玩的Python习题!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2022 mzh
Crated:2022-3-1
欢迎关注 『Python习题』 系列,持续更新中
欢迎关注 『Python习题』 系列,持续更新中
【更多内容敬请期待】