Не могу найти ошибку. Python

Задание: Вам надо проверить, что 2 данные строки изометричны. Это значит что символ из одной строки может стать в соответствие символам из другой строки.

Один символ одной строки может соответствовать только одному символу другой строки. Два или более символа одной строки могут соответствовать одному символу другой строки, но не наоборот.

Мое решение:

def isometric_strings(str1: str, str2: str) -> bool:
    val = True
    cor = {}
    a = 0
    if str1[a] not in cor:
        cor.update({str1[a]: str2[a]})
        a += 1
    elif cor[str1[a]] != str2[a]:
        val = False
    return val

Но isometric_strings('foo', 'bar') все равно возвращает True введите сюда описание изображения


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

Автор решения: Эникейщик

Я объясню, в чем проблема, но код писать не буду (неохота, кроме того, я не уверен, что тут правильный алгоритм). Проблема в том, что функция проверяет только первый символ строки str1, потому что в str1[a] значение a равно 0, а a += 1 не имеет практической пользы, т.к. в функции нет цикла и после однократного прохода через if-elif функция успешно завершается.

Для прохода по всем символам строки используй for s in str1 или while a < len(str1). Во втором случае в ветку elif тоже нужно добавить a += 1.

→ Ссылка