SyntaxError:语法在python中无效,但找不到原因

时间:2019-01-25 22:23:19

标签: python python-3.x syntax-error raspbian

我12岁,正在从事我的Science Fair项目。每天都有成千上万的包裹被盗,因此对于我的科学博览会项目,我正在建造一种在人们家中使用的东西。它会检测到包裹,并且在未经验证的情况下取走包裹时,会发出很大的哔哔声并拍摄小偷的照片。我正在树莓派上用python 3编写代码。我以前从未用python编写过代码,但我知道c以及html和css。我还没有添加验证部分,但是最终它将在代码中的某处,如果输入了PIN,它将把引脚值更改为0或1。 **我的代码给我这个错误:

if pin == 1
          ^
SyntaxError: invalid syntax**



from Bluetin_Echo import Echo
import RPi.GPIO as GPIO
import time
import nexmo
import picamera

GPIO.setup(40,GPIO.OUT)
pin = 1
TRIGGER_PIN = 38
ECHO_PIN = 36
result = echo.read('in')
alarm = 40
speed_of_sound = 315

echo = Echo(TRIGGER_PIN, ECHO_PIN, speed_of_sound)

if pin == 1
    if result < '5'
        if result >= '10'
            GPIO.output(14, 1)
<code>

1 个答案:

答案 0 :(得分:3)

在Python中,由于声明块时没有方括号,因此我们依靠缩进和标点。如果出现if,while,for,def和class语句,则:符号用于开始缩进语句。

if expression:
   # something
   pass


while expression:
   # something
   pass


for x in sequence:
   # something
   pass


def fct():
   # something
   pass

({pass是空操作,不执行任何操作;在您的代码最终将被使用但尚未编写的地方很有用)

因此,您的代码实际上应该是:

if pin == 1:
    if result < '5':
        if result >= '10':
            GPIO.output(14, 1)

还请注意:

  • 您正在将result与作为字符串而不是数字的'5'和'10'进行比较;我并不是说这确实是一个错误,但是您确定这些不应该是数字吗?

  • 您将永远不会到达GPIO.output(14, 1)。您检查result小于5,但后来又大于10,这是不可能的。

由于您是Python的初学者,因此建议您在documentation中搜索遇到的困难。在CodeAcademyw3schools等不同的网站上也有关于Python的不错的教程。

我还建议您对项目使用IDE,该IDE支持Python。大多数时候,它们会指出您在执行代码之前所犯的语法错误。我在我的项目中使用Pycharm(您可以免费下载Community版本)。您还可以使用适当的插件设置Sublime Text 3,Atom,Visual Code或Notepad ++,以帮助您。

祝您的项目好运!