Тема: оценивание кода на python. - Общение Python мододелов
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Тема: оценивание кода на python.

Регистрация
10 Окт 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
Здравствуйте! Я новичок. Написал код для шифрования текста(метод цезаря) на 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





# Функция возвращаемая зашифрованную букву. Учитывается регистр. Игнорируются не буквенные символы

def encryption_text(shift_func, char_func, alphabet_func):

symbol = ""



if char_func.isalpha():

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]

else:

symbol += char_func.lower()



if char_func.upper() == char_func and char_func.isalpha():

symbol = symbol.upper()

return symbol





# Цикл будет работать пока пользователь не введёт данные правильно

while True:

language_user = input("Введите язык. Английский или русский: ")

if language_user.lower() in languages:

break

print("\nВы ввели неизвестный язык!")



alphabet_user = alphabet_language(language_user) # Переменные для результатов функции - "alphabet_language"



# Цикл будет работать пока пользователь не введёт данные правильно

while True:

text = input("Введите текст: ")

if not (text == len(text) * " " or text == ""):

for letter in text.lower():

if letter not in alphabet_user and letter.isalpha():

print("\nВаш текст некорректен!")

break

else:

break

else:

print("Ваш текст некорректен!")



# Цикл будет работать пока пользователь не введёт данные правильно

while True:

shift = int(input("Введите шаг сдвига: "))

if 0
 
Регистрация
23 Дек 2013
Сообщения
84
Репутация
2
Спасибо
0
Монет
0
проверь в отладчике компилятора (такой есть в Visual Studio Code)
 
Регистрация
10 Дек 2013
Сообщения
90
Репутация
0
Спасибо
0
Монет
0
Вот это вот: 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)]
Оптимизировать ещё много чего можно. Это лишь наиболее очевидное.
 
Регистрация
6 Окт 2013
Сообщения
91
Репутация
0
Спасибо
0
Монет
0
# Переменная для хранения зашифрованного текста
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
 
Сверху Снизу