Загрузка...

Вызвать ошибку самому

До сих пор остановка шла из самой строки: либо деление на ноль, либо имя, которому не дали значение. raise — другой путь. Остановку вы пишете в программе сами, имя выбираете вы и рядом ставите короткое сообщение.

остановку пишете вы, water не выполняется

python
raise ValueError("empty")
print("water")

Программа останавливается на raise. На экране ValueError и слово empty. До print("water") очередь не доходит. Деления здесь нет. Эту остановку сделал raise, а не счёт.

ноль чашек входит в if и вызывает остановку

python
cups = 0
if cups < 1:
    raise ValueError("empty")
print("water")

Эта программа начинается заново. cups равно 0. Ноль меньше единицы, поэтому вход в if есть и raise выполняется. На экране снова та же остановка: ValueError и слово empty. water не пишется. На этой странице остановку никто не ловит, и программа на этом заканчивается.

три чашки обходят raise и пишут water

python
cups = 3
if cups < 1:
    raise ValueError("empty")
print("water")

Эта тоже начинается заново. Теперь cups равно 3. Три не меньше единицы, поэтому в if не входят. raise не выполняется. Экран пишет только water, и остановки нет.

Строка raise сдвинута вправо под if. Этот отступ и помещает её внутрь if. print("water") не сдвинут. Если raise выполнился, программа уже остановилась и очередь до water не доходит. Если if пропущен, water выполняется.

Имя рядом с raise — ValueError, не ZeroDivisionError. ZeroDivisionError был у деления на ноль. Здесь число чашек не годится, поэтому остановка называется ValueError. Если позже её ловить, except должен назвать ValueError. except ZeroDivisionError эту не ловит. Такой ловли нет в программах этой страницы. То, что в кавычках, — сообщение. empty вы поставили сами, чтобы оно было видно рядом с именем. Python не пишет туда None.

Следующая страница — файлы. Эта страница только показывает, как остановку вызываете вы сами. Файл она не открывает.

Чашки и остановка, которую вы написали

Первая программа останавливается на raise, и water не пишется. При cups равном 0 вход в if есть и приходит та же остановка. При cups равном 3 raise не выполняется, и экран пишет water. Имя этой остановки — ValueError. Следующая страница — файлы.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
4
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху