
Passo 1 de 7
Criar tuplas e reconhecer o papel da vírgula
Crie tuplas com zero, um ou vários elementos e converta listas e textos preservando sua ordem.
Trilha de aprendizado · Nível 3 · Tutorial 4
Representar grupos posicionais de valores com tuplas e distribuir os elementos de uma sequência entre variáveis por desempacotamento.
Criar tuplas e reconhecer o papel da vírgula
Crie tuplas com zero, um ou vários elementos e converta listas e textos preservando sua ordem. 2 min
Escolher a coleção e consultar posições
Escolha entre lista e tupla e diferencie consultar uma posição de tentar alterar seu elemento. 2 min
Distribuir valores entre variáveis
Distribua os elementos de tuplas, listas e textos entre variáveis, respeitando a ordem e a quantidade de destinos. 2 min
Reconhecer quantidades incompatíveis
Identifique excessos e faltas de elementos no desempacotamento e corrija a incompatibilidade sem perder informações importantes. 2 min
Reunir os elementos restantes com asterisco
Use um destino com asterisco para reunir os valores restantes em uma lista e reconheça quando ainda faltam elementos. 3 min
Trocar valores com uma atribuição
Troque os valores de duas variáveis e entenda por que o desempacotamento preserva os valores originais. 1 min
Aplicar tuplas em um trajeto e revisar
Complete um programa local para consultar um trajeto, separar seus pontos e trocar origem e destino sem alterar a tupla. 4 min

Passo 1 de 7
Crie tuplas com zero, um ou vários elementos e converta listas e textos preservando sua ordem.
Uma tupla é uma sequência ordenada: ela agrupa valores por posição, inclusive de tipos diferentes. Agrupar valores assim é chamado de empacotamento.
Para um ou mais elementos, a vírgula forma a tupla; os parênteses deixam o agrupamento claro. Sem elementos, use () ou tuple().
pessoa = ("Ana", 28, 1.65)
pessoa_sem_parenteses = "Ana", 28, 1.65
apenas_texto = ("Ana") # É uma string
um_elemento = ("Ana",) # É uma tupla
vazia = ()
outra_vazia = tuple()
Em pessoa, texto e números fazem parte da mesma sequência, nessa ordem.
Qual expressão cria uma tupla com exatamente um elemento?
tuple(sequencia) cria uma tupla com os elementos da sequência, na mesma ordem.
Ao converter uma lista, cada elemento dela vira um elemento da tupla. Ao converter um texto, cada caractere vira um elemento.
Você pode executar estes exemplos no seu Python. Os comentários mostram as saídas esperadas.
cores = ["azul", "verde"]
print(tuple(cores)) # ('azul', 'verde')
print(tuple("sol")) # ('s', 'o', 'l')
print(tuple(["sol"])) # ('sol',)
print(tuple()) # ()Dica
("sol",) guarda o texto inteiro como um elemento. Já tuple("sol") percorre o texto para formar uma tupla com três caracteres.
Relacione cada expressão à tupla que ela produz.
Toque em um item e depois no par correspondente.

Passo 2 de 7
Escolha entre lista e tupla e diferencie consultar uma posição de tentar alterar seu elemento.
Use uma lista quando precisar substituir, acrescentar ou remover elementos da sequência.
Use uma tupla para um agrupamento por posição cuja estrutura deve permanecer fixa. Na mesma tupla, não é possível substituir elementos nem acrescentar ou remover posições: sua estrutura é imutável.
Exemplo
Uma lista de compras que receberá novos produtos combina com uma lista: ["arroz", "feijão"].
Um ponto definido por duas coordenadas que não serão alteradas combina com uma tupla: (10, 20). A primeira posição representa x; a segunda, y.
Associe cada situação à escolha mais adequada.
Toque em um item e depois no par correspondente.
Os índices que você já conhece também funcionam nas tuplas. Em ponto = (10, 20), ponto[0] consulta o primeiro elemento e ponto[-1], o último. Já usar uma posição como destino de uma atribuição tenta substituir seu elemento.
Se executar este código no seu Python, as duas consultas funcionarão; a última linha provocará um erro.
ponto = (10, 20)
print(ponto[0]) # 10
print(ponto[-1]) # 20
ponto[0] = 15 # TypeError![Comparação: ponto[0] lê o valor 10 de uma tupla (10, 20); ponto[0] = 15 tenta substituir 10 por 15, mas a operação é bloqueada e a tupla permanece (10, 20).](https://cursa-json-routes.s3.amazonaws.com/learning-paths/pt/python/b730454e0225/level-03/tutorial-04/step-02/screen-03/item-03.webp)
Ler uma posição é permitido; substituir seu elemento não é.
Atenção
A tentativa de atribuir a uma posição gera TypeError: 'tuple' object does not support item assignment. Isso indica que a tupla não aceita esse tipo de alteração. A tentativa não substitui o valor 10 por 15.
Considere ponto = (10, 20). Qual linha exibe 20 sem tentar alterar a tupla?

