Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/891: Рейтинг темы: голосов - 891, средняя оценка - 4.84
82 / 7 / 1
Регистрация: 10.11.2018
Сообщений: 53

Шифр Цезаря

16.11.2018, 21:39. Показов 179977. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Как известно, Цезарь тоже пользовался шифрованием сообщений, причем у него был свой способ. Сначала выбирается шаг шифрования (число), а затем все буквы послания заменяются на буквы, отстоящие от них в алфавите на шаг шифрования. Например, при шаге шифрования 3 (таким чаще всего пользовался Цезарь), буква А заменяется на букву Г, буква Б – на букву Д.

Обратите внимание, что алфавит «зациклен», то есть при сдвиге буквы Я на шаг 3 получится буква В.

Напишите программу, которая будет зашифровывать послание с помощью шифра Цезаря с заданным шагом шифрования.

Формат ввода
Две строки. Первая содержит шаг шифрования, вторая – послание.

Формат вывода
Строка с зашифрованным посланием.

Пример 1
Ввод Вывод
3
АБВ
ГДЕ
Пример 2
Ввод Вывод
5
На дворе трава, на траве дрова!
Те йзухк чхезе, те чхезк йхузе!
Примечания
Символы русского алфавита расположены в стандартной для Python таблице кодировки подряд, то есть номера, выдаваемые функцией ord(symbol), идут подряд. Буква «ё» идёт в таблице кодировки отдельно от основного алфавита. При решении задачи считайте, что буквы «ё» в русском алфавите нет.

Есть код, но он не работает:

Python
1
2
3
4
5
6
7
8
9
10
n = int(input()
message = input()
for i in message:
    if not i.isalpha():
        print(i, end='')
        continue
    if ord(i) + n > 1071 and ord(i) <= 1071 or ord(i) + n > 1103 and ord(i) <= 1103:
        i = chr(ord(i) - 32)
    i = chr(ord(i) + n)
    print(i, end='')
Помогите своим кодом или исправьте этот! Только без функции def.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2018, 21:39
Ответы с готовыми решениями:

Шифр Цезаря
Помогите решить задачу!!!! На python Зашифруйте текст &quot;Блажен, кто верует, тепло ему на свете!&quot; алгоритмом Цезаря с сдвигом...

Шифр Цезаря
Написала программу давным-давно с шифрование и расшифровкой с помощью шифра Цезаря. Препод указал на ошибки, что программа должна...

Шифр цезаря
нужно создать шифр цезаря используя функцию. Спасибо заранее за помощь!!!!

27
0 / 0 / 0
Регистрация: 31.01.2021
Сообщений: 1
31.01.2021, 18:20
Студворк — интернет-сервис помощи студентам
Я, конечно, извиняюсь, что спустя два года спрашиваю, но можно ли сделать обратный код? Чтобы он шёл не вперёд, а назад?
0
3 / 3 / 0
Регистрация: 07.03.2021
Сообщений: 47
13.04.2021, 22:13
Скиньте пожалуйста работающий код, ничего не получается
0
0 / 0 / 0
Регистрация: 26.05.2021
Сообщений: 1
26.05.2021, 18:28
Говнокодное решение, которое прошло все автотесты))

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
n = int(input())
word = input()
answer = ''
upper = False
for char in word:
    if 1040 <= ord(char) <= 1071:
        upper = True
    elif 1072 <= ord(char) <= 1103:
        upper = False
 
    symb = ord(char) + n
 
    if not (1040 <= symb <= 1103):
        symb = chr(symb - 32)
        if not (1040 <= ord(symb) <= 1103):
            symb = char
    else:
        if upper is True and not (1040 <= symb <= 1071):
            symb = chr(symb - 32)
        else:
            symb = chr(symb)
    
    answer += symb
print(answer)
0
0 / 0 / 0
Регистрация: 29.10.2022
Сообщений: 1
29.10.2022, 15:15
Задача написать функцию для кода цезаря с шагом 1

