![](/img/trans.png)
[英]What is the if-else indentation when we use “break” in the if block?(in Python)
[英]Indentation of an IF-ELSE block in Python
我是 Python 新手,我正在使用 Python 研究NLP 。 我在 Python 中编写if-else块时出错。 当我当时只写一个if块时,它工作正常:
if xyzzy.endswith('l'):
print xyzzy
输入冒号 ( : ) 后,我按Enter ,它会自动将我带到正确的缩进。
但是当我在打印语句之后按Enter键后尝试向它添加一个else块时,它认为它只是一个IF块的语句,所以它给了我不正确的缩进,因为我想要一个else块,而当我尝试编写 else 阻止我自己时,它给了我这个错误。
else:
^
IndentationError: unexpected indent
写完print语句后应该怎么做? Enter显然不起作用,因为它将光标向前移动,而当我使用空格来找到正确的指针时,它给了我一个错误。
从您的帖子中很难看出问题是什么,但是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 文档/教程,以及其他教程。
有时,当您的编辑器为您自动缩进而您也手动编辑时,事情可能会变得一团糟,因此您必须弄清楚您的编辑器如何处理缩进(例如,它是否总是使用tabs
或空格?,如果您按回车键会发生什么)等等)。
另外,要小心混合制表符和空格,这也会导致问题(很难发现,因为两者都是“不可见的”)
随着您更新的帖子:
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
的下一行。
在开始键入之前,您必须通过在该行上按退格键或Shift + Tab来告诉编辑器缩进该行。
如果您在编写其余代码后插入else
部分,请确保您用于缩进的字符与if
语句中的字符相同。 如果if
语句用空格缩进,请为else
使用相同数量的空格。 如果if
语句使用一个或多个制表符缩进,请为else
语句使用相同数量的制表符。 不要混合使用空格和制表符来缩进。
不要以为只是因为行“看”,好像他们缩进相同的,他们都缩进相同。 一个可以使用空格,一个可以使用制表符(或某种组合)。
当我使用空格来找到正确的指针时,它给了我一个错误
当然。 使用空格永远不会造成“换行”,在 Unix 系统中通常是 \\n 。 如果您在不同的编辑器(例如 Windows 中的记事本)中打开 .py 文件,您会看到 else 语句与打印在同一行。
Enter显然不起作用,因为它使光标向前移动
按退格键正确的次数以达到与IF语句相同的缩进级别。
我不完全同意接受的答案。 是的,缩进在 Python 中非常重要,但要声明if-else
必须始终像这种格式一样看起来有点过分。
Python 允许您使用单行(甚至多行),只要您不做任何需要在if
、 elif
或else
主体中缩进的花哨的else
。
这里有些例子:
choice = 1
# if with one-liner
if choice == 1: print('This is choice 1')
# if-else with one-liners
if choice == 1: print('This is choice 1')
else: print('This is a choice other than 1')
# if-else if with one-liners
if choice == 1: print('This is choice 1')
elif choice == 2: print('This is choice 2')
# if-else if-else with one-liners
if choice == 1: print('This is choice 1')
elif choice == 2: print('This is choice 2')
else: print('This is a choice other than 1 and 2')
# Multiple simple statements on a single line have to be separated by a semicolumn (;) except for the last one on the line
if choice == 1: print('First statement'); print('Second statement'); print('Third statement')
通常不建议在一行中打包太多语句,因为那样你会失去 Python 的一大特性——代码的可读性。
还要注意,上面的例子也可以很容易地应用于for
和while
。 如果您使用三元条件运算符,您可以更进一步地对单行if
块进行一些疯狂的嵌套。
以下是操作员通常的样子:
flag = True
print('Flag is set to %s' % ('AWESOME' if True else 'BORING'))
基本上,它创建了一个简单的if-else
语句。 如果您需要更多分支(但不是复杂分支),您可以将它嵌入其中一个单行代码中。
我希望这能稍微澄清一下情况以及允许和不允许的情况。 ;)
即使缩进看起来正确,我也一直收到此错误。
在Notepad++ 中查看有一个选项可以查看空格和制表符。 该错误是由混合空格和制表符以创建缩进引起的。 在每一行中用空格替换制表符有助于消除错误。
实际上,这是一个 Python IDLE UI 问题:在if块完成后按Enter 键后,接下来else语句已经与if语句一致。 不需要提供任何制表符或空格来进行缩进。 下面是图片供参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.