临近期末考试,做了一个简单地毛概答题程序,调用的也是自己写的题库接口,题量不大,仅仅有我的老师发出的700道选择题
目前已知安全性问题,验证码没有在服务器端验证,后续会进行更改。
题库未按照单选与多选类型进行分类。
# Copyright (c) 2020.
# 作者:Xiao Bao
# 邮箱:ztianb@foxmail.com
# 日期:2020-07-18 13:46
# ---
# 项目:MyApi
# 文件名:maogai.py
# 路径:D:/pythonworkspace/MyApi/maogai.py
# Copyright (c) 2020
import json
import os
import time
from suds.client import Client
def get(num, token):
client = Client('题库接口')
response = client.service.getQuestion(str(num), token)
# print(response)
dic = json.loads(response)
return dic
def pr(dic, l):
list = []
sc = 0
for i in range(0, l):
os.system("cls")
print("共{}题,已做{}题,错{}题,得分为{}".format(str(l), str(i), len(list), str(sc)))
print(dic['data'][i]['q'] + "\n")
print(dic['data'][i]['se1'] + "\n")
print(dic['data'][i]['se2'] + "\n")
print(dic['data'][i]['se3'] + "\n")
print(dic['data'][i]['se4'] + "\n")
ans = input("输入你的答案(大写且不要有空格,不定项选择):")
if dic['data'][i]['a'] == ans.strip(""):
print("回答正确!1.5s后进入下一题")
sc = sc + 1
time.sleep(1.5)
else:
print("正确答案为:" + dic['data'][i]['a'])
list.append(dic["data"][i])
print("已为您加入错题本,3s后进入下一题")
time.sleep(3)
return list
def save(list):
try:
str = '\n'
with open("错题本.txt", "a", encoding="utf-8") as f:
# f.write(str.join(list))
for line in list:
json.dump(line, f, ensure_ascii=False)
f.write("\n")
except:
print("文件写入错误!错题保存失败")
def CuoTi():
try:
str = '\n'
ctbook = []
with open("错题本.txt", "r", encoding="utf-8") as f:
# f.write(str.join(list))
lines = f.readlines()
for line in lines:
dicc = json.loads(line)
ctbook.append(dicc)
return ctbook
except:
print("错题文件读取错误!")
def readCuoTi(ctbook):
l = len(ctbook) - 1
i = 0
while i <= l:
os.system("cls")
print("共{}题,已复习{}题,剩余{}题".format(str(l), str(i), str(l - i)))
JieXi(ctbook, i)
key = input("输入回车进入下一题,输入1返回上一题\n")
try:
if key == "1":
i = i - 2
except:
pass
i = i + 1
def JieXi(ctbook, i):
ans = ctbook[i]['a']
print(ctbook[i]['q'] + "\n")
if "A" in ans:
A(ctbook, i)
if "B" in ans:
B(ctbook, i)
if "C" in ans:
C(ctbook, i)
if "D" in ans:
D(ctbook, i)
def A(ctbook, i):
print(ctbook[i]['se1'] + "\n")
def B(ctbook, i):
print(ctbook[i]['se2'] + "\n")
def C(ctbook, i):
print(ctbook[i]['se3'] + "\n")
def D(ctbook, i):
print(ctbook[i]['se4'] + "\n")
def main(G_token):
CuoTi()
num = input("输入题量:")
dic = get(num, G_token)
if dic['code'] == 200:
l = len(dic['data'])
save(pr(dic, l))
else:
print(dic['text'])
def saveLOG(list):
try:
with open("logmessage.txt", "w", encoding="utf-8") as f:
# f.write(str.join(list))
for line in list:
json.dump(line, f, ensure_ascii=False)
f.write("\n")
except:
print("文件写入错误!登录信息保存失败\n记牢以下信息:" + list[0]['token'])
def signCheck():
return os.path.exists("logmessage.txt")
def getToken():
with open("logmessage.txt", "r", encoding="utf-8") as f:
# f.write(str.join(list))
dicc = json.loads(f.readline())
G_token = dicc['token']
return G_token
def signIn():
list = []
email = input("注册本软件,请输入您的邮箱:\n")
client = Client('token接口')
response = client.service.get(email)
# print(response)
dic = json.loads(response)
list.append(dic)
if dic['code'] == 200:
code = input("输入验证码:\n")
if code == dic['emcode']['result'][0]['message']:
saveLOG(list)
if __name__ == '__main__':
while True: # 永真循环
if signCheck():
G_token = getToken()
se = input("进入答题模式请输入:1" + "\n" + "进入错题查看请输入:2 \n")
if se == "1":
main(G_token)
elif se == "2":
readCuoTi(CuoTi())
else:
exit(-1)
else:
signIn()
直接使用:
下载链接
接口内容如下:
此内容仅供注册用户查看。请 %登录% .