При выполнении программы могут возникать ошибки: файл не найден (при работе с файлами), деление на ноль, неправильный ввод данных. Если не обработать эти ошибки, программа остановится с сообщением об ошибке.
В этом уроке мы научимся обрабатывать ошибки с помощью конструкций try, except и finally, чтобы программы работали стабильно даже при неожиданных ситуациях.
try/except для обработки ошибок.ValueError, FileNotFoundError, ZeroDivisionError.else в конструкции try.finally для обязательных действий.Исключение (exception) — это ошибка, которая возникает во время выполнения программы. Если исключение не обработано, программа останавливается.
number = int(input()) # Если ввести "abc", возникнет ошибка ValueErrortry/exceptКонструкция try/except позволяет "поймать" ошибку и обработать её, не останавливая программу.
try:
# Код, который может вызвать ошибку
number = int(input("Введите число: "))
print(f"Вы ввели: {number}")
except:
# Код, который выполнится при ошибке
print("Ошибка! Вы ввели не число.")try / exceptValueError — ошибка значенияВозникает, когда значение не может быть преобразовано в нужный тип.
try:
number = int(input("Введите число: "))
print(f"Число: {number}")
except ValueError:
print("Ошибка! Вы ввели не число.")FileNotFoundError — файл не найденВозникает, когда программа пытается открыть несуществующий файл в режиме чтения.
try:
with open("data.txt", "r") as file:
content = file.read()
print(content)
except FileNotFoundError:
print("Файл не найден!")ZeroDivisionError — деление на нольВозникает при попытке разделить число на ноль.
try:
a = int(input("Введите делимое: "))
b = int(input("Введите делитель: "))
result = a / b
print(f"Результат: {result}")
except ZeroDivisionError:
print("Ошибка! Деление на ноль невозможно.")
except ValueError:
print("Ошибка! Вы ввели не число.")Можно обработать разные типы ошибок по-разному:
try:
number = int(input("Введите число: "))
result = 10 / number
print(f"Результат: {result}")
except ValueError:
print("Ошибка! Вы ввели не число.")
except ZeroDivisionError:
print("Ошибка! Деление на ноль невозможно.")
except Exception:
print("Произошла неизвестная ошибка.")else в tryБлок else выполняется, если в блоке try не возникло ошибок.
try:
number = int(input("Введите число: "))
except ValueError:
print("Ошибка! Вы ввели не число.")
else:
print(f"Вы успешно ввели число: {number}")finallyБлок finally выполняется всегда, независимо от того, была ошибка или нет.
try:
file = open("data.txt", "r")
content = file.read()
print(content)
except FileNotFoundError:
print("Файл не найден!")
finally:
file.close() # Файл закроется в любом случаеtry/except/else/finallytry:
# Код, который может вызвать ошибку
number = int(input("Введите число: "))
result = 100 / number
except ValueError:
# Обработка ошибки преобразования
print("Ошибка! Вы ввели не число.")
except ZeroDivisionError:
# Обработка деления на ноль
print("Ошибка! Деление на ноль невозможно.")
else:
# Выполняется, если ошибок не было
print(f"Результат: {result
Можно получить сообщение об ошибке, используя as:
try:
number = int(input("Введите число: "))
except ValueError as e:
print(f"Ошибка: {e}")Что произойдёт, если в этом коде ввести строку "abc"?
number = int(input("Введите число: "))Что выведет этот код, если ввести "abc"?
try:
number = int(input("Введите число: "))
print(f"Число: {number}")
except ValueError:
print("Ошибка! Вы ввели не число.")Что выведет этот код, если ввести 0?
try:
a = int(input("Введите число: "))
result = 10 / a
print(f"Результат: {result}")
except ZeroDivisionError:
print("Деление на ноль!")
except ValueError:
print("Не число!")Что выведет этот код, если ввести 5?
try:
number = int(input("Введите число: "))
except ValueError:
print("Ошибка!")
else:
print(f"Успешно: {number}")Что выведет этот код в любом случае?
try:
number = int(input("Введите число: "))
print(number)
except ValueError:
print("Ошибка!")
finally:
print("Завершено")Напиши программу, которая запрашивает у пользователя число и выводит его удвоенное значение. Если пользователь введёт не число, программа должна вывести "Ошибка! Вы ввели не число."
try:
number = int(input("Введите число: "))
print(f"Удвоенное значение: {number * 2}")
except ValueError:
print("Ошибка! Вы ввели не число.")Напиши программу, которая пытается открыть файл data.txt и вывести его содержимое. Если файл не найден, программа должна вывести "Файл не найден!"
try:
with open("data.txt", "r") as file:
content = file.read()
print(content)
except FileNotFoundError:
print("Файл не найден!")try/except позволяет обработать ошибки и продолжить работу программы.ValueError, FileNotFoundError, ZeroDivisionError.else выполняется, если ошибок не было.finally выполняется всегда, независимо от наличия ошибок.except без типа исключения — важные ошибки скроются, и отладка станет сложнее.else и finally — программа завершится ошибкой или даст неверный результат.try/except/else/finally — результат станет непредсказуемым.finally для закрытия файлов вместо with — программа завершится ошибкой или даст неверный результат.Напиши программу, которая запрашивает у пользователя число и выводит его квадрат. Если пользователь введёт не число, программа должна вывести "Ошибка! Вы ввели не число."
Напиши программу, которая запрашивает у пользователя два числа и выводит результат их деления. Обработай возможные ошибки:
Напиши программу, которая пытается открыть файл data.txt и вывести его содержимое. Если файл не найден, программа должна вывести "Файл не найден!"
Напиши программу, которая запрашивает у пользователя число. Если число введено корректно, программа должна вывести "Вы успешно ввели число: <число>". Используй блок else.
Напиши программу, которая запрашивает у пользователя индекс элемента в списке [10, 20, 30, 40, 50] и выводит значение по этому индексу. Обработай ошибку IndexError, если индекс выходит за границы списка.
Напиши программу, которая:
finally).Напиши программу, которая запрашивает у пользователя строку и пытается преобразовать её в число. Обработай ошибку ValueError и выведи сообщение об ошибке, используя переменную с информацией об ошибке (as e).
Напиши программу-калькулятор, которая:
Дан вложенный словарь. Напиши функцию safe_get(d, *keys), которая по цепочке ключей возвращает значение или None, если любой ключ отсутствует. Пример: safe_get({"a": {"b": 1}}, "a", "b") → 1; safe_get({"a": {}}, "a", "c") → None.
Напиши программу, которая запрашивает число. При вводе нечисловой строки выводит сообщение и предлагает ввести снова. Цикл — пока не будет введено корректное число.