3 回答
TA贡献1806条经验 获得超8个赞
我意识到这个答案并没有真正回答你的问题,但我认为无论如何它都是有用的。以下是使用字符串方法实现caesar密码的另一种方法:
def caesar(plaintext, shift):
alphabet = string.ascii_lowercase
shifted_alphabet = alphabet[shift:] + alphabet[:shift]
table = string.maketrans(alphabet, shifted_alphabet)
return plaintext.translate(table)
实际上,由于字符串方法是在C中实现的,因此我们将看到此版本的性能提升。这就是我认为的“pythonic”方式。
TA贡献1811条经验 获得超6个赞
你需要cipherText = ""在for循环开始之前移动。你每次循环都要重置它。
def caesar(plainText, shift):
cipherText = ""
for ch in plainText:
if ch.isalpha():
stayInAlphabet = ord(ch) + shift
if stayInAlphabet > ord('z'):
stayInAlphabet -= 26
finalLetter = chr(stayInAlphabet)
cipherText += finalLetter
print "Your ciphertext is: ", cipherText
return cipherText
添加回答
举报