cbr*_*lak 525 python indentation
当我编译下面的Python代码时,我得到了
IndentationError:unindent与任何外部缩进级别都不匹配
import sys
def Factorial(n): # Return factorial
result = 1
for i in range (1,n):
result = result * i
print "factorial is ",result
return result
Run Code Online (Sandbox Code Playgroud)
为什么?
Kev*_*ghe 600
其他海报可能是正确的...可能有空格与您的标签混合.尝试进行搜索和替换,用几个空格替换所有选项卡.
试试这个:
import sys
def Factorial(n): # return factorial
result = 1
for i in range (1,n):
result = result * i
print "factorial is ",result
return result
print Factorial(10)
Run Code Online (Sandbox Code Playgroud)
act*_*eek 241
重要提示: 空格是首选方法 - 请参阅PEP008 缩进和制表符或空格?.(感谢@Siha.)
对于Sublime Text用户:
设置Sublime Text为使用标签进行缩进:
View- > Indentation- >Convert Indentation to Tabs
Indent Using Spaces在上面的同一子菜单中也取消选中该选项.这将立即解决此问题.
And*_*dré 129
要轻松检查选项卡/空格的问题,您实际上可以执行此操作:
python -m tabnanny yourfile.py
Run Code Online (Sandbox Code Playgroud)
或者你当然可以正确设置你的编辑器:-)
Gat*_*ica 11
如果您使用Python的IDLE编辑器,您可以按照其中一条类似的错误消息进行操作:
1)选择全部,例如Ctrl + A.
2)转到格式 - > Untabify Region
3)仔细检查您的缩进是否仍然正确,保存并重新运行您的程序.
我正在使用Python 2.5.4
在原子上
去
Packages > Whitespace > Convert Spaces to Tabs
Run Code Online (Sandbox Code Playgroud)
然后再次检查您的文件缩进:
python -m tabnanny yourFile.py
Run Code Online (Sandbox Code Playgroud)
或者
>python
>>> help("yourFile.py")
Run Code Online (Sandbox Code Playgroud)
对于它\xe2\x80\x99s 的价值,我的文档字符串缩进太多,这也会引发相同的错误
\nclass junk:\n """docstring is indented too much"""\n def fun(): return\nRun Code Online (Sandbox Code Playgroud)\nIndentationError: unindent does not match any outer indentation level
看起来是缩进问题。你不必匹配在Python大括号,但你也必须匹配缩进层次。
防止空格/制表符问题的最佳方法是在文本编辑器中显示不可见字符。这将为您提供一种防止和/或解决与缩进相关的错误的快速方法。
此外,注入复制粘贴的代码是此类问题的常见来源。
使用 Visual Studio 代码
如果您使用的是 vs 代码,它将使用以下简单步骤将所有混合缩进转换为空格或制表符。
按 Ctrl + Shift + p
类型 indent using spaces
按 Enter
| 归档时间: |
|
| 查看次数: |
1362078 次 |
| 最近记录: |