Desafio Python

Troca de variáveis e desempacotamento em uma função

Enunciado

Escreva uma função min_max que recebe uma lista de números e retorna uma tupla (minimo, maximo). Em seguida, use desempacotamento para atribuir o resultado a duas variáveis minimo e maximo, e depois troque os valores dessas variáveis usando a, b = b, a. Imprima os valores antes e depois da troca.

Requisitos

  • A função min_max deve retornar uma tupla com o menor e o maior valor.
  • Use desempacotamento para obter minimo e maximo a partir do retorno.
  • Realize a troca de variáveis sem variável auxiliar.
  • Imprima os valores antes e depois da troca no formato especificado.

Código inicial

def min_max(numeros):
    # Seu código aqui
    pass

# Seu código aqui

Saída esperada

Antes: minimo = 3, maximo = 9
Depois: minimo = 9, maximo = 3
Ver dica

Use as funções embutidas min() e max(). Para trocar, minimo, maximo = maximo, minimo.

Mostrar solução
def min_max(numeros):
    """Retorna uma tupla (minimo, maximo) da lista."""
    return (min(numeros), max(numeros))

# Lista de exemplo
valores = [5, 3, 8, 1, 9, 2]

# Desempacotando o retorno da função
minimo, maximo = min_max(valores)
print(f"Antes: minimo = {minimo}, maximo = {maximo}")

# Trocando os valores
minimo, maximo = maximo, minimo
print(f"Depois: minimo = {minimo}, maximo = {maximo}")

Passo a passo

  1. Definimos min_max que calcula o mínimo e o máximo da lista usando min() e max(), e retorna uma tupla.
  2. Criamos uma lista valores com números variados.
  3. Chamamos min_max(valores) e desempacotamos o retorno nas variáveis minimo e maximo.
  4. Imprimimos os valores antes da troca.
  5. Trocamos os valores com minimo, maximo = maximo, minimo, que cria uma tupla à direita e a desempacota à esquerda.
  6. Imprimimos os valores depois da troca.

Por que funciona

A função retorna uma tupla, que é imutável, mas pode ser desempacotada. A troca de variáveis explora a criação de uma tupla temporária implícita: (maximo, minimo) é avaliada primeiro, depois desempacotada nas variáveis, trocando os valores sem variável auxiliar.

Erros comuns

  • Esquecer de retornar tupla: se min_max retornar min(numeros), max(numeros) sem parênteses, ainda é uma tupla, mas se retornar apenas um valor, o desempacotamento falha.
  • Tentar desempacotar sem parênteses: minimo, maximo = min_max(valores) está correto; minimo, maximo = min_max(valores), criaria uma tupla aninhada.
  • Modificar a tupla retornada: min_max(valores)[0] = 10 gera TypeError. Lembre-se da imutabilidade.

Outra forma de resolver

Poderia usar uma variável auxiliar para a troca: temp = minimo; minimo = maximo; maximo = temp. Mas a troca por desempacotamento é mais pythônica e evita erros.

Saída esperada

Antes: minimo = 3, maximo = 9
Depois: minimo = 9, maximo = 3