2016-08-17 18 views
-4

enter image description here私はPythonで新しくなっています。私はIPythonでelse文を使用しようとしていますが、エラーメッセージが表示されます: "IDエラー:インデントが外部IDレベルと一致しません。"私はPythonで同様の質問を探しましたが、この問題は、Tabキーとスペースを混在して使用したり、スペース/文字を増やしたり補足したりすることに関連していました。ここでは、補足(隠れた)文字なしで各印刷ステートメントの前に4つのスペースを使用しています(もちろん、行単位で復帰するキャリッジは1つありません)。 'if'部分だけは動作しますが、 'else'部分は動作しません。他はIPythonで動作しません

x = True 
if x == True: 
    print('ok') 
else: 
    print('nok') 

更新:ここにIpythonのバージョン、コード、エラーメッセージを示すスクリーンショットがあります。

+2

@EricRenouf:私はそれがポイントだとは思わない。構文エラーはここでの問題です。 –

+1

これは私たちがここでデバッグするのが非常に難しいです。あなたがIPythonセッションに入力したものを正確に見ることができないからです。 –

+0

'else:'行を入力するために実際に*インデント解除*(バックスペース4回)していますか? –

答えて

1

複合ステートメントのIPython自動インデントブロックですので、else:行を入力するには、手動でのインデントを解除してを再度入力する必要があります。

正しく字下げしないとエラーを再現できます。私はバックスペース3回使用され、このエラーの例でelse:前に4

注余分なスペースの代わりに、1と3回の間にバックスペースを打つ:

In [2]: if x == True: 
    ...:  print('ok') 
    ...: else: 
    File "<ipython-input-2-915b4c0eb5ea>", line 3 
    else: 
     ^
IndentationError: unindent does not match any outer indentation level 

IPythonは、あなたがあなたのブロックを編集することができますが、上向き矢印キーを使用して失敗したテキストを呼び出し、else:行の先頭にある余分なスペースを削除するだけです。

手動でコードを入力しない場合は、コードを直接コピー&ペーストしないでください。代わりに%pasteコマンドを使用し、IPythonは、任意の自動インデントの問題を避け、あなたためのコードを貼り付けます:

In [3]: %paste 
x = True 
if x == True: 
    print('ok') 
else: 
    print('nok') 
## -- End pasted text -- 
ok 

詳細については%paste?を参照してください。

+0

間に、あなたの命題%pasteを見ているhttp://stackoverflow.com/questions/10886946/how-does-ipythons-magic-paste-workが見つかりました。できます。 –

関連する問題