Перед началом
Сохраняй решения в файлы d1.py, d2.py и так далее. Во всех задачах вводится одна строка через input() без приглашения. Длина входной строки — от 0 до 1000 символов; дополнительные ограничения указаны в задачах. Пустой ввод — это нажатие Enter. Завершающий перевод строки не является частью входных данных.
Печатай только то, что требует условие. Регистр в ответах YES, NO, EMPTY, START, STOP, UNKNOWN важен. Не добавляй strip() автоматически: иногда пробелы запрещены и должны привести к отказу, а иногда их нужно сохранить.
| Маршрут | Задачи |
|---|---|
| После урока 1 | D1–D3 |
| После урока 2 | D4–D8 |
| После урока 3 | D9–D12 |
| Дополнительная практика | D13–D16 |
'' означает пустую строку; \n внутри записи вывода означает переход на следующую строку; \t — табуляцию. Например, 'a b' содержит два пробела.D1. Имя команды
Вводится одна строка — название команды. Удали пробельные символы только по краям и переведи буквы в нижний регистр. Пробелы внутри сохрани.
Выходные данные
Обработанное название. Если оно пустое, выведи пустую строку.
Пример 1
' PyThOn '
'python'
Пример 2
' Красный Робот '
'красный робот'
Подсказка: какие действия нужны?
Нужно два преобразования. У каждого результата тип str; можно вызвать следующий метод через точку.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D2. Расшифруй сообщение
Вводится строка сообщения. Все символы подчёркивания _ обозначают пробелы. Замени каждое подчёркивание одним обычным пробелом; остальные символы сохрани.
Выходные данные
Расшифрованное сообщение; число пробелов после замены не сокращай.
Пример 1
'Робот_готов'
'Робот готов'
Пример 2
'A__B'
'A B'
Подсказка: какие действия нужны?
В replace первый аргумент — что ищем, второй — на что меняем. Ограничение числа замен не нужно.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D3. Табличка на дверь
Вводится строка для таблички. Убери пробельные края, переведи буквы в верхний регистр и замени только первый обычный пробел внутри результата на дефис. Остальные внутренние пробелы сохрани.
Выходные данные
Текст таблички после трёх преобразований.
Пример 1
' кабинет робототехники '
'КАБИНЕТ-РОБОТОТЕХНИКИ'
Пример 2
'клуб юных роботов'
'КЛУБ-ЮНЫХ РОБОТОВ'
Подсказка: какие действия нужны?
Сначала убери края, иначе первой заменой окажется случайный пробел перед текстом. Третий аргумент replace равен 1.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D4. Упоминания робота
Вводится строка. Посчитай неперекрывающиеся вхождения подстроки «робот» без учёта регистра. Вхождение внутри длинного слова тоже учитывается; искать отдельные слова не требуется.
Выходные данные
Одно целое число — число вхождений.
Пример 1
'Робот и РОБОТ'
'2'
Пример 2
'робототехника'
'1'
Подсказка: какие действия нужны?
Сначала приведи текст к одному регистру. count возвращает число, его и печатаем.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D5. Где собачка?
Вводится строка. Найди индекс первого символа @, считая позиции с нуля. Если такого символа нет, выведи −1. Это задача о поиске символа, а не о проверке настоящего адреса почты.
Выходные данные
Индекс первого @ или −1.
Пример 1
'user@mail.ru'
'4'
Пример 2
'@robot'
'0'
Подсказка: какие действия нужны?
Нужен метод, который вернёт −1 при отсутствии и не вызовет ошибку.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D6. Python-файл
Вводится имя файла. Удали пробельные края, затем проверь, заканчивается ли имя на .py без учёта регистра. В этой учебной задаче других требований к имени нет.
Выходные данные
YES, если условие выполнено, иначе NO.
Пример 1
' Lesson.PY '
'YES'
Пример 2
'task.py.txt'
'NO'
Подсказка: какие действия нужны?
Подстрока .py должна стоять в конце после очистки и смены регистра.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D7. Код пропуска
Вводится строка из латинских/русских букв, обычных цифр 0–9, пробелов и знаков ASCII. Других символов-цифр Unicode во входе нет. Корректный код содержит ровно четыре цифры 0–9. Пробелы не удаляй. Ведущие нули разрешены.
Выходные данные
YES для корректного кода, иначе NO.
Пример 1
'0072'
'YES'
Пример 2
' 072'
'NO'
Подсказка: какие действия нужны?
Нужны одновременно два условия: длина и состав. Код остаётся строкой.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D8. Учебный логин
Вводится строка. Сначала убери пробельные края. Логин допустим, если его длина от 3 до 12 включительно, в нём только буквы, цифры и подчёркивания _, а также есть хотя бы одна буква или цифра. Буквы/цифры понимаются так же, как в isalnum(). Внутренние пробелы запрещены.
Выходные данные
YES для допустимого логина, иначе NO.
Пример 1
' bot_7 '
'YES'
Пример 2
'___'
'NO'
Подсказка: какие действия нужны?
Проверять длину нужно у очищенного логина, до удаления подчёркиваний. Для проверки состава временно убери только _.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D9. Сколько слов?
Вводится строка. Словом считаем каждый элемент разбиения по пробельным промежуткам: знаки препинания остаются частью слова. Посчитай слова; строка может быть пустой или состоять из пробелов.
Выходные данные
Число слов.
Пример 1
' робот едет домой '
'3'
Пример 2
' '
'0'
Подсказка: какие действия нужны?
Нужен split без явного разделителя: он не создаёт пустые слова из лишних пробелов.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D10. Адрес страницы кружка
Вводится название кружка. Переведи буквы в нижний регистр, выдели слова по пробельным промежуткам и соедини их одним дефисом. Знаки препинания не меняй. Для пустого названия результат пустой.
Выходные данные
Строка со словами через дефис без дефисов по краям.
Пример 1
' Клуб Роботов '
'клуб-роботов'
Пример 2
'Python'
'python'
Подсказка: какие действия нужны?
Сначала получится список строк, затем снова строка. Разделитель вызывает join.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D11. Заполненные поля
Вводится строка полей, разделённых точками с запятой ;. Поле считается заполненным, если после удаления пробельных краёв в нём остаётся хотя бы один символ. Посчитай заполненные поля. Сами поля могут содержать внутренние пробелы.
Выходные данные
Количество заполненных полей.
Пример 1
'робот;; датчик ; ;мотор;'
'3'
Пример 2
' ; ; '
'0'
Подсказка: какие действия нужны?
Сначала разбей по ;. Каждый полученный элемент очисти отдельно и реши, нужно ли увеличить счётчик.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D12. Подпись участника
Вводится имя и фамилия — ровно два непустых слова из букв в правильном регистре, например «Анна Петрова». Между словами и по краям может быть несколько пробелов. Выведи фамилию, пробел, первую букву имени в верхнем регистре и точку. Гарантируется наличие двух слов.
Выходные данные
Подпись в формате Фамилия И.
Пример 1
'Анна Петрова'
'Петрова А.'
Пример 2
' иван Иванов '
'Иванов И.'
Подсказка: какие действия нужны?
parts[0] — первое слово; parts[0][0] — первая буква этого слова. Разделение гарантирует два элемента по условию.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D13. Расширение после последней точки
Вводится только имя файла, без пути. Удали пробельные края и найди последнюю точку. Расширением считаем непустой фрагмент после неё, если перед ней есть хотя бы один символ. Если последняя точка стоит первой или последней либо точек нет, расширения нет. Это учебное правило, не полный разбор файловых систем.
Выходные данные
Расширение в нижнем регистре либо NO.
Пример 1
'archive.tar.GZ'
'gz'
Пример 2
'.env'
'NO'
Подсказка: какие действия нужны?
Нужна последняя, а не первая точка. Проверь обе границы и только затем возьми срез справа от точки.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D14. Команда учебного бота
Вводится команда, возможно с аргументами после пробелов. Выдели первое слово по пробельным промежуткам и сравни его без учёта регистра. Для /start выведи START, для /stop — STOP, для любого другого слова либо пустого ввода — UNKNOWN. /starter не является /start.
Выходные данные
Одна строка: START, STOP или UNKNOWN.
Пример 1
' /START робот'
'START'
Пример 2
'/starter'
'UNKNOWN'
Подсказка: какие действия нужны?
Перед parts[0] проверь, что список не пуст. Сравни выделенное слово целиком.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D15. Очищенный список тегов
Вводится строка тегов, разделённых запятыми. Для каждого поля убери пробельные края, переведи буквы в нижний регистр и выведи непустые теги по одному на строке. Порядок и повторы сохрани; внутренние пробелы не меняй. Если непустых тегов нет, выведи EMPTY.
Выходные данные
Обработанные непустые теги, каждый на новой строке, либо EMPTY.
Пример 1
' Python, , РОБОТ,python,'
'python\nробот\npython'
Пример 2
' , , '
'EMPTY'
Подсказка: какие действия нужны?
Как в D11, обрабатывай поля по одному. Счётчик поможет узнать, был ли напечатан хотя бы один тег.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.
D16. Анализ строки без пробельных символов
Вводится строка. Удали из неё все пробельные символы, соединив элементы split() пустой строкой, и переведи буквы в нижний регистр. Если результат пустой, выведи EMPTY. Иначе проверь, читается ли он одинаково слева направо и справа налево. Знаки препинания сохраняются и участвуют в сравнении.
Выходные данные
YES, если непустой результат симметричен, NO в остальных непустых случаях, EMPTY для пустого результата.
Пример 1
'А роза упала на лапу Азора'
'YES'
Пример 2
'робот'
'NO'
Подсказка: какие действия нужны?
Сначала обработай строку. Срез s[::-1] возвращает её символы в обратном порядке; это дополнительный приём, не метод.
Проверь себя: придумай ещё два входа, заранее запиши ожидаемые ответы и сравни с программой. Объясни, какие методы ты выбрал.