Closed. This question is not reproducible or was caused by typos。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

6年前关闭。



Improve this question




我是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()

提前致谢!

最佳答案

看上一行;您缺少)右括号:

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

行,它们什么也不做,也不需要。

10-07 14:23