最终成果:核对两组计数与转化率,清楚标出未知值和证据范围。
这是一门可离线完成的Python实践课,使用标准库,不需要模型密钥。例子均为教学虚构,不是现实业务数据或真实效果证据。
1. 先看成果
输入示例:
{
"groups": [
{
"id": "A",
"visitors": 100,
"conversions": 10
},
{
"id": "B",
"visitors": 100,
"conversions": 12
}
]
}
预期输出:
{
"groups": [
{
"id": "A",
"rate_bp": 1000
},
{
"id": "B",
"rate_bp": 1200
}
],
"difference_bp": 200,
"conclusion": "仅描述样本,不推断因果或显著性"
}
2. 准备与首次运行
准备Python 3.10或更高版本。完整解压项目包,在包含verify.py的文件夹打开终端。Windows可用py -3代替python,macOS/Linux可用python3。
python --version
python verify.py
起始代码尚未实现,首次看到7项FAIL和NotImplementedError属于正常起点;语法或导入错误会给中文说明且不生成报告。先提交这份失败报告也可以。
3. 输入输出契约
输入groups必须含恰好两个对象,id为不同的非空字符串最多80字符;visitors与conversions为0到1000000的整数,不能为bool,且conversions<=visitors。输出groups保留顺序,每项id与rate_bp;visitors=0时rate_bp=null,否则conversions*10000//visitors(万分比,向下取整)。输出difference_bp=第二组减第一组,任一未知则null;conclusion固定为仅描述样本,不推断因果或显著性。所有计数均为教学虚构。
solve(payload)接收一个JSON对象并返回上述JSON结果。任何契约规定的结构或类型错误都应抛ValueError,不返回貌似成功的部分结果。
4. 三段实现与分层提示
1. 先核对计数
验证人数、转化数和分组身份。
关注用例:normal、equal
-
第1层:转化人数能否比访问人数更多?
-
第2层:真正整数且转化数不超过访问数。
-
第3层:先校验两组和唯一ID,再计算。
2. 未知不能填零
处理零分母和零转化。
关注用例:zero、no_conversion、both_zero
-
第1层:没人访问与有人访问但无人转化一样吗?
-
第2层:零分母是null;非零分母零转化才是0。
-
第3层:先分支处理visitors=0,其他情况用整数运算。
3. 准确表达差值
按顺序算万分比差并保留限制。
关注用例:negative、round
-
第1层:样本比例更高是否说明改版有效?
-
第2层:差值只是描述,不等于因果或显著性。
-
第3层:第二组减第一组,任一未知时差值也未知。
先写下自己的预期,再展开一层提示并修改。verify.py默认展示字段差异,仍卡住可加--explain查看诊断。
5. 用本地网页检查自己的输入
python run.py
打开终端显示的本地地址(默认http://127.0.0.1:8870),修改输入并运行,保存输出。端口已占用可运行python run.py --port 8871;不需要停止其他程序。
参考演示可运行python run.py --reference,参考输出不表示你自己的实现通过。
6. 组合挑战与评分
python verify.py --suite challenge --report challenge-report.json
4项挑战各25分,输入、错误类型及所有输出字段符合约定才得该项分数。完整用例与评分依据在project.json的learning.cases中。只表示这组输出符合约定,不证明独立能力。
-
全部转化:一人样本也不能宣称稳定效果。
-
交换顺序:不按ID偷偷交换基准组。
-
最大访问计数:小比例可能被取整为0,应保留计数作核对。
-
转化数不得超过访问数:计数矛盾须抛ValueError,不能输出超过100%的比例。
7. 自主扩展与提交
增加原始计数或采集窗口字段,用虚构数据展示相同比例不同样本量;说明还缺哪些证据才能判断变化原因。
至少自建一个测试,先写预期,再运行并保存实际结果。在项目页上传报告,填写两道解释题,展开自主扩展记录,填写需求、JSON输入/预期/实际及修订说明。扩展内容不自动算分,申请人工评价后由人核对。
-
解释题:为什么零分母和零转化不能都写成0?
-
解释题:自建相同比例不同样本量的输入,说明当前输出隐藏了什么以及你的修订。
报告默认私有;申请后管理员才可看该次报告、项目链接、复盘与扩展证据,可撤回共享。服务器复核报告输出,不执行上传代码、不访问作品链接。修订时保留失败与新报告,不覆盖旧记录。
8. 局限与后续
本项目训练上述确定性规则,不调用模型,不代表完整业务系统。如需以后接入模型,先保留基线,单独明确成本与调用授权、构造错误输出并人工核对,不把本站参考结果当作模型效果。