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
- Definimos a tupla
valorescom cinco números. - Usamos
primeiro, *meio, ultimo = valores:primeirorecebe o primeiro elemento,ultimoo último, emeiorecebe uma lista com os demais. - 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 = valoresfunciona, 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 comtuple(meio). - Número insuficiente de elementos: se a tupla tiver menos de 2 elementos,
primeiro, *meio, ultimogeraValueError. 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