男生段位计算器 v2.0
概述
从约2亿中国18-40岁适婚年龄男性中,通过11项条件逐层筛选,计算用户落在多少人的范围内,并评定段位等级(S级/A1-A8级)。这是一个趣味性工具,结合真实人口统计数据,让用户直观感受自己在人群中的"稀有度"。
触发条件
当用户提到以下话题时触发:
- "A几类型男生"、"男生段位"、"男生等级"
- "你是A几"、"算算我是A几"
- "适婚男性筛选"、"男性竞争力"
- "我在男性中排多少"、"我打败了多少人"
- 其他涉及男性条件筛选、段位评定的请求
使用流程
第一步:收集用户信息
向用户逐一询问以下11项条件(可一次性列出所有选项让用户填写,也可逐项询问):
- 是否喝酒:喝酒 / 不喝酒
- 是否抽烟:抽烟 / 不抽烟
- 身高区间:160cm以下 / 160-170cm / 171-180cm / 181-190cm / 191-200cm / 201-210cm
- 是否有房:有房 / 无房
- 是否有车:有车 / 无车
- 月薪水平:3000以下 / 3000-6000 / 6001-8000 / 8001-10000 / 10001-15000 / 15001-30000 / 30001-50000 / 50001-100000 / 100000以上
- 父母条件:农村 / 城市 / 高知分子
- 当前城市:一线城市(北上广深) / 新一线城市 / 二线城市 / 三线城市 / 四线及以下
- 年龄区间:18-22岁 / 23-28岁 / 28-35岁 / 35-40岁
- 负债/贷款:无负债 / 10-30万 / 31-50万 / 51-100万 / 101-300万 / 300-500万 / 500万以上
- 长相评分:1-3分(普通偏下) / 4-6分(大众长相) / 7-9分(帅气出众) / 10分(满分)
可使用 AskUserQuestion 工具一次性收集多项,或直接让用户文字描述。
第二步:执行计算
运行计算脚本(推荐方式):
python scripts/calculate_tier.py '{"drinking":"no_drink","smoking":"no_smoke","height":"171_180","house":"has_house","car":"has_car","salary":"10001_15000","parents":"urban","city":"tier1","age":"23_28","debt":"no_debt","appearance":"score_4_6"}'
各维度的有效选项值请参考 references/demographic_data.md 或脚本中的 FILTERS 字典。
也可以手动计算:从2亿基数开始,依次乘以每项条件对应的占比百分比。
第三步:生成可视化报告
根据计算结果,使用 assets/report_template.html 模板生成HTML报告:
- 读取模板文件
- 替换以下占位符:
{{TIER}}- 段位(如 A3){{TIER_TITLE}}- 段位称号(如 "万人敬仰"){{TIER_DESC}}- 段位描述{{FINAL_COUNT}}- 最终人数(格式化,如 "12.5万"){{PERCENTILE}}- 击败比例(如 "95.5"){{RARITY}}- 稀有度描述(如 "万里挑一"){{FUNNEL_STEPS}}- 逐层筛选的HTML步骤{{JOKE_BANNER}}- 长相10分彩蛋(如果用户选了10分,显示"吹牛逼呢,哥们。"的横幅;否则为空字符串)
- 将生成的HTML保存到用户工作目录
- 使用 present_files 工具展示给用户
长相10分彩蛋
如果用户在长相评分中选择了"10分(满分)",计算结果会包含 appearance_joke 字段,值为"吹牛逼呢,哥们。"。在生成HTML报告时,需要将该文案放入 {{JOKE_BANNER}} 占位符中,使用以下HTML:
<div class="joke-banner" style="display: block;">吹牛逼呢,哥们。</div>
如果未选10分,则 {{JOKE_BANNER}} 替换为空字符串。
段位等级体系
| 段位 | 最终人数 | 称号 | 稀有度 | |------|---------|------|--------| | S级 | ≤20人 | 传说中的男人 | 亿中无一 | | A1级 | ≤200人 | 天选之子 | 千万里挑一 | | A2级 | ≤2,000人 | 金字塔尖 | 百万里挑一 | | A3级 | ≤20,000人 | 万人敬仰 | 十万里挑一 | | A4级 | ≤200,000人 | 万里挑一 | 万里挑一 | | A5级 | ≤2,000,000人 | 百里挑一 | 百里挑一 | | A6级 | ≤20,000,000人 | 十分优秀 | 十里挑一 | | A7级 | ≤60,000,000人 | 中上水平 | 三有其二 | | A8级 | >60,000,000人 | 普通大众 | 大多数人 |
关键资源
references/demographic_data.md- 完整的人口统计数据和占比,包含数据来源scripts/calculate_tier.py- 核心计算脚本,支持命令行参数和交互模式assets/report_template.html- HTML可视化报告模板
各维度选项值速查
| 维度 | 选项key | 选项标签 | |------|---------|---------| | drinking | drink / no_drink | 喝酒 / 不喝酒 | | smoking | smoke / no_smoke | 抽烟 / 不抽烟 | | height | under_160 / 160_170 / 171_180 / 181_190 / 191_200 / 201_210 | 各身高区间 | | house | has_house / no_house | 有房 / 无房 | | car | has_car / no_car | 有车 / 无车 | | salary | under_3000 / 3000_6000 / 6001_8000 / 8001_10000 / 10001_15000 / 15001_30000 / 30001_50000 / 50001_100000 / above_100000 | 各薪资区间 | | parents | rural / urban / intellectual | 农村 / 城市 / 高知分子 | | city | tier1 / new_tier1 / tier2 / tier3 / tier4_below | 一线 / 新一线 / 二线 / 三线 / 四线及以下 | | age | 18_22 / 23_28 / 28_35 / 35_40 | 各年龄区间 | | debt | no_debt / 10_30w / 31_50w / 51_100w / 101_300w / 300_500w / above_500w | 无负债 / 各负债区间 | | appearance | score_1_3 / score_4_6 / score_7_9 / score_10 | 1-3分 / 4-6分 / 7-9分 / 10分 |
注意事项
- 独立性假设:计算假设各维度相互独立,实际存在相关性,真实匹配人数可能高于计算值。
- 趣味性质:结果仅供娱乐,人的价值不由外在条件定义。
- 数据时效:基于2024-2025年公开统计数据。
- 长相10分彩蛋:用户选10分时显示"吹牛逼呢,哥们。"的趣味提示。
- 第二项修正:用户原始需求中"是否喝酒"出现了两次,第二项已修正为"是否抽烟"。
微信扫一扫