简单的Caesar-Cypher,减少if语句

2024-04-19 12:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经开始阅读密码学,正在为一个凯撒密码编写一个简单的函数。有没有办法把if, elif, else语句压缩成一个语句。我觉得有一种方式我现在想不起来。谢谢!你知道吗

from string import maketrans
def basic_cypher(message, shift):
    letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    if shift <= 26:
        shifted_letters = letters[shift:] + letters[:shift]
    elif shift <= -1:
        shifted_letters = letters[:shift] + letters[shift:]
    else:
        shifted_letters = letters[shift - 26:] + letters[:shift - 26]
    trans_tab = maketrans(letters, shifted_letters)
    return 'This is the encoded version of your message: ', message.translate(trans_tab)

Tags: 函数密码messagetransifshift语句tab