UnboundLocalError:赋值前引用的局部变量“text”

2024-10-03 21:26:39 发布

您现在位置:Python中文网/ 问答频道 /正文

UnboundLocalError:赋值前引用的局部变量“text”

您好,我收到了这个错误“UnboundLocalError:LocalVariable”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

Tags: textfalsetruereturnifisdef错误
2条回答

如果even既不是True也不是False,那么text永远不会被定义even在程序开始时设置为None

你应该做三件事

首先,将is_even函数内的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函数中的elif更改为else。如果您计划使用^ {CD4}},并且想考虑^ {< CD1> }为^ {CD9}}的可能性,那么您应该添加另一个^ {< CD6> }来处理^ {CD9}}可能性。

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

第三,在检查值并显示消息之前,在lastmes之前调用is_even,以便计算值

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

相关问题 更多 >