🏃 Разминка
Перед основными задачами потренируйтесь на коротких упражнениях.
Разминка 1. Какой результат выведет следующий код?
for code in range(65, 68):
print(chr(code), end="")
print()
Ответ: ABC — коды 65, 66, 67 соответствуют заглавным латинским буквам.
Разминка 2. Какой результат выведет следующий код?
text = "Hello"
print(text[::-1])
Ответ: olleH — срез с шагом -1 переворачивает строку.
Разминка 3. Какой результат выведет следующий код?
print("A" <= "a" <= "Z")
Ответ: False — хотя "A" <= "a" истинно, "a" <= "Z" ложно, потому что код a больше кода Z.
🏋️ Раздел тренировки
В этом разделе вы пошагово выполните 13 практических заданий: от создания файла до рабочей программы в VS Code.
for, функции range(), ord(), chr(), методы строк, аккумуляторы и ранний выход через break.
📂 Подготовка проекта
- Создайте папку урока внутри
python-fundamentals-practice/lesson-17/. - Активируйте виртуальное окружение.
- Создайте файл для каждого задания, например
task_01_reverse_stairs.py.
Задание 1. Перевёрнутая лестница
Условие: напишите программу, которая рисует перевёрнутую лестницу из звёздочек заданной высоты.
Что должно получиться:
Введите высоту лестницы: 5
*****
****
***
**
*
Подсказка: используйте range(height, 0, -1) и повторение строки "*" * i.
Задание 2. Проверка текста на ASCII
Условие: напишите программу, которая принимает строку от пользователя и проверяет, являются ли все символы строки ASCII-символами (диапазон кодов от 0 до 127 включительно).
Что должно получиться:
Введите текст: Python
Все символы ASCII: True
Введите текст: Привет
Все символы ASCII: False
Подсказка: используйте ord(char) > 127 как признак не-ASCII символа и break для раннего выхода.
Задание 3. Вывод строки с интервалами
Условие: напишите программу, которая принимает строку от пользователя и выводит её символы через пробел на одной строке. В конце не должно быть лишнего пробела.
Что должно получиться:
Введите строку: Python
P y t h o n
Подсказка: используйте индекс последнего символа или print(*text, sep=" ").
Задание 4. Проверка скобок
Условие: напишите программу, которая проверяет правильность расстановки круглых скобок в строке.
Что должно получиться:
Введите строку: (a+b)*(c-d)
Скобки расставлены правильно? True
Введите строку: (a+b)(*((c-d)
Скобки расставлены правильно? False
Подсказка: используйте счётчик баланса: "(" увеличивает, ")" уменьшает. Если баланс отрицателен — можно прервать цикл.
Задание 5. Поиск минимального символа
Условие: напишите программу, которая принимает строку от пользователя и выводит символ с минимальным кодом.
Что должно получиться:
Введите строку: Hello!
Минимальный символ: !
Подсказка: инициализируйте min_char = text[0] и обновляйте, если ord(char) < ord(min_char).
Задание 6. Чётные и нечётные цифры
Условие: напишите программу, которая принимает одно число и формирует из его цифр два новых числа: одно из чётных цифр, другое из нечётных. Если цифр нужной чётности нет, выводите 0.
Что должно получиться:
Введите число: 238947203429
Число из чётных цифр: 2842042
Число из нечётных цифр: 39739
Введите число: 482262
Число из чётных цифр: 482262
Число из нечётных цифр: 0
Подсказка: читайте число как строку, проверяйте int(digit) % 2, заменяйте пустую строку на "0".
Задание 7. Строка из диапазона Unicode
Условие: напишите программу, которая принимает два числа (начало и конец диапазона Unicode) и выводит строку, состоящую из всех символов этого диапазона.
Что должно получиться:
Введите начальный код: 65
Введите конечный код: 70
Символы: ABCDEF
Подсказка: используйте range(start, end + 1) и chr(code).
Задание 8. Длина слов
Условие: напишите программу, которая принимает строку, разделяет её на слова по пробелам и выводит каждое слово с его длиной.
Что должно получиться:
Введите строку: Программирование это весело
Слово: Программирование, Длина: 16
Слово: это, Длина: 3
Слово: весело, Длина: 6
Подсказка: накапливайте символы в строку word до пробела, затем выводите длину и сбрасывайте. Не забудьте последнее слово.
Задание 9. Текст палиндром
Условие: напишите программу, которая принимает строку и проверяет, является ли она палиндромом, игнорируя всё кроме букв русского и английского алфавита.
Что должно получиться:
Введите строку: А роза упала на лапу Азора
Палиндром? True
Подсказка: отфильтруйте буквы, приведите к нижнему регистру и сравните строку с перевёрнутой копией.
Задание 10. Все буквы алфавита
Условие: напишите программу, которая проверяет, содержит ли введённая строка все буквы английского алфавита (без учёта регистра).
Что должно получиться:
Введите строку: The quick brown fox jumps over the lazy dog
Содержит все буквы алфавита? True
Подсказка: переберите коды от ord("A") до ord("Z") и проверьте наличие каждой буквы в любом регистре.
Задание 11. Сравнение строк на уникальность
Условие: напишите программу, которая принимает две строки и сравнивает, в какой из них больше уникальных символов.
Что должно получиться:
Введите первую строку: Python
Введите вторую строку: JavaJava
Больше уникальных символов в строке: Python
Подсказка: накапливайте уникальные символы в новую строку, проверяя if char not in unique.
Задание 12. Счётчик символов
Условие: напишите программу, которая принимает строку и подсчитывает количество английских букв, цифр и остальных символов в строке.
Что должно получиться:
Введите строку: Python 3.12!
Букв: 6
Цифр: 3
Остальных символов: 3
Подсказка: проверяйте диапазоны "A".."Z", "a".."z" и "0".."9" либо используйте методы строк.
Задание 13. Одинаковый сдвиг
Условие: напишите программу, которая проверяет, имеют ли две строки одинаковые сдвиги между парами символов на одинаковых позициях. Например, "acc" и "egg" имеют сдвиги 2, 0.
Что должно получиться:
Введите первую строку: acc
Введите вторую строку: egg
Одинаковый сдвиг? True
Подсказка: сначала проверьте равенство длин, затем сравнивайте разности ord(str1[i]) - ord(str1[i + 1]) для обеих строк.