2017-09-02 10 views
0

私はDataCampとPython AnywhereでPythonを使用していますが、構文エラーとは同意しないようです。私は最近、ちょうど開始しましたので、私はこのコード行を試してみました:Python AnywhereでのPython構文エラー

n = 5 
while n > 0: 
    print (n) 
    n = n - 1 
print ('Blastoff!') 

それはDataCampになっているようそれが実行されますが、どこのPythonで、私は次のエラーを取得:

File "<stdin>", line 5 
    print ("Blastoff!") 
     ^
SyntaxError: invalid syntax 

Iドンそれが何を参照しているのか、それとも私に言おうとしているのか分かりません。エラーメッセージは役に立たないので、ここで2つの異なる評価が得られる理由はわかりません。

+0

python2.xを実行していますか? –

+4

@ArpitSolanki:これはPython 2で動作します。 –

+0

対話型インタプリタでこれを実行していますか?次に、 'n = n - 1'と' print'行の間に空白行を入れる必要があります。 –

答えて

1

とき対話インタプリタにを貼り付けるには、次のステートメントの前に、ブロック文の後空行を持っている必要があります。ここではどこでも通訳http://www.python.orgに埋め込まれたパイソンからの出力です:最初の列に何かを書く

Python 3.6.0 (default, Jan 13 2017, 00:00:00) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> n = 5 
>>> while n > 0: 
... print (n) 
... n = n - 1 
... print ('Blastoff!') 
    File "<stdin>", line 4 
    print ('Blastoff!') 
     ^
SyntaxError: invalid syntax 
>>> 

...にもソースファイル内の法的ものの、このSyntaxErrorの原因となります。これは、完了したらすべての複合ステートメントがexec(compile(... 'single'))に渡されるためです。実際にはwhileの後にprintが続きますが、Python REPLはここで少しばかげています。

Python 3.6.0 (default, Jan 13 2017, 00:00:00) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> n = 5 
>>> while n > 0: 
... print (n) 
... n = n - 1 
... 
5 
4 
3 
2 
1 
>>> print ('Blastoff!') 
Blastoff! 
>>> 

しかし、すなわち前whileループは今とすぐ複合文が終了したとして実行されることに気づく:

打つにはprint>>>にプロンプ​​トに戻りますが、インタラクティブな通訳で問題を修正するように入力します。 >>>プロンプトが再び表示されます。

標準のPython REPL以外のシェルもあります。何ということを意味し、

% ipython 
Python 3.5.3 (default, Jan 19 2017, 14:11:04) 
Type 'copyright', 'credits' or 'license' for more information 
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help. 

In [1]: n = 5 
    ...: while n > 0: 
    ...: print (n) 
    ...: n = n - 1 
    ...: print ('Blastoff!') 
    ...: 
5 
4 
3 
2 
1 
Blastoff! 

In [2]: 
0

両方PythonAnywhereと最初の文の一部として...内で何かを扱いますシェル:1つの一般的な、ipythonは、コピー・貼り付けた内容を認識し、正しくこれを実行するコンソールシェルを持っています最初の文が評価されたときに、3ドットで始まるifまたはwithまたはwhileまたはforが実行されたと想定されます。

ifステートメントがある場合、...が入力されている間に入力されたコードは、ifステートメントの評価時に実行されます。