Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание в ОНЛАЙН ШКОЛУ ТЕТРИКА


Задание 1

Необходимо реализовать декоратор @strict. Декоратор проверяет соответствие типов переданных в вызов функции аргументов типам аргументов, объявленным в прототипе функции.

Условия:

  • Аннотации типов аргументов можно получить из атрибута объекта функции func.__annotations__ или с помощью модуля inspect.
  • При несоответствии типов должно бросаться исключение TypeError.
  • Гарантируется, что параметры в декорируемых функциях будут следующих типов: bool, int, float, str.
  • В декорируемых функциях не будет значений параметров, заданных по умолчанию.

Задание 2

Необходимо реализовать скрипт, который будет получать с русскоязычной Википедии список всех животных из категории «Животные по алфавиту» и записывать в файл в формате beasts.csv количество животных на каждую букву алфавита.

Пример содержимого файла:

А,642 Б,412 В,....

Примечание:

  • Анализ текста производить не нужно.
  • Считается любая запись из категории (включая названия родов и других таксономических единиц).

Задание 3

Когда пользователь заходит на страницу урока, сохраняется время его захода. Когда пользователь выходит с урока (или разрывает соединение с сервером), фиксируется время выхода.

Описание данных:

Время присутствия каждого пользователя хранится в виде интервалов. В функцию передается словарь с тремя ключами:

  • lesson — начало и конец урока.
  • pupil — интервалы присутствия ученика.
  • tutor — интервалы присутствия учителя.

Особенности:

  • Интервалы — это список из чётного количества элементов:
    • Чётные индексы: время входа.
    • Нечётные индексы: время выхода.

Цель:

Написать функцию appearance, которая принимает на вход словарь с интервалами и возвращает общее время (в секундах), когда ученик и учитель одновременно присутствовали на уроке.


Пример входных данных и тестов:

def appearance(intervals: dict[str, list[int]]) -> int:
    pass

tests = [
    {
        'intervals': {
            'lesson': [1594663200, 1594666800],
            'pupil': [1594663340, 1594663389, 1594663390, 1594663395, 1594663396, 1594666472],
            'tutor': [1594663290, 1594663430, 1594663443, 1594666473]
        },
        'answer': 3117
    },
    {
        'intervals': {
            'lesson': [1594702800, 1594706400],
            'pupil': [
                1594702789, 1594704500, 1594702807, 1594704542, 1594704512, 1594704513,
                1594704564, 1594705150, 1594704581, 1594704582, 1594704734, 1594705009,
                1594705095, 1594705096, 1594705106, 1594706480, 1594705158, 1594705773,
                1594705849, 1594706480, 1594706500, 1594706875, 1594706502, 1594706503,
                1594706524, 1594706524, 1594706579, 1594706641
            ],
            'tutor': [
                1594700035, 1594700364, 1594702749, 1594705148, 1594705149, 1594706463
            ]
        },
        'answer': 3577
    },
    {
        'intervals': {
            'lesson': [1594692000, 1594695600],
            'pupil': [1594692033, 1594696347],
            'tutor': [1594692017, 1594692066, 1594692068, 1594696341]
        },
        'answer': 3565
    },
]

if __name__ == '__main__':
    for i, test in enumerate(tests):
        test_answer = appearance(test['intervals'])
        assert test_answer == test['answer'], f'Error on test case {i}, got {test_answer}, expected {test["answer"]}'

About

Тестовое задание в онлайн-школу Тетрика

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages