-1
def encrypt(string, new_string):
    i = 0
    if i < len(string):
        if ord(string[i]) > 65 and ord(string[i]) < 97:
            new_string = string[i] + encrypt(string[1:], new_string)

        if ord(string[i]) >= 97 or ord(string[i]) == 32:
            if not(ord(string[i])) == 32:
                x = ord(string[i])
                x = x + 1
                y = chr(x)
                new_string = new_string + y

                new_string = encrypt(string[1:], new_string)

            else:
                new_string = new_string + ' '
                new_string = encrypt(string[1:], new_string)
    return new_string

string = input("Enter a message: \n")
new_string = ''


print("Encrypted message:")
print(encrypt(string, new_string))

如果有多个大写字母,它将在加密消息的前面输出大写字母。

例如:“Hello World”变为“HWfmmp psme”。但是,输出应该是“Hfmmp Xpsme”

4

2 回答 2

1

translate可以帮助您进行这种转换。

from string import ascii_lowercase

def encrypt(data):
    transmap = str.maketrans(ascii_lowercase, ascii_lowercase[1:] + ascii_lowercase[0])
    return data.translate(transmap)

value = 'Hello World'
print(encrypt(value))

结果是Hfmmp Wpsme


很容易更改encrypt函数以使用灵活的偏移量。

from string import ascii_lowercase

def encrypt(data, offset=1):
    transmap = str.maketrans(ascii_lowercase, ascii_lowercase[offset:] + ascii_lowercase[0:offset])
    return data.translate(transmap)

value = 'Hello World'
print(encrypt(value, offset=2))
print(encrypt(value, offset=-1))

这将打印Hgnnq WqtnfHdkkn Wnqkc.

于 2015-05-07T09:21:07.803 回答
0
>>> import re
>>> re.sub('[a-z]',lambda x:chr(ord(x.group(0))+1),'Hello World')
'Hfmmp Wpsme'
>>> 
于 2015-05-07T08:59:51.320 回答