Passo 3 de 7
Distribua os elementos de tuplas, listas e textos entre variáveis, respeitando a ordem e a quantidade de destinos.
Você já agrupou valores em uma tupla. Agora, o desempacotamento faz o caminho inverso: distribui os elementos de uma sequência entre variáveis.
Os nomes à esquerda do = são os destinos. O primeiro recebe o primeiro elemento, o segundo recebe o segundo, e assim por diante. Nesta forma de atribuição, a quantidade de destinos deve ser igual à quantidade de elementos.
cadastro = ("Lia", 28, "Recife") # Agrupa os valores
nome, idade, cidade = cadastro # Distribui os elementos
print(nome) # Lia
print(idade) # 28
print(cidade) # Recife
A correspondência depende da posição, não do nome escolhido para a variável.
Complete a atribuição para que x receba o primeiro elemento e y receba o segundo:
___ = (4, 9)
A sequência à direita não precisa ser uma tupla. Você pode desempacotar uma lista ou um texto diretamente, sem usar tuple().
No texto, cada caractere é um elemento. A regra continua a mesma: um elemento por destino, na ordem.
Observe os valores recebidos em cada atribuição.
largura, altura = [800, 600]
print(largura) # 800
print(altura) # 600
primeira, segunda = "Oi"
print(primeira) # O
print(segunda) # iConsidere estas atribuições e associe cada variável ao valor que ela recebe:
inicio, fim = ["Norte", "Sul"]
letra, digito = "A7"
Toque em um item e depois no par correspondente.

Passo 4 de 7
Identifique excessos e faltas de elementos no desempacotamento e corrija a incompatibilidade sem perder informações importantes.
No desempacotamento simples, conte os elementos da sequência e os destinos à esquerda do =. Se as quantidades forem diferentes, ocorre um ValueError.
Aqui, há três elementos para apenas dois destinos: sobra um elemento. Python não ignora essa sobra.
trajeto = ("Casa", "Praça", "Escola")
origem, destino = trajeto
# ValueError: too many values to unpack (expected 2)
A mensagem “too many values to unpack” indica excesso de elementos. A atribuição não é concluída.
Para trajeto = ("Casa", "Praça", "Escola"), você precisa guardar a origem, a parada e o destino em variáveis separadas. Qual correção atende a essa intenção?
O contrário também causa ValueError: há menos elementos do que destinos. A mensagem abaixo informa que eram esperados três valores, mas foram recebidos dois.
trajeto = ("Casa", "Escola")
origem, parada, destino = trajeto
# ValueError: not enough values to unpack (expected 3, got 2)Dica
Se o trajeto é direto, use origem, destino = trajeto. Se deveria incluir uma parada, corrija os dados para incluí-la. Você pode conferir os elementos com len(trajeto) e contar os destinos à esquerda do =. Não apague nem invente informações só para igualar as quantidades.
O trajeto confirmado é Casa → Museu → Escola, mas o código foi escrito assim:
trajeto = ("Casa", "Escola")origem, parada, destino = trajeto
Qual erro ocorre? Faltam ou sobram elementos? Reescreva as duas linhas para representar o trajeto confirmado.
Escreva pelo menos 25 caracteres (0/25).

