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的值,这就是为什么一开始你可以打印它但之后它抛出异常。