簡體   English   中英

UnboundLocalError:分配前引用的局部變量“文本”

[英]UnboundLocalError: local variable 'text' referenced before assignment

UnboundLocalError:分配前引用的局部變量“文本”

嗨,我收到此錯誤“UnboundLocalError:分配前引用的局部變量'文本'”。 你如何解決這個問題?


這是我的代碼:

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

你應該做三件事。

首先,在is_even function 全局變量中設置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

其次,將您的lastmes function 中的elif更改為else 如果您打算使用elif並想考慮evenNone的可能性,那么您應該添加另一個else來處理None的可能性。

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

第三,在is_even之前調用lastmes以便計算值,然后再檢查它們並顯示消息。

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

如果even既不是True也不是False ,則永遠不會定義text even在程序開始時設置為None

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM