@barswert

Задачка по питон- расшифровка и зашифровка?

дана задачка по курсу питон
Напишите программу, которая умеет шифровать и расшифровывать шифр подстановки. Программа принимает на вход две строки одинаковой длины, на первой строке записаны символы исходного алфавита, на второй строке — символы конечного алфавита, после чего идёт строка, которую нужно зашифровать переданным ключом, и ещё одна строка, которую нужно расшифровать.

Пусть, например, на вход программе передано:
abcd
*d%#
abacabadaba
#*%*d*%Это значит, что символ a исходного сообщения заменяется на символ * в шифре, b заменяется на d, c — на % и d — на #.
Нужно зашифровать строку abacabadaba и расшифровать строку #*%*d*% с помощью этого шифра. Получаем следующие строки, которые и передаём на вывод программы:
*d*%*d*#*d*
dacabac

написал программку (за основу взял нагугленное ,написанное на python 2 ),собственно прога:
in_chars = input()
out_chars = input()
message = input()
d_message = input() 
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)

вывод:
*#*%*#*#*#*
dacabac
вывод не совпадает с требуемым ,помогите разобраться с ошибкой
  • Вопрос задан
  • 2655 просмотров
Решения вопроса 1
@barswert Автор вопроса
в общем решение оказалось проще :
alphabet, cipher, encode, decode = input(), input(), input(), input()

enc_dict = {letter: char for letter, char in zip(alphabet, cipher)}
dec_dict = {char: letter for char, letter in zip(cipher, alphabet)}

print("".join([enc_dict[letter] for letter in encode]))
print("".join([dec_dict[char] for char in decode]))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@galaxy
message = message.replace(char, out_chars[index]) - этот код повторно заменит d (т.е. b -> d -> #).
Используйте message.translate(string.maketrans(from, to))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы