Моя проблема гласит:
Напишите функцию, называемую декомпрессией, которая принимает в качестве входных данных строку и словарь. Словарь сопоставляет строки специальных символов с последовательностями символов. Функция просматривает строку аргументов и, если символ находится в словаре, преобразует его в соответствующую последовательность символов. Ваше решение может использовать итерацию, но оно ДОЛЖНО быть рекурсивным (оно должно вызывать само себя). Обратите внимание, что специальный символ может отображаться на последовательность символов, в которой ТАКЖЕ есть специальный символ. Например, в первом тесте ниже таблица символов отображает «$» в строку « y», а «» - в «c». Подсказка: вы можете рассматривать полученную последовательность как другую строку для распаковки с той же таблицей символов.
Вот код, который у меня есть. Я не знаю, как взять значения из последовательности символов и преобразовать их в читаемую строку. Мой код также вызывает ошибку позиционного аргумента.
def decompress(a_str, a_dict):
new_string = ""
for char in a_str:
if char in a_dict:
new_string.join(char)
else:
sub_problem = decompress(char, a_dict)
new_string.join(sub_problem)
return new_string
Вот несколько примеров вывода:
Examples:
>>> d_simple = {'*':'c','#':'00','$':'*y'}
>>> decompress('$3#',d_simple) #Test One
'cy300'
>>> d = {'#':'hem','@':'T#','$':'t#','&':'$ as','*':' do ','%':' to'}
>>> d.update({'^':' someone ', '~':'for ', '+':'~&'})
>>> decompress("@ as can*has%*+ can't. And^has% speak up + has no voices." ,d) #Test Two
"Them as can do has to do for them as can't. And someone has to speak up for them as has no voices."