Решение модуля 7.5 Добрый, добрый Python

Модуль 7.5 Функции с произвольным числом параметров.

Отметьте все верные объявления параметров функций.

def func(x, y, *args): pass
def func(*args): pass
def func(*args, x, y, type=True, **kwargs): pass
def func(*args, **kwargs): pass
def func(x, *args, type=True, **kwargs): pass
def func(*args, type=True, **kwargs): pass

def func(x, y, *args): passdef func(*args, x, y, **kwargs, type=True): passdef func(*args, **kwargs, type=True): passdef func(*args): passdef func(*args, x, y, type=True, **kwargs): passdef func(*args, **kwargs): passdef func(x, *args, type=True, **kwargs): passdef func(*args, type=True, **kwargs): pass

print(1, 2, 3)

Объявите функцию с именем get_even, которая принимает произвольное количество чисел в качестве аргументов и возвращает список, составленный только из четных переданных значений.

Функцию выполнять не нужно, только определить.

def get_even(*args: int) -> list:
    '''
    Объявите функцию с именем get_even, которая принимает произвольное количество
     чисел в качестве аргументов и возвращает список, составленный
      только из четных переданных значений.
    :param args: распакованный список
    :return: список
    '''
    return [i for i in args if i % 2 == 0]

Объявите функцию с именем get_biggest_city, которой можно передавать произвольное количество названий городов через аргументы. Данная функция должна возвращать название города наибольшей длины. Если таких городов несколько, то первый найденный (из наибольших). Программу реализовать без использования сортировки.

Функцию выполнять не нужно, только определить.

def get_biggest_city(*args: str) -> str:
    '''
    Объявите функцию с именем get_biggest_city,
    которой можно передавать произвольное количество названий городов через аргументы.
    Данная функция должна возвращать название города наибольшей длины.
    Если таких городов несколько, то первый найденный (из наибольших).
    :param args:
    :return:
    '''
    return max(args, key=len)

Объявите функцию с именем get_data_fig для вычисления периметра произвольного N-угольника. На вход этой функции передаются N длин сторон через аргументы. Дополнительно могут быть указаны именованные аргументы:

type — булево значение True/False
color — целое числовое значение
closed — булево значение True/False
width — целое значение

Функция должна возвращать в виде кортежа периметр многоугольника и указанные значения именованных параметров в порядке их перечисления в тексте задания (если они были переданы). Если какой-либо параметр отсутствует, его возвращать не нужно (пропустить).

Функцию выполнять не нужно, только определить.

def get_data_fig(*N, **kwargs):
    """
    get_data_fig(*N)
    N - длины сторон многоугольника
    **kwargs
        type - булево значение True/False
        color - целое числовое значение
        closed - булево значение True/False
        width - целое значение
    """
    perimetr = sum(N)
    t = (perimetr,)
    if "type" in kwargs:
        typ_e = kwargs["type"]
        t += (typ_e,)
    if "color" in kwargs:
        color = kwargs["color"]
        t += (color,)
    if "closed" in kwargs:
        closet = kwargs["closed"]
        t += (closet,)
    if "width" in kwargs:
        width = kwargs["width"]
        t += (width,)
    return t

(Для закрепления предыдущего материала). Вводится таблица целых чисел (см. пример ниже) размером N x N элементов (N определяется по входным данным). Эта таблица содержит нули, но кое-где — единицы. С помощью функции с именем verify, на вход которой передается двумерный список чисел, необходимо проверить, являются ли единицы изолированными друг от друга, то есть, вокруг каждой единицы должны быть нули.

Рекомендуется следующий алгоритм. В функции verify производить перебор двумерного списка. Для каждого элемента (списка) со значением 1 вызывать еще одну вспомогательную функцию is_isolate для проверки изолированности единицы. То есть, функция is_isolate должна возвращать True, если единица изолирована и False — в противном случае.

Как только встречается не изолированная единица, функция verify должна возвращать False. Если успешно доходим (по элементам списка) до конца, то возвращается значение True.

Функцию выполнять не нужно, только определить.

P. S. При реализации функции is_isolate не следует прописывать восемь операторов if. Подумайте, как это можно сделать красивее (с точки зрения реализации алгоритма). 

def is_isolate(lst_in, lenght, i , j):
    for ik in range(-1, 2):          # шаг смещения индекса строки (-1, 0 или 1)
        for jk in range(-1, 2):      # шаг смещения индекса столбца (-1, 0 или 1)
            i_ik = i + ik if (0 < i + ik < lenght) else i  # индекс строки со смещением
            j_jk = j + jk if (0 < j + jk < lenght) else j  # индекс столбца со смещением
            if i_ik != i or j_jk != j:
                if lst_in[i_ik][j_jk] == 1:
                    return False
    return True


def verify(lst_in):
    lenght = len(lst_in)            # размер квадратной матрицы
    for i in range(lenght):
        for j in range(lenght):
            if lst_in[i][j] == 1:
                flag = is_isolate(lst_in, lenght, i , j)
                if flag == False:
                    return False
    return True

(Для закрепления предыдущего материала). Объявите функцию с именем str_min, которая сравнивает две переданные строки и возвращает минимальную из них (то есть, выполняется лексикографическое сравнение строк). Затем, используя функциональный подход к программированию (то есть, более сложные функции реализуются путем вызова более простых), реализовать еще две аналогичные функции:

— с именем str_min3 для поиска минимальной строки из трех переданных строк;
— с именем str_min4 для поиска минимальной строки из четырех переданных строк.

Выполнять функции не нужно, только записать.

def str_min(a, b):
    """Функция возвращает 
    минимальную строку из двух
    """
    return min(a, b)

def str_min3(a, b, c):
    """Функция возвращает 
    минимальную строку из трех
    """
    return str_min(a, str_min(b, c))

def str_min4(a, b, c, d):
    """Функция возвращает 
    минимальную строку из четырех
    """
    return str_min(a, str_min3(b, c, d))

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

5 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
user
user
1 год назад

Когда продолжение?

Владимр
Владимр
1 год назад

Что-то не получается продолжить решение задач?

Владимр
Владимр
1 год назад

Спасибо за приведенные решения. Есть с чем сравнивать свои или находить ошибку в своем коде. Будет ли продолжение и когда?

5
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x