11.12 Наследование и исключения
Оформление подкаталога в репозитории для автоматической проверки задач с помощью checker.py
Задача для автоматической проверки: ввести строку; вывести строку, состоящую из двух копий введённой строки
файл data/1.in:
Round"
Файл data/1.out`
RoundRound
пример: "TOR" -> "TORТOR"
Задача_1. Ввести строку; вывести строку, состоящую из двух копий введённой строки. Скопировать тестовые файлы у соседа, добавить их в свой комплект тестов, проверить)
Всего должно получиться четыре теста, если не скопировали в классе, напишите сами (они такие же неинтересные, как и сама задача)
Проверить, что они проходят checker.py
Как написать тест на класс/функцию? См. пример в правлах оформления репозитория
- Наследование
Попробуем унаследоваться от str и добавить туда унарный - (который будет переворачивать строку)
В чём проблема?
Как эта проблема решена в collections.UserString
Задача_2. Написать класс nestr, в котором будет унарный -
Написать тест на работоспособность — выражение, в котором будут участвовать разные операции над данными типа nestr — унарный минус, умножение на число, сложение, секционирование
Написать тест на то, что тип операции унарный - и + — это nestr (просто выражение вида str(type(какие-то операции))+str(type(какие-то ещё операции))
- Исключения
Программа, которая заставляет человека вводить число до тех пор, пока он не введёт число
Задача_3. Написать программу, которая заставляет человека вводить координаты вершин треугольника в формате (x1, y1), (x2, y2), (x3, y3), до тех пор, пока это не окажутся координаты вершин треугольника в указанном формате, а потом выводит его площадь с точностью до сотой. Если формат ввода неправильный, программа вместо площади выводит «Invalid input», а если формат правильный, но площадь его нулевая или вычислить её нельзя (потому что введены не числа, например) — «Not a triangle».
- Написать тесты на неправильный формат
- Написать тесты на не-треугольник
Подсказка (x1, y1), (x2, y2), (x3, y3) = eval(input()) спасут немного времени
- Пример работы:
asdf Invalid input 1,2,3,4,5,6 Invalid input (1,1), (2,2), (11,11) Not a triangle (1,2), (4,5), (9,8) 3.00
Д/З
Привести все решения этого и прошлого занятия в вид, пригодный для checker-а
- Оформить тесты и эталонные файлы (минимум по два к каждой Задаче_№)
- Убедиться, что checker работает на ваших домашних компьютерах (и тесты проходят, разумеется)
Обратите внимание на наличие/отсутствие символа «\n» в конце эталона, если вы зачем-то не генерируете его своей программой с помощью «… > эталон», а делаете руками
Если неработает, сообщить об этом FrBrGeorge (лучше в Telegram)