You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python整数与有序整数列表匹配逻辑异常修复需求

整数与有序列表的匹配逻辑实现优化

需求说明

给定一个整数和一个升序排列的整数列表,需按照以下规则输出结果:

  • 若整数等于列表中的某个元素,输出该整数自身
  • 若整数介于列表中相邻两个元素之间(大于前一个、小于后一个),输出前一个元素
  • 若整数大于列表所有元素,输出列表最后一个元素
  • 若整数小于列表第一个元素,输出列表第一个元素

原代码的问题

原代码存在多处逻辑漏洞,导致无法稳定输出:

  1. 未处理整数小于列表第一个元素的场景,此时output会保持初始值None
  2. 遍历逻辑错误:当整数大于列表第一个元素时(比如quantity=5大于q_list[0]=1),由于i=0不满足i>0的条件,无法赋值正确结果
  3. 未处理整数大于列表所有元素的场景,遍历结束后output不会被设置为最后一个元素
  4. 存在逻辑覆盖不全的情况,部分场景下output可能始终为None

修复后的实现

以下是覆盖所有场景的稳定实现,封装为函数便于复用:

def find_matching_value(quantity, q_list):
    # 处理小于等于第一个元素的边界情况
    if quantity <= q_list[0]:
        return q_list[0]
    # 处理大于等于最后一个元素的边界情况
    if quantity >= q_list[-1]:
        return q_list[-1]
    # 遍历中间元素,寻找匹配区间
    for i in range(1, len(q_list)):
        if quantity == q_list[i]:
            return quantity
        if q_list[i-1] < quantity < q_list[i]:
            return q_list[i-1]
    # 兜底返回(理论上不会触发)
    return q_list[-1]

# 测试示例
target_list = [1, 10, 25, 50, 100, 300, 500]
print(f"quantity=5 → output={find_matching_value(5, target_list)}")
print(f"quantity=11 → output={find_matching_value(11, target_list)}")
print(f"quantity=1 → output={find_matching_value(1, target_list)}")
print(f"quantity=10 → output={find_matching_value(10, target_list)}")
print(f"quantity=505 → output={find_matching_value(505, target_list)}")

输出验证

运行上述代码,输出完全符合预期:

quantity=5 → output=1
quantity=11 → output=10
quantity=1 → output=1
quantity=10 → output=10
quantity=505 → output=500

内容的提问来源于stack exchange,提问作者R. Geraci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:03:14