由于缩进,Python IDLE(Mac OS X)中的语法错误

时间:2012-05-31 21:09:10

标签: python python-idle

我认为这将是非常容易回答,但我已经搜遍了所有,无法找到答案。我正在学习Python并尝试运行一些非常简单的代码,但是在我在缩进块之后尝试执行某些操作时,我仍然会收到语法错误。例如:

x = [1,2,3];
for i in x:
    print(i);
print('finished');

当我运行此代码时,我在print('finished')部分出现语法错误。任何时候我尝试通过像循环或if语句之类的块之后的unindenting运行任何东西,我都会收到此错误。我在Mac OS X Lion上运行IDLE中的Python 3.2.3。

更新:似乎这并不像我想象的那么容易,也许我正试图让一些工作毫无意义。我猜shell在运行缩进块时只运行多行语句,但是当你回到顶层时它会执行语句。由于我通常会处理文件,最有可能是在Django中,最终无关紧要。感谢所有惊人的快速反应。

4 个答案:

答案 0 :(得分:3)

至少我的Ubuntu系统上的python交互式解释器需要换行符来结束块:

>>> x = [1,2,3];
>>> for i in x:
...     print(i);
... print('finished');
  File "<stdin>", line 3
    print('finished');
        ^
SyntaxError: invalid syntax
>>> x = [1,2,3];
>>> for i in x:
...     print(i);
... 
1
2
3
>>> print('finished');
finished

有趣的是,python解释器在脚本上运行时不需要空行:

$ cat broken.py 
#!/usr/bin/python

x = [1,2,3];
for i in x:
    print(i);
print('finished');

$ ./broken.py 
1
2
3
finished
$ 

答案 1 :(得分:1)

取出所有分号。

x = [1,2,3]
for i in x:
    print(i)
print('finished')

答案 2 :(得分:1)

print(i)之后插入换行符(也在 windows 上)

x = [1, 2, 3]
for i in x:
    print(i)

print('finished')

答案 3 :(得分:1)

您是否尝试在IDLE的默认Python Shell窗口中输入此代码?最好打开IDLE编辑器窗口(菜单项File - &gt; New Window)并从那里运行代码(菜单项Run - &gt; Run Module)。在shell窗口中缩进会让人感到困惑,并且很难纠正错误。