🏠 Домашнее задание

⚡ Кратко

Создайте отдельную папку для урока.

Каждую задачу держите в отдельном файле или разделяйте явными комментариями.

Запускайте код из терминала VS Code и проверяйте вывод на примерах из источника.

Топ-3 ошибки: путать ссылку и копию; ожидать порядок там, где его нет; усложнять выражение, когда обычный цикл читается лучше.

Подготовка окружения

  1. Создайте папку lesson_30.
  2. Создайте файлы task_1.py, task_2.py и так далее.
  3. Запускайте файл командой python task_1.py.
  4. После решения измените входные данные и убедитесь, что логика не привязана только к примеру.

Домашнее задание 1. Оценки текстом

Преобразуйте список оценок 1-5 в пары [число, текст]. 5 — отлично, 3-4 — хорошо, 2 и ниже — неудовлетворительно.

grades = [5, 3, 4, 2, 1, 5, 3]

grade_labels = [
    [grade, "отлично" if grade == 5 else "хорошо" if grade >= 3 else "неудовлетворительно"]
    for grade in grades
]

print(grade_labels)

Домашнее задание 2. Правильные скобки

Проверьте строку со скобками (), [] и {} на правильный порядок закрытия.

from collections import deque

strings = ["({[}])", "([({}()){}])"]
pairs = {")": "(", "]": "[", "}": "{"}

for string in strings:
    stack = deque()
    is_valid = True
    for char in string:
        if char in pairs.values():
            stack.append(char)
        elif char in pairs and (not stack or stack.pop() != pairs[char]):
            is_valid = False
            break
    if stack:
        is_valid = False
    print("Скобки:", string)
    print("Валидны:", is_valid)