Python 3.8 中令人困惑的 UnboundLocalError
Confusing UnboundLocalError in Python 3.8
我刚刚开始学习如何编码,所以我希望我问的是正确的。作为练习,我想创建一个打印出 类 的程序,因为表格并没有真正改变。它会接受输入,修改它们,然后将它们按正确的顺序排列。
我在从列表中提取单词、删除空格、添加下划线和修改值时遇到问题。在以下代码上方的函数中,我获取输入并将它们放入名为 required 的全局列表中。我把 global required
放在 def modify():
下搞砸了,但这并没有改变任何东西。被注释掉的行是那些不断标记错误“UnboundLocalError:局部变量 'i' 在赋值前被引用”的行。我想替换原来的词并添加修改的词。我试过移动缩进但没有成功。
这对我来说没有意义,因为在代码的前面它打印 'i' 没有问题,而在后面的代码中它也可以毫无问题地做我正在寻找的事情。为什么 'i' 在正常工作的中间部分出现问题?
作为参考,我使用了 'first name'、'last name'、'city'、'company name'、'town' 的值。它正确打印带空格的字符串的结果,并修改单个单词字符串并将它们正确放入列表中。
def modify():
for i in range(0,len(required)+1):
print()
print(i)
print()
if chr(32) in str(required[i]):
no_space = ""
underscore = ""
for l in str(required[i]):
if ord(l) !=32:
no_space += l
underscore += l
elif ord(l) == 32:
del i
underscore += "_"
print()
print(no_space)
print(underscore)
# required.index[c] = no_space
# required.append(underscore)
# required.insert(i+1,underscore)
# required[i] = no_space
elif chr(32) not in str(required[i]):
if chr(95) in str(required[i]):
continue
elif chr(95) not in str(required[i]):
additional = "the_" + str(required[i])
required.insert(i+1,additional)
print()
for t in range(len(required)):
print(str(t+1)+". "+required[t])
谢谢!我希望这不会太混乱!
我认为错误是由这一行引起的:
del i
你正在删除那个特定时刻分配给i的值,这就是为什么一开始你可以打印它但之后它抛出异常。
我刚刚开始学习如何编码,所以我希望我问的是正确的。作为练习,我想创建一个打印出 类 的程序,因为表格并没有真正改变。它会接受输入,修改它们,然后将它们按正确的顺序排列。
我在从列表中提取单词、删除空格、添加下划线和修改值时遇到问题。在以下代码上方的函数中,我获取输入并将它们放入名为 required 的全局列表中。我把 global required
放在 def modify():
下搞砸了,但这并没有改变任何东西。被注释掉的行是那些不断标记错误“UnboundLocalError:局部变量 'i' 在赋值前被引用”的行。我想替换原来的词并添加修改的词。我试过移动缩进但没有成功。
这对我来说没有意义,因为在代码的前面它打印 'i' 没有问题,而在后面的代码中它也可以毫无问题地做我正在寻找的事情。为什么 'i' 在正常工作的中间部分出现问题?
作为参考,我使用了 'first name'、'last name'、'city'、'company name'、'town' 的值。它正确打印带空格的字符串的结果,并修改单个单词字符串并将它们正确放入列表中。
def modify():
for i in range(0,len(required)+1):
print()
print(i)
print()
if chr(32) in str(required[i]):
no_space = ""
underscore = ""
for l in str(required[i]):
if ord(l) !=32:
no_space += l
underscore += l
elif ord(l) == 32:
del i
underscore += "_"
print()
print(no_space)
print(underscore)
# required.index[c] = no_space
# required.append(underscore)
# required.insert(i+1,underscore)
# required[i] = no_space
elif chr(32) not in str(required[i]):
if chr(95) in str(required[i]):
continue
elif chr(95) not in str(required[i]):
additional = "the_" + str(required[i])
required.insert(i+1,additional)
print()
for t in range(len(required)):
print(str(t+1)+". "+required[t])
谢谢!我希望这不会太混乱!
我认为错误是由这一行引起的:
del i
你正在删除那个特定时刻分配给i的值,这就是为什么一开始你可以打印它但之后它抛出异常。