Ошибка типа: заканчивается с первым аргументом str или кортежем str, а не bool

Я пытался посчитать вхождения слов, которые заканчиваются несколькими суффиксами. я думал так endswith примет итеративный; к сожалению, это не так. Ниже приведен фрагмент кода:

s = 'like go goes likes liked liked liking likes like'
lst = s.split()
suffixes = ['s', 'es', 'ies', 'ed', 'ing']

counter = 0
prompt = 'like'
for x in lst:
    if x.startswith(prompt) and x.endswith(any(suffix for suffix in suffixes)):
         counter += 1

Значение counter должно быть 4 в конце исполнения. Это сообщение об ошибке, которое отображается:

TypeError: endswith first arg must be str or a tuple of str, not bool

Как я могу получить приведенный выше код для работы?

1 ответ

Решение

any функция возвращает значение bool, но str.startswith требуется строка или кортеж строк.

Вы можете просто преобразовать свой список в кортеж и передать его startswith:

x.endswith(tuple(suffixes))
Другие вопросы по тегам