在Python代码上获取缩进错误无法解决缩进

时间:2013-10-22 14:33:02

标签: python eclipse

我收到此代码的错误。当我使用战斗命令时,我正在尝试添加buff。它似乎与压痕错误搞混了。我正在重塑游戏Star Wars Galaxies

代码

import sys

def setup(core, actor, target, command):
    command.setBuffNameTarget('of_deb_def_1')
if actor.getSkill('expertise_of_advanced_paint_1'):
    command.setBuffNameTarget('of_adv_paint_debuff_1')
if actor.getSkill('expertise_of_paint_expose_1'):
    command.setBuffNameTarget('of_adv_paint_expose_1')
    return

def preRun(core, actor, target, command):
    return

def run(core, actor, target, commandString):
    return

错误

File "scripts/commands/combat/of_deb_def_1.py", line 5
if actor.getSkill('expertise_of_advanced_paint_1'):
^
IndentationError: unindent does not match any outer indentation level

^是我得到的错误。

3 个答案:

答案 0 :(得分:4)

除了其他任何东西,这里的代码:

if actor.getSkill('expertise_of_advanced_paint_1'):
    command.setBuffNameTarget('of_adv_paint_debuff_1')
if actor.getSkill('expertise_of_paint_expose_1'):
    command.setBuffNameTarget('of_adv_paint_expose_1')
    return

需要缩进。更正后的代码:

def setup(core, actor, target, command):
    command.setBuffNameTarget('of_deb_def_1')
    if actor.getSkill('expertise_of_advanced_paint_1'):
        command.setBuffNameTarget('of_adv_paint_debuff_1')
    if actor.getSkill('expertise_of_paint_expose_1'):
        command.setBuffNameTarget('of_adv_paint_expose_1')
        return

此外,您可能希望提出return,或将其完全删除,因为它目前无效。

但是我不确定这是否是问题,虽然它肯定是一个问题(除非您给出的整个代码本身在另一个函数定义中,在这种情况下看起来很奇怪)

如果不这样做,我怀疑你在这里发布代码时错误地缩进了你的代码,或者混合了标签和空格(不要这样做)。

答案 1 :(得分:1)

为了确保您没有混淆空格和标签,您可以使用tabnanny。要使用它,只需将您的终端放入保存文件的目录中并执行它:

>>> python -m tabnanny .

此示例取自本周的Python模块:http://pymotw.com/2/tabnanny/

答案 2 :(得分:0)

根据给出的代码,看起来从第一个if actor.getSkill开始的4行应该属于函数setup()

def setup(core, actor, target, command):
    command.setBuffNameTarget('of_deb_def_1')
    if actor.getSkill('expertise_of_advanced_paint_1'):
        command.setBuffNameTarget('of_adv_paint_debuff_1')
    if actor.getSkill('expertise_of_paint_expose_1'):
        command.setBuffNameTarget('of_adv_paint_expose_1')
    return