Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3525113
А
Аноним
02 декабря 2025 09:00 · публичный вопрос
А
Аноним

На вход подаётся текст (строка произвольной длины). Выведите сколько раз в этом тексте встречается имя Иван. Требования: Учитываются только точные совпадения слова "Иван" (без…

Запрос пользователя

На вход подаётся текст (строка произвольной длины). Выведите сколько раз в этом тексте встречается имя Иван. Требования: Учитываются только точные совпадения слова "Иван" (без учета регистра, но без учета частей слов, например, "Иванов" не считается). Имя "Иван" может встречаться в любом месте текста и в любом регистре: "Иван", "иван", "ИВАН" и т.п. Знаки препинания, стоящие рядом, не мешают определению слова. Проверка вашей программы осуществляется с использованием наших тестовых данных, поэтому вывод в консоли может отличаться от введённых вами значений. ​Проверяется: Использование метода .lower() — программа должна преобразовать текст к нижнему регистру. Использование метода .count() — программа должна подсчитывать количество вхождений. Соответствие ответа правильному.

Ответ нейросети
02 декабря 2025 09:00

Задача понятна. Ниже подробное решение на 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.
  • Если требуется альтернативная реализация без регулярных выражений, можно вручную проходить по строке и накапливать буквы в слово, но текущее решение коректно и читаемо.