Passo 5 de 7
Use um destino com asterisco para reunir os valores restantes em uma lista e reconheça quando ainda faltam elementos.
No desempacotamento simples, as quantidades precisam ser iguais. Com um destino marcado por *, os destinos sem asterisco recebem um elemento cada, e o destino com asterisco reúne o restante em uma lista, mesmo que a origem seja uma tupla.
O asterisco pode ficar no início, no meio ou no fim. Os valores mantêm sua ordem: destinos antes dele recebem elementos do início; destinos depois dele recebem elementos do fim.
valores = (10, 20, 30, 40)
primeiro, *restantes = valores
print(primeiro, restantes) # 10 [20, 30, 40]
*restantes, ultimo = valores
print(restantes, ultimo) # [10, 20, 30] 40
primeiro, *restantes, ultimo = valores
print(primeiro, restantes, ultimo) # 10 [20, 30] 40![Distribuição de (10, 20, 30, 40): primeiro recebe 10, restantes recebe a lista [20, 30] e ultimo recebe 40.](https://cursa-json-routes.s3.amazonaws.com/learning-paths/pt/python/b730454e0225/level-03/tutorial-04/step-05/screen-01/item-03.webp)
Com o asterisco no meio, os destinos individuais recebem as pontas e a lista reúne os elementos centrais.
Considere dados = (2, 4, 6, 8). Associe cada atribuição aos valores recebidos.
Toque em um item e depois no par correspondente.
Se os destinos sem asterisco consumirem todos os elementos, o destino com asterisco recebe []. Isso é válido.
Mas cada destino sem asterisco ainda precisa receber um elemento. Se não houver elementos suficientes para eles, ocorre ValueError.
Compare os dois casos. A última atribuição provoca um erro intencional.
primeiro, *meio, ultimo = (10, 40)
print(primeiro, meio, ultimo) # 10 [] 40
# Há dois destinos sem asterisco, mas só um elemento:
primeiro, *meio, ultimo = (10,) # ValueErrorAtenção
Neste desempacotamento simples, use no máximo um destino com *. Uma atribuição como *inicio, *fim = (10, 20, 30) é inválida e gera SyntaxError: não se pode dividir o restante entre dois destinos com asterisco.
Qual atribuição é válida e faz meio receber uma lista vazia?

Passo 6 de 7
Troque os valores de duas variáveis e entenda por que o desempacotamento preserva os valores originais.
Para trocar os valores de a e b, use a, b = b, a. O lado direito é avaliado antes de atribuir valores aos destinos: os valores originais são agrupados na ordem b, a e depois distribuídos para a, b.
a = 10
b = 20
a, b = b, a
print(a, b) # 20 10
Os dois valores originais são obtidos antes de qualquer destino receber o novo valor.
Com a = 10 e b = 20, ordene as etapas conceituais de a, b = b, a.
a = 10
b = 20
a = b
b = a
print(a, b)Na linha a = b, a já passa a valer 20. Quando b = a é executada, ela lê esse novo valor de a, não o 10 original. As duas linhas são executadas separadamente; por isso, não equivalem a a, b = b, a.
Partindo de a = 10 e b = 20, executamos a = b e depois b = a. Complete a saída de print(a, b): ____

Passo 7 de 7
Complete um programa local para consultar um trajeto, separar seus pontos e trocar origem e destino sem alterar a tupla.
Você vai representar o trajeto Parque → Museu → Praça → Estação. Neste programa, os quatro pontos e sua ordem devem permanecer fixos: uma tupla é adequada. Se fosse necessário acrescentar ou remover pontos na mesma coleção, uma lista seria mais apropriada.

O desempacotamento com asterisco separará o primeiro ponto, os pontos intermediários e o último ponto.
No seu editor, crie o arquivo trajeto.py com o código abaixo. Substitua cada comentário TODO por uma atribuição:
ponto1, ponto2, ponto3 e ponto4.origem, paradas e destino, reunindo os pontos intermediários com asterisco.origem e destino em uma atribuição.Salve e execute com o Python 3 do seu computador.
trajeto = ("Parque", "Museu", "Praça", "Estação")
print(f"Consulta: {trajeto[0]} / {trajeto[-1]}")
# TODO 1: desempacote trajeto em ponto1, ponto2, ponto3 e ponto4
print(f"Pontos: {ponto1} / {ponto2} / {ponto3} / {ponto4}")
# TODO 2: desempacote trajeto em origem, paradas e destino
print(f"Origem: {origem}")
print(f"Paradas: {paradas}")
print(f"Destino: {destino}")
# TODO 3: troque os valores de origem e destino
print(f"Após a troca: {origem} / {destino}")
print(f"Tupla: {trajeto}")Dica
Complete os três TODOs para que todas as variáveis existam quando os comandos print forem executados. No desempacotamento exato, confira os quatro destinos; no estendido, marque somente paradas com asterisco.
Depois de executar, relate os pontos consultados, os quatro valores do desempacotamento exato, a origem, a lista de paradas e o destino. O que mudou após a troca? A tupla mudou? Justifique a escolha de tupla para esse trajeto.
Escreva pelo menos 60 caracteres (0/60).
Compare com a saída no seu computador. A troca das variáveis não inverte a tupla do trajeto.
Consulta: Parque / Estação
Pontos: Parque / Museu / Praça / Estação
Origem: Parque
Paradas: ['Museu', 'Praça']
Destino: Estação
Após a troca: Estação / Parque
Tupla: ('Parque', 'Museu', 'Praça', 'Estação')Resumo
Parabéns! Você concluiu: Agrupar e desempacotar valores com tuplas
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks