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

Шифр Цезаря

16.11.2018, 21:39. Показов 178081. Ответов 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__
2749 / 2057 / 508
Регистрация: 17.02.2014
Сообщений: 9,485
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
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru