Nameless95
Ноя. 28, 2014 12:57:28
Напишите программу, которая умеет шифровать и расшифровывать шифр подстановки. Программа принимает на вход две строки одинаковой длины, на первой строке записаны символы исходного алфавита, на второй строке — символы конечного алфавита, после чего идёт строка, которую нужно зашифровать переданным ключом, и ещё одна строка, которую нужно расшифровать.
Пусть, например, на вход программе передано:
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
GreyZmeem
Ноя. 28, 2014 14:35:20
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)
Или, если хочется без maketrans и zip:
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
Nameless95
Ноя. 29, 2014 20:35:58
Большое спасибо за помощь!
JustJames
Дек. 2, 2014 14:04:20
насколько я понимаю, по условию в аутпуте должно быть две строки?
“Нужно зашифровать строку abacabadaba и расшифровать строку #*%*d*%”
terabayt
Дек. 2, 2014 14:11:29
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