как уже упоминалось в комментариях, ваши переводы не содержат пробелов ' '
и точек '.'
; поэтому вы столкнетесь с KeyError
.
это по-другому:
отмечая, что
ord('a') = 97
ord('z') = 122
вы можете использовать bytes
:
t = "Learning python."
res = [i - 96 for i in t.lower().encode() if 97 <= i <= 122]
print(res) # [12, 5, 1, 18, 14, 9, 14, 7, 16, 25, 20, 8, 15, 14]
с использованием t.lower()
я выполняю преобразование для всех строчных букв, затем я .encode()
для объекта bytes
(который ведет себя как последовательность целых чисел) и выбираю те из них в диапазоне для печати.
также обратите внимание, что если вам действительно нужно перевести материал в строку, я предлагаю вам использовать str.maketrans
и str.translate
:
table = str.maketrans('abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
t = "Learning python."
print(t.translate(table))
# LEARNING PYTHON.