📝 Практические задания

⚡ Задания в двух словах

  • Задание 1 — перевёрнутая лестница из звёздочек.
  • Задание 2 — проверка строки на ASCII.
  • Задание 3 — вывод символов через пробел без лишнего пробела.
  • Задание 4 — баланс круглых скобок.
  • Задание 5 — символ с минимальным кодом.
  • Задание 6 — разделение цифр числа на чётные и нечётные.
  • Задание 7 — строка из диапазона Unicode.
  • Задание 8 — длина каждого слова в строке.
  • Задание 9 — палиндром с фильтрацией букв.
  • Задание 10 — проверка на панграмму.
  • Задание 11 — сравнение строк по уникальным символам.
  • Задание 12 — подсчёт букв, цифр и прочих символов.
  • Задание 13 — проверка одинакового сдвига между строками.

🏃 Разминка

Перед основными задачами потренируйтесь на коротких упражнениях.

Разминка 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.

📂 Подготовка проекта

  1. Создайте папку урока внутри python-fundamentals-practice/lesson-17/.
  2. Активируйте виртуальное окружение.
  3. Создайте файл для каждого задания, например 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]) для обеих строк.

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Что важнее всего в практическом задании?

Вопрос 2

Как безопаснее двигаться в практикуме?

Вопрос 3

Что делать, если решение не совпадает с ожидаемым результатом?

Вопрос 4

Какой стиль имён переменных обычно рекомендует PEP 8?

Вопрос 5

Зачем использовать f-strings в современном Python?

Вопрос 6

Когда полезен ранний возврат из функции?