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

按指定顺序的颜色检测逻辑实现问题及Python代码咨询

按顺序颜色检测功能的问题修正

原代码的核心问题

  • 目标列表存在重复风险:使用random.randint(1,5)生成的列表可能包含重复值,无法满足结果列表需包含5种不同颜色的要求
  • 匹配逻辑不符合需求:嵌套if结构要求必须一次性匹配所有索引才会更新状态,违背了“依次匹配、逐步完成”的需求,还会错误重置已匹配成功的索引状态
  • 缺失结果列表维护:没有实现将匹配成功的颜色加入结果列表的核心逻辑
  • 模拟检测逻辑不合理:每次生成完整的5个随机数模拟检测,不符合相机单次检测单个颜色的实际场景(即使是批量检测,逻辑也不匹配需求)

修正后的代码

import random

# 生成1-5的不重复随机排列,确保能收集到5种不同颜色
target_colors = random.sample(range(1, 6), 5)
result = []
current_match_index = 0

print(f"目标匹配顺序:{target_colors}")

# 循环直到结果列表收集齐5种颜色
while len(result) < 5:
    # 模拟相机检测颜色,实际场景替换为相机获取颜色的业务代码
    detected_color = random.randint(1, 5)
    print(f"当前检测到颜色:{detected_color}")

    # 匹配当前待完成的索引
    if detected_color == target_colors[current_match_index]:
        print(f"匹配成功!将颜色{detected_color}加入结果列表")
        result.append(detected_color)
        current_match_index += 1

print(f"最终结果列表:{result}")

关键逻辑说明

  • 目标列表生成:用random.sample生成1-5的不重复随机列表,从根源保证结果能收集到5种不同颜色
  • 逐步匹配机制:通过current_match_index记录当前需匹配的位置,仅当当前位置匹配成功时,才推进到下一个位置,不会重置已完成的匹配状态
  • 结果列表维护:每次匹配成功就将对应颜色加入result,当列表长度达到5时自动结束循环
  • 模拟检测替换:代码中detected_color = random.randint(1,5)仅为模拟,实际使用时替换为相机颜色检测的具体实现即可

内容的提问来源于stack exchange,提问作者Sin Hart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:24:32