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

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

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

Коротка функція обмежує значення зверху, але має помилку на межі. Варіант визначає 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 list відкриті контрольні значення
limit int верхня межа результату

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

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

Назви полів результату не змінюйте. Перша комірка лише показує значення варіанта і не створює предметні змінні. У кожному завданні самостійно присвойте потрібним вхідним змінним показані значення. Результуючі й проміжні змінні створюйте звичайними присвоєннями. Імена з префіксом alp_ службові.

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: LR31_Прізвище_Група_VNN.pdf.