Table of Contents

Extra - Args e Kwargs

Nessa entrega você exercitará seus conhecimentos sobre packing e unpacking desenvolvendo operações lógicas básicas no estilo kata.

Objetivo

Exercitar a distribuição de argumentos no formato args e kwargs.

Preparativos

Você deverá criar um arquivo chamado main.py. Todas as funções devem estar com a assinatura no formato especificado.

Exercícios

  • sum_numbers(*args)
    • Parâmetros:
      • args: quantidade indefinida de parâmetros numéricos inteiros.
    • Procedimento: Somar cada um dos valores recebidos em args
    • Retorno: A soma de cada um dos valores recebidos em args

numbers = [1, 2, 3, 4, 5, 6]

result = sum_numbers(*numbers)

print(resut)

> 21

  • get_multiplied_amount(multiplier, *args)
    • Parâmetros:
      • multiplier: número inteiro utilizado como multiplicador.
      • args: quantidade indefinida de parâmetros numéricos inteiros.
    • Procedimento:
      • Somar cada um dos valores recebidos em args
      • Multiplicar o resultado das somas pelo multiplier.
    • Retorno: O resultado das operações como valor numérico.

numbers = [1, 2, 3]

multiplier = 2

result = get_multiplied_amount(multiplier, *numbers)

print(result)

> 12

  • word_concatenator(*args)
    • Parâmetros:
      • args: quantidade indefinida de palavras.
    • Procedimento:
      • Concatenar cada uma das palavras recebidas em args aplicando um espaço como separador. Não pode haver espaço após a última palavra.
    • Retorno: Uma string contendo todas as palavras concatenadas.

words = ["Tá", "pegando", "fogo", "bicho!!!"]

concatenated_words = word_concatenator(*words)

print(concatenated_words)

> "Tá pegando fogo bicho!!!"

  • inverted_word_factory(*args)
    • Parâmetros:
      • args: quantidade indefinida de palavras.
    • Procedimento:
      • Concatenar numa string cada uma das palavras em args, porém cada palavra deve estar invertida, assim como a ordem das palavras.
    • Retorno: Uma string contendo todas as palavras concatenadas, porém, cada uma delas devem estar invertidas, inclusive a ordem das palavras.

words = ["eae", "amigão", "belezinha?"]

inverted_words = inverted_word_factory(*words)

print(inverted_words)

> "?ahnizeleb oãgima eae"

  • dictionary_separator(**kwargs)
    • Parâmetros:
      • kwargs: dicionário contendo uma quantidade indefinida de itens.
    • Procedimento: 
      • Agrupar em uma lista todas as chaves do dicionário kwargs
      • Agrupar em uma lista todos os valores do dicionário kwargs
    • Retorno: Retornar uma tupla de duas posições, na primeira posição a lista de chaves do dicionário kwargs, na segunda posição uma lista de valores do dicionário kwargs

user = {

"name": "Naruto",

"age": 16,

"favorite word": "Ichiraku Ramen"

}

items = dictionary_separator(**user)

print(items)

> (

["name", "age", "favorite word"],

["Naruto", 16, "Ichiraku Ramen"]

)

  • dictionary_creator(*args, **kwargs)
    • Parâmetros:
      • args: quantidade indefinida de valores (podem ser inteiros ou string)
      • kwargs: dicionário contendo uma quantidade indefinida de itens
    • Procedimento:
      • Substituir cada uma das chaves do dicionário kwargs pelos valores recebidos da tupla args
        • Uma chave que se encontra na posição 2 do dicionário, deve ser substituída pelo valor de posição 2 dentro da tupla args, essa ordem deve ser seguida de forma respectiva
        • Caso a quantidade de valores dentro da tupla args, seja maior que a quantidade de itens no dicionário, ignorar os valores excedentes em args
    • Retorno:
      • Retornar None, caso a quantidade de valores dentro da tupla args seja menor que a quantidade de itens em kwargs
      • Retornar dicionário, caso a quantidade de valores dentro da tupla args seja igual ou maior a quantidade de itens em kwargs

change_keys = ["username", "password", "address"]

user = {

"name": "Williams",

"key": "1234"

}

modified_user = dictionary_creator(*change_keys, **user)

print(modified_user)

> {

"username": "Williams",

"password": "1234"

}

  • purchase_logger(**kwargs)
    • Parâmetros:
      • kwargs: dicionário representando um produto.
    • Procedimento:
      • Formar uma string contendo as informações do produto.
    • Retorno:
      • String formada com o nome do produto, seu preço e quantidade.

purchase = {"name": "washing powder", "price": 6.7, "quantity": 4}

purchase_log = purchase_logger(**purchase)

print(purchase_log)

> "Product washing powder costs 6.7 and was bought 4"

  • world_cup_logger(country, *args)
    • Parâmetros:
      • country: uma string representando um país.
      • args: anos das copas do mundo em que o país foi campeão (lista de números inteiros)
    • Procedimento:
      • Formar uma string com o nome do país e os anos em que foi campeão, em ordem crescente:
    • Retorno:
      • String formada com o nome do país e os anos em que foi campeão, exatamente como mostrado acima

country = 'Alemanha'

year_list = [2014, 1990, 1974, 1954]

log = world_cup_logger(country, *year_list)

print(log)

> "Alemanha - 1954, 1974, 1990 e 2014"

-----

Entregáveis

Repositório

  • Link do repositório do GitLab
  • Código-fonte:
    • Arquivo main.py.
  • Privacidade
    • Incluir ka-br-out-2020-correcoes como reporter.

Critérios de aceitação

pts Dado Quando É esperado
0.5 sum_numbers  Executada com seus devidos parâmetros O resultado da soma de todos os números passados em args seja retornado
0.5 get_multiplied_amount Executada com seus devidos parâmetros O resultado das operações seja retornado
0.5 word_concatenator Executada com seus devidos parâmetros Uma string resultado da concatenação de cada um dos parâmetros recebidos
0.5 inverted_word_factory Executada com seus devidos parâmetros Cada uma das strings recebidas como parâmetros invertidas e concatenadas em uma string única
0.5 dictionary_separator Executada com seus devidos parâmetros Uma tupla com duas posições, em cada uma das duas posições seus devidos valores conforme especificado
1 dictionary_creator Executada com seus devidos parâmetros Um dicionário seja retornado
0.5 purchase_logger Executada com seus devidos parâmetros Uma string formatada conforme especificado seja retornada
1 world_cup_logger Executada com seus devidos parâmetros Uma string formatada conforme especificado seja retornada

Boa diversão dev! 😁