Oi pessoal, vi que dá deixar o "type hint" no retorno da função media também como tipo "tuple" e não somente como "float".
No primeiro caso para a função media, o type hint de retorno está corretamente declarado como float.
def media(lista: list) -> float:
calculo = sum(lista) / len(lista)
return calculo
O que torna esse resultado possível é o cálculo da média realizado pela operação:
"sum(lista) / len(lista)"
...onde os argumentos das funções "sum()" e "len()" sendo do tipo float ou inteiro, o resultado sempre será um float.
Veja um exemplo:
5 / 2 → 2.5
O valor retornado no calculo é, portanto, um float.
Mas, quando se deseja mais informações, como, por exemplo, o tamanho (comprimento) dos dados de saída, podemos definir o "type hint" assim:
def media(lista: list) -> tuple[float, int]:
return sum(lista)/len(lista), len(lista)
Quando o type hint é defindo dessa forma, uma coleção de valores podem ser retornados da função.
notas = [9.0, 8.7, 6.8, 9.5, 10.0, 7.5]
def media(lista: list) -> tuple[float, int]:
return sum(lista)/len(lista), len(lista)
# Chamada da função e impressão do resultado
resultado = media(notas)
print(f"Média: {resultado[0]:.2f}, Quantidade: {resultado[1]}")
Saída:
Média: 8.58, Quantidade: 6
Na função:
def media(lista: list) -> tuple[float, int]:
return sum(lista)/len(lista), len(lista)
O retorno tá trazendo "-> tuple[float, int]" onde...
sum(lista)/len(lista) retorna a média (float), e...
len(lista) retorna o comprimento da lista com a quantidade de notas calculadas.
No final, pra completar o entendimento basta inserir um docstring para descrever a lógica do código.
notas = [9.0, 8.7, 6.8, 9.5, 10.0, 7.5]
def media(lista: list) -> tuple[float, int]:
"""
Calcula a média aritmética dos valores em uma lista e retorna também a quantidade de elementos.
Args:
lista (list): Lista contendo números (int ou float).
Returns:
tuple[float, int]:
- O primeiro valor é a média aritmética dos elementos (float).
- O segundo valor é a quantidade de elementos na lista (int).
Example:
>>> media([9.0, 8.7, 6.8, 9.5, 10.0, 7.5])
(8.75, 6)
"""
return sum(lista) / len(lista), len(lista)
# Chamada da função e impressão do resultado
resultado = media(notas)
print(f"Média: {resultado[0]:.2f}, Quantidade: {resultado[1]}")
/
/
Eu achei bem interessante esse procedimento, espero que desperte a curiosidade em outras pessoas pra também se aprofundar nesse tópico.