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

Шифр Цезаря

16.11.2018, 21:39. Показов 178514. Ответов 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
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.11.2018, 22:00
Шифр цезаряl

Шифр цезаря

Шифр цезаря
1
82 / 7 / 1
Регистрация: 10.11.2018
Сообщений: 53
16.11.2018, 22:25  [ТС]
Это не правильные ответы!
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
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
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
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
2383 / 1667 / 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
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru