|
|
| Строка 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
| |