非常简单的Python上的无效语法,如果。。。else语句

非常简单的Python上的无效语法,如果。。。else语句,python,python-3.x,Python,Python 3.x,有人能解释一下为什么我在制定这个简单的if…else语句时从Python的解释器中得到一个无效的语法错误吗?我自己不添加任何选项卡,我只是键入文本,然后在键入后按enter键。当我在“else:”之后键入enter时,我会得到错误。“Else”由口译员突出显示。怎么了 Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) [MSC v.1600 32 bit (Intel)] on win32 Type "copyright", "c

有人能解释一下为什么我在制定这个简单的if…else语句时从Python的解释器中得到一个无效的语法错误吗?我自己不添加任何选项卡,我只是键入文本,然后在键入后按enter键。当我在“else:”之后键入enter时,我会得到错误。“Else”由口译员突出显示。怎么了

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48)
[MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.

>>> if 3 > 0:
        print("3 greater than 0")
        else:

SyntaxError: invalid syntax
>>>

这是因为您的
else
部分是空的,并且没有正确缩进
if

if 3 > 0:
    print "voila"
else:    
    pass

在python中,
pass
相当于在其他语言(如C)中使用的
{}
else
块需要与
if
相同的缩进级别:

if 3 > 0:
    print('3 greater then 0')
else:
    print('3 less than or equal to 0')

Python不允许空块,这与许多其他语言不同(因为它不使用大括号表示块)。每当您想要有一个空块时(包括在if/else语句和方法中),都必须使用
pass
关键字

比如说,

if 3 > 0:
    print('3 greater then 0')
else:
    pass
或空方法:

def doNothing():
    pass

关键字
else
必须分别与
if
语句缩进

例如

a = 2
if a == 2:
    print "a=%d", % a
else:
    print "mismatched"

问题只是缩进


您正在使用IDLE。在第一次打印语句后按enter键时,默认情况下,else的缩进与print相同,这是不确定的。您需要转到else语句的开头,然后按back一次。检查我的意思。

这是一个明显的错误,当我们在if语句后按enter键时,它将进入该意图,尝试保持else语句与if语句一样笔直。这是一个常见的印刷错误,否则需要垂直对齐。识别在Python中起着关键作用。我在使用else时遇到了相同的语法错误。请确保正确缩进代码。

else:
之前尝试删除缩进:else必须缩进与if相同的数量。@PinnyM谢谢,这就解决了问题。我不知道如何在交互模式下删除缩进。在pythonshell中编写代码时,必须在按[enter]后但在编写“else:”语句之前按backspace;您不能像在其他编辑器中一样使用shift+[tab]来修正缩进。@Vaughnca感谢您的澄清。
if
可以在
if
中进行另一次缩进
else
需要父级
if
。请注意(对于将来的访问者),这并不总是缩进错误。有一次,我忘记了一行“)”。我发现这条评论很有用,因为它让我了解了Python程序员通常处理的问题。我认为这条评论很有帮助,因为它表明通常使用Python编程的人遇到了这个简单的缩进问题。我想指出的是,在交互式编辑器中,与大多数其他IDE和文本处理器不同,您必须在if语句后面的语句后按[Enter]键才能进入要输入“else:”的行,然后必须按[Backspace]键才能进入与“if”语句相同的缩进,然后键入“else:”。在其他编辑器中,您可以键入“else:”,然后键入[Shift]+[Tab]来修复缩进。@DanielJ。因为这是Python。@DanielJ。因为这是Python。我认为这个简单的问题已经得到了很好的回答,所以为什么不跳过这个问题呢?