@yarmr

Можно ли оптимизировать этот код?

Сам код:
tl = []
x = True
let = ['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф',
       'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']
t = str(input())
o = []
od = []

for i in range(len(t)):
    tl.append(t[i])
print(tl)
for i in range(len(tl)):
    o.append(let.index(tl[i]) - 1)
print(o)
for i in range(len(o)):
    od.append(let[o[i] % 33])
print(od)


Этот код позволяет закодировать слова с помощю шифра цезаря, можно ли его ещё как-то оптимизировать
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Можно
let = ['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф',
       'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']

# t = str(input())
t = 'текст'
print(''.join([let[(let.index(x) - 1) % 33] for x in t]))
# сдйрс
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Конечно. Вот этот цикл совершенно не имеет никакого смысла:
for i in range(len(t)):
    tl.append(t[i])

Третий цикл тоже не нужен. Вы всё можете делать в одном цикле.
Или это вы разрешения спрашивали? Никто не запрещает.
Ответ написан
Vindicar
@Vindicar
RTFM!
Можно, если сделать допущение, что текст кодируется посимвольно, а не группами из N символов.
open_text = 'текст'  # открытый текст

# letters - именно строка, одна позиция - один символ
letters = ''.join(['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф',
       'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'])
key = 5  # ключ к шифру - величина сдвига. Может быть >0 или <0
# генерируем таблицы подстановки
encrypt_table = str.maketrans(letters, letters[key:]+letters[:key])  # для шифрования
decrypt_table = str.maketrans(letters, letters[-key:]+letters[:-key])  # для дешифрования

cypher_text = open_text.translate(encrypt_table)
restored_text = cypher_text.translate(decrypt_table)

print(open_text)
print(cypher_text)
print(restored_text)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы