Игнорируются буквы при поиске в строке

Всех приветствую. Есть такой кусок кода:

import random

ALL_SYMBOLS = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'

key = list(ALL_SYMBOLS)
random.shuffle(key)
key = ''.join(key)



message = 'Абрикосовый сок после - это лучшее, что может быть'
secret_message = ''


for letter in message: 
    if key.find(letter): 
        new_index = key.find(letter)
        secret_message += ALL_SYMBOLS[new_index]
    else: 
        print(f'Не нашёл символ - {letter}')
        secret_message += letter

print(secret_message)

Пытаюсь зашифровать message простым подстановочным шифром. На данном этапе пробелы игнорирую и ожидаю, что в зашифрованном сообщении они останутся на том же месте, что и в исходном сообщении. Всё шифруется вроде бы хорошо, но иногда проскакивает

Не нашёл символ - ь
зщЁгСЫЭЫфЦьяЭЫСяэЫЭцПяяяпжЫяцШЧЮППяяЧжЫяъЫчПжящЦжь

В данном случае пробелы заменились на символ "я" и почему-то не найден ь. Почему так происходит?


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

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

key.find(letter) возвращает index key и -1 если не находит. Соответственно измените код на:

import random

ALL_SYMBOLS = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'

key = list(ALL_SYMBOLS)
random.shuffle(key)
key = ''.join(key)


message = 'Абрикосовый сок после - это лучшее, что может быть'
secret_message = ''


for letter in message: 
    if key.find(letter) != -1: 
        new_index = key.find(letter)
        secret_message += ALL_SYMBOLS[new_index]
    else: 
        print(f'Не нашёл символ - {letter}')
        secret_message += letter

print(secret_message)
→ Ссылка