我有一个有2种方法的课。 我想用两种方法打印出一些文本
class ceasar:
plain = ""
cipher = ""
shift = 0
def encrypt (self, plain):
newStr = ""
excludedLetters = ['a','e','i','o','u',' '] # best varible name ever
for letter in plain:
if not(letter in excludedLetters): # exclude the letters in excludedLetters
newStr = newStr + letter # addes letters one by one into newStr
return newStr
def encryptTwo(self, plain, shift):
cipherStr = ""
for letter in plain:
cipher = ord(letter) + shift
cipherStr = cipherStr + chr(cipher)
return cipherStr
c = ceasar() # use ceasar class as c
如果我尝试将其打印为
print c.encrypt(c.plain)
它将删除元音和空格。
print c.encryptTwo(c.plain, c.shift)
将改变它(在用户输入上)
但如果有人想要删除元音并转移它,如何组合它们? 我可以输入我试图让它工作的方式,但它会使可疑错误的帖子混乱
答案 0 :(得分:0)
我认为你想要的是
print c.encryptTwo(c.encrypt(c.plain), c.shift)
将执行 encryptTwo
,结果为encrypt
。
但是,如果您想从结果中删除元音,那么
print c.encrypt(c.encryptTwo(c.plain, c.shift))
是你想要的。
答案 1 :(得分:0)
我会在init中使用plain和shift作为参数,你也可以使用 str.translate 删除元音和空格,你也可以忘记密码,因为你从不使用它,也是普通的设置我不知道self.plain如何给你任何结果
second_sum
它将删除元音和空格然后移动剩余部分,但我不知道你将如何将字符串重新组合在一起,如果你只是在加密中使用了逻辑,那么你可以转回去,但我不会&#39 ;如果您计划解密,请查看删除字母的逻辑:
class ceasar(object):
def __init__(self, plain, shift):
self.plain = plain
self.shift = shift
def remove(self):
return self.plain.translate(None, "aeiou ")
def encrypt(self, new):
return "".join([chr(ord(letter) + self.shift) for letter in new])
如果您想使用单个方法并为用户提供删除内容的选项,请在加密中设置标记:
In [2]: c = ceasar("foobar", 3)
In [3]: c.encryptTwo(c.encrypt())
Out[3]: 'ieu'
In [4]: c = ceasar("foobar", 3)
In [5]: c.encrypt(c.remove())
Out[5]: 'ieu'
In [6]: c.plain
Out[6]: 'foobar'
In [7]: c.encrypt(c.plain)
Out[7]: 'irredu'
In [11]: c = ceasar("abc", 3)
In [12]: c.encrypt(c.remove())
Out[12]: 'ef'
传递True会删除忽略的内容,或者使用每个char:
class ceasar(object):
def __init__(self, plain, shift, ignore):
self.plain = plain
self.shift = shift
self.ignore = set(ignore)
def encrypt(self,remove=False):
if remove:
return "".join([chr(ord(letter) + self.shift) for letter in self.plain if letter not in self.ignore])
return "".join([chr(ord(letter) + self.shift) for letter in self.plain])
您也可以将它与 str.translate :
结合使用In [18]: c = ceasar("abc", 3,"aeiou ")
In [19]: c.encrypt(True)
Out[19]: 'def'
In [20]: c.encrypt()
Out[20]: 'ef'
In [21]: c.plain
Out[21]: 'abc'