Kodomo

Пользователь

Исключения

План рассказа

  1. Что такое стек вызовов
  2. Что такое исключительная ситуация (int(), open(), 1/0)? пример

  3. Как можно поступать в этом случае? (return, print, exit, исключение, continuation)
  4. Как это сделано в питоне?
  5. Обработка (try .. except)
  6. Сворачивание стека (пример).
  7. Создание человеческих сообщений об ошибках. stderr.
  8. Выход из нескольких вложенных циклов.
  9. Типы исключений.
  10. Обработка (try .. finally)
  11. assert

Контрольная работа

  1. Фамилия:
  2. Напишите функцию unique(items), которая получает на вход список из чисел или строк, который может содержать одинаковые элементы; и возвращает список из тех же элементов, не содержащий повторы, в любом порядке.






  3. * Напишите функцию duplicate(items), которая получает на вход список из чисел или строк, который может содержать одинаковые элементы; и возвращает список из тех элементов входного списка, которые встречались в нём 2 раза и больше.






Задание

Памятка: задание – то, что обязательно выполнить для получения зачёта; упражнения – необязательные, но как правило задание решить проще, если сначала выполнить все упражнения; если вы меня пнёте, выдам вам комментарии про то, что и как лучше, и по заданию, и по упражнениям.

Напишите программу sum-sqrt.py, которая получает на вход таблицу из двух столбцов в формате CSV, и записывает выходной файл её же, добавляя 3-й колонкой квадратный корень из суммы первых двух, либо 4-й колонкой сообщение об ошибке, если случилась проблема (например, неправильно записано число, число отрицательное или неправильное число столбцов во входной таблице). Программа должна принимать аргументы командной строки: опция -i (--in-file) определяет имя входного файла; опция -o (--out-file) определяет имя выходного файла.

Пример входного файла:

2,2

3,-4
4,-3
hello,1
1,2,3
3,6

Для него выход должен быть примерно таким (с точностью до вида сообщений и количества лишних запятых):

2,2,2,
,,,need more than 0 values to unpack
3,-4,,math domain error
4,-3,1,
hello,1,invalid literal for int () with base 0: 'hello'
1,2,,too many values to unpack
3,6,3,

Упражнения

...