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

Python 2.7机器人项目:如何实现条件变化时仅打印一次?

解决循环重复打印的问题:跟踪状态变化输出

嘿,这个问题我太熟了——循环里重复刷相同内容确实烦人,尤其是机器人项目里,控制台快到看不清有用信息对吧?核心思路就是跟踪上一次的状态,只有当状态发生变化时才执行打印操作,完全避免重复输出。

具体实现步骤

  1. 初始化状态变量:在循环外部定义一个变量,用来记录上一次输出的状态(初始值设为和所有可能状态都不同的值,比如None)。
  2. 每次循环确定当前状态:把不同条件对应的输出内容统一存到一个current_state变量里。
  3. 对比状态再打印:只有当当前状态和上一次状态不一致时,才打印并更新状态变量。

修改后的代码示例(适配Python 2.7)

try:
    # 初始化上一次状态,放在循环外避免每次重置
    last_state = None
    while True:
        # 先获取摇杆轴数据(把你的some stuff里的操作抽出来)
        axis_value = joystick.get_axis(1)
        current_state = None
        
        # 按条件匹配当前状态描述
        if 0.01 < axis_value <= 0.25:
            current_state = 'moving backward with 25% speed'
        # 可以扩展其他条件分支,比如不同速度、前进、停止等
        elif axis_value > 0.25:
            current_state = 'moving backward with full speed'
        elif -0.25 <= axis_value <= -0.01:
            current_state = 'moving forward with 25% speed'
        else:
            current_state = 'stopped'
        
        # 只有状态变化时才打印
        if current_state != last_state:
            print(current_state)
            last_state = current_state  # 更新上一次状态
        
        # 可选:加个小延迟,降低CPU占用,让状态检测更稳定
        # import time; time.sleep(0.1)
except KeyboardInterrupt:
    # 处理Ctrl+C中断,做一些退出清理
    print("\nExiting robot control...")

关键细节说明

  • 状态变量的作用:last_state就像一个“记忆器”,记住上一次输出的内容,避免重复触发打印。
  • 统一状态描述:把所有条件对应的输出都放到current_state里,不管有多少个分支,对比逻辑只需要写一次,代码更简洁。
  • 延迟优化:添加time.sleep(0.1)可以让循环每秒跑10次左右,既不会错过状态变化,又能减少CPU资源消耗,机器人项目里非常实用。

内容的提问来源于stack exchange,提问作者Jason Tsang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:30:03