Найти - Пользователи
Полная версия: Буду рад помощи!
Начало » Python для новичков » Буду рад помощи!
1
MichaelGrace
Доброго времени суток! Буду рад помощи с решением задачи. Условие: Реализуйте функцию filter_string(). Она принимает на вход строку и символ и возвращает новую строку, в которой удалён переданный символ во всех его позициях. Если строка не содержит указанный символ, то она возвращается без изменений.

Итоговая строка также не должна содержать начальные и концевые пробелы
Проблема: при передачи строки, которая содержит заглавные буквы, строка возвращается с ними, а удаляются только строчные.

py.user.next
Не, ты накопи подходящие символы в списке символов один раз, а потом один раз список символов склей в строку. Это будет умнее, чем делать несколько replace'ов.
MichaelGrace
Большое спасибо!
Pronkyt
В данном коде проблема возникает из-за того, что вы используете метод lower() только для символа, но не для всей строки. Это означает, что при проверке символа на равенство с переданным символом в функцию, он будет сравниваться только с его строчным эквивалентом.

Чтобы исправить эту проблему, вам нужно использовать метод lower() для всей строки text, а затем заменить все экземпляры переданного символа, используя метод replace().
 def filter_string(text, char):
    lower_text = text.lower().strip()
    return lower_text.replace(char.lower(), '').strip()
print(filter_string('I Look Back if you are lost', 'I'))
py.user.next
Pronkyt
Чтобы исправить эту проблему, вам нужно использовать метод lower() для всей строки text, а затем заменить все экземпляры переданного символа, используя метод replace().
  
def filter_string(text, char):
    lower_text = text.lower().strip()
    return lower_text.replace(char.lower(), '').strip()
 
print(filter_string('I Look Back if you are lost', 'I'))
Бредишь капитально. С чего ты взял, что регистр символов не важен? А если это не фразы подаются, а пути в операционной системе или код на питоне для очистки его от посторонних символов. Изменение регистра в первоначальном тексте приведёт к тому, что это всё поломается. Поэтому регистр надо сохранять. Удалять можно регистронезависимо, но исходную строку надо сохранить в максимально неизменном виде. Поэтому там простой .replace() не подойдёт, так как он с регистром не умеет работать.

Вот пример, где твой код поменял имя у класса A.
  
>>> def filter_string(text, char):
...     lower_text = text.lower().strip()
...     return lower_text.replace(char.lower(), '').strip()
... 
>>> print(filter_string('class A: s = "xxx123"', 'x'))
class a: s = "123"
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB