Coding for KidsCoding for Kids
Креативні РівніВикликиПосібник для Вчителів
Голосувати за функції
Поглиблений курс розробки на Python
Розділ
>
Рівень

Обробка винятків
Налаштування класів виключень

Мета

Перевірте зібрану дощову воду та переконайтеся, що вона обробляється та правильно передається, налаштовуючи класи винятків.

На дальньому кінці даху знаходиться цистерна зібраної дощової води, ця вода фільтрується та передається по всій будівлі для різних потреб. Деякі клапани на верхній стіні контролюють потік води, а в останньому сховищі розміщено різні водонагрівачі. Робота машин може бути складною, проте їх експлуатацію можна оптимізувати, визначивши коди помилок та запровадивши ефективні протидії. Це досягається шляхом налаштування класів винятків, які ви створюєте для своїх користувацьких винятків.

У редакторі коду налаштовано два класи користувацьких винятків, і ваша здатність використовувати їх буде вирішальною для усунення будь-яких проблем з машинами, з якими ви зіткнетеся. Перший виняток використовується для усунення неполадок тиску води. Він призначений для використання з клапанами, щоб переконатися, що вода правильно подається до комплексу або, якщо потрібно, коригувати тиск. Залежно від того, чи є тиск меншим за 100 або більшим за 300, виняток виконує різні дії, де тиск є аргументом, який користувач повинен надати. Після активації відображається спливаюче вікно з кодом помилки та повідомленням.

class PressureError(Exception): def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404): self.pressure = pressure self.message = message self.error_code = error_code super().__init__(self.message) async def __str__(self): await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure)) if self.pressure < 100: return ("Valve has been closed") if self.pressure > 360: return ("Valve has been opened")

Другий клас користувацького винятку призначений для регулювання температури у водонагрівачах. Якщо температура занадто низька або занадто висока, ви повинні ввести нову температуру як аргумент, щоб виправити помилку після її виникнення.

class TemperatureError(Exception): def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808): self.temp = temp self.message = message self.error_code = error_code super().__init__(self.message) async def __str__(self): await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp)) return ("Temperature Corrected")

Для початку, пройдіть до світлої позначки X на зеленому килимі та поверніться до резервуара з клапаном; існує чотири (4) такі, що регулюють тиск води, що закачуються з цистерни. Є чотири (4) змінні константи: green_pressure, red_pressure, blue_pressure та orange_pressure, які зберігають тиск у кожному з резервуарів відповідних кольорових килимів.

На всіх світлих позначках X використовуйте послідовність блоків коду try/except та else для перевірки, чи є тиск у кожному резервуарі відповідним. Якщо тиск нижчий за 100 або вищий за 300, викликайте користувацький виняток PressureError і додавайте тиск як аргумент. Якщо виняток активовано, він видасть код помилки і виконає необхідну корекцію, інакше спрацює блок else, підтверджуючи, що тиск у резервуарі нормальний. Наприклад:

try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: player.speak(x) else: player.speak( "Pressure is appropriate" )

Зробіть це на всіх світлих позначках X, використовуючи змінні константи, що відповідають кожному з кольорових килимів, та перевірте або відрегулюйте клапани тиску за потребою.

Після цього перейдіть до золотого позначення X та використайте функцію open() для доступу до сховища з водонагрівачем. Опинившись всередині, пройдіть до золотого позначення X, яке знаходиться в середині сховища, і використайте функцію read() для читання записки на прилавку. Ця записка надасть вам інформацію про ідеальну температуру для кожного з водонагрівачів.

Після отримання інформації про кожну з температур перейдіть до темного позначення X на фіолетовому килимі. Тут ми використаємо послідовність коду try/except та else для перевірки, чи мають водонагрівачі правильну температуру. Є ще чотири (4) змінні константи, пов'язані з кольоровими килимами: purple_temperature, yellow_temperature, pink_temperature та white_temperature.

У цій послідовності ми перевіримо, чи є температура нижчою за 100; якщо так, то викликаємо виняток TemperatureError. Як користувацький виняток, він приймає аргумент. У цьому випадку ви повинні ввести температуру, зазначену у записці, щоб належним чином виконати захід для корекції проблеми. Наприклад:

try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: player.speak(x) else: player.speak( "Temperature is ok" )

Зробіть це для всіх водонагрівачів; на кожному позначенні X, повертаючись до нагрівачів, виконайте послідовність, використовуючи змінні константи, що відповідають правильним кольоровим килимам, щоб завершити рівень.

Книга Коду