技术博客
拿到谜底后怎么校验用户答案?API 不代判,需自建比对逻辑

拿到谜底后怎么校验用户答案?API 不代判,需自建比对逻辑

作者: 万维易源
2026-09-03
猜一猜谜语API答案校验判题归一化
# 拿到谜底后怎么校验用户答案?API 不代判,需自建比对逻辑 > 接口/接入点:猜一猜谜语 API(151-2 / 151-4 返回 `Answer`/`answer`) · 免费 · 适用人群:需做答题/判题的开发者 · 阅读时间:约 4 分钟 ## 核心要点 - 接口**只返回谜底文本**(如"答:朝地""谜底:罗纳河"),不判断是否答对,判题必须你方自建。 - 谜底带"答:/谜底:"前缀,比对前先清洗;用户中文输入还可能有空格、标点、繁简差异。 - 稳健做法:去前缀 → 去标点空格 → 统一大小写/简繁 → 再相等比对。多答案情况按你的业务规则扩展。 ## Why:这跟我有什么关系 做答题/趣味游戏,核心就是"用户答得对不对"。接口不帮你判,你得自己写比对,否则要么误判要么被绕过。本文给一套可落地的归一化函数。 ## What:接口速览 | 项 | 内容 | |----|------| | 谜底字段 | 151-2 `Answer`(大写)/ 151-4 `answer`(小写) | | 谜底形态 | 文本,常带"答:/谜底:"前缀 | | 判题 | 接口不代判,需自建 | ## How:归一化比对 ### Python ```python import re def normalize(s: str) -> str: s = s.replace("答:", "").replace("谜底:", "").replace("答:", "").replace("谜底:", "") s = s.strip() s = re.sub(r"[\s\p{P}]+", "", s) # 去所有空白与标点 return s.lower() def check(user_input: str, answer_raw: str) -> bool: return normalize(user_input) == normalize(answer_raw) ``` ### JavaScript ```javascript function normalize(s) { return s.replace(/答[::]?/g, "").replace(/谜底[::]?/g, "") .replace(/[\s\p{P}]/gu, "").toLowerCase(); } function check(userInput, answerRaw) { return normalize(userInput) === normalize(answerRaw); } ``` ## 返回示例与解析 151-2 返回 `"Answer": "答:朝地"`,151-4 返回 `"answer": "答:茎"`。解析取字段见 [字段避坑](https://www.showapi.com/guides/riddle-field-case-151)。 ## 进阶/边界 - **多答案谜语**:部分谜语可能接受多个谜底(如谐音),本文默认单答案相等比对;如需多答案,把 `answer_raw` 拆成候选集再 `any()`。 - **简繁/异体**:中文谜底可能涉及简繁,必要时接入简繁转换再比对。 - **前缀形态**:文档示例有"答:""谜底:",清洗时两种都覆盖,避免漏。 - **大小写**:英文/数字谜底统一 `.lower()`。 ## FAQ **Q1:接口能不能直接告诉我对错?** 不能,只返回谜底文本,对错由你比对。 **Q2:为什么我比对总是不相等?** 多半是没去"答:/谜底:"前缀,或用户答案带空格标点。用上方 `normalize` 先清洗。 **Q3:用户写谐音/错别字算对吗?** 接口不判断。是否放宽由你定,可加同义词/拼音兜底,但会增加误判风险。 **Q4:151-2 和 151-4 的谜底字段名一样吗?** 不一样,151-2 是 `Answer`(大写),151-4 是 `answer`(小写),取字段时注意。 **Q5:答案不下发前端怎么判?** 答案只在服务端持有,前端提交后由服务端 `check`,避免作弊。 ## 相关能力 / 下一步阅读 - [小程序/App 怎么接猜一猜谜语 API?社交娱乐趣味模块全链路设计](https://www.showapi.com/guides/riddle-wechat-mini-151) - [营销裂变:用猜一猜谜语 API 做答题抽奖与互动游戏](https://www.showapi.com/guides/riddle-marketing-activity-151) - [避坑:三大接入点返回字段大小写不一致,解析代码怎么写才稳](https://www.showapi.com/guides/riddle-field-case-151) - **本系列共 13 篇**:查看[猜一猜谜语 API 指南总目录](https://www.showapi.com/guides/riddle-guides-151)