试图运行我的python程序,但我一直遇到变量分配错误.关于我做错了什么有什么想法吗


def main():

name = ''.join(user_word.lower().split())
name = name.replace('-','') # what?
limit = len(name)
phrase = True
while running:
temp_phrase = phrase.replace(' ', '')  
if len(temp_phrase) < limit:
print(f"length of anagram phrase = {len(temp_phrase)}")
find_anagram(name, dict_file)
print("Current anagram phrase =", end = " ")
print(phrase, file=sys.stderr)
choice, name = process_choice(name) 
phrase += choice + ' '
elif len(temp_phrase) == limit:
print("n**FINISHED!!**n")
print("Anagram of name", end = " ")
print(phrase, file=sys.stderr)
print()
try_again = input("nnWant to try again? (Press Enter or else 'n' to quit)n")
if try_again.lower() == 'n':
running = False
sys.exit()
else:
main()

运行我的代码后,我不断得到错误

UnboundLocalError: local variable 'running' referenced before assignment

所以我试着在主函数的参数中创建一个名为running的变量,但我遇到了另一个错误,所以我想我会先解决这个问题。任何关于如何修复的线索。

附带说明:这个问题来自于《不切实际的python项目》一书(第3章项目5(,我几乎复制了所有的代码,所以我不确定它是如何不起作用的。

在赋值错误之前引用变量的原因是,正如错误所描述的,在给变量赋值之前引用变量。

变量running仅在while循环内部被引用,而不是在之前被引用。为了实现这一点,您必须在while循环上方添加一行,为running赋值。

考虑这个例子:

def my_function():
print(my_variable)
my_variable = 'this is a string'
my_function()

在本例中,我尝试打印my_variable。然而,在我尝试打印它之前,没有任何分配给它。所以输出如下:

UnboundLocalError: local variable 'my_variable' referenced before assignment

但是,如果在像这样打印变量之前给它分配一些值,我就会得到预期的输出。

def my_function():
my_variable = 'this is a string'
print(my_variable)
my_function()

输出:

this is a string

您可能会问,为什么会发生这种情况,难道python不应该看到我为它分配了一个值并打印该值吗?这个问题的答案是否定的。简单地说,Python是从上到下执行的,所以当试图打印my_variable而不在上面为其分配任何内容时,代码就会崩溃。以下是关于python代码如何工作的一些信息。

相关内容

最新更新