Здравствуйте! Я новичок. Написал код для шифрования текста(метод цезаря) на python. Хочу услышать мнение от программистов на python. Вот код: text_sipher = "" # Переменная для хранения зашифрованного текста
languages = ["русский", "английский"] # Список языков
alphabet_en = [letter for letter in "abcdefghijklmnopqrstuvwxyzw"] # буквы английского языка
alphabet_ru = [letter for letter in "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"] # буквы русского языка
# Функция возвращаемая набор букв выбранного языка
def alphabet_language(language_user_func):
if language_user_func.lower() in languages[0]:
return alphabet_ru
elif language_user_func.lower() in languages[1]:
return alphabet_en
# Функция возвращаемая зашифрованную букву. Учитывается регистр. Игнорируются не буквенные символы
Вот это вот: alphabet_en = [letter for letter in "abcdefghijklmnopqrstuvwxyzw"]
alphabet_ru = [letter for letter in "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"] cпокойно заменяется на: alphabet_en = "abcdefghijklmnopqrstuvwxyzw"
alphabet_ru = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя" А если хочешь именно массивы, а не строки, то на: alphabet_en = list("abcdefghijklmnopqrstuvwxyzw")
alphabet_ru = list("абвгдеёжзийклмнопрстуфхцчшщъыьэюя")
Вот это вот: if alphabet_func.index(char_func.lower()) + shift_func >= len(alphabet_func):
symbol += alphabet_func[alphabet_func.index(char_func.lower()) + shift_func - len(alphabet_func)]
else:
symbol += alphabet_func[alphabet_func.index(char_func.lower()) + shift_func] заменяется на: symbol += alphabet_func[(alphabet_func.index(char_func.lower()) + shift_func) % len(alphabet_func)]
Оптимизировать ещё много чего можно. Это лишь наиболее очевидное.
# Переменная для хранения зашифрованного текста
text_cipher = ""
languages = ["русский", "английский"] # Список языков
alphabet_en = list("abcdefghijklmnopqrstuvwxyz") # Буквы английского языка
alphabet_ru = list("абвгдеёжзийклмнопрстуфхцчшщъыьэюя") # Буквы русского языка
# Функция, возвращающая набор букв выбранного языка
def get_alphabet_by_language(language):
if language.lower() == "русский":
return alphabet_ru
elif language.lower() == "английский":
return alphabet_en
else:
return None
# Функция, возвращающая зашифрованный символ
def encrypt_char(shift, char, alphabet):
if char.lower() in alphabet:
index = (alphabet.index(char.lower()) + shift) % len(alphabet)
symbol = alphabet[index]
if char.isupper():
symbol = symbol.upper()
return symbol
else:
return char
# Выбор языка
while True:
language_user = input("Введите язык (английский или русский): ")
alphabet_user = get_alphabet_by_language(language_user)
if alphabet_user:
break
else:
print("Вы ввели неизвестный язык!")
# Ввод текста
while True:
text = input("Введите текст: ")
if text.strip():
invalid_chars = [char for char in text if char.isalpha() and char.lower() not in alphabet_user]
if not invalid_chars:
break
else:
print("Текст содержит недопустимые символы для выбранного языка.")
else:
print("Текст не должен быть пустым или состоять только из пробелов.")
# Ввод шага сдвига
while True:
try:
shift = int(input("Введите шаг сдвига: "))
if 0