如果变量“key”返回到解密函数中,为什么它无法被识别?错误显示“NameError:全局名称'key'未定义”以下是代码:
alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphaList = list(alphabet)
text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj"
def createKey(aList):
key = []
count = 0
for letter in aList:
if count < 24:
key.append(aList[count + 2])
else:
key.append(aList[count - 24])
count += 1
return key
def decrypt(text):
createKey(alphaList)
decryptedList = []
textList = list(text)
for c in textList:
if c in alphaList:
index = alphaList.index(c)
decryptedList.append(key[index])
else:
decryptedList.append(c)
decryptedText = "".join(decryptedList)
return decryptedText
print decrypt(text)
你从不分配key
:
createKey(alphaList)
将其更改为:
key = createKey(alphaList)
发生这种情况是因为key
in createKey(alphaList)
是的一部分createKey
名称范围。尽管您返回了它,但您并没有将其创建为decrypt
名称范围。
或者,您可以使用全局变量,但我不建议这样做,特别是因为通过分配可以轻松解决key
in decrypt()
:
alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphaList = list(alphabet)
text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj"
key = []
def createKey(aList):
global key
# everything else
# no need to return, the `global key` has been changed
def decrypt(text):
global key
createKey(alphaList)
# everything else
参考:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)