Advertisement
Misha_

Шифр Цезаря

Apr 29th, 2021
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.71 KB | None | 0 0
  1. eng_lower_alphabet = 'abcdefghijklmnopqrstuvwxyz'
  2. eng_upper_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3. rus_lower_alphabet = "абвгдежзийклмнопрстуфхцчшщъыьэюя"
  4. rus_upper_alphabet = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
  5.  
  6. print('Программа по шифрованию "Цезарь""')
  7.  
  8. print('Введите текст, который нужно зашифровать')
  9. s = input()
  10. result = []
  11.  
  12. print('Если нужно зашифровать введите "да", "yes" или "+"')
  13. print('Если нужно дешифровать введите "нет", "no" или "-"')
  14. flag_todo = True     # Если шифровать: True, если дешифровать: False
  15. what_todo = input()
  16. if what_todo.lower() == 'нет' or what_todo.lower() == 'no' or what_todo == '-':
  17.     flag_todo = False
  18.  
  19. print('Какой язык алфавита был введён: английский или русский?')
  20. flag_lang = True     # Если язык английский: True, если русский: False
  21. what_lang = input()
  22. if what_lang.lower() in 'русский' or what_lang.lower() in 'russian':
  23.     flag_lang = False
  24.  
  25. print('Введите шаг сдвига - целое число')
  26. step_shift = int(input())
  27.  
  28. for i in range(len(s)):
  29.     if not s[i].isalpha():
  30.         result.append(s[i])
  31.         continue
  32.     if flag_lang:
  33.         if flag_todo:
  34.             if s[i] in eng_upper_alphabet:
  35.                 result.append(eng_upper_alphabet[(eng_upper_alphabet.find(s[i]) + step_shift) % 26])
  36.             elif s[i] in eng_lower_alphabet:
  37.                 result.append(eng_lower_alphabet[(eng_lower_alphabet.find(s[i]) + step_shift) % 26])
  38.         else:
  39.             if s[i] in eng_upper_alphabet:
  40.                 result.append(eng_upper_alphabet[(eng_upper_alphabet.find(s[i]) - (step_shift % 26) + 26) % 26])
  41.             elif s[i] in eng_lower_alphabet:
  42.                 result.append(eng_lower_alphabet[(eng_lower_alphabet.find(s[i]) - (step_shift % 26) + 26) % 26])
  43.     else:
  44.         if flag_todo:
  45.             if s[i] in rus_upper_alphabet:
  46.                 result.append(rus_upper_alphabet[(rus_upper_alphabet.find(s[i]) + step_shift) % 32])
  47.             elif s[i] in rus_lower_alphabet:
  48.                 result.append(rus_lower_alphabet[(rus_lower_alphabet.find(s[i]) + step_shift) % 32])
  49.         else:
  50.             if s[i] in rus_upper_alphabet:
  51.                 result.append(rus_upper_alphabet[(rus_upper_alphabet.find(s[i]) - (step_shift % 32) + 32) % 32])
  52.             elif s[i] in rus_lower_alphabet:
  53.                 result.append(rus_lower_alphabet[(rus_lower_alphabet.find(s[i]) - (step_shift % 32) + 32) % 32])
  54.  
  55. print(*result, sep='')
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement