Spray's Blog

OIERDB分析程序

OIERDB 的搜索功能有一定的局限性,我们难以进行更复杂的数据分析(包括但不限于开盒等),所以我写了一个程序读取 OIERDB 的数据库,然后我们就可以在代码里随意操作了。

如果要开一个人(我是说如果),你只需要把你已知的信息作为约束条件再逐个判断就可以了。

代码下载:main.py

首先你需要部署 https://github.com/OIerDb-ng/OIerDb-data-generator 来生成数据库,按照其说明部署即可。

接着按照说明,找到部署后生成的文件 result.txt

将其与 main.py 保持在同一目录下。

然后运行 main.py 就可以了,速度会比较慢(写的很丑),写了注释。

然后主要是说说怎么看记录的数据的含义。

一条记录中:

class Record:
    # 比赛编号
    contest = ""
    # 学校编号
    school = ""
    # 成绩
    score = ""
    # 排名
    rank = ""
    # 省份编号
    province = ""
    # 奖项编号
    prize = ""

其中奖项编号对应关系如下:

0 -> 金牌
1 -> 银牌
2 -> 铜牌
3 -> 一等
4 -> 二等
5 -> 三等

一个 OIER:

class Oier:
    # 编号
    uid = ""
    # 名字首字母(对于大多数人)
    enname = ""
    # 名字
    zhname = ""
    # 性别
    # man 1 woman -1
    gender = ""
    # 初中入学年份
    year = ""
    # OIERDB 分数
    dbscore = ""
    # CCF 分数
    ccfscore = ""
    # CCF 等级
    ccfgrade = ""
    # 比赛记录,以比赛编号为键,记录为值的字典
    recs = {}
    def __init__(self):
        self.recs = {}

然后所有的 OIER 的数据都被存在了 oiers,可以任意处置。

— Feb 12, 2025