📝 Задания для самопроверки

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

  • Тест из 12 вопросов по исключениям, логированию и файловой системе.
  • Мини-задача 1 — найти все .txt файлы в директории, переданной через аргументы.
  • Мини-задача 2 — безопасно преобразовать строку в число с записью ошибок в лог.

🏁 Тест по пройденному материалу

Выберите правильный вариант ответа. Решения и пояснения — на странице Решения.

Вопрос 1. Какой результат выведет код?

try:
    d = {"a": 1, "b": 2}
    print(d["c"])
except IndexError:
    print("Ключ не найден")
except Exception:
    print("Ошибка")
  1. Ключ не найден
  2. Ошибка
  3. Программа завершится с ошибкой
  4. Ничего не произойдёт

Вопрос 2. Какой результат выведет код?

try:
    num = int("hello")
except ValueError:
    print("Ошибка преобразования", end=" | ")
finally:
    print("Блок finally")
  1. Ошибка преобразования
  2. Блок finally
  3. Ошибка преобразования | Блок finally
  4. Программа завершится с ошибкой

Вопрос 3. Какой результат выведет код?

try:
    print("Начало")
    raise ValueError
except ZeroDivisionError:
    print("Ошибка деления на ноль")
except Exception:
    print("Общее исключение")
finally:
    print("Блок finally")
  1. Начало | Ошибка деления на ноль | Блок finally
  2. Начало | Блок finally
  3. Начало | Общее исключение
  4. Начало | Общее исключение | Блок finally

Вопрос 4. Какой блок выполняется всегда, независимо от наличия исключений?

  1. try
  2. except
  3. else
  4. finally

Вопрос 5. Какой параметр logging.basicConfig() задаёт формат вывода логов?

  1. filename
  2. level
  3. format
  4. log_format

Вопрос 6. Какой символ обозначает родительскую директорию?

  1. \
  2. /
  3. .
  4. ..

Вопрос 7. Какой метод проверяет существование пути?

  1. os.exists(path)
  2. os.file_exists(path)
  3. os.path.exists(path)
  4. os.is_file(path)

Вопрос 8. Какой метод создаст вложенные директории, если их ещё нет?

  1. os.mkdir(path)
  2. os.makedirs(path, exist_ok=True)
  3. os.create_directories(path)
  4. os.create_folders(path)

Вопрос 9. Как переименовать файл old.txt в new.txt?

  1. os.rename("old.txt", "new.txt")
  2. os.move("old.txt", "new.txt")
  3. os.change_name("old.txt", "new.txt")
  4. os.rename_file("old.txt", "new.txt")

Вопрос 10. Какой метод возвращает только имя файла из полного пути?

  1. os.path.split(path)
  2. os.path.basename(path)
  3. os.path.dirname(path)
  4. os.path.getfilename(path)

Вопрос 11. Какие утверждения о os.path.join() верны?

  1. Он корректно соединяет пути независимо от операционной системы.
  2. Он позволяет избежать ошибок при ручном объединении путей.
  3. Он изменяет текущую директорию.
  4. Он создаёт новый файл или папку.

Вопрос 12. Что напечатает код при запуске python script.py?

import sys
if len(sys.argv) > 1:
    print(sys.argv[1])
else:
    print("Нет аргументов")
  1. script.py
  2. script.py Нет аргументов
  3. Нет аргументов
  4. Ошибка выполнения

🏋️ Мини-задачи

Мини-задача 1. Поиск текстовых файлов

Напишите скрипт, который принимает путь к директории через sys.argv, рекурсивно ищет все файлы с расширением .txt и выводит их полные пути. Если директория не существует, выведите понятное сообщение.

Пример запуска:

python find_txt.py /home/user/docs

Мини-задача 2. Безопасное преобразование с логированием

Напишите функцию safe_int(value: str), которая пытается преобразовать строку в целое число. При успехе возвращает число, при ошибке ValueError записывает сообщение в файл conversion.log и возвращает None.

Пример:

print(safe_int("42"))   # 42
print(safe_int("abc"))  # None, ошибка записана в conversion.log

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

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

Вопрос 1

Как лучше использовать summary-урок?

Вопрос 2

Что показывает хороший результат после повторения блока?

Вопрос 3

Какой вопрос стоит задать себе после каждого ответа?

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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

Вопрос 7

Что делает аннотация типа в Python?

Вопрос 8

Как лучше обрабатывать ожидаемую ошибку преобразования?