Boa tarde galera, fiz um exercício, função ‘maximo’, que devolve o maior valor dentre dois inteiros recebidos, para que ela passe a receber 3 valores inteiros como parâmetros e devolva o maior dentre eles, consegui realizar esta tarefa, mas no código não há nada de elegante, alguma dica para retirar as repetições de if ?
def maximo(n1,n2,n3):
if n1 > n2 and n1 > n3:
return(n1)
if n2 > n1 and n2 > n3:
return(n2)
if n3 > n1 and n3 > n2:
return(n3)
if n1 == n2 and n1 > n3:
return(n1)
if n1 == n3 and n1 > n2:
return(n1)
if n2 == n3 and n2 > n1:
return(n2)
if n1 == n2 and n1 == n3:
return(n1)
Um esqueminha com sorted
def maximo(n1, n2, n3):
lista = sorted([n1, n2, n3])
maior = lista[-1] # ultima posicao
return maior
Se quiser ainda deixar a quantidade de parâmetros indefinida…
def maximo(*numeros):
lista = sorted(numeros)
maior = lista[-1] # ultima posicao
return maior
Para fins de aprendizado tranquilo, mas no dia a dia, não reinvente a roda e busque conhecer a API padrão
É vou ter que ler muito mesmo, porque ainda não aprendi a função sorted.
Boa tarde Rodrigo,
Você pode utilizar a função MAX do Python que retorna o maior valor dentre os argumentos passados.
Alterei a função para que espere receber uma lista com exatos 3 valores e retorne o maior dentre eles assim evitando que caso você deseja aumentar o número de argumentos não necessite de adicionar novos parâmetros (n1, n2, n3, n4, nX…).
O código final ficou da seguinte forma:
def maximo(valores):
if not len(valores) == 3:
return "Sua lista deve conter exatamente 3 valores"
return max(valores)
print maximo( (100, 5000, 12) )
Ou pode simplificar:
def maximo(*valores):
return max(valores)
print maximo(1, 2, 300, 20, 40)
1 curtida
O problema de usar o sorted é quanto maior o número de argumentos menor a performance.
1 curtida
Concordo, foi apenas para fins didáticos, por isso indiquei a função max assim como você o fez…
1 curtida