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'
Python
Объясните логику задания на питоне
Функция `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'`.
Идея в том, чтобы рекурсивно проходить строку слева направо, и если первый символ равен `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'`.
Удаляет из строки заданный символ
Анатолий Шевченко
это я понял, мне непонятна логика написания кода.
Рекурсивно запускается по всем символам, добавляя к результату все, кроме равных указанному
Что в твоём понимании "логика написания кода"?
Похожие вопросы
- Объясните что именно высчитывает питон при выводе остатка?
- Помогите с заданиями в питоне и желательно с объяснением
- Что за зверь Питон.
- Питон во всем такой медленный? (сравнивал с JavaScript)
- Вы согласны с мнением, что питон хуже других языков программирования?
- Питон на сириусе. Кинотеатр
- Решить две задачи на питоне. Помогите пожалуйста
- Как сделать так чтобы питон воспринимал число 13, не как 1 и 3?
- Я выбрал IT направление, нас предупредили что мы будем изучать движок питон. Объясните мне пожалуйста в кратце о нем,
- Помогите написать антивирус на питоне.