Python中的替换加密(ProblemSetQuestion)

时间:2012-11-21 19:43:14

标签: python encryption python-3.x

Winkleson在这里提出了http://singpath.appspot.com问题集问题的另一个问题。我是一名初学者程序员,只要我愿意,他就会有一些指导。无论如何,我在这里提出了这个问题,我不知道如何通过比较EVERY.SINGLE.LETTER而不浪费时间。在if语句中。所以我会喜欢任何提示/解决方案来减少这个问题的编码。我会发布到目前为止的内容(不多)。提前谢谢!

问题:


  

替换加密

     

创建可用于加密的程序   并解密一串字母。该函数应该输入a   要编码的字符串和一个给出新顺序的字母串   字母。第二个字符串包含字母表中的所有字符   但是在新的秩序中。这个命令告诉交换什么字母。首先   第二个字符串中的字母应该替换第一个字母中的所有a   串。第二个字符串的第三个字母应该替换所有c   在第一个字符串中。您的解决方案应该是小写的。是   小心标点符号和数字(这些不应该改变)。

示例(电话):

>>> encrypt('hello banana','qwertyuiopasdfghjklzxcvbnm')
'itssg wqfqfq'

>>> encrypt('itssg wqfqfq','kxvmcnophqrszyijadlegwbuft')
'hello banana'

>>> encrypt('gftw xohk xzaaog vk xrzxnkh','nxqlzhtdvfepmkoywrjiubscga')
'this code cannot be cracked'

>>> encrypt('mkhzbc id hzw pwdh vtcgxtgw ube fbicg ozth kbx tew fbicg','monsrdgticyxpzwbqvjafleukh')
'python is the best language for doing what you are doing'

我的代码:


def encrypt(s, realph):

    alph = 'abcdefghijklmnopqrstuvwxyz' #Regular Alphabet
    news = '' #The decoded string   

    #All comparison(s) between realph and alph    

    for i in range(len(realalph)):        

        #Comparison Statement here too.
        news = ''.join(alph) 

    return news

正如您所看到的,这显然等同于失败的伪代码......一如既往,任何建议和/或解决方案都会令人惊叹!提前致谢! - 温克尔森

3 个答案:

答案 0 :(得分:3)

这是一个翻译解决方案。

from string import maketrans

def encrypt(s, scheme):
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    translation = maketrans(alphabet, scheme)
    return s.translate(translation)

字符串具有内置translate方法,允许您将单个字母与其他字母一起切换。令人难以置信的活泼,非常有用。

答案 1 :(得分:1)

我是这样做的:

  1. 迭代字符串中的每个字符。
  2. 在字母表中找到该字符的索引。保存它。
  3. 从新字母表中获取同一索引中的字符。
  4. 将其附加到您的news字符串。
  5. 伪代码:

    output = ''
    
    for character in your_string:
        index = index of character in original_alphabet
        new_character = new_alphabet[character]
    
        add new_character to output
    

答案 2 :(得分:1)

我要创建一个地图['src_letter'] => 'dst_letter'。还有翻译:Replace characters in string from dictionary mapping