Функция `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'`.