Форум сайта python.su
Напишите программу, которая умеет шифровать и расшифровывать шифр подстановки. Программа принимает на вход две строки одинаковой длины, на первой строке записаны символы исходного алфавита, на второй строке — символы конечного алфавита, после чего идёт строка, которую нужно зашифровать переданным ключом, и ещё одна строка, которую нужно расшифровать.
Пусть, например, на вход программе передано:
abcd
*d%#
abacabadaba
#*%*d*%
Это значит, что символ a исходного сообщения заменяется на символ * в шифре, b заменяется на d, c — на % и d — на #.
Нужно зашифровать строку abacabadaba и расшифровать строку #*%*d*% с помощью этого шифра. Получаем следующие строки, которые и передаём на вывод программы:
*d*%*d*#*d*
dacabac
Пример ввода/вывода:
Input 1:
abcd
*d%#
abacabadaba
#*%*d*%
Output 1:
*d*%*d*#*d*
dacabac
Input 2:
dcba
badc
dcba
badc
Output 2:
badc
dcba
Офлайн
python2:
ish = raw_input('ishodnyi alfavit: ') kon = raw_input('konechnyi alfavit: ') rassh = raw_input('rasshifrovat: ') zash = raw_input('zashifrovat: ') ish_to_kon = dict(zip(ish, kon)) kon_to_ish = dict(zip(kon, ish)) print ''.join(map(ish_to_kon.get, rassh)) print ''.join(map(kon_to_ish.get, zash))
Офлайн
from string import maketrans in_chars = raw_input('In chars: ') out_chars = raw_input('Out chars: ') message = raw_input('String to encode: ') trans_table = maketrans(in_chars, out_chars) print message.translate(trans_table)
in_chars = raw_input('In chars: ') out_chars = raw_input('Out chars: ') message = raw_input('String to encode: ') for index, char in enumerate(in_chars): message = message.replace(char, out_chars[index]) print message
In chars: aioet
Out chars: 41037
String to encode: batman ate my bicycle
b47m4n 473 my b1cycl3
Отредактировано GreyZmeem (Ноя. 28, 2014 14:42:49)
Офлайн
Большое спасибо за помощь!
Офлайн
насколько я понимаю, по условию в аутпуте должно быть две строки?
“Нужно зашифровать строку abacabadaba и расшифровать строку #*%*d*%”
Отредактировано JustJames (Дек. 2, 2014 14:06:59)
Офлайн
JustJamesно ведь не сложно самому доделать?!
насколько я понимаю, по условию в аутпуте должно быть две строки?
in_chars = raw_input('In chars: ') out_chars = raw_input('Out chars: ') message = raw_input('String to encode: ') d_message = raw_input('String to decode: ') for index, char in enumerate(in_chars): message = message.replace(char, out_chars[index]) print message for index, char in enumerate(out_chars): d_message = d_message.replace(char, in_chars[index]) print d_message
Офлайн
Спасибо!
Офлайн