我试图通过查看以前的线程来理解这一点,但我仍然不明白为什么我在下面的代码中只有两个变量之一出现此错误(代码很糟糕我知道):
alfaphet=('abcdefghijklmnopqrstuvxyz')
cryptalfaphet=('defghjiklmnopqrstuvxyzabc')
spaceNumber=[]
textCopy=[]
def crypt():
textCopy=[]
print('print the text that you want to encrypt:')
text=input()
for i in range(len(text)):
for j in range(len(alfaphet)):
if text[i]==alfaphet[j]:
textCopy.append(cryptalfaphet[j])
if text[i]==' ':
spaceNumber.append(i)
for i in range(len(spaceNumber)):
for j in range(len(text)):
if list(range(len(text)))[j]==int(spaceNumber[i]):
textCopy.insert(j, ' ')
textCopy=''.join(textCopy)
print(textCopy)
crypt()
此代码工作正常,但如果我删除
textCopy=[]
从def块开始的对齐,我得到这样的错误:
Traceback (most recent call last):
File "C:/Python33/dekrypt.py", line 26, in <module>
crypt()
File "C:/Python33/dekrypt.py", line 13, in crypt
textCopy.append(cryptalfaphet[j])
UnboundLocalError: local variable 'textCopy' referenced before assignment
我的问题是为什么spaceNumber变量不会发生这种情况。在使用
进行对齐之前,我可以看到spaceNumberspaceNumber.append(i)
asignment?它在def-block之前引用,但textCopy vaiable也是如此?有什么区别,他们从一开始就是空列表,我在两者上使用.append()方法,但Python似乎对它们的处理方式不同!?
答案 0 :(得分:0)