Информатика

7 592 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Шаг 10: Финальная анкета
Сложно
Финал лета. Деканат прислал тебе CSV-файл с заявлениями абитуриентов и сказал: «Скажи, сколько из них вообще можно рассматривать». В файле пять полей: ID, ФИО, email, телефон, балл. Если хоть одно поле в строке кривое — вся анкета летит в мусорку. Это твой главный тест. Проверь все анкеты и доложи число валидных. Пройдёшь — станешь главным аналитиком приёмной комиссии. Не пройдёшь — будешь до Нового года считать степлеры на складе.
Условие задачи
 

Дано N заявлений в формате CSV (разделитель — символ |). Каждое заявление содержит 5 полей:

  1. ID: ровно 2 заглавные латинские буквы + 4 цифры. Пример: AB1234
  2. ФИО: фамилия (русская, с заглавной буквы) + пробел + заглавная буква + точка + заглавная буква + точка. Пример: Иванов И.И.
  3. Email: имя@домен.tld, где tld — 2–4 латинские буквы.
  4. Телефон: ровно +7 и 10 цифр. Пример: +79991234567
  5. Балл: целое число от 1 до 100.

Заявление считается валидным, если ВСЕ пять полей соответствуют формату.

Входные данные

В первой строке — целое число N. Далее N строк с заявлениями.

Выходные данные

Одно целое число — количество валидных заявлений.

Подсказка: Используй re.fullmatch() — в отличие от match, она требует, чтобы шаблон совпал с всей строкой, а не только с её началом.
🔒
Шаг 9: Тс-с, это тайна
Сложно
Завтра вуз вывешивает результаты на сайте. По закону о персональных данных нельзя показывать ФИО — только обезличенные результаты. Юрист комиссии нервно дергает левый глаз и говорит: «Замени все ФИО на звёздочки. Прямо сейчас. И чтобы я больше этого не видел». Юристов лучше не злить. Особенно когда у них дёргается глаз.
Условие задачи
 

Замени все ФИО в тексте на ***.

ФИО имеет формат: Фамилия с заглавной буквы, пробел, заглавная буква, точка, заглавная буква, точка. Например, Иванов И.И., Петрова А.С.. Все ФИО в кириллице.

Входные данные

Одна строка текста.

Выходные данные

Та же строка, в которой все ФИО заменены на ***.

Подсказка: re.sub(r"[А-ЯЁ][а-яё]+\s[А-ЯЁ]\.[А-ЯЁ]\.", "***", text). Не забудь экранировать точки!
🎓
Шаг 8: Три шкалы — одна голова
Сложно
Маша снова на связи! Теперь она прислала свои оценки. Из российской школы — 5/5, из онлайн-курса Coursera — 87%, а из американской летней программы — GPA: 3.85. Приёмная комиссия Гарварда смотрит на это как на «криптозагадку из эпохи майя». Помоги Маше: приведи всё к шкале 0–100, чтобы хоть кто-то понял её средний уровень.
Условие задачи
 

Приведи все оценки к единой шкале 0–100:

  • Проценты (87%) — число до знака % без изменений.
  • Российская 5-балльная (4/5) — \(\text{балл}/5 \times 100\) (целая часть).
  • GPA (GPA: 3.6) — \(\text{GPA}/4{,}0 \times 100\), округлить функцией round() Python.
Входные данные

Одна строка с оценками, разделёнными запятой и пробелом. Префикса перед оценками нет.

Выходные данные

Целые числа от 0 до 100, по одному на строке, в порядке появления.

Подсказка: Раздели строку по ", ", для каждой части примени поочерёдно три регулярных выражения: (\d+)%, (\d)/5, GPA:\s*(\d\.\d+).
🌐
Шаг 7: Карта мира университетов
Средне
Подруга Алисы — Маша — решила поступать и в Россию, и за границу одновременно. Она прислала тебе текстовый файл с десятками ссылок: МГУ, ВШЭ, MIT, Oxford, ETH Zurich… В таком объёме легко запутаться. Маша просит сделать чистый список доменов, «без всяких этих https и www, чтобы влезло на одну страницу». Маша знает, чего хочет.
Условие задачи
 

Извлеки только доменное имя без префикса www. и без пути.

Формат URL: http:// или https://, затем опционально www., затем доменное имя (буквы, цифры, точки), затем опционально / и путь.

Входные данные

Одна строка текста с URL-ами.

Выходные данные

Доменные имена без www., по одному на строке, в порядке появления.

Подсказка: Группа захвата: https?://(?:www\.)?([a-zA-Z0-9.]+?)(?=[/\s]|$). (?:...) — группа без захвата, (?=...) — lookahead.
🎯
Шаг 6: Сколько у меня баллов?
Средне
Тебе пишет абитуриентка Алиса: «Помогите, я не понимаю свой суммарный балл, у меня результаты в трёх разных форматах, я в шоке». Открываешь её скриншот — и правда: где-то математика: 95 баллов, где-то русский=92, где-то физика - 88. Алисе нужна одна цифра. Алисе нужна сумма. Алисе нужна твоя помощь.
Условие задачи
 

Извлеки все числовые значения баллов из текста и выведи их сумму. Балл — любое целое число от 1 до 100. Гарантируется, что других чисел в тексте нет.

