#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:
Существует по крайней мере два варианта:
- Замените все двойные пробелы, пока у вас не останутся только одиночные пробелы, прежде чем начинать подсчет
- Следите за тем, каким был предыдущий символ, и добавляйте дополнительные условия