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

Шифр Цезаря

16.11.2018, 21:39. Показов 177121. Ответов 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
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
16.11.2018, 22:00
Шифр цезаряl

Шифр цезаря

Шифр цезаря
1
82 / 7 / 1
Регистрация: 10.11.2018
Сообщений: 53
16.11.2018, 22:25  [ТС]
Это не правильные ответы!
0
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
17.11.2018, 18:30
Цитата Сообщение от PythonistAlex Посмотреть сообщение
Это не правильные ответы!
а вы проверяли?
Python
1
2
3
4
5
6
7
8
9
10
11
def ceasar_encode(letter, shift):
    if letter.isalpha():
        number = ord(letter) + shift % 32
        if number  > 1103:
            number -= 32
        return chr(number)
    return letter
 
shift = int(input())
for l in input():
    print(ceasar_encode(l, shift), end='')
Python
1
2
3
4
5
На дворе трава, на траве дрова!
Те йзухк чхезе, те чхезк йхузе!
>>>
ну если вас не устраивает функция, перепишите без нее добавив весь код из функции в цикл и вместо return собираете новую строку по условиям
0
82 / 7 / 1
Регистрация: 10.11.2018
Сообщений: 53
18.11.2018, 13:12  [ТС]
Нет, меня устраивает ответ, но он не работает!
0
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
18.11.2018, 14:23
странно, у меня работает
Python
1
2
3
4
5
6
7
8
9
3
АБВ
ГДЕ
>>> 
 
5
На дворе трава, на траве дрова!
Те йзухк чхезе, те чхезк йхузе!
>>>
0
2 / 2 / 0
Регистрация: 05.11.2018
Сообщений: 55
18.11.2018, 19:12
дело в том, что не проходит при другой проверке, там где присутствует мягкий знак и буквы после него, вот с этим сложности
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
19.11.2018, 00:12
Заглавные буквы могут превращаться в строчные.
Code
1
2
3
5
абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
ежзийклмнопрстуфхцчшщъыьэюяабвгдЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгд
Если в коде из стартпоста добавить в первой строчке недостающую скобку, то там, вроде, всё должно работать.
0
1 / 1 / 0
Регистрация: 02.01.2019
Сообщений: 12
04.01.2019, 15:33
без def напишите пожалуйста, я не умею( спасибо если что
0
0 / 0 / 0
Регистрация: 05.01.2019
Сообщений: 1
05.01.2019, 23:13
, там же всего лишь скобка в первой строке пропущена

Добавлено через 55 секунд
n = int(input())
0
9 / 8 / 2
Регистрация: 08.12.2019
Сообщений: 102
08.12.2019, 17:57
Python
1
2
3
4
5
6
7
8
9
10
11
12
mujam =  'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
shag = int(input('Шаг шифровки: '))
sms = input("Сообщение для шифровки: ").upper()
shifr = ''
for i in sms:
    mesto = mujam.find(i)
    new_mesto = mesto + shag
    if i in mujam:
        shifr += mujam[new_mesto]
    else:
        shifr += i
print (shifr)

Я сам пока учусь python, предлагаю вот такой свой метод решения задачи)). По сути это было бы проще делать через юникод, но мне пришлось изворачиваться на это, так как из-за функции ord() у меня постоянно ошибка. Я не знаю как отдельно приложить код. Поэтому надеюсь Tab(-ом) умеете пользоваться.
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
17.12.2019, 18:35
Вы, что крейзи на питоне писать?!
0
3 / 2 / 2
Регистрация: 20.10.2019
Сообщений: 2
17.12.2019, 19:13
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
a = "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя"
b = '1234567890@#–—$_&-+()/*":;!?,.~`|•√π÷×¶∆£¢€¥^°={}\%©®™✓[]<> '
number = int(input())
shifr = str(input())
total = 0
for i in range(len(shifr)):
    for j in range(len(a)):
        if shifr[i] == a[j]:
            j += number + number
            if j > 64:
                j = j - 64
                print(a[j], end="")
            else:
                print(a[j], end="")                        
    else:      
        if shifr[i] in b:
            print(shifr[i], end="")
1
0 / 0 / 0
Регистрация: 13.11.2019
Сообщений: 1
20.01.2020, 21:20
Python
1
2
3
4
5
6
7
shag = int(input())
a = input()
s = set()
for i in range(len(a)):
    k = ord(a[i])
    l = k + shag
    print(chr(l), end='')
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
20.01.2020, 22:53
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
def ave(l, mstr):
    for i in mstr:
        mlist.append(alpha[(alpha.find(i) + l) % len(alpha)])
    print('Result: ', '"', ''.join(mlist), '"', sep='')
 
 
if __name__ == '__main__':
    l = int(input())
    mstr = input()
    alpha = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
    mlist = []
    ave(l, mstr)
0
 Аватар для All_Cash
0 / 0 / 1
Регистрация: 28.03.2020
Сообщений: 1
29.03.2020, 03:39
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def encrypt(s, k):
    let = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'
    rez = ''
    for i in s:
        if i in let:
            c = let.find(i)
            key = c + k
            if key > len(let):
                key = key % 66
            elif key < 0:
                key = key % 66
            rez += let[key]
        else:
            rez += i
    print(rez)
    return rez
 
s = input('CeZ:')
k = int(input('Key:'))
encrypt(s, k)
0
1 / 0 / 1
Регистрация: 18.10.2020
Сообщений: 32
13.11.2020, 18:32
Те%йзухк%чхезе1%те%чхезк%йхузе&
вот такое выдает
как исправить
0
0 / 0 / 0
Регистрация: 17.11.2020
Сообщений: 1
17.11.2020, 23:44
Для решения можно использовать юникоды.
И команды такие как ord() и chr().
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
18.11.2020, 19:14
jkb, После стольких лет...
0
5 / 5 / 1
Регистрация: 06.12.2020
Сообщений: 18
06.12.2020, 21:12
Python
1
2
3
4
5
6
7
8
step = 3
word = input()
for i in word:
    if ord(i) >= 1101:
        i = chr(ord(i) - 29)
    else:
        i = chr(ord(i) + 3)
    print(i)
Добавлено через 11 минут
Python
1
2
3
4
5
6
7
8
9
step = int(input())
word = input()
word = word.lower()
for i in word:
    if ord(i) >= 1101:
        i = chr(ord(i) - (32 - step))
    else:
        i = chr(ord(i) + step)
    print(i.upper())
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2020, 21:12
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru