Треки
/
Python
Python
/
Вправи
/
Точка зору
Точка зору

Точка зору

Складна

Вказівки

Змініть батьківський вузол дерева на вибраний вузол.

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

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

    +------0------+
    |      |      |
  +-1-+  +-2-+  +-3-+
  |   |  |   |  |   |
  4   5  6   7  8   9

Але в дереві немає притаманного йому напрямку. Ту саму інформацію можна подати з погляду будь-якого іншого вузла дерева, піднявши його до кореня й потягнувши за собою всі його звʼязки. Отже, те саме дерево з погляду вузла 6 мало б такий вигляд:

        6
        |
  +-----2-----+
  |           |
  7     +-----0-----+
        |           |
      +-1-+       +-3-+
      |   |       |   |
      4   5       8   9

Це дає змогу простіше описати шляхи між двома вузлами. Наприклад, шлях 6-9 (який у першому дереві йде вгору до кореня, а потім униз до іншого листка) можна побачити як шлях 6-2-0-3-9.

Ця вправа полягає в тому, що ми беремо дерево на вході та переорієнтовуємо його з погляду одного з вузлів.

Повідомлення винятків

Іноді потрібно згенерувати виняток. Коли ми це робимо, завжди варто долучати змістовне повідомлення про помилку, щоб указати, у чому полягає джерело помилки. Це робить код зрозумілішим і значно полегшує налагодження. Якщо ми знаємо, що джерело помилки матиме певний тип, можна згенерувати один із вбудованих типів помилок, але все одно слід додати змістовне повідомлення.

У цій конкретній вправі потрібно за допомогою інструкції raise «кинути» кілька ValueErrors, якщо класу Tree() передано дерево, яке неможливо переорієнтувати, або між start node та end node не вдається знайти шлях. Тести пройдуть лише тоді, коли ми і використаємо raise з очікуваним типом exception, і додамо до нього очікуване повідомлення.

Уважно перегляньте тести та їхні очікувані результати.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Python Exercism

Час розпочати Точка зору?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Python, а також 17 концепцій146 вправ та справжнє наставництво від людей, і все це безкоштовно.