Ты прислал два файла без текста, поэтому я сделал то же, что в прошлый раз: конспект и решение заданий. Задания взял из Word-файла (Python), а PDF это лекция на C# про то же самое.
## Мини-конспект
- **Исключение** это ситуация, которая может привести к аварийному завершению программы. Примеры: деление на ноль, неверный формат числа, выход за границы списка.
- Исключения ловят конструкцией `try / except / finally`:
- в `try` кладут опасный код;
- в `except` пишут, что делать при ошибке (блоков может быть несколько, под разные типы);
- `finally` выполняется всегда и необязателен.
- `except Тип as e` даёт доступ к объекту ошибки (`print(e)` покажет сообщение).
- Частые типы: `ValueError` (неверный тип данных, например `int("abc")`), `ZeroDivisionError` (деление на 0), `KeyboardInterrupt` (Ctrl+C).
- Исключение можно выбросить самому: `raise Exception("текст")`.
- В C# то же самое называется `try-catch-finally`, исключения `FormatException` и `DivideByZeroException`.
## Решения
**Задания 1–3** (в одной программе, каждое следующее дополняет предыдущее):
```python
try:
n = int(input("Введите целое число: "))
print(n)
if n == 0:
raise ZeroDivisionError("Деление на 0.")
print(5 / n)
except ValueError:
print("Ошибка: это не целое число.")
except KeyboardInterrupt:
print("ну и ладно...")
except ZeroDivisionError as e:
print(e)
```
- Задание 1: нужен `except ValueError`.
- Задание 2: при Ctrl+C выбрасывается `KeyboardInterrupt`, его определяют опытным путём, нажав Ctrl+C во время ввода.
- Задание 3: перед делением проверяем `n == 0` и выбрасываем `ZeroDivisionError` через `raise`.
**Задание 4** (корни квадратного уравнения):
```python
try:
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
if a == 0:
raise Exception("a = 0, уравнение не квадратное.")
D = b ** 2 - 4 * a * c
if D == 0:
raise Exception("D = 0, один корень.")
if D < 0:
raise Exception("D < 0, действительных корней нет.")
x1 = (-b + D ** 0.5) / (2 * a)
x2 = (-b - D ** 0.5) / (2 * a)
print(x1, x2)
except ValueError:
print("Ошибка: нужно вводить числа.")
except Exception as e:
print(e)
```
Проверку `D < 0` я добавил от себя, её в задании нет. Без неё при отрицательном D Python выдаст комплексные числа вместо действительных корней. Логику проверил на четырёх наборах: `(1,-3,2)` даёт корни 2 и 1, а `a = 0`, `D = 0` и `D < 0` дают свои сообщения.
Порядок `except` важен: `except Exception` стоит последним, иначе он перехватит всё раньше конкретных типов.
Если нужен Word-файл, как в прошлый раз, или ответы на контрольные вопросы из PDF, скажи.