【问题标题】:Storing the value of a method that has returned a value in a class将已返回值的方法的值存储在类中
【发布时间】:2021-01-18 13:09:15
【问题描述】:

我要总结一下在我的 python 程序上使用凯撒密码来加密和解密。但是,我似乎完全迷失了,因为我想 返回 self.cipher 这是加密的消息。我希望能够存储此值并使用它在我的其他方法 decryptCipher 中对其进行解密。我需要有关如何将我从 encryptCipher 方法返回的值传递给方法 decryptCipher 的建议。我也从运行这个得到一个错误,说 'str is not callable'。谢谢!

使用凯撒密码(类)进行加密

类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, key, alphabet)

print(init.encryptCipher())

encryptedVer = init.encryptCipher()

print(init.decryptCipher(encryptedVer))

另外我对语法布局表示歉意。当我复制代码时,它以这种方式结束,我对此很陌生:)

【问题讨论】:

    标签: python class encryption methods caesar-cipher


    【解决方案1】:

    您将加密消息存储在对象 (self.cipher) 中并返回它。如果你想要两者都不是问题,但你可能想在开始填充之前将 self.cipher 清空(否则你会在之前的加密之上附加一个全新的加密消息)。

    或者,创建一个临时空字符串并在您的方法中附加所有内容。

    str不可调用,是因为在init中定义了self.decryptCipher = " "的属性,同时定义了decryptCipher()方法。

    您的方法调用实际上是在调用您的字符串并尝试将信息传递给它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 2017-08-14
      • 2023-03-09
      • 2015-02-12
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多