@Ilia_here

Код не работает, как починить?

Написал код. Суть: заменить каждую букву строки str следующей по алфавиту через одну, то есть букву A на С, F на H и т.д.

Код:
str=('''g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.''')
str=str.replace('a', 'c')
str=str.replace('b', 'd')
str=str.replace('c', 'e')
str=str.replace('d', 'f')
str=str.replace('e', 'g')
str=str.replace('f', 'h')
str=str.replace('g', 'i')
str=str.replace('h', 'j')
str=str.replace('i', 'k')
str=str.replace('j', 'l')
str=str.replace('k', 'm')
str=str.replace('l', 'n')
str=str.replace('m', 'o')
str=str.replace('n', 'p')
str=str.replace('o', 'q')
str=str.replace('p', 'r')
str=str.replace('q', 's')
str=str.replace('r', 't')
str=str.replace('s', 'u')
str=str.replace('t', 'v')
str=str.replace('u', 'w')
str=str.replace('v', 'x')
str=str.replace('w', 'y')
str=str.replace('x', 'z')
str=str.replace('y', 'a')
str=str.replace('z', 'b')
print(str)


И вот что он выдал:

a baba aaa babbb bbabababa ab ba babb. bbaba abab aaabababa aba bab. baaba ab ab ba babb aa ababbaaaabb abb bbab'a aba bbaa babb aa aa baba. aaaba abbaba.aaaabbaba() aa baaaaaabbab. baa abbba ab bba abb.
  • Вопрос задан
  • 204 просмотра
Решения вопроса 2
longclaps
@longclaps
Суть: ты всё сделал неправильно. Это не чинится.

t = str.maketrans('abcdefghijklmnopqrstuvwxyz', 'cdefghijklmnopqrstuvwxyzab')
print("g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp."
      " bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm "
      "jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.".translate(t))
Ответ написан
Комментировать
@deniz1983
...
О, я помню это задание - это какой-то квест, чтобы прокачать скиллы)) Код не напишу, но у меня алгоритм был такой: создала 2 массива, потом посимвольный обход строки. Ищем символ в первом массиве, получаем его индекс. Затем по этому индексу берем символ из второго массива и записываем все это в строку. Это задание (хоть и таким костылем) прошла, но лучший ответ был какой-то посимвольный сдвиг использовать. Удачи!))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Fixid
Ваш код работает правильно.
Ибо в последовательности
str=str.replace('a', 'c')
str=str.replace('c', 'e')
str=str.replace('e', 'g')
str=str.replace('g', 'i')
str=str.replace('i', 'k')
.......
str=str.replace('z', 'b')
Любая не а станет b

В данном случае будет логичнее представить str как итерируемый объект. Т.е. в цикле обойти каждую букву отдельно. И отдельно применить правило замены. Ну а как убрать кучу replace вам лучше додуматься самому, все достаточно просто
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы