0
text='hijklqrs'       
def encrypt(shift_text,shift_amount, direction):
    cipher_text=[]
    for i in shift_text:                      
        if direction is right:                   
            cipher_text.append(text[(text.index(i) + shift_amount) % 26])    
        else:
            cipher_text.append(text[(text.index(i) - shift_amount) % 26])           
    output = ''.join(cipher_text)
    return output

到目前为止,这是我创建的代码,但是我遇到的问题是我需要能够根据函数中的方向参数将文本向左或向右移动。我不确定如何添加我希望移位向左移动的代码。因此,例如,当我h进入函数并且移位量为 2 并且方向为左时,它将返回f

4

1 回答 1

0
def rotate(alphabet,shift):
    return alphabet[shift:] + alphabet[:shift]

print rotate("abcdefghijk",2)

然后,您使用字典或 string.transtab 将其配对,并将您的原始文本与转换后的文本翻译

from string import maketrans,ascii_lowercase
N = -13 #shift ammount (use negative for "left" and positive for "right")
tab = maketrans(ascii_lowercase,rotate(ascii_lowercase,N))
encoded = "hello world".translate(tab)
decode_tab = maketrans(rotate(ascii_lowercase,N),ascii_lowercase)
decoded = encoded.translate(decode_tab)
print encoded,"--->",decoded
于 2015-05-19T16:59:03.830 回答