Python 为什么下面的代码不起作用?(使用pyautogui在游戏中创建机器人)
(应该在导入模块后重新创建代码)大家好!我试图为一个游戏创建一个简单的机器人,当它没有检测到目标时向前移动,但当检测到目标时停止移动。为什么不能按下W键?奇怪的是,当检测到target或target2.png时,它会按W键,否则它不会按W键?这里的问题是python将某些值视为True,而将其他值视为False 在Python中,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
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: