57个挑战之57(part4):客户端逻辑

继续贴题目:


贴代码:

import requestsimport randomfrom flask import Flask,request,render_template,url_for,redirectapp = Flask(__name__)def get_data():    """    函数作用:从服务端读入题库,以JSON格式返回    输入:无    返回:从服务端题库随机读取10个题目,并返回    """    print("start process get_data")    url = "http://127.0.0.1:8008/get"    ret = requests.post(url)    dic1 = ret.json()    print("end process get_data")    return dic1def orderlize(questionlist):    """        函数作用:读入列表,并把列表做处理,按照列表中每个字典的‘R’(难度) 大小排序。        输入:问题list列表        返回:根据'R‘排序后的问题列表    """    print("start process orderlize")    print("列表通过难度值进行排序")    sortedlist = sorted(questionlist,key = lambda i : i['R'])    print(sortedlist)    print("end process orderlize")    return sortedlistdef randomlize_input(dic1):    """       函数作用:输入问题,对这个问题里面的答案和干扰项目做随机化,并返回给展示界面,包含问题、正确答案、随机化的答案+干扰项目       输入:问题list 列表中的每一个对象(字典对象)       输出:返回这个字典    """    list1 = [dic1['A'], dic1['D1'], dic1['D2'], dic1['D3']]    listrandom = random.sample(list1,4)    return dic1['Q'],dic1['A'],listrandom@app.route('/',methods=['GET','POST'])def start_html():    """    1.get请求打开首页,选择开始答题。      介绍规则,选择10道题,然后从容易往复杂进行答复,如果答题错误则结束。    2.post请求 展示开始答题      跳转到函数答题    """    #逻辑1:点击开始答题,读取题库信息    if request.method == "POST":       return redirect('/question')    if request.method == "GET":       #1.展示首页,展示"开始答题"       #1.1 点击开始答题发送请求到后端开始答题       return render_template('index57.html')@app.route('/question',methods=['GET','POST'])def start_question():    if request.method == "POST":       #2.1 接收用户选择,       #2.2判断第一道题答案是否正确       #2.3 如果正确,累计答题正确数+1,且调度下一道题       #2.5 如果失败,统计答题正确数right,传递到展示展示界面       return 1    if request.method == "GET":       #2.1 接收传入的字典信息,       dic1 = get_data()       print(dic1)       questionlist = dic1['data']       sortedlist = orderlize(questionlist)       print(sortedlist)       #2.2 展示第一道题       Q,A,listrandom = randomlize_input(sortedlist[0])       return render_template('start_question.html',Q=Q,A=A,listrandom=listrandom)@app.route('/statistics')def take_account(right):    # 展示正确答案     return 1if __name__ =='__main__':    app.run(host='0.0.0.0',port=80,debug = True)

先准备几个函数逻辑:


读取数据+序列化数据

  1. get_data() 函数

"""函数作用:从服务端读入题库,以JSON格式返回输入:无返回:从服务端题库随机读取10个题目,并返回"""

2.orderlize(questionlist)函数

"""
函数作用:读入问题列表,并把列表做处理,按照列表中每个字典的‘R’(难度) 大小排序。
输入:问题list列表
返回:根据'R‘排序后的问题列表
"""


3.randomlize_input(dic1) 函数

"""
函数作用:输入问题,对这个问题里面的答案和干扰项目做随机化,并返回给展示界面,包含问题、正确答案、随机化的答案+干扰项目
输入:问题list 列表中的每一个对象(字典对象)
输出:返回问题、返回正确答案,返回随机化的答案+干扰项目列表
"""


4.准备第一个逻辑:

"""
1.get请求打开首页,选择开始答题。
介绍规则,选择10道题,然后从容易往复杂进行答复,如果答题错误则结束。
2.post请求 展示开始答题
跳转到函数答题
"""

5.准备第二个逻辑:(未完成,待续)

#2.1 接收用户选择,

#2.2判断第一道题答案是否正确

#2.3 如果正确,累计答题正确数+1,且调度下一道题

#2.5 如果失败,统计答题正确数right,传递到展示展示界面


今天主要按照之前准备的主逻辑写分支逻辑及对应的实现函数。一边写一边验证,还未完成,先放到这里。

主逻辑参考这里:

https://www.toutiao.com/article/7128196832081183236/



待续。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章