Python 3.x 在Python3.8中混淆UnboundLocalError
我刚刚开始学习如何编码,所以我希望我问的是正确的。为了练习,我想创建一个程序,它将打印出类,因为表单实际上没有改变。它将接受输入,修改它们,然后将它们按正确的顺序排列 我在从列表中提取单词、删除空格、添加下划线和修改值时遇到问题。在下面代码上面的函数中,我获取输入并将它们放入一个名为required的全局列表中。我把Python 3.x 在Python3.8中混淆UnboundLocalError,python-3.x,global-variables,local-variables,Python 3.x,Global Variables,Local Variables,我刚刚开始学习如何编码,所以我希望我问的是正确的。为了练习,我想创建一个程序,它将打印出类,因为表单实际上没有改变。它将接受输入,修改它们,然后将它们按正确的顺序排列 我在从列表中提取单词、删除空格、添加下划线和修改值时遇到问题。在下面代码上面的函数中,我获取输入并将它们放入一个名为required的全局列表中。我把global required放在def modify():下面,但这并没有改变任何事情。注释掉的行是那些一直标记错误“UnboundLocalError:赋值前引用的局部变量“i”
global required
放在def modify():
下面,但这并没有改变任何事情。注释掉的行是那些一直标记错误“UnboundLocalError:赋值前引用的局部变量“i”的行。我想替换原来的单词并添加一个修改过的单词。我试过移动压痕,但没有成功
它对我来说没有意义,因为在代码的前面,它打印“i”没有问题,在代码的后面,它做我要找的事情也没有问题。为什么它在工作正常的部分与“i”之间有问题
作为参考,我使用了“名字”、“姓氏”、“城市”、“公司名称”、“城镇”等值。它正确地打印带有空格的字符串的结果,修改单个单词字符串并将其正确地放入列表中
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的值,这就是为什么一开始您可以打印它,但之后它会抛出异常。哦,天哪。这就是问题所在。非常感谢。我删除了错误的变量。我现在已将其更改为“L”,因此它正确地删除了空格。