#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.