Médio Python

Usando *resto para separar primeiro e último

Enunciado

Dada a tupla valores = (10, 20, 30, 40, 50), desempacote o primeiro elemento em primeiro, o último em ultimo e todos os elementos do meio em uma lista chamada meio. Imprima primeiro, meio e ultimo nessa ordem.

Requisitos

  • Use o operador * para capturar os elementos do meio.
  • Imprima os valores exatamente como no exemplo de saída.
  • Não use fatiamento (slicing) para obter o meio.

Código inicial

valores = (10, 20, 30, 40, 50)
# Seu código aqui

Saída esperada

primeiro: 10
meio: [20, 30, 40]
ultimo: 50
Ver dica

A sintaxe é primeiro, *meio, ultimo = valores.

Mostrar solução
valores = (10, 20, 30, 40, 50)
primeiro, *meio, ultimo = valores  # *meio captura os elementos do meio
print(f"primeiro: {primeiro}")
print(f"meio: {meio}")
print(f"ultimo: {ultimo}")

Passo a passo

  1. Definimos a tupla valores com cinco números.
  2. Usamos primeiro, *meio, ultimo = valores: primeiro recebe o primeiro elemento, ultimo o último, e meio recebe uma lista com os demais.
  3. Imprimimos cada variável formatada com f-string.

Por que funciona

O operador * no desempacotamento coleta todos os elementos que não foram atribuídos a variáveis explícitas. Ele sempre resulta em uma lista, mesmo que vazia.

Erros comuns

  • Colocar * em posição inválida: *meio, primeiro, ultimo = valores funciona, mas a ordem dos elementos muda. Verifique a semântica.
  • Esquecer que meio é lista: meio é uma lista, não uma tupla. Se precisar de tupla, converta com tuple(meio).
  • Número insuficiente de elementos: se a tupla tiver menos de 2 elementos, primeiro, *meio, ultimo gera ValueError. Certifique-se de que há pelo menos dois.

Outra forma de resolver

Sem *, poderia fazer primeiro = valores[0], ultimo = valores[-1], meio = list(valores[1:-1]). Mas o desempacotamento é mais direto e evita índices.

Saída esperada

primeiro: 10
meio: [20, 30, 40]
ultimo: 50