Модуль 7.7 (*args и **kwargs Python. Передача аргументов в функцию).
Что будет храниться в переменной
b
после выполнения этого кода?a, b, c = 'Just do it'.split()
do
Что будет храниться в переменной
c
после выполнения этого кода?a, b, *c = range(5)
[2, 3, 4]
Что будет храниться в переменной
b
после выполнения этого кода?a, *b, c = 'No money', 'no honey'
[]
Как согласно правилам наименования необходимо называть параметр функции, предназначенный для получения произвольного количества
неименованных
аргументов?
*args
Какой тип данных будет храниться в параметре
*args
?
tuple
Напишите функцию
count_args
, которая принимает произвольное количество аргументов. Данная функция должна возвращать количество переданных ей на вход аргументовcount_args(1, 2, 3) => 3 count_args(1, 3) => 2 count_args(2) => 1 count_args() => 0Вам необходимо написать только определение функции
count_args
def count_args(*args) -> int: # объявляем функцию, которая принимает произвольное кол-во аргументов return len(args) # выводим количество принятых аргументов
Напишите функцию
check_sum
, которая принимает произвольное количество аргументов типаint
.Данная функция должна выводить
not enough
, если сумма всех элементов меньше 50, в противном случае выводитьverification passed
Вам необходимо написать только определение функции
check_sum
def check_sum(*args) -> str: # объявляем функцию, которая принимает произвольное количество аргументов if sum(args) < 50: # если сумма переданных чисел меньше 50, то выводим not enough print('not enough') else: # иначе выводим verification passed print('verification passed')
Напишите функцию
multiply
, которая принимает произвольное количество числовых аргументов. Данная функция должна находить произведение всех переданных значений и возвращать его в качестве результатаmultiply(1, 2, 3) => 6 multiply(1, 3) => 3 multiply(2) => 2 multiply() => 1Вам необходимо написать только определение функции
multiply
def multiply(*args): # объявляем функцию, которая принимает любое количество аргументов a = 1 # создаем переменную для подсчета произведения переданных чисел for i in args: # проходимся по переданным числам и переменную а домнажаем на эти числа a *= i return a # возвращаем произведение заданных чисел
Напишите функцию
only_one_positive
, которая принимает произвольное количество числовых аргументов и возвращаетTrue
, когда из всех переданных значений только одно положительное, в противном случае вернитеFalse
Вам необходимо написать только определение функции
only_one_positive
Ниже примеры вызова
only_one_positive(1, 2) -> False only_one_positive(-1, 0, -3, 5, -3) -> True only_one_positive() -> False
def only_one_positive(*args): # объявляем функцию, которая принимает любое количество аргуметов counter = 0 # создаем переменную для подсчета количества положительных чисел for i in args: # проходимся по заданным числам и если оно положительное, к счетчику прибавляем 1 if i > 0: counter += 1 if counter == 1: # если положительных чисел было заданно одно, то выводим True return True else: # иначе False return False
Давайте теперь создадим функцию
print_goods
, которая печатает список покупок. На вход она будет принимать произвольное количество значений, а товаром мы будем считать любые непустые строки. То есть числа, списки, словари и другие нестроковые объекты вам нужно будет проигнорировать. Функцияprint_goods
должна печатать список товаров в виде: <Порядковый номер товара>. <Название товара> (см. пример ниже). В случае, если в переданных значениях не встретится ни одного товара, необходимо распечатать текст «Нет товаров»print_goods('apple', 'banana', 'orange') # Программа должна вывести следующее: 1. apple 2. banana 3. orangeprint_goods(1, True, 'Грушечка', '', 'Pineapple') # Программа должна вывести следующее: 1. Грушечка 2. Pineappleprint_goods([], {}, 1, 2) # Программа должна вывести следующее: Нет товаровВам необходимо написать только определение функции
print_goods
def print_goods(*args): # объявляем функцию, которая принимает любое количество значений counter = 1 # переменная-счетчик for i in args: # проходимся по введенным аргументам if type(i) == str and len(i) > 0: # если это строка и она не пустая, выводим этот товар print(f'{counter}. {i}') counter += 1 if counter == 1: # если подходящих аргументов нет, выводим сообщение, о том что нет товаров print('Нет товаров')
Как согласно правилам наименования необходимо называть параметр функции, предназначенный для получения произвольного количества
именованных
аргументов?
**kwargs
**kwargs
dict
Напишите функцию
info_kwargs
, которая принимает произвольное количество именованных аргументов.Функция
info_kwargs
должна распечатать именованные аргументы в каждой новой строке в виде пары <Ключ> = <Значения>, причем ключи должны следовать в алфавитном порядке. Пример работы смотрите нижеinfo_kwargs(first_name="John", last_name="Doe", age=33) """ данный вызов печатает следующие строки age = 33 first_name = John last_name = Doe """Вам необходимо написать только определение функции
def info_kwargs(**kwargs): # объявляем функцию for i in sorted(kwargs): # проходимся по словарю с введенными аргументами print(f"{i} = {kwargs[i]}") # выводим результат в нужной форме
Напишите функцию
create_actor
, которая принимает произвольное количество именованных аргументов и возвращает словарь с характеристиками актера. Если функцииcreate_actor
не передавать никаких аргументов, то она должна возвращать базовый словарь с ключамиname
,surname
,age
. Вот так он выглядит:create_actor() -> { 'name': 'Райан', 'surname': 'Рейнольдс', 'age': 46, }Если передавать именованные параметры, которые отсутствуют в базовом словаре, они дополняются к этому словарю
create_actor(height=190, movies=['Дедпул', 'Главный герой']) => { 'name': 'Райан', 'surname': 'Рейнольдс', 'age': 46, 'height': 190, 'movies': ['Дедпул', 'Главный герой'] }Если передавать именованные параметры, которые совпадают с ключами базового словаря, то значения в словаре должны заменяться переданными значениями:
create_actor(name='Jack', age=20) -> { 'name': 'Jack', 'surname': 'Рейнольдс', 'age': 20, }Вам необходимо написать только определение функции
create_actor
def create_actor(**kwargs): # объявляем функцию f = { # создаем словарь с информацией по умолчанию 'name': 'Райан', 'surname': 'Рейнольдс', 'age': 46, } return f | kwargs # возвращаем пересечение введенных данных и по умолчанию
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы