用python来学英语

项目存储在https://gitee.com/xiehh18/python_learn_-english

1. 重复输入来加强写作

import os
y=[x for x in os.listdir('.') if os.path.isfile(x)]
for _ in range(len(y)):
    print(_,y[_])
ind=input('Input the index of file your want to read\n')
ind=int(ind)
if(ind<len(y) and ind>=0):
    filename=y[ind]
else:
    exit()
#filename=input('Please input the name of file you want to read\n')
err,count=0,0
with open(filename,mode='r') as x:
    docs=[i.strip() for i in x if i.strip()!='' ]
    t,i='',0
    while i<len(docs) and  t!='exit' :
        k=docs[i]
        t=''
        #print(i,'/',len(docs),'error times:',err)
        while t!=k and  t!='next' and t!='previous' and t!='exit' :
            if(t!=''):
                err=err+1
            print(k)
            print(i,'/',len(docs),'error times:',err,', repeat it:')
            t=input()
        if t=='previous' and i>0:
            i=i-2
            print('---Previous---',i,'/',len(docs),'error times:',err)
        elif t=='next':
            print('---Next---',i,'/',len(docs),'error times:',err)
        elif t=='exit':
            i=len(docs)-1
            print('---End---',i,'/',len(docs),'error times:',err)
        i=i+1
print('Ok!')
#print('The times of error is ' ,err,', error rate is', err/count)

以上代码实现简单工作:读取一个文本文件,然后逐行打印,每一行打印后可以选择重复该行文字。可以用来读取一个英语文章的文本,然后不断的重复输入其中的语句来熟练一些英语语法。

2. 背单词应用的简单实现

import json
import os
from bs4 import BeautifulSoup as bs     #the tool to parse webpage
import requests                         #
class dictbook:
    def __init__(self):
        self.filelists=[x for x in os.listdir('.') if os.path.isfile(x)]
        self.dicts=[x for x in self.filelists if x.endswith('.json')]
        self.fn='.dictnotes.json'
        self.ls={}
        self.ls['index']=0
        self.notes={}
        self.header = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"}
        if self.fn  not in self.filelists:
            self.ls['dicts']=[]
            if len(self.dicts)!=0:
                print('You have some json files as follws, do you want to add them')
                for ind, x in enumerate(self.dicts):
                    print(ind,x)
                ind=0
                while len(self.ls['dicts'])<=len(self.dicts) and ind <len(self.dicts):
                    ind=input('Enter the index of json file you want to add:')
                    ind= int(ind)
                    if(ind>=0 and ind <len(self.dicts) and self.dicts[ind] not in self.ls['dicts'] ):
                        self.ls['dicts'].append(self.dicts[ind])
                with open(self.fn,'w') as fw:
                    json.dump(self.ls,fw)
            print('Do you want to create a dictnote now? y/n')
            ans=input()
            if(ans=='y'):
                fnames=input('Enter a name: ')
                self.create(fnames)
        else:
            with open(self.fn, 'r') as jr:
                self.ls=json.load(jr)
        self.showdicts()
        self.check()
        #ind=input('Chose your dictnotes:')
        self.newDicts=''
        self.newTrans=''
        #ind=int(ind)
    def create(self,fname):
        if  not fname.endswith('.json'):
            fname=fname+'.json'
        if fname not in self.ls['dicts']:
            self.ls['dicts'].append(fname)
            with open(self.fn,'w') as fw:
                    json.dump(self.ls,fw)
    def add(self,fname):
        self.create(fname)
    def delate(self,fname):
        if(fname in self.ls['dicts']):
            self.ls[dicts].remove(fname)
    def showdicts(self):
        for ind,x in enumerate(self.ls['dicts']):
            print(ind,x)

    def shownotes(self):
        self.check()
        ind = 1
        print('The dicts lists are given by:')
        if len(self.notes) > 0:
            for keys, values in self.notes.items():
                print(ind, keys, values)
                ind = ind+1
    def select(self,ind):
        if(ind>=0 and ind<len(self.ls['dicts'])):
            self.ls['index']=ind
            with open(self.fn, 'w') as fw:
                json.dump(self.ls, fw)
            fns = self.ls['dicts'][ind]
            if fns not in self.dicts:
                print('This notes have no dicts now, do you want to add some dicts? y/n')
                self.notes={}
                #keys,values='',''
                ans=input()
                while ans=='y':
                    d=input('Enter new word: ')
                    self.search(d)
                    ans=input('add it? y/n ')
                    if ans=='y':
                        self.addit()
                    else:
                        ans=input('Continue? y/n ')
                self.shownotes()
                ans=input('save them to your dictnotes? y/n ')
                if (ans=='y'):
                    with open(fns,'w') as fw:   
                        json.dump(self.notes,fw) 
            self.dicts = [x for x in self.filelists if x.endswith('.json')]
            self.notesInfo()  
    def saveTonotes(self):
        fns = self.ls['dicts'][self.ls['index']]
        with open(fns, 'w') as fw:
            json.dump(self.notes, fw)
    def notesInfo(self):
        ind=self.ls['index']
        if(ind >= 0 and ind < len(self.ls['dicts'])):
            fns = self.ls['dicts'][ind]
            if fns not in self.dicts:
                print('None info for your notes.')
            else:
                with open(self.ls['dicts'][ind], 'r') as jr:
                    self.notes = json.load(jr)
                print('Your dictnotes ',self.ls['dicts'][ind],' have ',len( self.notes), ' dicts')
    def EngToCn(self):
        self.check()
        self.recite2(self.notes)
    def chToEn(self):
        self.check()
        self.recite1(self.notes)
    def recite1(self,notes):        #
        ind=0
        lists=[x for x in notes.keys()]
        ans=''
        notesl=[]
        while ans!='c' and len(lists)>0:
            if ans!='a':
                notesl.clear()
                for x in range(10):
                    if x<len(lists):
                        #print(x,lists[x],notes[lists[x]])
                        notesl.append(lists[x])
                        lists.remove(lists[x])
            else:
                for x in range(10):
                    print('____________________\n\n\n________________________')
            print('Start it!')
            for ind,en in enumerate(notesl) :
                print(notes[en], ', translate, ',ind,'/',len(notesl))
                ans=input()
                while ans != en and ans != 'q':
                    ans = input('No, again (a) or look at the answer and skip (b) or quit (q):')
                    if ans == 'b':
                        print(en)
                        ans = en
                    elif ans == 'a' or ans != 'q':
                        print(notes[en], '-->')
                    elif ans=='q':
                        break
            for ind,en in enumerate(notesl):
                print(ind,en,notes[en])
            ans=input('a. again  b. next  c.quit: ')
        print('ok')
    def recite2(self,notes):
        ind=0
        lists = [x for x in notes.keys()]
        ans = 'b'
        notesl = []
        while ans != 'c' and len(lists) > 0:
            if ans == 'b':
                notesl.clear()
                for x in range(10):
                    if x < len(lists):
                        #print(x, lists[x], notes[lists[x]])
                        notesl.append(lists[x])
                        lists.remove(lists[x])
            elif ans=='a':
                for x in range(10):
                    print('____________________\n\n\n________________________')
            print('Start it!')
            for ind, en in enumerate(notesl):
                print(en, ', 1. remember   2. foget 3. quit')
                ans=input()
                if ans=='2':
                    print(notes[en])
                    print('--next--',ind,'/',len(notes))
                elif ans=='3':
                    break
            for ind, en in enumerate(notesl):
                print(ind, en, notes[en])
            ans = input('a. again  b. next  c.quit: ')
        print('ok')
    def check(self):
        if(len(self.notes)==0):
            self.select(self.ls['index'])
    def prase_str_to_dicts(self,strs):
        notes={}
        lists = strs.split('\n\n\u3000\u3000')
        for x in lists :
            rows=x.split('/')
            notes[(rows[0]).strip()]='/'+rows[1]+'/ '+rows[2]
        return notes
    def addall(self,a,b):
        for k,v in b.items():
            a[k]=v
        return a
    def search(self,dicts):
        self.newDicts=dicts
        url = 'http://dict.youdao.com/search?q='+dicts+'&keyfrom=new-fanyi.smartResult'
        t=requests.get(url,self.header)
        s=bs(t.text,'lxml')
        k = s.select('#phrsListTab > div.trans-container > ul')
        if len(k)<1:
            print('None be found!')
            return 0
        k1 = s.select('#phrsListTab > h2 > div > span:nth-child(1) > span')
        k2 = s.select('#phrsListTab > h2 > div > span:nth-child(2) > span')

        temp=k[0].decode().split('\n<li>')
        strs = k1[0].decode().split('>')[1].split('<')[0] +','+ \
            k2[0].decode().split('>')[1].split('<')[0]+' '
        
        for x in temp[1:]:
            strs=strs+x.split('</li>')[0]+';\n'
        print(strs)        
        self.newTrans=strs
    def addit(self):
        self.notes[self.newDicts]=self.newTrans
        #self.saveTonotes()
    def addNew(self,dicts):
        self.search(dicts)
        self.addit()
    def repeat(self):
        y = [x for x in os.listdir('.') if os.path.isfile(x) and x.endswith('.txt')]
        for _ in range(len(y)):
            print(_, y[_])
        ind = input('Input the index of file your want to read\n')
        ind = int(ind)
        if(ind < len(y) and ind >= 0):
            filename = y[ind]
        else:
            exit()
        #filename=input('Please input the name of file you want to read\n')
        err, count = 0, 0
        with open(filename, mode='r') as x:
            docs = [i.strip() for i in x if i.strip() != '']
            t, i = '', 0
            while i < len(docs) and t != 'exit':
                k = docs[i]
                t = ''
                #print(i,'/',len(docs),'error times:',err)
                while t != k and t != 'next' and t != 'previous' and t != 'exit':
                    if(t != ''):
                        err = err+1
                    print(k)
                    print(i, '/', len(docs), 'error times:', err, ', repeat it:')
                    t = input()
                if t == 'previous' and i > 0:
                    i = i-2
                    print('---Previous---', i, '/', len(docs), 'error times:', err)
                elif t == 'next':
                    print('---Next---', i, '/', len(docs), 'error times:', err)
                elif t == 'exit':
                    i = len(docs)-1
                    print('---End---', i, '/', len(docs), 'error times:', err)
                i = i+1
        print('Ok!')

简单地实现了用json来存储单词本

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值