удаление определенного слова в python

#python

#python

Вопрос:

У меня есть практический вопрос, с которым я боролся, я собираюсь задать вопрос и код, который я попробовал, Спасибо всем (я новичок)

Учитывая строку, верните новую строку, где «not» было добавлено в начало. Однако, если строка уже начинается с «not», верните строку без изменений.

МОЙ код:

 def not_string(str):
  return 'not'   ' '    str
  if str == 'not' :
    return str
  

Комментарии:

1. попробуйте startswith() в сочетании с lower()

2. Вы можете попробовать f-strings для простого форматирования строки, f»{» if string . lower().startswith(‘not ‘) else ‘not’}строка»

3. Спасибо, ребята, я ищу функцию starts with и я ее изучил

4. Кстати, вы не должны вызывать свою переменную str , потому что вы затеняете встроенную str . (И вот мое решение с f-строкой: f"{['not ', ''][value.startswith('not')]}{value}"

Ответ №1:

Вот возможный фрагмент кода:

 def not_string(s):
    if s.startswith('not'):
        return s
    return 'not '   s
  

Вы также можете использовать однострочный:

 def not_string(s):
    return s if s.startswith('not') else 'not '   s
  

Если вы не хотите использовать встроенные функции, вы можете попробовать что-то вроде этого:

 def not_string(s):
    if s[:3] == 'not':
        return s
    return 'not '   s
  

Комментарии:

1. Большое спасибо, человек, я ценю это…. Я не мог понять вторую строку 3-го кода, почему мы использовали функцию Len и str[:3] можете ли вы объяснить в свободное время

2. Проверяется, имеет ли длина строки ввода более 3 символов, если возможно наличие «not» во входной строке. После этого выполните итерацию по первым 3 символам и сравните их с «not» (чтобы проверить, есть ли «not» в начале)

3. 2 примечания: вам не нужно проверять длину строки, прежде чем брать фрагмент, например [:3] , Python вернет более короткий фрагмент, если строка слишком короткая. Кроме того, вам следует избегать использования str в качестве имени переменной, поскольку это имя встроенного Python, и это затеняет исходное значение.

4. @ThierryLathuille Вы совершенно правы, спасибо, что указали на это, я обновил ответ с предоставленной вами информацией

5. Спасибо, ребята, функция уже определена, я практикуюсь в codingbat

Ответ №2:

Ваш код возвращает значение в первой строке функции, поэтому остальное никогда не достигается. Первая строка просто возвращает «not» и вашу строку. Вторая строка просто проверяет, является ли строка «not» ( star == 'not' ), и не проверяет, начинается ли она с «not».

Мое решение:

 def not_string(str):
  if str.startswith("not"):
    return str
  return "not "   str
  

Сначала проверьте, начинается ли с «not» во входной строке

если есть, просто верните его

если нет, он вернет «not» с входной строкой

Ответ №3:

Порядок предложений в вашем коде важен. Первая строка в not_string функции — это return оператор. Как только интерпретатор выполняет этот порядок, он завершает работу функции и возвращает (отсюда и название) код вызывающего. Это означает, что остальные строки, если функция никогда не выполняется.

Одним из решений является инвертирование порядка действий, которые вы выполняете в функции: сначала проверьте, нужно ли изменять строку (то есть, она не начинается с not ). Если это так, добавьте not в начале строки. Последним шагом является возврат значения:

 def not_string(str):
    if not str.startswith('not '):
        str = 'not '   str
    return str
  

Примечание: объединение строк с помощью — наименее эффективный способ сделать это, но пока это не волнует.

Ответ №4:

def not_string(s): возвращает s, если s.startswith(‘not’) else ‘not ‘ s

Комментарии:

1. Это просто совершенно не имеет отношения к вопросу, который касается не удаления слов из текста, а добавления одного в начале одного предложения, если оно еще не начинается с него…

2. Извините, я обновил ответ .. понял, что на него уже ответил @Riccardo Bucco.