Задача понятна. Ниже даю подробное решение с объяснениями и рабочий пример кода на Python, который удовлетворяет требованиям: применяется .lower() и .count(), учитываются только отдельные слова "иван" (без учета регистра), слова типа "иванов" не считаются, знаки препинания не мешают.
Цель: понять решение задачи пошагово и увидеть рабочий код.
Пояснение к подходу
- Сначала переводим входной текст к нижнему регистру: s = text.lower().
- Затем превращаем все символы, которые не являются русскими буквами (а-я и буква ё), в пробелы. Это отделяет слова и заставляет знаки препинания служить разделителями слов.
- Добавляем по одному пробелу слева и справа, чтобы удобно считать слово "иван" как часть подстроки с пробелами вокруг: " иван ".
- Подсчитываем количество вхождений подстроки " иван " с помощью метода .count().
- Это обеспечивает ровное соответствие слову целиком и игнорирует части слов (например, Иванов).
Решение шаг за шагом
- Привести текст к нижнему регистру.
- Преобразовать все не русские буквы в пробелы (оставить только а-я и ё).
- Добавить пробелы в начале и в конце строки.
- Посчитать количество вхождений подстроки " иван ".
- Вывести результат.
Код (Python 3)
import sys
def count_ivan(text: str) -> int: # 1) привести к нижнему регистру s = text.lower() # 2) оставить только русские буквы (а-я, ё), остальные заменить пробелами cleaned_chars = [] for ch in s: if ('а' <= ch <= 'я') or ch == 'ё': cleaned_chars.append(ch) else: cleaned_chars.append(' ') cleaned = ''.join(cleaned_chars) # 3) добавить границы пробелов cleaned = ' ' + cleaned + ' ' # 4) подсчитать количество вхождений слова "иван" как отдельного слова return cleaned.count(' иван ')
if name == "main": # 5) чтение текста (можно из stdin) text = sys.stdin.read() print(count_ivan(text))
Как использовать
- Вводите произвольную строку как входной текст.
- Программа выведет количество вхождений слова "иван" в тексте, игнорируя случаи типа "иванов" и др.
Пример
- Вход: "Иван, иван. Иванов Иван!"
- Приведённый пример вернет: 3 (слова: Иван, иван, Иван)
Дополнительные заметки
- Знаки препинания и цифры вокруг слов не мешают, так как заменяются на пробелы.
- Слово "иван" выделяется только как отдельное слово благодаря границам с пробелами.
- Решение использует только методы .lower() и .count() в рамках подсчета, как требовалось.