Nessa entrega você exercitará seus conhecimentos sobre packing e unpacking desenvolvendo operações lógicas básicas no estilo kata.
Exercitar a distribuição de argumentos no formato args e kwargs.
Você deverá criar um arquivo chamado main.py. Todas as funções devem estar com a assinatura no formato especificado.
- 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
- Parâmetros:
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.
- Parâmetros:
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.
- Parâmetros:
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.
- Parâmetros:
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
- Parâmetros:
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
- Substituir cada uma das chaves do dicionário kwargs pelos valores recebidos da tupla 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
- Parâmetros:
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.
- Parâmetros:
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
- Parâmetros:
country = 'Alemanha'
year_list = [2014, 1990, 1974, 1954]
log = world_cup_logger(country, *year_list)
print(log)
> "Alemanha - 1954, 1974, 1990 e 2014"
- Link do repositório do GitLab
- Código-fonte:
- Arquivo main.py.
- Privacidade
- Incluir ka-br-out-2020-correcoes como reporter.
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! 😁