Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 25 августа 2025 12:15

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

Ответ нейросети

25 августа 2025 12:15

Цель решения: понять по шагам, как посчитать точно отдельно стоящие слова Иван в произвольном тексте, без учёта регистра и без подсчета части слова (например, Иванов не считается). Также учтём условия проверки (.lower() и .count()).

Подход (пошагово):

  • Привести входной текст к нижнему регистру (используем .lower()).
  • Заменить все символы, которые не являются русскими буквами, на пробелы. Это позволяет трактовать знаки препинания как разделители слов.
  • Разбить строку на слова по пробелам и отбросить пустые элементы.
  • Посчитать количество слов, равных "иван", с помощью метода .count() на списке слов. Это обеспечивает точное совпадение слова, а не вхождение части слова.

Пример реализации на Python (со строгим использованием .lower() и .count()):

import re

text = input() # входной текст (одна строка) lower_text = text.lower()

заменить все не-русские буквы на пробелы (оставляем а-я и ё)

normalized = re.sub(r'[^а-яё]', ' ', lower_text)

получить список слов

words = [w for w in normalized.split() if w]

посчитать точные совпадения слова "иван"

count = words.count('иван')

print(count)

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

  • re.sub(r'[^а-яё]', ' ', lower_text) заменяет любые символы, не являющиеся кириллицей (включая пробелы, знаки препинания, цифры и т. д.), на пробелы. Это позволяет корректно отделять слова, и при этом не считать "(Иванов)" как слово "иван".
  • words.count('иван') подсчитывает число элементов списка, равных exactly "иван" (после приведения к нижнему регистру и разбиения на слова).

Примеры:

  • Ввод: "Иван, иванов! Иван." -> слова: ['иван', 'иванов', 'иван']; count = 2.
  • Ввод: "Иван ивана, ИВАН." -> слова: ['иван', 'ивана', 'иван']; count = 2.
  • Ввод: "ИвАнОв и Иван" -> слова: ['иванов', 'иван']; count = 1.

Сложность:

  • Время: O(n), где n — длина входной строки (нужно пройти по символам и затем разобрать слова).
  • Память: O(k), где k — количество слов после разбиения.

Если хочешь, могу адаптировать код под другую среду (например, без модуля re) или показать альтернативу на другом языке.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

На вход подаётся текст (строка произвольной длины). Выведите сколько раз в этом тексте встречается имя Иван. Требования: Учитываются только точные совпадения слова "Иван" (без учета регистра, но без учета частей слов, например, "Иванов" не считается). Имя "Иван" может встречаться в любом месте текста и в любом регистре: "Иван", "иван", "ИВАН" и т.п. Знаки препинания, стоящие рядом, не мешают определению слова. Проверка вашей программы осуществляется с использованием наших тестовых данных, поэтому вывод в консоли может отличаться от введённых вами значений. ​Проверяется: Использование метода .lower() — программа должна преобразовать текст к нижнему регистру. Использование метода .count() — программа должна подсчитывать количество вхождений. Соответствие ответа правильному.
Цель решения: понять по шагам, как посчитать точно отдельно стоящие слова Иван в произвольном тексте, без учёта регистра и без подсчета части слова (например, Иванов не считается). Также учтём условия проверки (.lower() и .count()). Подход (пошагово): - Привести входной текст к нижнему регистру (используем .lower()). - Заменить все символы, которые не являются русскими буквами, на пробелы. Это позволяет трактовать знаки препинания как разделители слов. - Разбить строку на слова по пробелам и отбросить пустые элементы. - Посчитать количество слов, равных "иван", с помощью метода .count() на списке слов. Это обеспечивает точное совпадение слова, а не вхождение части слова. Пример реализации на Python (со строгим использованием .lower() и .count()): import re text = input() # входной текст (одна строка) lower_text = text.lower() # заменить все не-русские буквы на пробелы (оставляем а-я и ё) normalized = re.sub(r'[^а-яё]', ' ', lower_text) # получить список слов words = [w for w in normalized.split() if w] # посчитать точные совпадения слова "иван" count = words.count('иван') print(count) Пояснения по коду: - re.sub(r'[^а-яё]', ' ', lower_text) заменяет любые символы, не являющиеся кириллицей (включая пробелы, знаки препинания, цифры и т. д.), на пробелы. Это позволяет корректно отделять слова, и при этом не считать "(Иванов)" как слово "иван". - words.count('иван') подсчитывает число элементов списка, равных exactly "иван" (после приведения к нижнему регистру и разбиения на слова). Примеры: - Ввод: "Иван, иванов! Иван." -> слова: ['иван', 'иванов', 'иван']; count = 2. - Ввод: "Иван ивана, ИВАН." -> слова: ['иван', 'ивана', 'иван']; count = 2. - Ввод: "ИвАнОв и Иван" -> слова: ['иванов', 'иван']; count = 1. Сложность: - Время: O(n), где n — длина входной строки (нужно пройти по символам и затем разобрать слова). - Память: O(k), где k — количество слов после разбиения. Если хочешь, могу адаптировать код под другую среду (например, без модуля re) или показать альтернативу на другом языке.