实现功能:
单词翻译并摘录至生词本中
实现生词本中单词乱序复习:
自定义复习的单词数
选择复习模式:1.提供中文写出对应生词本中的单词 2.提供英文回答出其中文含义
未来希望实现功能:
1.GUI界面
2.不同单词复习频率的统计
....
import requests
import re
import random
# 爬取百度翻译,并返回字典 键为输入的单词,值为对应的译文
def creatDict(s):
url = "https://fanyi.baidu.com/sug"
dat = {
"kw":s
}
resp = requests.post(url,data=dat)
dic ={}
lst = resp.json()['data'] # lst [{"k":"dog","v":"狗"},{"k":"dogm","v":"教条的"}...]
resp.close()
# 循环遍历lst 找到对应单词的字典
if lst != []:
for i in range(len(lst)):
if s == lst[i]['k']:
dic[s] = lst[i]['v']
else:
print("你单词是不是输错了?")
return None
return dic
# 文本文件的创建
def creatTxt(s,dic):
# 读取文本文件 读取文本文件内容,若文件不存在则创建文件
with open("test.txt",'a+',encoding='utf-8') as fr:
fr.seek(0,0)
txtContent = fr.read()
# 辅助信息提示每隔10个单词进行分割 通过正则来判断
m = '([a-zA-z]+) :'
lst1 = re.findall(m,txtContent)
if len(lst1)%10 == 0:
with open("test.txt",'a',encoding='utf-8') as fw:
fw.write("*"*100+str(len(lst1))+'\n')
# 判断用户查询的单词是否已经在文本文件中出现了
# 出现了只打印对应的翻译 未出现则将其添加至文本文件中
if s in txtContent:
print(dic[s])
else:
print(dic[s])
with open("test.txt",'a',encoding='utf-8') as f:
f.write(s+' :\n')
f.write('\t'+dic[s]+'\n')
# 根据生词本中单词创建字典 键为单词 值为英文
def tongji():
with open("test.txt",'r',encoding='utf-8') as f:
content = f.read()
wordModel = '([a-zA-z]+) :'
transModel = '\t(.*)\n'
wordlst = re.findall(wordModel,content)
translst = re.findall(transModel,content)
dic = {}
for i in range(len(wordlst)):
dic[wordlst[i]] = translst[i]
return dic
# 给定数目,获取相应数量乱序的单词翻译,默写对应的单词
def ChtoEn(dic,num):
wordlst = list(dic.keys())
lst = random.sample(wordlst,num) # lst ['dog','apple',...]
# 创建单词对应的翻译列表
# dic {'dog':'狗','one':'一'}
translst = []
for i in range(len(lst)):
translst.append(dic[lst[i]])
for cishu in range(3):
word = input("请写出"+translst[i]+'对应的英文(提示首字母为'+lst[i][0]+'): ').strip()
if word == lst[i]:
print("你的回答正确")
break
elif word == '摆烂了':
return 0
else:
print("你还有"+str(3-1-cishu)+"次机会")
if cishu == 2:
print("检查看看,正确的为:"+lst[i])
return 1
# 给定数目,获取相应数量乱序的单词,默写中文翻译
def EntoCh(dic,num):
wordlst = list(dic.keys())
lst = random.sample(wordlst,num) # lst ['dog','apple',...]
# 创建单词对应的翻译列表
# dic {'dog':'狗','one':'一'}
translst = []
for i in range(len(lst)):
translst.append(dic[lst[i]])
for cishu in range(2):
trans = input("请写出"+lst[i]+'的中文翻译(多个意思使用|来间隔): ').strip()
trans = re.sub(' ','',trans)
check = re.findall(trans,translst[i])
if len(check) != 0:
print("你的回答正确,详细翻译为:"+translst[i])
break
elif trans == "摆烂了":
return 0
else:
print("你还有"+str(2-1-cishu)+"次机会")
if cishu == 1:
print("检查看看,详细的翻译的为:"+translst[i])
return 1
# 选择复习模式以及输入复习单词数
def fuxi(dic):
print("请选择复习模式(02_1:给英文写中文/02_2:给中文写英文)")
while True:
s = input("请输入02_1或02_2: ").strip()
if s == '02_1' or s == '02_2':
break
else:
print("请认真选择!")
if s == '02_1':
while True:
try:
dicLen = len(dic)
while True:
num = int(input("本次想复习多少个单词?"+'(总单词数为'+str(dicLen)+')').strip())
if num <= dicLen:
bailan = EntoCh(dic,num)
if bailan == 0:
return 0
break
else:
print('请输入合适的数目')
break
except Exception as e:
print("你输的不是正整数")
else:
while True:
try:
dicLen = len(dic)
while True:
num = int(input("本次想复习多少个单词?"+'(总单词数为'+str(dicLen)+')').strip())
if num <= dicLen:
bailan = ChtoEn(dic,num)
if bailan == 0:
return 0
break
else:
print('请输入合适的数目')
break
except Exception as e:
print("你输的不是正整数")
# 用户能够一直进行输入直到输入字符 $
if __name__ == '__main__':
while True:
print("请选择模式(01:生词模式/02:复习模式/$$:退出程序)")
model = input("请输入01或02: ").strip()
if model == '01':
while True:
s = input("请输入你要翻译的英文单词(输入$退出): ").strip()
if s != '$':
dic = creatDict(s)
if dic != None:
creatTxt(s,dic)
else:
print("查询模式已退出")
break
elif model == '02':
dic = tongji()
bailan = fuxi(dic)
if bailan == 0:
print("摆烂了,不想复习了")
break
elif model =='$$':
print("程序已退出!!")
break
else:
print("请输入相应的字符")
使用方法:
1.生词模式
2.创建的文本文件
3.复习模式