Python凯撒密码 [英] Python Caesar cypher

查看:131
本文介绍了Python凯撒密码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作一个可以将凯撒塞子应用于信的字母。
我需要它在一个dict的上下,但不能说如何把两个一个dict。

  import string 

def Coder(shift):

alpha = string.ascii_lowercase
ALPHA = string.ascii_uppercase
如果范围(0,26):

返回dict(zip(ALPHA,ALPHA [shift:] + ALPHA [0 :shift])),dict(zip(alpha,alpha [shift:] + alpha [0:shift]))


解决方案

如下所示:

  import string 

def Coder(shift):
alpha = string.ascii_lowercase
ALPHA = string.ascii_uppercase
如果0 <= shift< 26:
unshifted_letters = ALPHA + alpha
shif_letters = ALPHA [shift:] + ALPHA [:shift] + alpha [shift:] + alpha [:shift]
return dict(zip(unshifted_letters ,shif_letters))

但正如其他人所说,更好的解决方案是 encode('rot13') string.maketrans 。特别是,这个:rot_13 rot13 Unicode字符串返回操作数的Caesar-cypher加密。


I am trying to make a dict that can apply a Caesar Cypher to a letter. I need it to be in one dict for upper and lower but cannot figure put how to get both into one dict.

import string

def Coder(shift):

    alpha = string.ascii_lowercase
    ALPHA = string.ascii_uppercase
    if shift in range(0,26):

        return dict(zip(ALPHA, ALPHA[shift:] + ALPHA[0:shift])), dict(zip(alpha, alpha[shift:] + alpha[0:shift]))

解决方案

Something like this:

import string

def Coder(shift):
    alpha = string.ascii_lowercase
    ALPHA = string.ascii_uppercase
    if 0 <= shift < 26:
        unshifted_letters = ALPHA + alpha
        shifted_letters = ALPHA[shift:] + ALPHA[:shift] + alpha[shift:] + alpha[:shift]
        return dict(zip(unshifted_letters, shifted_letters))

But as others have said, better solutions are encode('rot13') and string.maketrans. In particular, this: "rot_13 rot13 Unicode string Returns the Caesar-cypher encryption of the operand".

这篇关于Python凯撒密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