|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wp231957 于 2020-2-8 09:03 编辑
代码copy过去是可以直接运行的
修正了等号前后空格问题, 同时也修正了一些小的bug,感谢dlnb526同学,zltzlt同学
- import requests,json
- class Exam(object):
- def __init__(self,urla,urlb):
- self.urla = urla
- self.urlb = urlb
- self.headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
- self.test_word = []
- self.words_know = []
- self.not_know = []
- self.n = 0
- self.right = 0
- self.wrong = []
- self.choice = 1
- self.choicestr = '''请输入你选择的词库编号,按Enter确认
- 1,GMAT 2,考研 3,高考 4,四级 5,六级 6,英专 7,托福 8,GRE 9,雅思 10,任意'''
- self.startstr = '''
- 5分钟,评估你的单词量
- 评估过程包括三步:
- 1. 选择适合你的出题范围
- 2. 通过50个单词得到你的大致词汇量范围
- 3. 检验你是否真的掌握你在第二步中选择的单词'''
- def getwords(self):
- return requests.get(self.urla,headers = self.headers).json()
-
- def gettest(self,choice):
- return requests.get(self.urlb+choice,headers = self.headers).json()
-
- #选择自己想测试的词库
- def setchoice(self):
- words = self.getwords()
- lst = []
- types = words['data']
- for type in types:
- lst.append(type[0])
- print(self.choicestr)
- choice = int(input('>'))
- self.choice = lst[choice-1]
- print(self.choice)
- # A 阶段测试
- def testa(self):
- self.setchoice()
- test_json = self.gettest(self.choice)
- for i in test_json['data']:
- danci = i['content']
- self.n = self.n + 1
- print(f'\n第{self.n}个单词{danci}是否认识,如果认识请按y,如果不认识请按n,输入Esc结束此阶段')
- answer = input('>')
- if answer == 'y':
- self.test_word.append(danci)
- self.words_know.append(i)
- elif answer == 'n':
- self.not_know.append(i)
- elif answer.lower() == 'esc':
- break
- else:
- print('\n输入错误,请按提示输入。')
- # B 阶段测试
- def testb(self):
- for i in self.words_know:
- print(i['content'])
- print('--------------------------------')
- print('A.'+ i['definition_choices'][0]['definition'])
- print('B.'+ i['definition_choices'][1]['definition'])
- print('C.'+ i['definition_choices'][2]['definition'])
- print('D.'+ i['definition_choices'][3]['definition'])
- xuan = input('请输入你的选择:')
- print('--------------------------------\n')
- dic = {'A':i['definition_choices'][0]['pk'],'B':i['definition_choices'][1]['pk'],
- 'C':i['definition_choices'][2]['pk'],'D':i['definition_choices'][3]['pk']}
- if dic[xuan.upper()] == i['pk']:
- self.right = self.right + 1
- else:
- self.wrong.append(i['content'])
- #最后评分阶段
- def pingfen(self):
- print('本次测试小结:')
- print(f'50个单词里面,有{len(self.test_word)}单词你是认识,有'+
- str(50-int(len(self.test_word)))+
- f'单词你是不认识的,在认识的单词里面,你做对了{self.right}个,做错了'+
- str(int(len(self.test_word))-self.right)+'个,请继续努力')
-
- def main():
- urla = 'https://www.shanbay.com/api/v1/vocabtest/category/?_ = 1580454535232'
- urlb = 'https://www.shanbay.com/api/v1/vocabtest/vocabularies/?category = '
- exam = Exam(urla,urlb)
- print(exam.startstr)
- exam.testa()
- print("进行下一阶段的测试")
- exam.testb()
- print("下面进行评分")
- exam.pingfen()
-
- if __name__ == "__main__":
- main()
复制代码
还可以这样玩,把类代码藏起来
- import requests,json
- from exama import Exam
- def main():
- urla = 'https://www.shanbay.com/api/v1/vocabtest/category/?_ = 1580454535232'
- urlb = 'https://www.shanbay.com/api/v1/vocabtest/vocabularies/?category = '
- exam = Exam(urla,urlb)
- print(exam.startstr)
- exam.testa()
- print("进行下一阶段的测试")
- exam.testb()
- print("下面进行评分")
- exam.pingfen()
-
- if __name__ == "__main__":
- main()
复制代码
本帖最后由 dlnb526 于 2020-2-7 21:46 编辑
改成这样应该就可以了 - def testb(self):
- for i in self.words_know:
- print(i['content'])
- print('--------------------------------')
- print('A.'+ i['definition_choices'][0]['definition'])
- print('B.'+ i['definition_choices'][1]['definition'])
- print('C.'+ i['definition_choices'][2]['definition'])
- print('D.'+ i['definition_choices'][3]['definition'])
- xuan = input('请输入你的选择:')
- print('--------------------------------\n')
- dic = {'A':i['definition_choices'][0]['pk'],'B5':i['definition_choices'][1]['pk'],
- 'C':i['definition_choices'][2]['pk'],'D':i['definition_choices'][3]['pk']}
- if dic[xuan.upper()] == i['pk']:
- self.right = self.right + 1
- else:
- self.wrong.append(i['content'])
复制代码
我加了print(i['content'])
|
|