Как мне убедиться, что я считаю правильное количество слов в строке, если между словами несколько пробелов?

#python #string #function #for-loop #try-catch

#python #строка #функция #for-цикл #попробуйте-catch

Вопрос:

Я пишу функцию на Python 3 под названием word_count (которая принимает параметр, который я назвал my_string), который должен подсчитывать количество слов в строке. Строка может содержать слова с несколькими пробелами (например, hello there), и функция должна иметь возможность подсчитывать, что это два слова. Я не должен использовать какие-либо встроенные функции Python, и я также использую try-except, если я сталкиваюсь с какими-либо ошибками (например, если интересует значение, которое не является строкой, except выполнит возврат «Not a string»

Мне удалось написать функцию, и я создал переменную счетчика с именем numspaces, которую я инициализировал в 0. Затем я пишу try, затем цикл for с индексной переменной с именем current_character, которая будет проходить через все текущие символы в my_string. Я написал условное выражение, если current_character равно пробелу, numspaces необходимо увеличить на единицу, а numwords (переменная, которую я использую для подсчета общего количества слов в строке) равно numspaces 1. Затем я написал оператор else if, который говорит, что если numspaces равно 0, numwords = 1 и возвращает numwords. Если возникает ошибка, я написал исключение, которое возвращает «Не строку»

 def word_count(my_string):
    numspaces = 0
    try:
       for current_character in my_string:
        if current_character == " ":
            numspaces  = 1
            numwords = numspaces   1
        elif numspaces == 0:
            numwords = 1
       return numwords
    except:
       return "Not a string"
  

Ниже приведены некоторые тестовые примеры и ожидаемые результаты при использовании тестовых примеров:

 Word Count: 4
Word Count: 2
Word Count: Not a string
Word Count: Not a string
Word Count: Not a string

print("Word Count:", word_count("Four words are here!"))
print("Word Count:", word_count("Hi   David"))
print("Word Count:", word_count(5))
print("Word Count:", word_count(5.1))
print("Word Count:", word_count(True))
  

Когда я запускаю написанный мной код, я получаю следующий вывод:

 Word Count: 4
Word Count: 4
Word Count: Not a string
Word Count: Not a string
Word Count: Not a string
  

Я не уверен, как настроить мой код, чтобы учесть что-то вроде тестового примера 2 («Привет, Дэвид»)

Ответ №1:

Существует по крайней мере два варианта:

  1. Замените все двойные пробелы, пока у вас не останутся только одиночные пробелы, прежде чем начинать подсчет
  2. Следите за тем, каким был предыдущий символ, и добавляйте дополнительные условия