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

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

14.11.2018, 20:46. Показов 38016. Ответов 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
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
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
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru