Python 为什么下面的代码不起作用?(使用pyautogui在游戏中创建机器人)

Python 为什么下面的代码不起作用?(使用pyautogui在游戏中创建机器人),python,pyautogui,Python,Pyautogui,(应该在导入模块后重新创建代码)大家好!我试图为一个游戏创建一个简单的机器人,当它没有检测到目标时向前移动,但当检测到目标时停止移动。为什么不能按下W键?奇怪的是,当检测到target或target2.png时,它会按W键,否则它不会按W键?这里的问题是python将某些值视为True,而将其他值视为False 在Python中,None、0和”(空字符串)都被视为False。任何其他值都被认为是真的 在您的代码中,有以下行: x=0 while x==0: target = pyaut

(应该在导入模块后重新创建代码)大家好!我试图为一个游戏创建一个简单的机器人,当它没有检测到目标时向前移动,但当检测到目标时停止移动。为什么不能按下W键?奇怪的是,当检测到target或target2.png时,它会按W键,否则它不会按W键?

这里的问题是python将某些值视为True,而将其他值视为False

在Python中,
None
0
(空字符串)都被视为False。任何其他值都被认为是真的

在您的代码中,有以下行:

x=0
while x==0:
    target = pyautogui.locateOnScreen(os.path.expanduser(r'~\Desktop\ bot\references\target.png'),region=(0,0,1024,768),confidence=.7)
    time.sleep(0.5)
    target2 = pyautogui.locateOnScreen(os.path.expanduser(r'~\Desktop\ bot\references\target2.png'),region=(0,0,1024,768),confidence=.7)
    print(target,target2)
    if target and target2 is None:
        pyautogui.keyDown('W')
    elif target or target2 != None:
        pyautogui.keyUp("W")
        print(target or target2)
        target_point = pyautogui.center(target or target2)
        targetx, targety = target_point
        pyautogui.click(targetx, targety)
        x=1
虽然短语听起来正确(如果两者都没有),但实际发生的是
target
在计算中被转换为布尔值:

if target and target2 is None:
由于
target
不是
None/0/”
,布尔转换返回True。这导致代码中出现意外行为


同样的想法也适用于
elif
语句

如果target为None,target2为None,则尝试
是!成功了,谢谢@Mike67底部部分也应该是
elif目标=没有或目标2=无:
是否?是-也进行更改
if bool(target) == True and target2 is None: