2016-09-18 6 views
-9

私は電卓を書いて​​いますが、何らかの理由で私のelif構文が間違っていると言っていますか?あなたがifブロックとelifブロック間の機能を定義しているScreenshot Of the errorPython:Elif文が奇妙です

+0

'def..'つまり' if..elif'の外の関数 –

+3

問題を公開するコードは質問自体に含めるべきです。私たちは、期限切れになる可能性があるため、外部リソースへのリンクを避けようとします。 –

+1

文字列を['float'](https://docs.python.org/3.5/library/functions.html#float)または[' int'](https: //docs.python.org/3.5/library/functions.html#int)。 「[Evalは本当に危険です](http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html)」を読んで、悪い「eval」を使用し続けるとどうなるかを見てください。 – Matthias

答えて

1

(私はpythonの付属IDLE IDEを使用しています)(のpython 3.5を使用して)。それをしてはいけない。

これは失敗します。

if condition: 
    pass 
def f(): 
    pass 
elif condition: 
    pass 

通訳はすぐelif上の関数定義であるため、elifは、所属するif声明を知りません。

def f(): 
    pass 
if condition: 
    pass 
elif condition: 
    pass 
0

あなたのプログラムを実行するために崇高やメモ帳++とCLIのようなプロのエディタを使用し、IDLEを使用しないでください:if..elif構造の途中から関数定義を取り出します。

あなたのelifはインデントレベル外です。そうした場合

if a: 
    pass 
elif b: 
    pass 

:このようにする必要があり

if a: 
    pass 
def func(): 
    pass 
elif b: 
    pass 

それは失敗します。最後に、プログラムの先頭とプログラムの本文にすべての機能を定義します。

+0

これは(または一般的なPythonの)メモ帳++のIDLEより優れていますか?私は両方ともbtwを使っていますが、PythonにNotepad ++を使うことは考えていません。 –

+0

ああ、ありがとう –