Python >

Разработка программных модулей

2024-2025 учебный год

Практические занятия

Практика 10 
Использование стандартных интерфейсов  
1. Написать функцию season, принимающую 1 аргумент — номер месяца (от 1 до 12), и возвращающую время года, которому этот месяц принадлежит (зима, весна, лето или осень).
Пример 1

def season(month: int) -> str:
    """
    Return season of year.

        Args:
            month (int): month number.

        Returns:
            str: season name.
    """
    # code of function

Test: print(season.__doc__)
2. Написать функцию is_year_leap, принимающую 1 аргумент — год, и возвращающую true, если год високосный, и false иначе.
3. Написать функцию date, принимающую 3 аргумента — день, месяц и год. Вернуть true, если такая дата есть в нашем календаре, и false иначе.
4. Написать функцию, которая ищет минимальную цифру в целом числе.
5. Количество аргументов. Напишите функцию args_counter(), которая принимает произвольное количество аргументов, выводит на экран количество переданных аргументов, а затем возвращает его.
6. Именованные аргументы. Напишите функцию print_info(), которая принимает произвольное количество именованных аргументов. Данная функция должна построчно выводить на экран именованные аргументы в виде пары <Ключ> = <Значение>, причем ключи должны следовать в алфавитном порядке.
7. Словарь с характеристиками персонажа. Напишите функцию create_character(), которая принимает произвольное количество именованных аргументов и возвращает словарь с характеристиками персонажа. Если функции create_character() не передавать никаких аргументов, то она должна возвращать базовый словарь с ключами name, surname, age. Вот так он выглядит.
Пример 1
Если передавать именованные параметры, которые отсутствуют в базовом словаре, они дополняются к этому словарю.
Код:
create_character(height=180, author='Артур Конан Дойл')

Вывод:
{
  'name': 'Шерлок',
  'surname': 'Холмс',
  'age': 42,
  'height': 180,
  'author': 'Артур Конан Дойл'
}
Пример 2
Если передавать именованные параметры, которые совпадают с ключами базового словаря, то значения в словаре должны заменяться переданными значениями.
Код:
create_character(name='Джон',surname='Уотсон' )

Вывод:
{
  'name': 'Джон',
  'surname': 'Уотсон',
  'age': 42,
}
Напишите определение функции.
Тесты
Входные данные:
height:180,author:Артур Конан Дойл

Выходные данные:
{'name': 'Шерлок', 'surname': 'Холмс', 'age': 42, 'author': 'Артур Конан Дойл', 'height': '180'}

Входные данные:
name:Джон,surname:Уотсон
Выходные данные:
{'name': 'Джон', 'surname': 'Уотсон', 'age': 42}

Входные данные:
name:Пикачу,height:40,color:Yellow

Выходные данные:
{'name': 'Пикачу', 'surname': 'Холмс', 'age': 42, 'color': 'Yellow', 'height': '40'}

Входные данные:
name:Евгений,surname:Онегин,age:26,height:160,author:Александр Сергеевич Пушкин

Выходные данные:
{'name': 'Евгений', 'surname': 'Онегин', 'age': '26', 'author': 'Александр Сергеевич Пушкин', 'height': '160'}
Домашнее задание
Использование стандартных интерфейсов. 
Применение интерфейсов итераторов. 
Свойства и методы интерфейсов IEnumerator, IEnumerable, IDisposable. 
Сравнение объектов с помощью интерфейсов ICompararer и IComparable. 
Интерфейс IEnumerable, цикл foreach. 
Интерфейс IList, методы IndexOf(), Insert(), RemoveAt(). 
Интерфейс ICollection, методы Add(), Clear(), CopyTo(), Remove().