|
|
| Строка 1: |
Строка 1: |
| == Домашнее задание №1 ==
| |
|
| |
|
| В этом задании вам надо будет внести изменения в файл propositions/syntax.py
| |
|
| |
| ==== Задание 1.1 (Task 1.1)====
| |
| В файле мето отмечено следующим комментарием: # Task 1.1
| |
|
| |
| Реализуйте недостающий код для метода __repr__() класса Formula, который возвращает строку, представляющую формулу (в синтаксисе, определённом в Определении 1.1).
| |
|
| |
| Обратите внимание, что в Python строка, возвращаемая методом formula.__repr__(), также возвращается вызовом str(formula). Таким образом, решив эту задачу, вы также реализуете функциональность метода str() для данного класса.
| |
|
| |
| ==== Задание 1.2 (Task 1.2) ====
| |
| Реализуйте недостающий код для метода variables() класса Formula, который возвращает множество (set) имен переменных, присутствующие в формуле. Напомним, что имя переменной — это лист дерева, метка которого является буквой от «p» до «z», за которой следуют цифры.
| |
|
| |
| ==== Задание 1.3 (Task 1.3) ====
| |
|
| |
| Реализуйте недостающий код для метода operators() класса Formula, который возвращает все операторы, присутствующие в формуле. Операторами в этом задании являются не только все унарные и бинарные операторы, но и константы T и F.
| |
|
| |
| ==== Задание 1.4 (Task 1.4)====
| |
|
| |
| Реализуйте недостающий код для статического метода _parse_prefix(string) класса Formula, который принимает строку, и возвращает формулу (объект типа Formula), созданное из префикса строки, а также строку, содержащую непроанализированный остаток строки (которая может быть пустой, если вся строка образует формулу). Обратите внимание, что формула это очень строгое формальное понятие, обратите внимание на скобки.
| |
|
| |
| ==== Задание 1.5 (Task 1.5)====
| |
|
| |
| Реализуйте недостающий код для статичного метода is_formula(string) класса Formula, который проверяет, представляет ли заданная строка корректную формулу.
| |
|
| |
| Подсказка: используйте метод _parse_prefix().
| |
|
| |
| ==== Задание 1.6 (Task 1.6)====
| |
|
| |
| Реализуйте недостающий код для статичного метода parse(string) класса Formula, который разбирает строковое представление формулы. (Можно предположить, что входная строка корректна, то есть удовлетворяет предусловию Formula.is_formula(string), в коде уже есть соответствующий assert)
| |
|
| |
| Чтобы проверить верно ли вы сделали все задание надо в корне папки запустить файл test_chapter01.py
| |