Поглиблений курс розробки на Python
Розділ
>
Рівень
Обробка винятків
Обробка виключень
Мета
Упакуйте запаси в коробки та обробіть можливі помилки, використовуючи Exceptions.
Є декілька аварійних матеріалів, які потрібно упакувати в набори та зберігати в ящиках для подальшого використання. Це досить просто і може бути виконано за допомогою звичних функцій, які ви вже засвоїли, проте інколи все йде не за планом. Під час програмування ви могли помітити, що інколи на екрані з’являються помилки, а в редакторі позначаються червоні мітки у місці виникнення проблеми. Ви можете запобігти цьому, налаштувавши блоки коду try та except.
Ці блоки коду використовуються для створення винятків і обробки помилок, перш ніж вони зупинять виконання вашого коду. Суть у тому, що ви використовуєте try для проблемного коду або коду, який може містити помилки, а except щоб замінити його іншим кодом у випадку виникнення помилки, наприклад:
#The try code block attempts to run a code try: number + number + string #This code yeilds an error, you can't sum numbers with string except: #If an error occurs the except code block is run instead number + number + number #The code is switched out by a sum of three numbers instead
Для початку, зберіть усі матеріали у полі, а саме: каністри з водою, "thread" та три кольорових ковдри: "blue blanket", "red blanket", "green blanket". Почніть з підіймання на верхню частину карти та заберіть три ковдри, потім пройдіть до позначки світлого X і використайте функцію collect(), щоб отримати з контейнера "thread". Після цього перемістіться до нижньої частини карти та заберіть усі каністри з водою.
Як тільки все зібрано, вирушайте до темної позначки X на синьому килимі, щоб почати розміщувати щойно зібрані матеріали. Спершу додайте воду та нитку у змінні з відповідною кількістю одиниць: 2 та 3 відповідно, наприклад: water_can = 2 та thread = 3. Потім сформуйте набори як змінні, додаючи попередньо створені змінні з кольоровими ковдрами у наступному форматі:
blue_kit = water_can + thread + "blue blanket" red_kit = water_can + thread + "red blanket" green_kit = water_can + thread + "green blanket" # Add all elements together into kits for ease of storage
Як тільки набори зібрані у змінних blue_kit, red_kit, green_kit, настав час розмістити їх у ящики відповідного кольору. Однак ви могли помітити, що код видає помилку. Але чому? Все зроблено правильно, і інструкції виконані. Іноді, незважаючи на інтуїцію, деякі речі не працюють так, як нам хотілося б – в цьому випадку, ви не можете додати число до рядка у змінній.
Отже, як же виправити це? За допомогою блоків коду try / except, щоб зловити помилку та перетворити її на відповідну заміну. Для кожної з трьох змінних застосуйте ці винятки, які у випадку помилки замінюють код числовим значенням замість конкретного рядка.
try: blue_kit = water_can + thread + "blue blanket" except: blue_kit = water_can + thread + 1
Хоча в цьому випадку ми знаємо про помилку, є ситуації, коли значення всередині змінних можуть бути не такими однозначними або можуть відрізнятися залежно від певних умов, що робить цей інструмент корисним для пошуку та усунення помилок під час виконання.
Завершіть рівень, пройшовши до темних позначок X на килимах відповідних кольорів, зверніться до ящиків та використайте функцію place(), щоб розмістити набори змінних відповідного кольору у правильні ящики.