2017-09-16 14 views
-1

私は単純なコードを持っています。そして私には問題があります: "Unresolver reference '' more ... '。 この問題は3番目のif関数で発生します。一方でそれ以外の場合は毎回関数内のアンリゾルバー参照

enter image description here

私はABCD関数の外で宣言しなければならないが、場合に応じて、私は宣言値に設定されないであろう機能します。どうやってするの?

def abcd(s, e): 
if s<0.72: 
    if e>30: 
    a=0 
    return a 

else: 
    a=0 
    return a 
else: 
    if a == 1: 
     a = 1 
     return a 
    else: 
     a=1 
     return a 
while True: 
abcd 
+2

あなたのインデントを修正してください。 –

+1

Python **には変数宣言**がありません。関数で 'a 'をグローバル' a'とみなしたい場合は 'global'ディレクティブを使うことができます。それ以外の場合は、' a'に代入するのでコンパイラは 'a'を* local * 。 –

+0

[グローバル変数を作成した関数以外の関数でグローバル変数を使用する](https://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-作成したもの) – wwii

答えて

0

あなたはそうのように、ABCDの初めに= 0を設定することができます。

def abcd(s, e): 
    a = 0 
    if s<0.72: 
     if e>30: 
      a=0 
      return a 
     else: 
      a=0 
      return a 
    else: 
     if a == 1: 
      a = 1 
      return a 
     else: 
      a=1 
      return a 
while True: 
    s = int(input("type value for s ")) 
    e = int(input("type value for e ")) 
    print(abcd(s, e) ) 

は、しかし、あなたがそれを簡略化することができます。

def abcd(s, e): 
    if s<0.72: 
     return 0 
    return 1 

while True: 
    s = int(input("type value for s")) 
    e = int(input("type value for e")) 
    print(abcd(s, e) ) 
+0

いいえ、私はしませんでした。 e(e> 30かどうか)にかかわらず、aは0に設定され、返されます。最初のコードブロックを見てください –

+0

ああもちろん –

関連する問題