Входные данные

Одна строка текста с описанием результатов.

Выходные данные

Одно целое число — сумма всех найденных баллов. Если баллов нет — вывести 0.

Подсказка: re.findall(r"\d+", text) вернёт список всех чисел в виде строк. Останется только сложить их.
📞
Шаг 5: Алло, это приёмка?
Средне
Час дня. Тебе позвонили 17 раз за последние 10 минут. У комиссии копится база телефонов абитуриентов, и каждый записывает номер по-своему: с плюсом, с восьмёркой, со скобками, с тире, а одна бабушка вообще словами. К счастью, словами — это не наш случай. Сегодня твоя миссия — привести все номера к человеческому виду +7XXXXXXXXXX.
Условие задачи
 

Извлеки все российские мобильные номера из текста и приведи к формату +7XXXXXXXXXX (плюс, семёрка, 10 цифр без разделителей).

Возможные форматы во входных данных:

  • +7(495)123-45-67 — код в скобках
  • 8(495)123-45-67 — восьмёрка вместо +7
  • +7-495-123-45-67 — всё через дефис
  • 8-495-123-45-67 — то же с восьмёркой

Все номера: либо +7, либо 8, далее код (3 цифры), далее 7 цифр. Пробелов внутри номера нет.

Входные данные

Одна строка текста.

Выходные данные

Все найденные номера в формате +7XXXXXXXXXX, по одному на строке.

Подсказка: Найди подстроки телефонов, потом re.sub(r"\D", "", s) чистит всё нецифровое. Если первая цифра 8 — замени на 7.
📅
Шаг 4: Когда же экзамен?!
Средне
Расписание экзаменов прислали сразу три разных департамента. В одном пишут даты через точку (15.06.2025), в другом — через слеш (15/06/2025), в третьем — через дефис (15-06-2025). Конечно же, никто не согласовался. И конечно же, разбираться тебе. Приведи весь хаос к нормальному виду ГГГГ-ММ-ДД, как делают серьёзные айтишники.
Условие задачи
 

Извлеки все даты из текста и выведи их в формате ГГГГ-ММ-ДД (ISO 8601).

Формат входных дат: ровно 2 цифры дня, разделитель (., / или -), 2 цифры месяца, тот же или другой разделитель, 4 цифры года. Год от 2020 до 2026, день от 01 до 28, месяц от 01 до 12 (валидность гарантируется).

Входные данные

Одна строка текста.

Выходные данные

Все найденные даты в формате ГГГГ-ММ-ДД, по одной на строке.

Подсказка: Группы захвата: (\d{2})[./-](\d{2})[./-](\d{4}). Класс [./-] заменит сразу все три разделителя.
📄
Шаг 3: Бланки ЕГЭ
Просто
Сегодня в комиссию пришёл абитуриент Костя. Он принёс распечатку с десяти разных сайтов с результатами ЕГЭ, потому что «не понял, какому верить». Среди этой пачки бумаг нужно отыскать номера бланков ЕГЭ — и проверить, что они валидные. Костя нервничает. Костя смотрит на тебя. Костя верит.
Условие задачи
 

Номер бланка ЕГЭ имеет формат: ровно 4 цифры, дефис, ровно 7 цифр. Например, 0123-4567890.

Входные данные

Одна строка текста.

Выходные данные

Все найденные валидные номера бланков, по одному на строке.

Подсказка: Регулярка \b\d{4}-\d{7}\b. Границы \b важны — иначе номер 12345-67890123 тоже подойдёт частично, а это не наш случай.
📋
Шаг 1: Хаос в приёмной комиссии
Просто
Привет, абитуриент! Сейчас сентябрь, ты только что устроился стажёром в приёмную комиссию МГУ. В первый же день тебе вручают флешку с базой студентов и говорят: «Разберись». Открываешь файл — а там полный бардак: ID студентов, шутки в чате, чьи-то заметки и даже рецепт борща. Надо извлечь только настоящие ID.
Условие задачи
 

Каждый ID студента имеет строгий формат: ровно две заглавные латинские буквы и ровно четыре цифры подряд. Например, AB1234, MK0001, PR2024.

Дана одна строка текста (до 10 000 символов). Извлеки из неё все валидные ID и выведи их по одному на строке в порядке появления.

Входные данные

Одна строка произвольного текста.

Выходные данные

Все найденные ID, по одному на строке. Если ID не найдены — пустой вывод.

Что не так с кодом df[df['A'] > 5 & df['B'] < 10]?

  1. всё в порядке, код работает
  2. надо писать and вместо &
  3. не хватает скобок вокруг каждого сравнения, будет ошибка
  4. надо писать | вместо &

В выражении (df['A'] > 5) & (df['B'] < 10) зачем нужны скобки вокруг каждого условия?

  1. для красоты, можно убрать
  2. оператор & имеет более высокий приоритет, чем сравнение, без скобок будет ошибка
  3. чтобы pandas понял русский язык
  4. чтобы код стал быстрее

Что делает df['col'].quantile(0.5)?

  1. берёт половину строк
  2. возвращает медиану столбца
  3. возвращает среднее, делённое на 2
  4. удаляет половину данных
Поделиться
Класснуть