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

Python循环未调用指定命令列表,误用触发指令问题排查

问题分析与修复方案

原代码核心问题

  • 复用同一个Command字典对象,由于字典是引用类型,每次往Commands列表追加的都是同一引用,输入新命令时会覆盖列表中所有旧命令的内容
  • 输入Done后先执行Command.clear(),直接清空了Commands列表内的所有元素(因为指向同一引用),导致后续遍历执行时无命令可运行

修复后的代码

import time
import keyboard

Commands = []

while True:
    # 每次输入都创建新字典,避免引用复用
    raw_cmd = input("Command? ")
    times = int(input("How many times? (NUMBER!!) "))
    
    if raw_cmd == "Done":
        # 遍历命令列表执行操作
        for cmd in Commands:
            cmd_name = cmd["RawCommand"]
            remaining = cmd["Times"]
            while remaining > 0:
                if cmd_name == "Walk":
                    keyboard.press("W")
                    time.sleep(0.25)
                    keyboard.release('W')
                elif cmd_name == "Jump":
                    keyboard.press(" ")
                    time.sleep(0.04)
                    keyboard.release(' ')
                remaining -= 1
        # 执行完成后清空列表,准备下一轮输入
        Commands.clear()
    else:
        # 以新字典形式存入命令列表
        Commands.append({"RawCommand": raw_cmd, "Times": times})
        print(Commands)

关键修复点

  • 每次输入命令时创建独立的字典对象,确保列表中每个命令都是独立个体
  • 移除Command.clear()的错误操作,避免提前清空待执行命令
  • 用elif替代重复if,避免多命令条件误触发
  • 拆分变量,让逻辑更清晰易读

内容的提问来源于stack exchange,提问作者Zane Sites

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:15:01