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
正如您所看到的,这显然等同于失败的伪代码......一如既往,任何建议和/或解决方案都会令人惊叹!提前致谢! - 温克尔森
答案 0 :(得分:3)
这是一个翻译解决方案。
from string import maketrans
def encrypt(s, scheme):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
translation = maketrans(alphabet, scheme)
return s.translate(translation)
字符串具有内置translate
方法,允许您将单个字母与其他字母一起切换。令人难以置信的活泼,非常有用。
答案 1 :(得分:1)
我是这样做的:
news
字符串。伪代码:
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