Короче очередная задача на степике)
Шифр Цезаря заключается в замене каждого символа входной строки на символ, находящийся на несколько позиций левее или правее его в алфавите.
Для всех символов сдвиг один и тот же. Сдвиг циклический, т.е. если к последнему символу алфавита применить единичный сдвиг, то он заменится на первый символ, и наоборот.
Напишите программу, которая шифрует текст шифром Цезаря.
Используемый алфавит -− пробел и малые символы латинского алфавита: ' abcdefghijklmnopqrstuvwxyz'
Формат ввода:
На первой строке указывается используемый сдвиг шифрования: целое число. Положительное число соответствует сдвигу вправо. На второй строке указывается непустая фраза для шифрования. Ведущие и завершающие пробелы не учитывать.
Формат вывода:
Единственная строка, в которой записана фраза: Result: "..." , где вместо многоточия внутри кавычек записана зашифрованная последовательность.
И вот товарищ выкладывает решение (я добавил только метод strip()):
Если запускать его несколько раз подряд с вводными -2 и az то результат будет разным! то zx то xx Как это можно объяснить?
Шифр Цезаря заключается в замене каждого символа входной строки на символ, находящийся на несколько позиций левее или правее его в алфавите.
Для всех символов сдвиг один и тот же. Сдвиг циклический, т.е. если к последнему символу алфавита применить единичный сдвиг, то он заменится на первый символ, и наоборот.
Напишите программу, которая шифрует текст шифром Цезаря.
Используемый алфавит -− пробел и малые символы латинского алфавита: ' abcdefghijklmnopqrstuvwxyz'
Формат ввода:
На первой строке указывается используемый сдвиг шифрования: целое число. Положительное число соответствует сдвигу вправо. На второй строке указывается непустая фраза для шифрования. Ведущие и завершающие пробелы не учитывать.
Формат вывода:
Единственная строка, в которой записана фраза: Result: "..." , где вместо многоточия внутри кавычек записана зашифрованная последовательность.
И вот товарищ выкладывает решение (я добавил только метод strip()):
Код:
def caesar(n:int, str1:str):
s =" abcdefghijklmnopqrstuvwxyz"
s = [i for i in s]
str1 = str1.strip()
sett = {i for i in str1}
for i in sett:
str1=str1.replace(i, s[(s.index(i)+n)%len(s)])
print(f'Result: "{str1}"')
caesar(int(input()),input())
Если запускать его несколько раз подряд с вводными -2 и az то результат будет разным! то zx то xx Как это можно объяснить?
Последнее редактирование: