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

Шифр Цезаря

16.11.2018, 21:39. Показов 177258. Ответов 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
5222 / 3469 / 1173
Регистрация: 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
5222 / 3469 / 1173
Регистрация: 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
5222 / 3469 / 1173
Регистрация: 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru