Различия между версиями 16 и 17
Версия 16 от 2020-11-19 19:01:50
Размер: 4712
Редактор: FrBrGeorge
Комментарий:
Версия 17 от 2021-11-11 15:56:49
Размер: 4828
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 22: Строка 22:
 * <!> Задача_3. Написать программу, которая заставляет человека вводить координаты вершин треугольника в формате `(x1, y1), (x2, y2), (x3, y3)`, до тех пор, пока это не окажутся координаты вершин треугольника в указанном формате, а потом выводит его площадь с точностью до сотой. Если формат ввода неправильный, программа вместо площади выводит «`Invalid input`», а если формат правильный, но площадь его нулевая — «`Not a triangle`».  * <!> Задача_3. Написать программу, которая заставляет человека вводить координаты вершин треугольника в формате `(x1, y1), (x2, y2), (x3, y3)`, до тех пор, пока это не окажутся координаты вершин треугольника в указанном формате, а потом выводит его площадь с точностью до сотой. Если формат ввода неправильный, программа вместо площади выводит «`Invalid input`», а если формат правильный, но площадь его нулевая или вычислить её нельзя (потому что введены не числа, например) — «`Not a triangle`».

11.12 Наследование и исключения

  • Оформление подкаталога в репозитории для автоматической проверки задач с помощью checker.py

  • {i} Задача для автоматической проверки: ввести строку; вывести строку, состоящую из двух копий введённой строки

    • файл data/1.in:

      • Round"

    • Файл data/1.out`

      • RoundRound

    • пример: "TOR" -> "TORТOR"

  • <!> Задача_1. Ввести строку; вывести строку, состоящую из двух копий введённой строки. Скопировать тестовые файлы у соседа, добавить их в свой комплект тестов, проверить)

    • Всего должно получиться четыре теста, если не скопировали в классе, напишите сами (они такие же неинтересные, как и сама задача)

    • Проверить, что они проходят checker.py

  • Как написать тест на класс/функцию? См. пример в правлах оформления репозитория

  • Наследование
  • Попробуем унаследоваться от str и добавить туда унарный - (который будет переворачивать строку)

    • {i} В чём проблема?

  • Как эта проблема решена в collections.UserString

  • <!> Задача_2. Написать класс nestr, в котором будет унарный -

    • Написать тест на работоспособность — выражение, в котором будут участвовать разные операции над данными типа nestr — унарный минус, умножение на число, сложение, секционирование

    • Написать тест на то, что тип операции унарный - и + — это nestr (просто выражение вида str(type(какие-то операции))+str(type(какие-то ещё операции))

  • Исключения
  • {i} Программа, которая заставляет человека вводить число до тех пор, пока он не введёт число

  • <!> Задача_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)

LecturesCMC/PythonIntro2020/Prac/10_Inheritance (последним исправлял пользователь FrBrGeorge 2021-11-11 15:56:49)