Решение модуля 7.7 Инди-курс программирования на Python

Модуль 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. orange
print_goods(1, True, 'Грушечка', '', 'Pineapple') 
# Программа должна вывести следующее:
1. Грушечка
2. Pineapple
print_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 не передавать никаких аргументов, то она должна возвращать базовый словарь с ключами namesurnameage. Вот так он выглядит:

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           # возвращаем пересечение введенных данных и по умолчанию

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

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

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