Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3316633
А
Аноним
25 августа 2025 12:15 · публичный вопрос
А
Аноним

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

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

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

Ответ нейросети
25 августа 2025 12:15

Задача понятна. Ниже даю подробное решение с объяснениями и рабочий пример кода на Python, который удовлетворяет требованиям: применяется .lower() и .count(), учитываются только отдельные слова "иван" (без учета регистра), слова типа "иванов" не считаются, знаки препинания не мешают.

Цель: понять решение задачи пошагово и увидеть рабочий код.

Пояснение к подходу

  • Сначала переводим входной текст к нижнему регистру: s = text.lower().
  • Затем превращаем все символы, которые не являются русскими буквами (а-я и буква ё), в пробелы. Это отделяет слова и заставляет знаки препинания служить разделителями слов.
  • Добавляем по одному пробелу слева и справа, чтобы удобно считать слово "иван" как часть подстроки с пробелами вокруг: " иван ".
  • Подсчитываем количество вхождений подстроки " иван " с помощью метода .count().
    • Это обеспечивает ровное соответствие слову целиком и игнорирует части слов (например, Иванов).

Решение шаг за шагом

  1. Привести текст к нижнему регистру.
  2. Преобразовать все не русские буквы в пробелы (оставить только а-я и ё).
  3. Добавить пробелы в начале и в конце строки.
  4. Посчитать количество вхождений подстроки " иван ".
  5. Вывести результат.

Код (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() в рамках подсчета, как требовалось.