Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/190: Рейтинг темы: голосов - 190, средняя оценка - 4.68
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323

Зашифровать послание с помощью шифра Цезаря с заданным шагом шифрования

14.11.2018, 20:46. Показов 38243. Ответов 12
Метки нет (Все метки)

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

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

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

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

Есть код:
Python
1
2
3
4
5
6
7
8
step = int(input()) 
word = input() 
 
for i in word: 
    if chr(ord(i)) == ' ' or chr(ord(i)) == '!': 
        print(i, end='') 
    else: 
        print(chr(ord(i) + step), end='')

Python
1
2
3
Ввод:                          Ожидаемый результат:                 Вывод:
4                                 Ъйлдфа еяп сй ичфдо!                  Ъйлдфѐ еяп сй ичфдо!
Цезарь был не дурак!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2018, 20:46
Ответы с готовыми решениями:

Зашифровать-расшифровать текст с помощью шифра Цезаря
Задание такое - текст из файла Прізвище1.txt зашифровать в Прізвище2.txt, а потом дешифровать из Прізвище2.txt в Прізвище3.txt. Люди,...

Зашифровать исходный текст Т с шифра Цезаря с ключом k=20, любой язык программирования
1) Зашифровать исходный текст Т с шифра Цезаря с ключом k=20. Т=«ЛУЧШИЙ КРИТЕРИЙ ПРАКТИКА» 2) Описать ход решения с указанием таблицы...

Составить блок-схемы к программам шифрования и расшифрования шифра Цезаря
Помогите составить блок-схемы к программам шифрования и расшифрования шифра Цезаря Program kodiruet; uses crt; var a,b,c:string;...

12
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
14.11.2018, 23:54
В яндекс лицее пользоваться поиском не учат? На форуме больше более 400 тем с решениями этой элементарной задачи. Вам их блюдечке принести? Вы вообще когда-нибудь смотрите темы, которые движок форума вам предлагаете автоматически (внизу страницы)?
2
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 09:42  [ТС]
Garry Galler,
Из них больше половины на других языках. А другая половина, просто мне не понятный код. Умею работать со строками. Вот я написал код, и попросил помочь найти ошибку.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
15.11.2018, 10:06
Цитата Сообщение от CyberGame Посмотреть сообщение
попросил помочь найти ошибку
как ты определил, что есть ошибка?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
15.11.2018, 13:00
Цитата Сообщение от CyberGame Посмотреть сообщение
Из них больше половины на других языках
Если искать в разделе python - решения внезапно будут на языке Python. И они все перечислены внизу ЭТОЙ СТРАНИЦЫ.
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 19:05  [ТС]
xoraxax, пример не проходит.
Garry Galler, еще раз говорю, я попросил переделать мой код, ибо другие я не понимаю.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.11.2018, 21:27
CyberGame, просто интересно, а почему ты решил, что вывод должен быть
Ъйлдфа еяп сй ичфдо!
?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
15.11.2018, 22:07
Условие написано бестолково. Во-первых не задан алфавит. Ну, можно предположить, что это все 33 русские буквы. А во-вторых, не сказано, что сдвиг используется циклический, то есть буква Я должна меняться на В при шаге равном трём 3.
В коде из стартпоста не хватает организации этой цикличности.
И для проверки правильнее вводить не произвольную строку, а весь алфавит, так виднее, где работает неправильно.
0
0 / 0 / 0
Регистрация: 22.09.2018
Сообщений: 9
15.11.2018, 22:08
CyberGame, Лови (алфавит можешь менять, tkinter для GUI)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from tkinter import *
import sys
 
 
alpha = "abcdefghijklmnopqrstuvwxyz ";
 
def encr_click():
    key = int(key_entry.get());
    length = len(alpha);
 
    res = '';
 
    for c in text_entry.get():
 
        if c.lower() in alpha:
            s1 = alpha.find(c.lower());
            s1 = (s1 + key) % length;
            res += alpha[s1];
        else:
            res += c;
    
    res_entry.delete(0, END);
    res_entry.insert(0, res);
 
def dencr_click():
    key = int(key_entry.get());
    length = len(alpha);
 
    res = '';
 
    for c in text_entry.get():
 
        if c.lower() in alpha:
            s1 = alpha.find(c.lower());
            s1 = (s1 - key) % length;
            res += alpha[s1];
        else:
            res += c;
    
    res_entry.delete(0, END);
    res_entry.insert(0, res);
 
 
root = Tk();
root.title("Caesar cipher");
 
text_label = Label(text = "Enter your text: ", font = ("Verdana", 12));
key_label = Label(text = "Enter a key: ", font = ("Verdana", 12));
res_label = Label(text = "Your result is: ", font = ("Verdana", 12));
 
text_label.grid(row=0, column=0, sticky="w");
key_label.grid(row=1, column=0, sticky="w");
res_label.grid(row=2, column=0, sticky="w");
 
 
text_entry = Entry(root, font = ("Verdana", 12, "bold"));
key_entry = Entry(root, font = ("Verdana", 12, "bold"));
res_entry = Entry(root, font = ("Verdana", 12, "bold"));
 
text_entry.grid(row = 0, column = 1, padx = 5, pady = 5);
key_entry.grid(row = 1, column = 1, padx = 5, pady = 5);
res_entry.grid(row = 2, column = 1, padx = 5, pady = 5);
 
 
e_bt = Button(root, text = "Encrypt", command = encr_click, background = "#555", 
                foreground = "#ccc", font = ("Verdana", 16, "bold"));
d_bt = Button(root, text = "Decrypt", command = dencr_click, background = "#555", 
                foreground = "#ccc", font = ("Verdana", 16, "bold"));
 
e_bt.grid(row = 3, column = 1, padx = 5, pady = 5, sticky = "w");
d_bt.grid(row = 3, column = 1, padx = 5, pady = 5, sticky = "e");
 
 
root.mainloop();
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
16.11.2018, 19:00  [ТС]
kravam, я отправлял этот код, его не приняли, и показали ожидаемый результат.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
16.11.2018, 20:07
Ну вот тебе «исправленный» твой вариант. Хотя правильнее задавать алфавит в явном виде.
Python
1
2
3
4
5
6
7
8
9
step = int(input()) 
word = input() 
 
for i in word: 
    if chr(ord(i)) == ' ' or chr(ord(i)) == '!': 
        print(i, end='') 
    else: 
        base = ord('А') if i.isupper() else ord('а')
        print(chr((ord(i) + step - base) % 32 + base), end='')
2
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.11.2018, 20:11
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='')
0
1 / 1 / 0
Регистрация: 02.01.2019
Сообщений: 12
04.01.2019, 15:47
Semen-Semenich
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='')
Запятую не выводит, шифрует ее как букву "б". Как исправить???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2019, 15:47
Помогаю со студенческими работами здесь

Зашифровать строку с помощью шифра перестановки
Дана строка текста. Зашифровать ее с помощью шифра перестановки, который заключается в том, что каждая буква исходной строки заменяется на...

Зашифровать свою фамилию и имя с помощью шифра ADFGVX.
необходимо зашифровать свою фамилию и имя с помощью шифра ADFGVX. скиньте готовую программу, пожалуйся

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

Разработать прикладной приложение для шифрования текста с помощью шифра простой замены
Разработать прикладной приложение для шифрования текста с помощью шифра простой замены. Приложение должно выполнять ввод данных (текст...

Чтобы заново зашифровать послание, Соне нужно найти минимальное из чисел
Чтобы заново зашифровать послание, Соне нужно найти минимальное из чисел. Есть число n и последовательность из n чисел. Выведите...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru