2

これはばかげて答えるのは簡単だと思いますが、私はあちこち検索して答えを見つけることができません。私はPythonを学び、非常に単純なコードを実行しようとしていますが、インデントされたブロックの後で何かをしようとすると、構文エラーが発生し続けます。例えば:

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

このコードを実行すると、print('finished')部分で構文エラーが発生します。ループやifステートメントのようにブロックの後にインデントを解除して何かを実行しようとすると、このエラーが発生します。Mac OSXLionのIDLEでPython3.2.3を実行しています。

更新:これは思ったほど簡単ではなかったようです。おそらく、無意味なものを機能させようとしています。インデントするブロックを実行している場合にのみシェルが複数行のステートメントを実行すると思いますが、トップレベルに戻るとすぐにステートメントが実行されます。私は通常ファイルを操作するので、おそらくDjangoで作業するので、最終的には問題になりません。しかし、すべての驚くほど速い応答をありがとう。

4

4 に答える 4

3

少なくともpython私のUbuntuシステムのインタラクティブインタープリターには、ブロックを終了するための改行が必要です。

>>> 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
$ 
于 2012-05-31T21:14:02.260 に答える
1

すべてのセミコロンを取り出します。

x = [1,2,3]
for i in x:
    print(i)
print('finished')
于 2012-05-31T21:12:27.853 に答える
1

後に改行を挿入しますprint(i)Windowsでも)

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

print('finished')
于 2012-05-31T21:14:27.930 に答える
1

IDLEのデフォルトPython Shellウィンドウにこのコードを入力しようとしていますか?IDLEエディタウィンドウを開いて(メニュー項目File-> New Window)、そこからコードを実行する(メニュー項目Run- >)方がよいでしょうRun Module。シェルウィンドウのインデントは混乱を招く可能性があり、間違いを修正するのは困難です。

于 2012-05-31T22:04:55.193 に答える