如何解决将已返回值的方法的值存储在类中
我要总结一下,仅在我的python程序上使用Caesar密码进行加密和解密。但是,我似乎完全迷路了,因为我想返回已加密的消息self.cipher 。我希望能够存储此值,并使用其他方法 decryptCipher 对其进行解密。我需要有关如何将我从 encryptCipher 方法返回的值传递给方法 decryptCipher 的建议。运行此命令时,我也收到一条错误消息,提示'不可调用'。谢谢!
使用凯撒密码(类)进行加密
CaesarCipher类(对象):
def __init__(self,plainTxt,key,alphabet):
self.plainTxt = plainTxt
self.key = key
self.alphabet = alphabet
self.cipher = " "
self.decryptCipher = " "
def encryptCipher(self):
text = self.plainTxt.lower()
for lettersintext in text:
if lettersintext == " ":
self.cipher+=" "
else:
for i in range(len(self.alphabet)):
if self.alphabet[i] == lettersintext:
self.cipher += self.alphabet[i+self.key]
break
return self.cipher
def decryptCipher(self,encryptedVer):
#request if want to decrypt
text = encryptedVer.lower()
for lettersintext in text:
if lettersintext == " ":
self.decryptCipher+=" "
else:
for i in range(len(alphabet)):
if self.alphabet[i] == lettersintext:
self.decryptCipher += self.alphabet[i-self.key]
return self.decryptCipher
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','o','p','q','r','s','t','u','v','w','x','y','z']
plainTxt = input("Enter a text to encrypt: ")
key = int(input("Key shift value: "))
init = CaesarCipher(plainTxt,alphabet)
print(init.encryptCipher())
encryptedVer = init.encryptCipher()
print(init.decryptCipher(encryptedVer))
我也对语法布局表示歉意。当我复制代码时,它以这种方式结束,这是我的新手:)
解决方法
您正在将加密的消息存储在对象(self.cipher)中并返回它。如果您同时希望两者都没有问题,但是您可能希望在开始填充self.cipher之前将其清空(否则,您将在之前的加密之上附加一个全新的加密消息)。
或者,将一个临时空字符串添加到您的方法中。
就不可调用str而言,这是因为您在 init 中定义了一个属性self.decryptCipher =“”以及定义了一个方法cryptoCipher()。
您的方法调用实际上是在调用您的字符串并尝试将信息传递给它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。