This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center
                            
                        
                    
                
                                6年前关闭。
            
                    
>>> if 5==5:
print '5'
else: print 'cat'

File "<pyshell#2>", line 3
else: print 'cat'
                ^
 IndentationError: unindent does not match any outer indentation level


无论缩进是什么,它仍然不起作用。即使我尝试将print cat语句放在下一行,它也会给我带来语法错误。为什么是这样?

最佳答案

您希望您的代码如下所示:

if 5 == 5:
    print '5'
else:
    print 'cat'


为什么?因为Python像其他语言一样使用缩进,所以使用方括号:它确定语句的分组。 Dive Into Python对此有很好的解释:


  Python使用回车符来分隔语句,并使用冒号和缩进来分隔代码块。 C ++和Java使用分号分隔语句,并使用花括号分隔代码块。


reference manual还描述了它在较低级别的工作方式:


  逻辑行开头的前导空格(空格和制表符)用于计算行的缩进级别,而缩进级别又用于确定语句的分组。
  
  ...
  
  首先,将制表符替换(从左至右)一到八个空格,以使直到包括该替换在内的字符总数为八个的倍数(这与Unix所使用的规则相同)。然后,第一个非空白字符前的空格总数将决定行的缩进。


通常,您要使用4个空格来表示缩进级别。这在PEP 8中定义。这将确保每个人都可以看到同一件事,无论他们使用的是哪种IDE。请注意,切勿混用制表符和空格,因为不经意间就很容易破坏代码(考虑到并非所有编辑器都将制表符显示为相同大小)。

关于python - python else和elif错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17223455/

10-10 00:31
查看更多