Python
1
2
3
4
5
def caesar(a):
    for i in range(len(a)):
        k = ord(a[i])
        l = k + 1
        print(chr(l), end="")
после запуска и ввода print(caesar('hello')) пишет ifmmpNone

Не могу понять откуда берется None
0
0 / 0 / 0
Регистрация: 13.03.2022
Сообщений: 14
11.11.2022, 18:21
как сделать что бы при вводе
3
Яблоко
он выводил первую букву шифра с заглавной буквы? программа проходит почти все тесты, кроме тех, что с заглавных букв
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
a = int(input())
b = input()
c = 0
d = 0
for i in range(len(b)):
    if b[i] == ' ' or b[i] == ',' or b[i] == '!' or b[i] == '–' or b[i] == '—' or b[i] == '.':
        print(b[i], end='')
    else:
        c = ord(b[i])
        c += a
        if c > 1103:
            d = c
            d -= 1103
            c = 1072
            c = c + d - 1
        c = chr(c)
        print(c, end='')
0
 Аватар для Aviz__
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
11.11.2022, 18:36
Python
1
2
3
4
5
6
7
8
# шифр цезаря. шифрует текст ключом (если отрицательный, то дешифрует) n - количество букв в словаре
text = input().lower()
key, n = input().split()
key = int(key)
n = int(n)
d = {26: 'a', 32: 'а'} # 32 - русская буква 'a'
begin_let = d[n]
print(''.join([chr((abs(ord(begin_let) - ord(c)) + key) % n + ord(begin_let)) if c.isalpha() else c for c in text]))
0
0 / 0 / 0
Регистрация: 13.03.2022
Сообщений: 14
11.11.2022, 18:43
рабочая прога, прошла все тесты, правда, есть лишние строчки
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
a = int(input())
b = input()
c = 0
d = 0
upper = False
for i in range(len(b)):
    if 1040 <= ord(b[i]) <= 1071:
        upper = True
    elif 1072 <= ord(b[i]) <= 1103:
        upper = False
    if b[i] == ' ' or b[i] == ',' or b[i] == '!' or b[i] == '–' or b[i] == '—' or b[i] == '.':
        print(b[i].title(), end='')
    else:
        if upper:
            c = ord(b[i])
            c += a
            if c > 1103:
                d = c
                d -= 1103
                c = 1072
                c = c + d - 1
            c = chr(c)
            print(c.title(), end='')
        else:
            c = ord(b[i])
            c += a
            if c > 1103:
                d = c
                d -= 1103
                c = 1072
                c = c + d - 1
            c = chr(c)
            print(c, end='')
0
1 / 1 / 0
Регистрация: 30.10.2022
Сообщений: 7
01.01.2023, 00:42
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
step = int(input())
word = input()
 
for i in word:
    if 1040 <= ord(i) <= 1071:
        x = ord(i) + step
        if x > 1071:
            x = 1039 + (x - 1071)
        print(chr(x), end='')
    elif 1072 <= ord(i) <= 1103:
        x = ord(i) + step
        if x > 1103:
            x = 1071 + (x - 1103)
        print(chr(x), end='')
    else:
        print(i, end='')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.01.2023, 00:42

Шифр Цезаря
Петя нашел себе новое хобби – шифры. Сейчас он изучает шифр Цезаря. В школе он развлекал друзей, шифруя их тексты. Петя стал замечать, что...

Шифр Цезаря
На русском языке программа работает правильно. Но на английском при сдвиге равном 17 и фразе &quot;To be, or not to be, that is the...

Шифр Цезаря
Написать максимально просто шифр Цезаря. 1 текст шифрования 2 дешифрование 3 ключ 4 текст итоговый как-то так хз преподаватель так сказал ...

Шифр Юлия Цезаря
Юлий Цезарь использовал следующий способ шифрования текста: каждая буква заменялась на следующую по алфавиту через K позиций по кругу. То...

Написать шифр Цезаря
Добрый день, друзья! Подскажите, пожалуйста, пытаюсь здесь написать шифр цезаря, где каждый символ заменяется на другой символ, третий по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru