python需要掌握的词汇量_【Python】测词汇量小工具

importrequestsimporttime

headers={'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}deferrwarning():print('输入有误,请重新输入')defstep1():globalcategory

url= 'https://www.shanbay.com/api/v1/vocabtest/category/?_=1584538302210'res= requests.get(url, headers=headers)

datas= res.json()['data']whileTrue:try:

num=int(input('第 1 步,请选择出题范围(选择对应的数字) 1.GMAT,2.考研,3.高考,4.四级,5.六级,6.英专,7.托福,8.GRE,9.雅思,10.任意:'))if num not in range(1, 11):

errwarning()else:break

except:

errwarning()

category= datas[num-1][1]return datas[num-1][0]defvocabularies():

url= 'https://www.shanbay.com/api/v1/vocabtest/vocabularies/?category={}&_=1584542288515'.format(

step1())

res= requests.get(url, headers=headers)

datas= res.json()['data']returndatasdefshow_words():

datas=vocabularies()for i inrange(len(datas)):print(str(i+1)+'.'+datas[i]['content'], end=',')if i+1 in range(11, 51, 10):print('')returndatasdefstep2():

datas=show_words()

isnotend=Truewhileisnotend:

knownums=[]

nums= input('\n第 2 步,请选择你认识的单词(选择对应的数字,以\",\"分隔,全选请输入0):')

nums_list= nums.split(',')for num innums_list:try:if int(num) in range(1, len(datas)+1):

knownums.append(int(num)-1)elif int(num) ==0:

knownums=[]for i in range(0, 50):

knownums.append(i)

isnotend=Falsebreak

else:

errwarning()break

except:

errwarning()break

else:

isnotend=Falsereturnknownums, datasdefstep3():

knowwords=[]

notknowwords=[]

rightwords=[]

wrongwords=[]

knownums, datas=step2()print('第 3 步,单词测试')for i inrange(len(datas)):

data=datas[i]

pk= data['pk']if i inknownums:

definition_choices= data['definition_choices']print(data['content'])for k in range(4):print(str(k+1)+'.'+definition_choices[k]['definition'])print('5. 不认识')whileTrue:try:

num= int(input('请选择正确的词义(选择对应的数字):'))if num not in range(1, 6):

errwarning()else:break

except:

errwarning()if num == 5:print('')

notknowwords.append(data)if num in range(1, 5):

knowwords.append(data)if definition_choices[num-1]['pk'] ==pk:print('bingo\n')

rightwords.append(data)else:print('oh no\n')

wrongwords.append(data)else:

notknowwords.append(data)returnknowwords, notknowwords, rightwords, wrongwords, datasdefresult():

knowwords, notknowwords, rightwords, wrongwords, datas=step3()

right_ranks= ''

for r inrange(len(rightwords)):if r ==0:

right_ranks= str(rightwords[r]['rank'])else:

right_ranks= right_ranks+','+str(rightwords[r]['rank'])

word_ranks= ''

for d inrange(len(datas)):if d ==0:

word_ranks= str(datas[d]['rank'])else:

word_ranks= word_ranks+','+str(datas[d]['rank'])

url= 'https://www.shanbay.com/api/v1/vocabtest/vocabularies/'data={'right_ranks': right_ranks,'word_ranks': word_ranks

}

res= requests.post(url, headers=headers, data=data)

vocab= res.json()['data']['vocab']print('你的词汇量大约是:{}'.format(vocab))print('{}{}个词汇,不认识{}个,认识{}个,掌握{}个,错了{}个'.format(

category, len(datas), len(notknowwords), len(knowwords), len(rightwords), len(wrongwords)))

f= open('生词本.txt', 'a+')

f.write(time.strftime("%Y/%m/%d %H:%M:%S\n"))

newwords= notknowwords+wrongwordsfor i inrange(len(newwords)):

data=newwords[i]for choice in data['definition_choices']:if choice['pk'] == data['pk']:

f.write('{}. {}: {}\n'.format(

i+1, data['content'], choice['definition']))

f.write('\n')

f.close()print('生词本已更新,请前往本地文件夹查看')

result()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值