Я написал функцию python replace_str, которая потребляет 3 непустые строки, базу, цель и rep.Python Ошибка максимальной рекурсии глубины - проблема с базовым регистром
Первая строка, база представляет собой базовую строку, которую вы хотите обновить. Вторая строковая цель представляет собой целевую строку, которую вы хотите заменить, а третья строка представляет собой строку, которая заменит цель в обновленной строке.
Функция создает новую строку, в которой целевая строка заменяется на строку rep в базовой строке, но создает ту же базовую строку, если выполняется одно из следующих условий: true.
• Если целевая строка не найдена в базовой строке или
• Если цель и репутация являются одни и те же строки.
НЕ разрешается использовать строку методы замены и найти
Это то, что я до сих пор:
def replace_str(base, target, rep):
m = 0
n = len(target)
if base[m:n] == target:
new_base = base[0:m] + rep + base[n:]
return replace_str(new_base, target, rep)
else:
m = m + 1
n = n + 1
return replace_str(base, target, rep)
Я получаю ошибку глубины рекурсии максимум, когда я проверить мою программу. Я пытаюсь использовать различные базовые чехлы, так как именно здесь моя функция застревает, но все базовые случаи, которые я пытаюсь дать, либо мне, либо последней буквой базы
replace_str("aaaax","aa","x")
должен производить 'aax'
, но дает мне ошибку.
replace_str("aa", "aa", "x")
однако дает мне правильный результат от 'x'
.
Кроме того, этот пост не является дубликатом другого. Программа со связанным сообщением совершенно другая и имеет другую проблему. У меня проблемы с базовым корпусом.
'т = т + 1' бесполезен, потому что после этого 'm' не используется. подумайте о вызове 'return base [0] + replace_str (base [1:], target, rep)' – njzk2
Было бы полезно, если бы вы сказали нам, какие строки вы тестируете, чтобы дать эту ошибку. – alexwlchan
Обе ветки всегда будут снова называться 'replace_str'. Он никогда не убежит. –