python中IF-ELSE块的缩进

2024-05-16 06:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我是python新手,我正在使用python开发NLP。我在用python编写if-else块时出错。当我只在block的时候写的时候它工作正常:

if xyzzy.endswith('l'):
    print xyzzy

输入冒号后,我按回车键,它会自动将我带到正确的缩进位置。

但当我试图在打印语句后按“回车”键添加else块时, 它认为它是IF block的语句,所以它给了我不正确的缩进,就像我想在else block之后那样,而当我试图写else block时,它给了我这个错误。

else:  
   ^

IndentationError: unexpected indent

那么,写完打印报表后我该怎么办呢?输入显然不起作用,因为它将光标向前移动,而当我使用空格来指向正确的指针时,它会给我一个错误。


Tags: ifnlp错误语句blockelseprint新手
3条回答

从你的帖子中很难看出问题所在,但是if-else的格式是这样的

 if someCondition:
     do_something       # could be a single statement, or a series of statements
 else:
     do_something_else  # could be a single statement, or a series of statements

也就是说,else需要与相应的if处于相同的级别。

if上看到这个Python doc/tutorial,也看到这个other tutorial

有时,当你的编辑器为你自动缩进并且你手动编辑时,事情可能会变得一团糟,所以你必须弄清楚你的编辑器是如何处理缩进的(例如,它总是使用tabs还是空格?,如果你点击return等会发生什么)。

另外,要小心标签和空格的混合,这也会导致问题(很难发现,因为两者都是“不可见的”)

更新后的帖子:

   if xyzzy.endswith('l'):
       print xyzzy
   else:
       something_else

else应与与其耦合的if处于相同的缩进级别:

if x:
    # do something
else:
    # do something else

对你来说

if xyzzy.endswith('l'):
    print xyzzy
else:
    # something else

即使编辑器为您自动缩进,您仍应取消缩进以使代码语法正确。

正确的缩进并不是Python的问题,而是源代码编辑器的问题。

大多数理解Python的编辑器都会在冒号后正确地添加一级缩进(如您所见)。因为在该代码块中可以有任意多的语句,所以编辑器无法知道何时“取消”下一行的else

在开始键入之前,您必须告诉编辑器在该行上单击backspace或shift tab键以超出该行。

如果在编写完其余代码后插入else部分,请确保用于缩进的字符与if语句的字符完全相同。如果if语句缩进了空格,请为else使用相同数量的空格。如果if语句缩进了一个或多个制表符,请对else语句使用相同数量的制表符。不要混合空格和制表符来缩进。

不要仅仅因为行“看起来”像是缩进了一样,就认为它们的缩进是一样的。可以使用空格,也可以使用制表符(或某些组合)。

相关问题 更多 >