Перейти до змісту

ЛР34. Анотації типів, тести й аналіз правдоподібного коду

Коротко про роботу

Коротка функція обмежує значення зверху, але має помилку на межі. Варіант визначає STUDENT_X.

Відкрити робочий зошит Як виконувати лабораторні

1. Умова

Коротка функція обмежує значення зверху, але має помилку на межі.

Усі обчислення виконуйте з даними свого STUDENT_X. Значення варіанта друкує перша комірка зошита.

2. Що треба знати

Робота виконується після Л1–Л13. Потрібні поняття:

  1. анотації типів
  2. тести
  3. граничні випадки
  4. аналіз коду

Межа матеріалу

Використовуйте поняття, вивчені до Л1–Л13. Не використовуйте динамічне виконання коду, exec або прихований глобальний стан.

3. Варіант, вхідні дані та результат

У зошиті заповніть STUDENT_NAME, STUDENT_GROUP і STUDENT_X від 1 до 30.

Вхідні дані

Поле Зміст
probe_inputs відкриті контрольні значення
limit верхня межа результату

Поля результату

Поле Зміст
probe_outputs результати виправленої функції на контрольних даних
regression_ok ознака проходження відкритого набору регресійних тестів

Назви полів результату не змінюйте.

4. Терміни і правила

Терміни

  • відтворити дефект — отримати помилковий результат на конкретних даних до виправлення.
  • регресійний тест — тест, який після виправлення підтверджує, що відомий дефект більше не виникає.
  • анотація типу — анотація очікуваного типу параметра або результату в Python.

Правила

  1. Початковий дефект: для value >= limit помилкова версія повертає limit - 1 замість limit.
  2. До виправлення використайте контрольне значення, що дорівнює limit, і покажіть невідповідність очікуванню.
  3. Виправлена capped(value: int, limit: int) -> int повертає value, коли value < limit, інакше limit.
  4. regression_ok має бути true після перевірки всіх probe_inputs.

5. Завдання

Завдання 1

Перевірте помилкове правило на значенні value = limit. Покажіть, що воно повертає limit - 1 замість limit.

Завдання 2

Реалізуйте виправлену capped(value: int, limit: int) -> int.

Завдання 3

Обчисліть probe_outputs для всіх probe_inputs. Запишіть результат перевірок у regression_ok.

6. Перевірка і здача

  1. Запустіть самоперевірку та виправте помилки.
  2. Перезапустіть ядро і виконайте роботу ще раз від початку.
  3. Збережіть .ipynb і PDF з кодом та результатами.

Назва PDF: LR34_Прізвище_Група_VNN.pdf.