Задача понятна. Ниже подробное решение на Python 3 с пояснениями и примером кода. Мы учитываем требование: приводим текст к нижнему регистру и используем метод count(); проверяем слова, а не части слов.
Цель: пояснить пошагово, как посчитать точные вхождения имени Иван как отдельного слова, независимо от регистра.
Пояснение к алгоритму
- Приводим весь текст к нижнему регистру: text_lower = text.lower().
- Разбиваем текст на слова. Чтобы точно считать только полные слова и игнорировать части слов, выделяем последовательности букв и формируем список слов. Пример: используем регулярное выражение [а-яёa-z]+.
- Считаем количество слов, равных "иван": count = words.count("иван"). Это выполняет требование использовать метод count().
- Выводим полученное число.
Пояснение по деталям
- Имя Иван может встречаться в любом месте текста и в любом регистре (Иван, иван, ИВАН и т.д.). Приведение к нижнему регистру решает это.
- Слова типа "иванов" или "иванова" не должны считаться, так как это другие слова; благодаря разбиению на отдельные слова и сравнению с точным словом "иван" они не будут посчитаны.
- Знаки препинания, стоящие рядом, не мешают определению слова, так как они отделяются не-алфавитными символами.
Пример кода (Python 3)
import sys import re
Ввод всего текста (одна строка или несколько строк, в зависимости от теста)
text = sys.stdin.read()
1) Приводим к нижнему регистру
text_lower = text.lower()
2) Выделяем слова (последовательности букв русского и латинского алфавита)
words = re.findall(r"[а-яёa-z]+", text_lower)
3) Подсчитываем количество точных вхождений слова "иван"
count = words.count("иван")
4) Выводим результат
print(count)
Пример работы
- Вход: "Иван, Иванов иван Петров, иван!" Нижний регистр: "иван, иванов иван петров, иван!" Выделяются слова: ["иван", "иванов", "иван", "петров", "иван"] count("иван") = 3 Вывод: 3
Замечания
- Этот подход использует метод .lower() и .count() (на списке слов) в соответствии с требованиями.
- Если вход содержит только пустую строку, результат будет 0.
- Если требуется альтернативная реализация без регулярных выражений, можно вручную проходить по строке и накапливать буквы в слово, но текущее решение коректно и читаемо.