def fnDecrypt():
key = raw_input("Please type the offset factor key: ")
name = raw_input("Please enter the name of the file you want to decrypt: ")
offset_factor = key
encrypted_message = open(name,'r')
message = encrypted_message.read()
print "The contents of the file you are decrypting is: " + message
for c in message:
number = ord(c)
if c != " ":
number -= offset_factor
if number > 126:
number = number + 94
new_character = chr(number)
encrypted_message -= new_character
print 1
print encrypted_message
return;
此代码应该使用用于加密它的相同八个字符密钥来解密加密邮件。我得到此错误消息:UnboundLocalError:在赋值之前引用的局部变量'new_character'
答案 0 :(得分:2)
您的错误“UnboundLocalError: local variable 'new_character' referenced before assignment
”是由于您在定义之前访问new_character
变量而导致的。
当我们关注代码的这一部分时,可以看到这一点:
if number > 126:
number = number + 94
new_character = chr(number)
encrypted_message -= new_character
如您所见,您在new_character
块中定义了if number > 126:
变量 ,但您在if
的{{1}}之外使用了它。
当变量encrypted_message -= new_character
小于126时,您永远不会输入number
块,因此您永远不会定义if
。
答案 1 :(得分:-1)
stacktrace" UnboundLocalError:局部变量' new_character'在分配前引用"通常发生在您尝试使用未引用计算机的变量时。
UnBoundLocalError: local variable referenced before assignment (Python)
if 条件不正确,并且您在引用之前尝试使用变量 new_character 。这就是为什么编写 else 以进行调试非常重要的原因。
for c in message:
number = ord(c)
if c != " ":
number -= offset_factor
if number > 126:
number = number + 94
else:
print "Something went wrong"
new_character = chr(number)
encrypted_message -= new_character