Python QuestionsMarks函数输出异常:测试用例结果不符问题排查
QuestionsMarks 函数逻辑错误排查
核心问题定位
1. 需求理解偏差
函数要求所有和为10的数字对都满足"中间恰好3个问号"的条件才返回"true",只要有一个符合求和规则的数字对不满足条件,就必须返回"false"。你的代码仅统计符合条件的数字对数量,只要存在至少1个符合的就返回"true",完全忽略了不符合的求和对。
2. 代码实现错误
- 你将问号数量的判断逻辑写为
if counter >= 3:,但需求要求是恰好3个问号,数量大于3的情况也属于不符合要求。 - 遍历数字对时没有设置"遇到不符合条件对就直接终止并返回false"的分支,仅累加符合的对的数量。
- 代码末尾的
return strParam属于不可执行的冗余逻辑,实际不会被触发。
测试输入"9???1???9??1???9"的执行分析
先提取该输入的所有数字序列(按出现顺序):9, 1, 9, 1, 9
所有相邻数字对的求和及中间问号数量如下:
- 第1对:9 + 1 =10,中间3个问号 → 符合要求
- 第2对:1 + 9 =10,中间3个问号 → 符合要求
- 第3对:9 + 1 =10,中间仅2个问号 → 不符合要求
- 第4对:1 +9=10,中间3个问号 → 符合要求
你的代码执行时,仅因前2对、第4对符合要求,累加true_counter至3,满足true_counter >=1的判断,就返回了"true",完全没有处理第3对不符合的情况。
修正参考方向
- 调整问号数量判断逻辑:将
counter >= 3修改为counter == 3 - 调整整体返回逻辑:
- 遍历所有相邻数字对时,只要出现「和为10但问号数不为3」的对,直接返回"false"
- 遍历完成后,确认至少存在1个和为10的有效数字对,才返回"true",否则返回"false"
内容的提问来源于stack exchange,提问作者Ng Jian Sheng
相关产品推荐
相关产品推荐

