分析oj 网的题目难度和通过率的关系

# coding=utf-8
import csv
import json
import requests
import gevent
from gevent.queue import Queue
# 原作链接:http://www.likecs.com/default/index/show?id=51226
# 自己的网站:https://mixintu.github.io/
q = Queue( )


def fetch(url):  # 获取源码
    print("get: {}".format(url))
    response = requests.get(url)
    assert response.status_code == 200
    return parse(response)


def parse(response):  # 解析数据
    items = []
    data = json.loads(response.text)['data']['results']
    if data:
        for i in range(len(data)):
            item = {}
            submissionNo = int(data[i]['submission_number'])
            acceptedNo = int(data[i]['accepted_number'])
            try:
                passingRate = round((acceptedNo / submissionNo) * 100, 2)
            except ZeroDivisionError as e:
                passingRate = 0

            item['编号'] = data[i]['_id']
            item['标题'] = data[i]['title']
            item['难度'] = data[i]['difficulty']
            item['提交量'] = submissionNo
            item['正确数'] = acceptedNo
            item['正确率'] = f"{passingRate}%"
            items.append(item)
    q.put(items)
    gevent.sleep(0)


def save_csv(number):  # 保存至csv文件
    """
    另外的csv写入方式:https://mixintu.github.io/2019/11/14/lagou/
    """
    headers = ['编号', '标题', '难度', '提交量', '正确数', '正确率']
    with open('qiye.csv', 'w', encoding = "utf-8") as f:
        f_scv = csv.DictWriter(f, fieldnames = headers)
        f_scv.writeheader( )
        for _ in range(number):
            items = q.get( )
            f_scv.writerows(items)
            print(items)


if __name__ == "__main__":
    # 使用gevent实现协程-----------------------------------------------
    number = 11
    baseurl = 'http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset={0}'
    urls = [baseurl.format(i * 20) for i in range(0, number)]
    jobs = [gevent.spawn(fetch, url) for url in urls]
    gevent.joinall(jobs)
    # 打印或保存数据---------------------------------------------------
    save_csv(number)
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=0
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=20
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=40
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=60
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=80
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=100
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=120
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=140
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=160
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=180
get: http://oj.dgut.edu.cn/api/xproblem/?limit=20&offset=200
[{'编号': '1', '标题': '2^k进制数', '难度': '中等', '提交量': 274, '正确数': 72, '正确率': '26.28%'}, {'编号': '4', '标题': '马拦过河卒', '难度': '中等', '提交量': 288, '正确数': 133, '正确率': '46.18%'}, {'编号': '5', '标题': '产生数', '难度': '困难', '提交量': 310, '正确数': 33, '正确率': '10.65%'}, {'编号': '6', '标题': '【排队买票】', '难度': '中等', '提交量': 445, '正确数': 194, '正确率': '43.6%'}, {'编号': '9', '标题': '【C语言训练】计算t=1+1/2+1/3+...+1/n', '难度': '中等', '提交量': 1522, '正确数': 514, '正确率': '33.77%'}, {'编号': '10', '标题': '检查一个数是否为质数', '难度': '中等', '提交量': 1268, '正确数': 549, '正确率': '43.3%'}, {'编号': '11', '标题': '【C语言训练】素数问题', '难度': '中等', '提交量': 1087, '正确数': 504, '正确率': '46.37%'}, {'编号': '15', '标题': '【C语言训练】求矩阵的两对角线上的元素之和', '难度': '中等', '提交量': 730, '正确数': 350, '正确率': '47.95%'}, {'编号': '16', '标题': '【C语言训练】求素数问题', '难度': '中等', '提交量': 1137, '正确数': 420, '正确率': '36.94%'}, {'编号': '17', '标题': '众数问题', '难度': '中等', '提交量': 651, '正确数': 311, '正确率': '47.77%'}, {'编号': '18', '标题': '复数加法', '难度': '简单', '提交量': 523, '正确数': 342, '正确率': '65.39%'}, {'编号': '20', '标题': 'C语言程序设计教程(第三版)课后习题4.8', '难度': '中等', '提交量': 624, '正确数': 286, '正确率': '45.83%'}, {'编号': '23', '标题': '多输入输出练习1', '难度': '中等', '提交量': 571, '正确数': 241, '正确率': '42.21%'}, {'编号': '24', '标题': '麦森数', '难度': '困难', '提交量': 79, '正确数': 11, '正确率': '13.92%'}, {'编号': '25', '标题': '求组合数', '难度': '中等', '提交量': 378, '正确数': 200, '正确率': '52.91%'}, {'编号': '26', '标题': '文科生的悲哀', '难度': '中等', '提交量': 328, '正确数': 116, '正确率': '35.37%'}, {'编号': '27', '标题': '【C语言训练】计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m)', '难度': '中等', '提交量': 712, '正确数': 353, '正确率': '49.58%'}, {'编号': '28', '标题': '明明的随机数', '难度': '中等', '提交量': 539, '正确数': 194, '正确率': '35.99%'}, {'编号': '31', '标题': 'K-进制数', '难度': '中等', '提交量': 91, '正确数': 33, '正确率': '36.26%'}, {'编号': '33', '标题': '【作业调度方案】', '难度': '中等', '提交量': 11, '正确数': 10, '正确率': '90.91%'}]
[{'编号': '35', '标题': '【C语言训练】角谷猜想', '难度': '简单', '提交量': 585, '正确数': 342, '正确率': '58.46%'}, {'编号': '38', '标题': '数列问题', '难度': '中等', '提交量': 545, '正确数': 283, '正确率': '51.93%'}, {'编号': '39', '标题': '【C语言训练】斐波纳契数列', '难度': '中等', '提交量': 897, '正确数': 350, '正确率': '39.02%'}, {'编号': '40', '标题': '神奇的fans', '难度': '困难', '提交量': 544, '正确数': 136, '正确率': '25.0%'}, {'编号': '41', '标题': '假币问题', '难度': '困难', '提交量': 464, '正确数': 78, '正确率': '16.81%'}, {'编号': '43', '标题': '奖学金', '难度': '中等', '提交量': 190, '正确数': 65, '正确率': '34.21%'}, {'编号': '45', '标题': '【C语言训练】排序问题<2>', '难度': '中等', '提交量': 590, '正确数': 270, '正确率': '45.76%'}, {'编号': '47', '标题': '2^k进制数', '难度': '简单', '提交量': 46, '正确数': 33, '正确率': '71.74%'}, {'编号': '48', '标题': '使用栈实现进制转换', '难度': '简单', '提交量': 91, '正确数': 52, '正确率': '57.14%'}, {'编号': '49', '标题': '半数集问题', '难度': '中等', '提交量': 64, '正确数': 23, '正确率': '35.94%'}, {'编号': '51', '标题': '【矩阵】', '难度': '中等', '提交量': 14, '正确数': 9, '正确率': '64.29%'}, {'编号': '53', '标题': '【偶数求和】', '难度': '中等', '提交量': 271, '正确数': 139, '正确率': '51.29%'}, {'编号': '54', '标题': '【亲和数】', '难度': '简单', '提交量': 339, '正确数': 233, '正确率': '68.73%'}, {'编号': '55', '标题': 'Cylinder', '难度': '简单', '提交量': 35, '正确数': 21, '正确率': '60.0%'}, {'编号': '56', '标题': '最小公倍数', '难度': '简单', '提交量': 749, '正确数': 392, '正确率': '52.34%'}, {'编号': '57', '标题': '取石子游戏', '难度': '中等', '提交量': 74, '正确数': 23, '正确率': '31.08%'}, {'编号': '59', '标题': '【金明的预算方案】', '难度': '中等', '提交量': 18, '正确数': 1, '正确率': '5.56%'}, {'编号': '60', '标题': '孤独的骑士', '难度': '中等', '提交量': 215, '正确数': 76, '正确率': '35.35%'}, {'编号': '61', '标题': '简单的事情', '难度': '中等', '提交量': 296, '正确数': 132, '正确率': '44.59%'}, {'编号': '62', '标题': '三角形', '难度': '中等', '提交量': 160, '正确数': 49, '正确率': '30.63%'}]
[{'编号': '63', '标题': '【回文数(二)】', '难度': '中等', '提交量': 102, '正确数': 38, '正确率': '37.25%'}, {'编号': '64', '标题': '【魔板】', '难度': '中等', '提交量': 13, '正确数': 7, '正确率': '53.85%'}, {'编号': '65', '标题': '【数组的距离】', '难度': '简单', '提交量': 392, '正确数': 194, '正确率': '49.49%'}, {'编号': '67', '标题': '筛排处理', '难度': '中等', '提交量': 368, '正确数': 103, '正确率': '27.99%'}, {'编号': '68', '标题': '循环数', '难度': '中等', '提交量': 15, '正确数': 1, '正确率': '6.67%'}, {'编号': '70', '标题': '上车人数', '难度': '简单', '提交量': 110, '正确数': 65, '正确率': '59.09%'}, {'编号': '72', '标题': '【求[X,Y]内被除3余1并且被除5余3的整数的和】', '难度': '简单', '提交量': 329, '正确数': 276, '正确率': '83.89%'}, {'编号': '73', '标题': '【计算直线的交点数】', '难度': '中等', '提交量': 47, '正确数': 20, '正确率': '42.55%'}, {'编号': '74', '标题': '最多约数问题', '难度': '困难', '提交量': 130, '正确数': 1, '正确率': '0.77%'}, {'编号': '75', '标题': '独木桥', '难度': '困难', '提交量': 43, '正确数': 1, '正确率': '2.33%'}, {'编号': '76', '标题': '级数求和', '难度': '中等', '提交量': 446, '正确数': 213, '正确率': '47.76%'}, {'编号': '77', '标题': '数列有序', '难度': '困难', '提交量': 489, '正确数': 115, '正确率': '23.52%'}, {'编号': '78', '标题': '【C语言训练】计算一个整数N的阶乘', '难度': '简单', '提交量': 655, '正确数': 364, '正确率': '55.57%'}, {'编号': '79', '标题': '复数乘积', '难度': '简单', '提交量': 286, '正确数': 209, '正确率': '73.08%'}, {'编号': '80', '标题': '年会', '难度': '中等', '提交量': 1, '正确数': 1, '正确率': '100.0%'}, {'编号': '81', '标题': '开心的金明', '难度': '中等', '提交量': 54, '正确数': 30, '正确率': '55.56%'}, {'编号': '82', '标题': '【出圈】', '难度': '中等', '提交量': 179, '正确数': 65, '正确率': '36.31%'}, {'编号': '83', '标题': '整除的尾数', '难度': '中等', '提交量': 254, '正确数': 91, '正确率': '35.83%'}, {'编号': '85', '标题': '【密码】', '难度': '中等', '提交量': 268, '正确数': 88, '正确率': '32.84%'}, {'编号': '86', '标题': '盐水的故事', '难度': '中等', '提交量': 245, '正确数': 106, '正确率': '43.27%'}]
[{'编号': '87', '标题': '【C语言训练】求函数值', '难度': '简单', '提交量': 431, '正确数': 319, '正确率': '74.01%'}, {'编号': '88', '标题': '数字统计', '难度': '简单', '提交量': 218, '正确数': 142, '正确率': '65.14%'}, {'编号': '90', '标题': '小教官', '难度': '中等', '提交量': 2, '正确数': 2, '正确率': '100.0%'}, {'编号': '92', '标题': '【C语言训练】最大数问题', '难度': '中等', '提交量': 675, '正确数': 208, '正确率': '30.81%'}, {'编号': '93', '标题': '【C语言训练】"水仙花数"问题1', '难度': '简单', '提交量': 609, '正确数': 328, '正确率': '53.86%'}, {'编号': '94', '标题': '金明的预算方案', '难度': '中等', '提交量': 13, '正确数': 11, '正确率': '84.62%'}, {'编号': '95', '标题': '平方和与立方和', '难度': '中等', '提交量': 293, '正确数': 129, '正确率': '44.03%'}, {'编号': '96', '标题': '青年歌手大奖赛_评委会打分', '难度': '简单', '提交量': 258, '正确数': 144, '正确率': '55.81%'}, {'编号': '97', '标题': 'Ecological Bin Packing', '难度': '中等', '提交量': 4, '正确数': 3, '正确率': '75.0%'}, {'编号': '98', '标题': '老王赛马', '难度': '中等', '提交量': 70, '正确数': 32, '正确率': '45.71%'}, {'编号': '99', '标题': '统计立方数', '难度': '简单', '提交量': 391, '正确数': 218, '正确率': '55.75%'}, {'编号': '100', '标题': '【C语言训练】自由落体问题', '难度': '中等', '提交量': 538, '正确数': 254, '正确率': '47.21%'}, {'编号': '102', '标题': '【简单计算】', '难度': '困难', '提交量': 98, '正确数': 21, '正确率': '21.43%'}, {'编号': '103', '标题': '愚蠢的摄影师', '难度': '中等', '提交量': 32, '正确数': 16, '正确率': '50.0%'}, {'编号': '104', '标题': '【计算球体积】', '难度': '中等', '提交量': 410, '正确数': 192, '正确率': '46.83%'}, {'编号': '105', '标题': '逆反的01串', '难度': '中等', '提交量': 349, '正确数': 172, '正确率': '49.28%'}, {'编号': '106', '标题': 'Jam的计数法', '难度': '中等', '提交量': 11, '正确数': 11, '正确率': '100.0%'}, {'编号': '107', '标题': '破解平方数', '难度': '中等', '提交量': 1, '正确数': 0, '正确率': '0.0%'}, {'编号': '109', '标题': '数列排序', '难度': '中等', '提交量': 182, '正确数': 61, '正确率': '33.52%'}, {'编号': '110', '标题': '【C语言训练】排序问题<1>', '难度': '简单', '提交量': 431, '正确数': 249, '正确率': '57.77%'}]
[{'编号': '111', '标题': '哥德巴赫曾猜测', '难度': '简单', '提交量': 225, '正确数': 129, '正确率': '57.33%'}, {'编号': '112', '标题': '【C语言训练】计算1~N之间所有奇数之和', '难度': '简单', '提交量': 414, '正确数': 292, '正确率': '70.53%'}, {'编号': '113', '标题': '【蟠桃记】', '难度': '简单', '提交量': 234, '正确数': 171, '正确率': '73.08%'}, {'编号': '114', '标题': '做幻方', '难度': '中等', '提交量': 59, '正确数': 21, '正确率': '35.59%'}, {'编号': '115', '标题': '考试排名', '难度': '中等', '提交量': 26, '正确数': 9, '正确率': '34.62%'}, {'编号': '116', '标题': '能量项链', '难度': '中等', '提交量': 21, '正确数': 9, '正确率': '42.86%'}, {'编号': '117', '标题': '人见人爱A+B', '难度': '简单', '提交量': 285, '正确数': 129, '正确率': '45.26%'}, {'编号': '118', '标题': '判断升序', '难度': '简单', '提交量': 211, '正确数': 139, '正确率': '65.88%'}, {'编号': '121', '标题': '防御导弹', '难度': '中等', '提交量': 151, '正确数': 39, '正确率': '25.83%'}, {'编号': '124', '标题': '最小重量机器设计问题', '难度': '中等', '提交量': 15, '正确数': 1, '正确率': '6.67%'}, {'编号': '125', '标题': '【C语言训练】立方和不等式', '难度': '简单', '提交量': 406, '正确数': 191, '正确率': '47.04%'}, {'编号': '127', '标题': '排列', '难度': '困难', '提交量': 115, '正确数': 12, '正确率': '10.43%'}, {'编号': '128', '标题': '回文数(一)', '难度': '简单', '提交量': 156, '正确数': 102, '正确率': '65.38%'}, {'编号': '129', '标题': '十->二进制转换', '难度': '中等', '提交量': 300, '正确数': 85, '正确率': '28.33%'}, {'编号': '130', '标题': '通话记录', '难度': '困难', '提交量': 132, '正确数': 34, '正确率': '25.76%'}, {'编号': '131', '标题': '母牛生小牛', '难度': '中等', '提交量': 285, '正确数': 107, '正确率': '37.54%'}, {'编号': '132', '标题': '三进制小数', '难度': '中等', '提交量': 37, '正确数': 20, '正确率': '54.05%'}, {'编号': '133', '标题': '【能量项链】', '难度': '中等', '提交量': 10, '正确数': 3, '正确率': '30.0%'}, {'编号': '135', '标题': '金额的中文大写', '难度': '中等', '提交量': 12, '正确数': 4, '正确率': '33.33%'}, {'编号': '136', '标题': '检查金币', '难度': '简单', '提交量': 84, '正确数': 47, '正确率': '55.95%'}]
[{'编号': '137', '标题': '化学品问题', '难度': '中等', '提交量': 50, '正确数': 18, '正确率': '36.0%'}, {'编号': '139', '标题': 'IP判断', '难度': '简单', '提交量': 161, '正确数': 81, '正确率': '50.31%'}, {'编号': '140', '标题': '人民币问题', '难度': '简单', '提交量': 139, '正确数': 110, '正确率': '79.14%'}, {'编号': '146', '标题': '最爱回文串', '难度': '中等', '提交量': 149, '正确数': 60, '正确率': '40.27%'}, {'编号': '147', '标题': '二叉树问题', '难度': '中等', '提交量': 9, '正确数': 9, '正确率': '100.0%'}, {'编号': '148', '标题': '小明的约会', '难度': '困难', '提交量': 108, '正确数': 25, '正确率': '23.15%'}, {'编号': '149', '标题': '朋友圈', '难度': '中等', '提交量': 28, '正确数': 9, '正确率': '32.14%'}, {'编号': '150', '标题': '银行业务队列', '难度': '简单', '提交量': 57, '正确数': 35, '正确率': '61.4%'}, {'编号': '151', '标题': '世界杯来了', '难度': '中等', '提交量': 37, '正确数': 13, '正确率': '35.14%'}, {'编号': '152', '标题': '我是管理员', '难度': '中等', '提交量': 47, '正确数': 18, '正确率': '38.3%'}, {'编号': '153', '标题': '中国好OJ', '难度': '中等', '提交量': 107, '正确数': 23, '正确率': '21.5%'}, {'编号': '154', '标题': '高分笔记叠罗汉', '难度': '中等', '提交量': 8, '正确数': 2, '正确率': '25.0%'}, {'编号': '155', '标题': 'ACM俱乐部大聚会', '难度': '中等', '提交量': 2, '正确数': 0, '正确率': '0.0%'}, {'编号': '156', '标题': '火爆的一乐拉面', '难度': '中等', '提交量': 113, '正确数': 50, '正确率': '44.25%'}, {'编号': '157', '标题': '哆啦A梦的口袋', '难度': '中等', '提交量': 92, '正确数': 29, '正确率': '31.52%'}, {'编号': '158', '标题': '拯救雅典娜', '难度': '简单', '提交量': 23, '正确数': 13, '正确率': '56.52%'}, {'编号': '159', '标题': '帮助名侦探', '难度': '中等', '提交量': 11, '正确数': 2, '正确率': '18.18%'}, {'编号': '160', '标题': '阻击火箭队', '难度': '中等', '提交量': 1, '正确数': 1, '正确率': '100.0%'}, {'编号': '161', '标题': 'Think Different', '难度': '简单', '提交量': 68, '正确数': 34, '正确率': '50.0%'}, {'编号': '162', '标题': '求上网', '难度': '简单', '提交量': 43, '正确数': 29, '正确率': '67.44%'}]
[{'编号': '163', '标题': '整理试卷', '难度': '简单', '提交量': 70, '正确数': 47, '正确率': '67.14%'}, {'编号': '164', '标题': '迷瘴', '难度': '中等', '提交量': 8, '正确数': 4, '正确率': '50.0%'}, {'编号': '165', '标题': 'ACM俱乐部密码', '难度': '中等', '提交量': 31, '正确数': 16, '正确率': '51.61%'}, {'编号': '166', '标题': '神奇的工号', '难度': '中等', '提交量': 80, '正确数': 29, '正确率': '36.25%'}, {'编号': '167', '标题': '年终大奖', '难度': '中等', '提交量': 48, '正确数': 13, '正确率': '27.08%'}, {'编号': '168', '标题': '加密', '难度': '中等', '提交量': 117, '正确数': 30, '正确率': '25.64%'}, {'编号': '169', '标题': '搞破坏', '难度': '简单', '提交量': 129, '正确数': 71, '正确率': '55.04%'}, {'编号': '170', '标题': '解密信息', '难度': '中等', '提交量': 136, '正确数': 40, '正确率': '29.41%'}, {'编号': '171', '标题': '老旧的钟表', '难度': '中等', '提交量': 41, '正确数': 16, '正确率': '39.02%'}, {'编号': '172', '标题': '数列3', '难度': '困难', '提交量': 60, '正确数': 6, '正确率': '10.0%'}, {'编号': '173', '标题': '可恶的雾霾天', '难度': '中等', '提交量': 1, '正确数': 1, '正确率': '100.0%'}, {'编号': '174', '标题': '窃贼', '难度': '简单', '提交量': 50, '正确数': 27, '正确率': '54.0%'}, {'编号': '175', '标题': 'N的阶乘', '难度': '困难', '提交量': 499, '正确数': 84, '正确率': '16.83%'}, {'编号': '176', '标题': '简单计算器 ', '难度': '困难', '提交量': 44, '正确数': 13, '正确率': '29.55%'}, {'编号': '177', '标题': '二叉排序树', '难度': '困难', '提交量': 37, '正确数': 4, '正确率': '10.81%'}, {'编号': '178', '标题': '二叉搜索树 ', '难度': '中等', '提交量': 11, '正确数': 7, '正确率': '63.64%'}, {'编号': '179', '标题': '哈夫曼树', '难度': '中等', '提交量': 10, '正确数': 6, '正确率': '60.0%'}, {'编号': '180', '标题': '浮点数加法 ', '难度': '中等', '提交量': 34, '正确数': 12, '正确率': '35.29%'}, {'编号': '181', '标题': '排序', '难度': '困难', '提交量': 227, '正确数': 3, '正确率': '1.32%'}, {'编号': '182', '标题': '成绩排序1', '难度': '中等', '提交量': 187, '正确数': 43, '正确率': '22.99%'}]
[{'编号': '183', '标题': '特殊排序', '难度': '困难', '提交量': 309, '正确数': 65, '正确率': '21.04%'}, {'编号': '184', '标题': '字符串内排序', '难度': '中等', '提交量': 184, '正确数': 68, '正确率': '36.96%'}, {'编号': '185', '标题': '日期差值', '难度': '困难', '提交量': 110, '正确数': 22, '正确率': '20.0%'}, {'编号': '186', '标题': '今年的第几天?', '难度': '中等', '提交量': 224, '正确数': 101, '正确率': '45.09%'}, {'编号': '187', '标题': '打印日期', '难度': '中等', '提交量': 248, '正确数': 69, '正确率': '27.82%'}, {'编号': '188', '标题': '统计同成绩学生人数', '难度': '中等', '提交量': 214, '正确数': 102, '正确率': '47.66%'}, {'编号': '190', '标题': '找x', '难度': '中等', '提交量': 324, '正确数': 95, '正确率': '29.32%'}, {'编号': '191', '标题': '打印极值点下标', '难度': '困难', '提交量': 194, '正确数': 30, '正确率': '15.46%'}, {'编号': '192', '标题': '查找1', '难度': '中等', '提交量': 166, '正确数': 70, '正确率': '42.17%'}, {'编号': '193', '标题': '还是A+B', '难度': '中等', '提交量': 186, '正确数': 53, '正确率': '28.49%'}, {'编号': '194', '标题': '守形数', '难度': '中等', '提交量': 183, '正确数': 67, '正确率': '36.61%'}, {'编号': '195', '标题': '反序数', '难度': '简单', '提交量': 300, '正确数': 147, '正确率': '49.0%'}, {'编号': '196', '标题': '又一版 A+B', '难度': '困难', '提交量': 173, '正确数': 45, '正确率': '26.01%'}, {'编号': '197', '标题': '数制转换', '难度': '中等', '提交量': 134, '正确数': 41, '正确率': '30.6%'}, {'编号': '198', '标题': '进制转换1', '难度': '中等', '提交量': 128, '正确数': 41, '正确率': '32.03%'}, {'编号': '199', '标题': '八进制', '难度': '中等', '提交量': 217, '正确数': 102, '正确率': '47.0%'}, {'编号': '200', '标题': '素数', '难度': '中等', '提交量': 322, '正确数': 82, '正确率': '25.47%'}, {'编号': '201', '标题': '质因数的个数', '难度': '简单', '提交量': 132, '正确数': 63, '正确率': '47.73%'}, {'编号': '202', '标题': '进制转换2', '难度': '困难', '提交量': 79, '正确数': 7, '正确率': '8.86%'}, {'编号': '203', '标题': '10进制 VS 2进制', '难度': '困难', '提交量': 67, '正确数': 14, '正确率': '20.9%'}]
[{'编号': '204', '标题': '最短路径2', '难度': '困难', '提交量': 14, '正确数': 3, '正确率': '21.43%'}, {'编号': '205', '标题': 'abc', '难度': '简单', '提交量': 232, '正确数': 132, '正确率': '56.9%'}, {'编号': '206', '标题': '全排列', '难度': '困难', '提交量': 56, '正确数': 9, '正确率': '16.07%'}, {'编号': '207', '标题': 'N阶楼梯上楼问题', '难度': '中等', '提交量': 128, '正确数': 31, '正确率': '24.22%'}, {'编号': '208', '标题': '单词替换', '难度': '中等', '提交量': 89, '正确数': 36, '正确率': '40.45%'}, {'编号': '209', '标题': '字符串去特定字符', '难度': '困难', '提交量': 284, '正确数': 58, '正确率': '20.42%'}, {'编号': '210', '标题': '判断三角形类型', '难度': '简单', '提交量': 301, '正确数': 87, '正确率': '28.9%'}, {'编号': '211', '标题': '互换最大最小数', '难度': '困难', '提交量': 376, '正确数': 88, '正确率': '23.4%'}, {'编号': '212', '标题': '数字阶梯求和', '难度': '中等', '提交量': 87, '正确数': 34, '正确率': '39.08%'}, {'编号': '213', '标题': '数组逆置', '难度': '困难', '提交量': 248, '正确数': 57, '正确率': '22.98%'}, {'编号': '214', '标题': '众数', '难度': '中等', '提交量': 153, '正确数': 54, '正确率': '35.29%'}, {'编号': '215', '标题': '百万富翁问题', '难度': '困难', '提交量': 106, '正确数': 16, '正确率': '15.09%'}, {'编号': '216', '标题': '计算两个矩阵的乘积', '难度': '中等', '提交量': 214, '正确数': 56, '正确率': '26.17%'}, {'编号': '217', '标题': '字符串链接', '难度': '简单', '提交量': 128, '正确数': 67, '正确率': '52.34%'}, {'编号': '218', '标题': 'xxx定律', '难度': '简单', '提交量': 198, '正确数': 118, '正确率': '59.6%'}, {'编号': '219', '标题': 'ZOJ', '难度': '简单', '提交量': 87, '正确数': 54, '正确率': '62.07%'}, {'编号': '220', '标题': '继续xxx定律', '难度': '中等', '提交量': 3, '正确数': 3, '正确率': '100.0%'}, {'编号': '221', '标题': '找出直系亲属', '难度': '中等', '提交量': 5, '正确数': 2, '正确率': '40.0%'}, {'编号': '222', '标题': 'Problem C', '难度': '困难', '提交量': 67, '正确数': 14, '正确率': '20.9%'}, {'编号': '223', '标题': 'Problem D', '难度': '简单', '提交量': 14, '正确数': 8, '正确率': '57.14%'}]
[{'编号': '224', '标题': 'Problem E', '难度': '困难', '提交量': 15, '正确数': 2, '正确率': '13.33%'}, {'编号': '225', '标题': '字符串处理', '难度': '中等', '提交量': 8, '正确数': 2, '正确率': '25.0%'}, {'编号': '226', '标题': '最短路径问题', '难度': '中等', '提交量': 4, '正确数': 2, '正确率': '50.0%'}, {'编号': '227', '标题': '反序字符串', '难度': '简单', '提交量': 150, '正确数': 91, '正确率': '60.67%'}, {'编号': '228', '标题': '成绩排序2', '难度': '简单', '提交量': 95, '正确数': 73, '正确率': '76.84%'}, {'编号': '229', '标题': '分段函数', '难度': '中等', '提交量': 232, '正确数': 95, '正确率': '40.95%'}, {'编号': '230', '标题': '整数和', '难度': '简单', '提交量': 166, '正确数': 110, '正确率': '66.27%'}, {'编号': '231', '标题': '围圈报数', '难度': '中等', '提交量': 54, '正确数': 26, '正确率': '48.15%'}, {'编号': '232', '标题': 'C语言11.6', '难度': '简单', '提交量': 128, '正确数': 97, '正确率': '75.78%'}, {'编号': '233', '标题': 'C语言11.7', '难度': '简单', '提交量': 92, '正确数': 66, '正确率': '71.74%'}, {'编号': '234', '标题': 'C语言11.8', '难度': '简单', '提交量': 118, '正确数': 68, '正确率': '57.63%'}, {'编号': '235', '标题': 'C语言11.10', '难度': '简单', '提交量': 45, '正确数': 27, '正确率': '60.0%'}, {'编号': '236', '标题': 'C语言11.12', '难度': '中等', '提交量': 43, '正确数': 17, '正确率': '39.53%'}, {'编号': '237', '标题': 'C语言11.13', '难度': '简单', '提交量': 39, '正确数': 20, '正确率': '51.28%'}, {'编号': '238', '标题': 'C语言11.14', '难度': '简单', '提交量': 32, '正确数': 26, '正确率': '81.25%'}, {'编号': '239', '标题': 'C语言12.1', '难度': '中等', '提交量': 128, '正确数': 29, '正确率': '22.66%'}, {'编号': '240', '标题': 'C语言12.2', '难度': '简单', '提交量': 18, '正确数': 16, '正确率': '88.89%'}, {'编号': '241', '标题': 'C语言12.3', '难度': '简单', '提交量': 19, '正确数': 15, '正确率': '78.95%'}, {'编号': '242', '标题': 'C语言12.4', '难度': '简单', '提交量': 17, '正确数': 13, '正确率': '76.47%'}, {'编号': '243', '标题': 'C语言12.5', '难度': '简单', '提交量': 26, '正确数': 14, '正确率': '53.85%'}]
[{'编号': '244', '标题': 'C语言12.6', '难度': '简单', '提交量': 41, '正确数': 26, '正确率': '63.41%'}, {'编号': '245', '标题': '算法3-7:银行排队', '难度': '中等', '提交量': 3, '正确数': 3, '正确率': '100.0%'}, {'编号': '246', '标题': '完数', '难度': '困难', '提交量': 260, '正确数': 59, '正确率': '22.69%'}, {'编号': '247', '标题': '字符串连接', '难度': '中等', '提交量': 136, '正确数': 61, '正确率': '44.85%'}, {'编号': '249', '标题': '求最大值', '难度': '中等', '提交量': 228, '正确数': 84, '正确率': '36.84%'}, {'编号': '250', '标题': 'A + B', '难度': '简单', '提交量': 59, '正确数': 34, '正确率': '57.63%'}, {'编号': '251', '标题': '数字求和', '难度': '中等', '提交量': 228, '正确数': 93, '正确率': '40.79%'}, {'编号': '252', '标题': '素数判定', '难度': '中等', '提交量': 324, '正确数': 102, '正确率': '31.48%'}, {'编号': '253', '标题': '计算表达式', '难度': '中等', '提交量': 46, '正确数': 20, '正确率': '43.48%'}, {'编号': '254', '标题': '第二题', '难度': '中等', '提交量': 9, '正确数': 1, '正确率': '11.11%'}, {'编号': '255', '标题': '统计字符', '难度': '中等', '提交量': 103, '正确数': 47, '正确率': '45.63%'}, {'编号': '256', '标题': '密码锁', '难度': '中等', '提交量': 7, '正确数': 2, '正确率': '28.57%'}, {'编号': '257', '标题': '字符串的反码', '难度': '中等', '提交量': 142, '正确数': 50, '正确率': '35.21%'}, {'编号': '259', '标题': '最长&最短文本', '难度': '中等', '提交量': 52, '正确数': 18, '正确率': '34.62%'}, {'编号': '260', '标题': '统计单词', '难度': '中等', '提交量': 127, '正确数': 38, '正确率': '29.92%'}, {'编号': '261', '标题': 'ZOJ问题', '难度': '困难', '提交量': 20, '正确数': 2, '正确率': '10.0%'}, {'编号': '262', '标题': '奥运排序问题 ', '难度': '中等', '提交量': 1, '正确数': 1, '正确率': '100.0%'}, {'编号': '263', '标题': '还是畅通工程', '难度': '困难', '提交量': 15, '正确数': 4, '正确率': '26.67%'}, {'编号': '264', '标题': '剩下的树 ', '难度': '中等', '提交量': 8, '正确数': 5, '正确率': '62.5%'}, {'编号': '265', '标题': '整数奇偶排序 ', '难度': '简单', '提交量': 92, '正确数': 55, '正确率': '59.78%'}]
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.style as psl
%matplotlib inline

