code = "xuo jxuhu! jxyi yi qd unqcfbu ev q squiqh syfxuh. muhu oek qrbu je tusetu yj? y xefu ie! iudt cu q cuiiqwu rqsa myjx jxu iqcu evviuj!"
alphabet = "abcdefghijklmnopqrstuvwxyz"
punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
no_punct = ""
for char in code:
if char not in punctuations:
no_punct = no_punct + char
print(no_punct)
code_cracked = ""
for i in no_punct:
found = alphabet[alphabet.find(i)]
new = (alphabet.find(found)+10) % 26
new_alpha = alphabet[new]
new_code = i.replace(i, new_alpha)
code_cracked += new_code
print(code_cracked)
output: heyjtherejthisjisjanjexamplejofjajcaesarjcipherjwerejyoujablejtojdecodejitjijhopejsojsendjmejajmessagejbackjwithjthejsamejoffset
Привет всем, новичок ie до Python здесь. Я пытаюсь решить проблему с шифром Цезаря в Python. Цель состоит в том, чтобы использовать «алфавит» + 10 для определения «кода». Например: первая буква в коде - это «x», индексная позиция x равна 23, проблема требует, чтобы вы добавили 10 к номеру индекса, и как только вы достигнете «z», вы go вернетесь к «a», чтобы возобновить подсчет. Итак, «x», позиция 23 = «h», позиция 7.
До сих пор мне удавалось решать вплоть до замены алфавитов. Мне пришлось погуглить часть% 26, так как я не мог этого понять.
Мне почти удалось понять часть шифра. Я просто не знаю, как обращаться с пробелами в предложении. Я пытался добавить операторы if / elif, но безрезультатно, поэтому я удалил операторы if.
Заранее благодарю за помощь.