【问题标题】:SyntaxError: invalid syntax on an 'if' command in Python 3.6 (PyAutoGUI code)SyntaxError:Python 3.6 中“if”命令的语法无效(PyAutoGUI 代码)
【发布时间】:2017-09-21 22:14:59
【问题描述】:

我正在尝试编写一个小型机器人程序,该程序可以识别图像,然后如果屏幕上存在该图像,则执行命令。这与 PyAutoGUI 密切相关。下面的附加代码给出了“if”命令的语法错误:

loadingbattle = pyautogui.locateCenterOnScreen('/Users/devious/loading battle.png');\
if loadingbattle == (2294,1165): pyautogui.click(1513,75)

我是编程新手,所以我不确定这个问题,或者它是否是编写我上面提到的想法的正确方法。这只是一个开始,通过在识别图像后单击某处来查看代码是否有效,但是在“if”命令上出现语法错误,我不知道为什么。我在网上看了一些教程,但似乎并没有解决我的问题。任何关于为什么会发生这种情况的建议,或者我可以如何编写这个想法的建议都表示赞赏。

【问题讨论】:

  • 如果要使用一个班轮,请使用“statement1 if condtion else statement2”
  • 从“loadingbattle = pyautogui.locateCenterOnScreen('/Users/devious/loading Battle.png');\”中删除“\”
  • 我不确定代码应该做什么.... `;` 有什么意图吗?这就是给您带来问题的原因。

标签: python python-3.x bots pyautogui


【解决方案1】:

真正的问题不是if 语句本身,而是因为前面的语句。使用if loadingbattle == (2294,1165): pyautogui.click(1513,75) 如果在 Python 中完全没问题,但按照自己的方式进行操作不起作用,您需要将其更改为:

loadingbattle = pyautogui.locateCenterOnScreen('/Users/devious/loading battle.png')
if loadingbattle == (2294,1165): pyautogui.click(1513,75)

通过摆脱 ;\,因为

; 表示它是行尾,不必在每个换行符处都包含它。等效于“\n

\表示代码实际上会继续到下一行(转义换行符)

因此,当 Python 解释器读取代码时,您的代码中实际发生的情况是:

loadingbattle = pyautogui.locateCenterOnScreen('/Users/devious/loading battle.png');if loadingbattle == (2294,1165): pyautogui.click(1513,75)

当您尝试阅读时,它绝对有意义。由于您无法说出您尝试将loadingbattle 分配给什么,以及if 块在哪里结束。这就是为什么缩进在 python 中很重要。

通常,您希望这样写以清楚地显示缩进(但这实际上对您的情况无关紧要,两者都应该可以正常工作):

loadingbattle = pyautogui.locateCenterOnScreen('/Users/devious/loading battle.png')
if loadingbattle == (2294,1165): 
    pyautogui.click(1513,75)

【讨论】:

  • 您好,感谢您的回答。但是如果我删除';'和'\',它显示“SyntaxError: multiple statements found while compile a single statement”。
  • 我无法重现您的问题,也许有更多代码可能导致问题? IE。每行末尾都有一个“\”?
  • 在我尝试执行之前我只有这两行代码,所以我认为这不是原因。似乎如果我不放置';'它认为在编译单个语句时发现了多个语句。
  • 这是一个类似的例子,它具有相同的格式 repl.it/HZhx/0 并且它可以工作,如果它不适合你,我只能假设你的解释器有问题
【解决方案2】:

在 Python 中编码时,需要缩进。它迫使我们使用合格的缩进进行编码。请看下面的代码:

if loadingbattle == (2294,1165):                          
    pyautogui.click(1513,75) 

【讨论】:

  • 如果 loadingbattle == (2294,1165): - pyautogui.click(1513,75)
  • @Don Zhang在python中,只要你用一个命令就可以写if bool: command
  • 第二行我想缩进一个Tab,但是不能输入>
猜你喜欢
  • 1970-01-01
  • 2020-07-13
  • 2023-01-22
  • 1970-01-01
  • 2017-05-07
  • 2022-01-10
  • 2021-07-20
  • 2020-05-31
相关资源
最近更新 更多