我创建了一个简单的程序,用于对用户输入的字符串执行 Caeser 密码。
为了允许移位超过列表的末尾并回到开头,我只是复制了该列表的所有列表值。
是否有一种更 Pythonic 的方式来实现此结果,以便在移位超过列表范围的末尾时它会回到开头并继续移位?
while True:
x = input("Enter the message you would like to encrypt via a Caeser shift; or type 'exit': ")
if x == 'exit': break
y = int(input("Enter the number by which you would like to have the message Caeser shifted: "))
alphabet = list('abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz')
encoded = ''
for c in x:
if c.lower() in alphabet:
encoded += alphabet[alphabet.index(c)+y] if c.islower() else alphabet[alphabet.index(c.lower())+y].upper()
else:
encoded += c
print(encoded)