2012-01-02 156 views
2

我只是贴在整个功能,因为它不是长期无效的语法:与if语句

def decideTile(): 
    global tile 
    global exp 
    global maxexp 

    tile += 1 
    exp += math.ceil(random.randrange(math.ceil((maxexp/2)/2,maxexp/2)) 

    if exp >= maxexp: 
     levelUp() 
    else: 
     tileChoices = ['Battle','Loot','Nothing'] 
     fileType = random.choice(tileChoices) 

    if tileType == 'Battle': 
     battle() 
    elif tileType == 'Loot': 
     loot() 
    elif tileType == 'Nothing': 
     nothing() 

现在,Python是说,它的

if exp >= maxexp: 

部分是“无效的语法“,我不完全确定为什么。帮助表示赞赏!

+0

不要忘记接受最适合您的答案(点击它的绿色复选标记)。对于更复杂的问题/答案,您可能需要等待几个小时,然后选择最完整的(可能不是第一个;)。 – 2012-01-02 07:39:16

+0

@ sbb0请接受正确的答案:)有关详细信息,请参阅此问题:http://meta.stackexchange.com/q/5234/156122 – 2012-01-07 21:18:03

回答

10

上一行缺少一个括号。要解决这个问题,只需添加一个右括号到该行的末尾,如下所示:

exp += math.ceil(random.randrange(math.ceil((maxexp/2)/2,maxexp/2))) 
+0

我使用的程序强调了相应的括号,并且它们全部似乎已关闭... 奇怪的。尴尬的解决方案,但谢谢你。 – sbb0 2012-01-02 07:16:40

+1

jcollado是正确的。我建议使用Pyflakes来避免Python代码中的常见缺陷。 – 2012-01-02 07:22:20

+0

是的,我第二[pyflakes](http://pypi.python.org/pypi/pyflakes)推荐。另外请注意,它可以与许多文本编辑器集成在一起,以便在编写时检查语法。 – jcollado 2012-01-02 07:24:20

0

未闭合的括号造成的错误。该行应该是:

exp += math.ceil(random.randrange(math.ceil((maxexp/2)/2,maxexp/2)))