Проблема с шифрованием и дешифровкой строки

Cделал шифровщик на Python, а вот когда начал заниматься дешифровщиом не выводит. Как это исправить? (Это отрывок)

for i in range(0, length):
c = ime[i]
c = c.upper()
if (c == "А"):
print("11!")
elif (c == "Б"):
print("13@")
elif (c == "В"):
print("15#")

А вот дешифровщик, почему-то не выводит вообще ничего (это отрывок) Помогите!

ime = input("Введите символы для дешифровки: \n\n")
length = len(ime)

for i in range(0, length):
c = ime[i]
c = c.upper()
if (c == "11!"):
print("А")
elif (c == "13@"):
print("Б")

У меня, например, на входе 13@. Вот у меня есть условие на проверку.Но есть одна проблема: у меня С в данном случае не 13@, а 1, у меня в с только 1 значение. Если я сравниваю с с "15#", то у меня с == 1. Оно берет 1 символ строки. Проще говоря, у меня с всегда один символ.

Как это исправить?


Ответы (2 шт):

Автор решения: deatomiz3d

Замените цикл на for i in ime, так оно будет проходить по символам в строке, а также замените c = c.upper на с = i.upper. И да, скорее всего, проблема в том, что вы сравниваете 1 символ с несколькими. Решается так:

from textwrap import wrap
ime = input()
a = wrap(ime, 3) #Возвращает список из строки разделенной на 3,например ['11!', '13@']
for i in a:
    if i == '11!':
        print('A')
→ Ссылка
Автор решения: Arseni Mourzenko

Кодируем, например, «БА». Получается «13@11!».

ime имеет значение «», а length, значение 6. Первый символ именно 1.

А вам нужно получить часть текста. Для этого используется оператор [:] К примеру:

"Hello"[1:3] = "el"
"Hello"[2:5] = "llo"
→ Ссылка