Прохождение Python Challenge Level 1: как насчет создания транса?

Python

Python Challengeпервый1Close Raiders: А как насчет транса?


адрес темы Woohoo. Python challenge.com/PC/score/flattering. …


содержание темы everybody thinks twice before solving this. 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.

General tips:

  • Use the hints. They are helpful, most of the times.
  • Investigate the data given to you.
  • Avoid looking for spoilers.

Forums: Python Challenge Forums

Уведомление: Ссылка на форум, указанная на официальном сайте, была404.


решение проблемыНазвание страницы гласит:Как насчет перевода?

URLадрес говоритmap,Прямо сейчаскарта.

Свяжитесь с содержанием изображения, знайте, что этобуквенная карта.KприбытьM,OприбытьQ,EприбытьG.

существуетPythonТест обнаружил:

>>> ord('M') - ord('K')
2
>>> ord('Q') - ord('O')
2
>>> ord('G') - ord('E')
2

письмо после сопоставленияASCIIКод сопоставляется с предыдущей буквойASCIIкод плюс2принадлежит.

Используйте это правило, чтобы перекодировать искаженную строку символов, указанную в заголовке, будьте осторожны, чтобы не пропустить знаки препинания, и будьте осторожны, чтобы не выйти за границы букв.

msg = "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."

def trans(x):
    if x.isalpha():
        x = chr(ord(x) + 2)
        if x.isalpha():
            return x
        else:
            return chr(ord(x) - 26)
    else:
        return x

new_msg = []

for i in msg:
    new_msg.append(trans(i))

new_msg = ''.join(new_msg)
print(new_msg)

Полученный результат:

i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url.

Нашел ответ Рекомендуем использоватьstring.maketrans()метод, однако методPython 3в одеялеstr.maketrans()заменять. грамматика:str.maketrans(intab, outtab) intabвходная таблица,outtabявляется выходной таблицей, возвращающейASCIIТаблица отображения, состоящая из кодов, хранится в виде словаря. использоватьstr.maketrans()Перепишите программу:

intab = 'abcdefghijklmnopqrstuvwxyz'
outtab = 'cdefghijklmnopqrstuvwxyzab'
trantab = str.maketrans(intab, outtab)

msg = "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."

msg = msg.translate(trantab)

print(msg)

Результат тот же, а программа намного проще.

По инструкции даURLиспользоватьtranslateфункция:

intab = 'abcdefghijklmnopqrstuvwxyz'
outtab = 'cdefghijklmnopqrstuvwxyzab'
trantab = str.maketrans(intab, outtab)

url = 'map'

url = url.translate(trantab)

print(url)

получатьocr,заменятьmapЗайдите в браузер и нажмите Enter, чтобы перейти на следующий уровень:Woohoo. Python challenge.com/PC/score/OCR. …