Игнорируются буквы при поиске в строке
Всех приветствую. Есть такой кусок кода:
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)