Вопрос Объясните логику задания на питоне

Регистрация
6 Апр 2013
Сообщения
86
Репутация
0
Спасибо
1
Монет
0
def filter_string(s, char):

if s == '':

return ''

elif s[0] == char:

return filter_string(s[1:], char)

else:

return s[0] + filter_string(s[1:], char)



text = 'If I look back I am lost'

print(filter_string(text, 'I')) # 'f look back am lost'

print(filter_string(text, 'o')) # 'If I lk back I am lst'
 
Что в твоём понимании "логика написания кода"?
 
Рекурсивно запускается по всем символам, добавляя к результату все, кроме равных указанному
 
Функция `filter_string(s, char)` реализована в стиле рекурсивного программирования. Она применяется для фильтрации (и удаления) указанной буквы `char` из строки `s`.

Идея в том, чтобы рекурсивно проходить строку слева направо, и если первый символ равен `char`, выполнять рекурсию для остатка строки, тем самым исключая первый символ. Если первый символ не равен `char`, придобавлять его к результату рекурсии для остатка строки.

Вот подробное объяснение функции:

1. Если строка `s` пустая (то есть `s == ''`), функция возвращает пустую строку.

2. Если первый символ строки равен `char` (то есть `s[0] == char`), функция вызывает сама себя, но теперь строка `s` содержит все символы исходной строки, кроме первого (то есть `s[1:]`). Этим действием символ `char` исключается из итоговой строки.

3. Если первый символ строки не равен `char`, этот символ добавляется к результату вызова функции для остатка строки (то есть `s[0] + filter_string(s[1:], char)`).

В случае с `print(filter_string(text, 'I'))`, все символы 'I' `'I'` (в верхнем регистре) будут исключены из строки `text`, поэтому в конце будет выведено `'f look back am lost'`.

Случай `print(filter_string(text, 'o'))` удаляет все символы 'o' из строки `text`, поэтому результат будет `'If I lk back I am lst'`.
 
Назад
Сверху