UnboundLocalError:割り当て前に参照されるローカル変数 'text'

2020-07-01 python

UnboundLocalError:割り当て前に参照されるローカル変数 'text'

こんにちは、私はこのエラー 'UnboundLocalError:ローカル変数' text 'が割り当て前に参照されました'を取得しています。これをどのように修正しますか?


これが私のコードです:

even = None
def is_even(num):
    if num % 2 == 0:
        even = True
        return even
    elif num % 2 != 0:
        even = False
        return even

def lastmes():
    if even == True:
        text = "The last value of even is True"
    elif even == False:
        text = "The last value of even is False"
    return text

print(lastmes())
print(is_even(51))

これが私のエラーメッセージです:

Traceback (most recent call last):
  File "main.py", line 17, in <module>
    print(lastmes())
  File "main.py", line 15, in lastmes
    return text
UnboundLocalError: local variable 'text' referenced before assignment

Answers

TrueでもFalse evenない場合、 textは定義されません。プログラムの最初でeven Noneに設定されています。

3つのことを行う必要があります。

まず、作りeven内部の変数をis_evenグローバル関数。別のローカル変数を作成し、その値を設定するだけで、関数の外で作成したものeven変更しません。

def is_even(num):
    global even #Here
    if num % 2 == 0:
        even = True
        return even
    elif num % 2 != 0: #You should change this to just an else but this works too
        even = False
        return even

第二には、変更elifあなたの中lastmesに機能をelseelif使用を計画しevenて、 Noneになる可能性even考慮したい場合は、 None可能性に対処するために、別のelseを追加する必要があります。

def lastmes():
    if even == True:
        text = "The last value of even is True"
    else:
        text = "The last value of even is False"
    return text

3番目に、値を計算してメッセージを表示する前に、 is_even前にlastmes呼び出して値を計算します。

print(is_even(50))
print(lastmes())

Related