Академия Eduson

Функции. Переменное количество аргументов

 Функции с переменным количеством аргументов

 Какое значение выведет на экран следующий код?:

def f(n=3):
    return n + 7

print(f(f(f())))

 Ответ:  24

 Какое количество аргументов может принять следующая функция?:

def func(x, y, *args):

 Ответ:  два и больше

 Какое значение выведет на экран следующий код?:

def func(x, y, *args):
    return len(args)

print(func(10, 20, 30, 40, 50, 60))

 Ответ:  4

 Какое значение выведет на экран следующий код?:

def func(*args):
    return max(args) + min(args)

print(func(10, 15, *[31, 42, 5, 1], *(17, 28, 19, 100), 13, 12))

 Ответ:  101

 

 Как следует именовать в определении функции параметр, призванный получать при вызове все позиционные аргументы?

 Ответ: *args

 Как следует именовать в определении функции параметр, призванный получать при вызове все именованные аргументы?

 Ответ:  **kwargs

 Выберите правильное объявление функции func(), чтобы можно было успешно выполнить следующие вызовы функции:

func(5, 6, 13, 17, 56)
func(2, 7)

 Ответ:  def funс(*args)

 Каков правильный порядок использования аргументов *args, **kwargs и позиционных аргументов fargs в заголовке функции func?

 Ответ: func(fargs, *args, **kwargs)

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

def count_args(*args):
    return len(args)

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

def sq_sum(*args):
    return sum(n ** 2 for n in args)

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

def mean(*args):
    s = [i for i in args if type(i) in [int, float]]
    return (float(0) if len(s) == 0 else float(sum(s)/len(s)))

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

def greet(name, *args):
    rez = ' and '.join((name,) + args)
    return f'Hello, {rez}!'

 Напишите функцию print_products(), которая принимает произвольное количество аргументов и выводит список продуктов (любая непустая строка) по образцу: <номер продукта>) <название продукта> (нумерация продуктов начинается с единицы). Если среди переданных аргументов нет ни одного продукта, необходимо вывести текст Нет продуктов.

def print_products(*args):
    s = [prod for prod in args if prod and isinstance(prod, str)]
    if s:
        for ind, prod in enumerate(s, 1):
            print(f"{ind}) {prod}")
    else:
        print("Нет продуктов")

 Напишите функцию info_kwargs(), которая принимает произвольное количество именованных аргументов и печатает именованные аргументы в соответствии с образцом: <имя аргумента>: <значение аргумента>, при этом имена аргументов следуют в алфавитном порядке (по возрастанию).

def info_kwargs(**kwargs):    
    for key, value in sorted(kwargs.items()):        
        print(key + ": " + str(value))