psl.use('seaborn-colorblind')    # 设置图表风格
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

data=pd.read_csv("qiye.csv")
data.head()#查看前五条数据
编号标题难度提交量正确数正确率
012^k进制数中等2747226.28%
14马拦过河卒中等28813346.18%
25产生数困难3103310.65%
36【排队买票】中等44519443.6%
49【C语言训练】计算t=1+1/2+1/3+...+1/n中等152251433.77%
data.describe()#统计数据信息
编号提交量正确数
count220.000000220.000000220.000000
mean143.922727197.55454583.522727
std74.688812231.494000105.106184
min1.0000001.0000000.000000
25%80.75000041.00000013.750000
50%152.500000128.00000044.000000
75%208.250000276.500000102.250000
max265.0000001522.000000549.000000
# 1.作者所写
psl.use("seaborn-colorblind") # 设置图表风格

level_values=data["难度"].values
difficulties={
    "简单":0,
    "中等":0,
    "困难":0,
}
for value in level_values:
    if value == '简单':
        difficulties['简单'] += 1
    elif value == '中等':
        difficulties['中等'] += 1
    else:
        difficulties['困难'] += 1
        
        
level=pd.Series(difficulties)
print(level)
level.plot(kind = 'bar', figsize=(6, 7))
plt.grid(axis='y')
plt.show()
简单     59
中等    128
困难     33
dtype: int64

在这里插入图片描述

# 2.个人所写
psl.use("seaborn-colorblind") # 设置图表风格

level=data["难度"].value_counts()
print(level)
level.plot(kind = "bar", figsize=(6, 7))
plt.grid(axis="y")
plt.show()
中等    128
简单     59
困难     33
Name: 难度, dtype: int64

在这里插入图片描述

import numpy as np
fig,axes=plt.subplots(figsize=(15,6))

relation=data[["难度","正确率"]]
rate_values=relation["正确率"].values
axes.scatter(rate_values,level_values)

plt.grid(axis="y")
plt.xlabel("正确率")
plt.ylabel("难度")
plt.xticks([])# 关闭坐标刻度
plt.show()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值