为什么我得到这个SyntaxError?

时间:2014-04-04 16:33:01

标签: python syntax-error

我在python中很新,我收到了这个错误,无法摆脱它。我阅读了文档和教程,但我只是看不出问题出在哪里。这是错误:

Caused by: SyntaxError: ("no viable alternative at input 'if'" , ('<iostream>', 107, 14, '              if b.getType() != Material.WATER:\n'))

这是我的代码:

    removable = True
    ticker_vertical = 0.0
    ticker_horisontal = (random.random() * 2 * math.pi)
    l = sender.getLocation()
    b = l.getBlock()
    entity = l.getWorld().spawnFallingBlock(l, b.getType(), b.getData())
    if args[0] == "spawn":
       if l.getBlock().getType() != Material.AIR:
          entity.setMetadata("vortex", FixedMetadataValue(PyPlugin, "protected")
          if b.getType() != Material.WATER: #this is line which is causing error
             b.setType(Material.AIR)
          else:
              pass
       else:
           pass
       l = sender.getLocation()
       radius = math.sin(ticker_vertical * 2)
       v = Vector(radius * math.cos(horisontal), 0.5, radius * math.sin(horisontal))
       b1 = entity.getLocation().add(v.clone().normalize()).getBlock()
       if b1.getType() != Material.AIR:
          new_blocks.add(b.getLocation(), b.getType(), b.getData())
       entities = entity.getNearbyEntities(1.0, 1.0, 1.0)
       for e in entities:
           if e.hasMetaData("vortex"):
             new_blocks.add(entity)
       entity.setVelocity(v)
       if ticker_vertical < 1.0:
          ticker_vertical += 0,05
    elif args[0] == "stop":
        entity.remove()

提前致谢!

2 个答案:

答案 0 :(得分:2)

你在第9行错过了一个右括号:

entity.setMetadata("vortex", FixedMetadataValue(PyPlugin, "protected")

应该是:

entity.setMetadata("vortex", FixedMetadataValue(PyPlugin, "protected"))

答案 1 :(得分:1)

看看前一行;你错过了)右括号:

entity.setMetadata("vortex", FixedMetadataValue(PyPlugin, "protected")
#                                              ^--- closes there ----^
#                 ^ --- open                           but no close --^

进一步向下使用逗号而不是小数点:

if ticker_vertical < 1.0:
    ticker_vertical += 0,05

你可能想要:

if ticker_vertical < 1.0:
    ticker_vertical += 0.05

您可以(并且应该)删除所有:

else:
    pass

行,他们什么都不做,不需要。