Buscar

E-book Unidade 4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

unidade 
4
PROGRAMAÇÃO
Laboratório de
unidade 
4
Programação em python utilizando 
coleções
Prezado estudante,
Estamos começando uma unidade desta disciplina. Os textos que a compõem foram 
organizados com cuidado e atenção, para que você tenha contato com um conteúdo 
completo e atualizado tanto quanto possível. Leia com dedicação, realize as atividades e 
tire suas dúvidas com os tutores. Dessa forma, você, com certeza, alcançará os objetivos 
propostos para essa disciplina.
OBJETIVO GERAL 
Criar soluções algorítmicas em python utilizando coleções e testar os algoritmos cria-
dos em python.
OBJETIVOS ESPECÍFICOS 
• Definir integrais duplas e estender este conceito para integrais múltiplas.
• Expressar a integral dupla como uma integral iterada.
• Resolver problemas aplicados envolvendo integração múltipla.
• Identificar coleções do tipo Mapas (map).
• Programar usando coleção do tipo Mapas.
• Comparar aplicações com e sem o uso de coleção do tipo Mapas.
• Identificar coleções do tipo Conjunto (Set).
• Programar usando coleção do tipo Conjunto.
• Comparar aplicações com e sem o uso de coleção do tipo Conjunto.
• Listar os passos para verificação e validação de código.
• Formular casos de teste de algoritmos.
• Desenvolver testes de mesa e procedimentos de debug.
unidade 
4
O conteúdo deste livro é 
disponibilizado por SAGAH.
Parte 1
Fundamentos de Coleções
em Python
LABORATÓRIO DE PROGRAMAÇÃO254
Fundamentos de 
coleções em Python
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar coleções do tipo listas (list).
 � Descrever coleções do tipo tuplas (tuple).
 � Listar coleções do tipo dicionário (dict).
Introdução
De modo geral, coleções são utilizadas para agrupar e manipular elemen-
tos de forma organizada. Na linguagem Python existem diversos tipos de 
estruturas que pertencem às coleções, das quais se destacam as listas, as 
tuplas e os dicionários. Com o auxílio dessas estruturas é possível escrever 
programas que realizam diversas operações, como incluir, alterar, excluir, 
visualizar e ordenar elementos, assim como efetuar cálculos e associar 
pares de chave/valor.
Neste capítulo, você aprenderá a declarar e manipular coleções do 
tipo lista, tupla e dicionário em Python.
Listas
Na linguagem Python, listas são estruturas de dados compostas por elemen-
tos de diversos tipos, organizados linearmente, como uma espécie de vetor. 
Cada elemento de uma lista é identificado por um índice ou subscrito, que 
começa na posição 0 (zero) e termina na quantidade de elementos menos um 
(n - 1) (MATTHES, 2016).
255 Programação em python utilizando coleções UNIDADE 4 Fundamentos de Coleções em Python PARTE 1
É possível criar uma lista manualmente, inserindo elementos em uma 
estrutura separada por colchetes, conforme o exemplo a seguir, ilustrado na 
Figura 1.
lista = ['Maria', 23, 'Porto Alegre']
Figura 1. Representação gráfica de uma lista.
Conteúdo da lista
Índices da lista
Maria 23 Porto Alegre
0 1 2
Os elementos podem ser acessados individualmente pelos índices da lista. 
Como mostra o exemplo a seguir, Maria está na posição 0 (zero), o número 
23, na posição 1 (um), e Porto Alegre, na posição 2 (dois).
print(lista[0]) #Saída: Maria
print(lista[1]) #Saída: 23
print(lista[2]) #Saída: Porto Alegre
Utilize a função index para obter o índice de determinado elemento da 
lista por meio de seu conteúdo. Para localizar o índice de Porto Alegre, entre 
com a instrução a seguir:
n = lista.index('Porto Alegre')
print(n) #Saída: 2
Python permite modificar a estrutura de uma lista dinamicamente, bastando 
atribuir os elementos no novo formato. Além disso, é possível criar uma lista 
dentro de um elemento de outra lista, formando uma sublista. No exemplo a 
seguir foram incluídas duas cidades para Maria: Porto Alegre e Rio 
de Janeiro.
lista = ['Maria', 23, ['Porto Alegre', 'Rio de Janeiro']]
print(lista[2][1]) #Saída: Rio de Janeiro
Fundamentos de coleções em Python2
LABORATÓRIO DE PROGRAMAÇÃO256
A linguagem Python segue a mesma lógica de índices quando existe uma 
lista dentro de outra. No exemplo apresentado, Porto Alegre é o índice 
0 (zero) e Rio de Janeiro é o índice 1 (um) da sublista. Essa sublista se 
encontra na posição 2 (dois) da lista principal, por isso a chamada a lista[2]
[1] retorna Rio de Janeiro.
A alteração de um elemento da lista pode ser realizada diretamente pelo 
índice, conforme o exemplo a seguir:
lista = ['Maria', 23, ['Porto Alegre', 'Rio de Janeiro']]
lista[0] = 'Ana' #Altera a posição 0 (zero) para Ana
print(lista) #Saída: ['Ana', 23, ['Porto Alegre', 'Rio de Janeiro']]
É possível concatenar listas pelo operador de adição. A concatenação unirá 
os elementos das listas, independentemente de serem de tamanhos diferentes. 
Veja o exemplo a seguir:
lista1 = ['do', 're', 'mi']
lista2 = ['fa', 'sol', 'la', 'si']
lista = lista1 + lista2
print(lista) #Saída: ['do', 're', 'mi', 'fa', 'sol', 'la', 'si']
Existem funções específicas para tratar listas com números. As funções 
max, min e sum retornam, respectivamente, o maior elemento, o menor 
elemento e a soma dos elementos, como mostram os exemplos a seguir:
lista = [15, 23, 12, 5, 9, 2, 11]
print(max(lista)) #Saída: 23
print(min(lista)) #Saída: 2
print(sum(lista)) #Saída: 77
É possível inserir elementos em qualquer posição de uma lista. Utilize 
a função append para inserir elementos no final de uma lista e a função 
insert para informar em qual posição a inclusão deve ser realizada. Veja 
os exemplos a seguir:
lista = ['do', 'mi', 'fa', 'sol', 'la']
lista.insert(1, 're') #Inclui na segunda posição – índice 1
lista.append(('si')) #Inclui no final da lista
print(lista) #Saída: ['do', 're', 'mi', 'fa', 'sol', 'la', 'si']
3Fundamentos de coleções em Python
257 Programação em python utilizando coleções UNIDADE 4 Fundamentos de Coleções em Python PARTE 1
Utilize a função del para excluir elementos de uma lista. A exclusão 
pode ser por um único índice ou por uma faixa de índices. No caso da faixa, o 
primeiro parâmetro indica o índice em que a exclusão deve iniciar, e o segundo 
parâmetro, o índice até o ponto em que os elementos serão excluídos, como 
mostra o exemplo a seguir: 
lista = ['do', 're', 'mi', 'fa', 'sol', 'la', 'si']
del lista[0] #Exclui o elemento 'do'
print(lista) #Saída: ['re', 'mi', 'fa', 'sol', 'la', 'si']
del lista[0:2] #Exclui os elementos 're' e 'mi'
print(lista) #Saída: ['fa', 'sol', 'la', 'si']
Você pode excluir o último elemento de uma lista por meio da função 
pop, sem parâmetros, ou indicar o índice do elemento que será excluído. 
Opcionalmente, é possível atribuir o elemento excluído a uma variável. Veja 
o exemplo a seguir: 
lista = ['do', 're', 'mi', 'fa', 'sol', 'la', 'si']
lista.pop() #Exclui o elemento 'si'
print(lista) #Saída: ['do', 're', 'mi', 'fa', 'sol', 'la']
ultimo = lista.pop() #Exclui o elemento 'la'
primeiro = lista.pop(0) #Exclui o elemento 'do'
print(lista) #Saída: ['re', 'mi', 'fa', 'sol']
print(ultimo) #Saída: ['la']
print(primeiro) #Saída: ['do']
A exclusão de elementos de uma lista também pode ser realizada pelo 
seu conteúdo. A função remove localiza o elemento na lista e efetua sua 
exclusão. Além disso, é possível excluir toda a lista com a função clear, 
como mostram os exemplos a seguir:
lista = ['do', 're', 'mi', 'fa', 'sol', 'la', 'si']
lista.remove('do') #Exclui o elemento 'do' 
print(lista) #Saída: ['re', 'mi', 'fa', 'sol', 'la', 'si']
lista.clear() #Exclui todos os elementos da lista
print(lista) #Saída: []
Fundamentos de coleçõesem Python4
LABORATÓRIO DE PROGRAMAÇÃO258
Python possui, ainda, outras funções nativas para a manipulação de listas, 
como sort e reverse, que ordenam e invertem os valores, respectivamente, 
bem como len, que informa o tamanho da lista. Veja os exemplos a seguir:
lista = [15, 23, 12, 5, 9, 2, 11]
lista.sort() #Ordena a lista
print(lista) #Saída: [2, 5, 9, 11, 12, 15, 23]
lista.reverse() #Inverte a lista
print(lista) #Saída: [23, 15, 12, 11, 9, 5, 2]
print(len(lista)) #Saída: 7
É possível utilizar a estrutura de repetição for para percorrer uma lista 
de duas maneiras. A primeira, pela faixa de elementos (range), informando 
o limite superior da estrutura e associando cada elemento ao seu índice, e a 
segunda, pelo operador in, simplificado. Veja os exemplos a seguir:
lista = ['do', 're', 'mi', 'fa', 'sol', 'la', 'si']
tamanho = len(lista) 
for indice in range(0, tamanho): #Usando range
 print(lista[indice])
for elemento in lista: #Usando in
 print((elemento))
Tuplas
Assim como uma lista, a tupla é uma estrutura de dados heterogênea que 
pode ser composta por objetos de diversos tipos, como str, int, float e 
outros. Apesar de possuírem algumas similaridades, existem diversas dife-
renças entre listas e tuplas, sendo a principal delas o fato de que as tuplas são 
imutáveis — ou seja, não é possível incluir, excluir ou alterar seus elementos 
(MUELLER, 2019).
Uma tupla pode ser declarada de várias formas, como mostram os exemplos 
a seguir:
5Fundamentos de coleções em Python
259 Programação em python utilizando coleções UNIDADE 4 Fundamentos de Coleções em Python PARTE 1
tupla1 = tuple("aeiou")
tupla2 = "a", "e", "i", "o", "u"
tupla3 = ("a", "e", "i", "o", "u")
print(tupla1) #Saída: ('a', 'e', 'i', 'o', 'u')
print(tupla2) #Saída: ('a', 'e', 'i', 'o', 'u')
print(tupla3) #Saída: ('a', 'e', 'i', 'o', 'u')
Exceto pelo primeiro exemplo de declaração, em que a palavra reservada 
tuple é utilizada, a declaração de uma tupla se dá pela indicação das vír-
gulas que separam os elementos. Parênteses são opcionais e normalmente 
são utilizados para facilitar o entendimento das declarações, exceto quando 
a tupla for criada vazia, como mostra o exemplo a seguir:
tupla = ()
print(tupla) #Saída: ()
Uma tupla de apenas um elemento deve ter a indicação da vírgula para que o 
interpretador identifique que se trata de uma tupla, e não de uma declaração de 
um tipo de dados primitivo, como int ou float. Veja os exemplos a seguir:
tupla = (1,)
inteiro = (1)
print(type(tupla)) #Saída: <class 'tuple'>
print(type(inteiro)) #Saída: <class 'int'>
tupla = (1.0,)
real = (1.0)
print(type(tupla)) #Saída: <class 'tuple'>
print(type(real)) #Saída: <class 'float>
tupla = ("1",)
texto = ("1")
print(type(tupla)) #Saída: <class 'tuple'>
print(type(texto)) #Saída: <class 'str'>
Fundamentos de coleções em Python6
LABORATÓRIO DE PROGRAMAÇÃO260
Você pode acessar determinado elemento de uma tupla da mesma maneira 
que acessa uma lista: pela indicação de seu índice. O primeiro elemento de 
uma tupla é de índice 0 (zero) e o último elemento é o índice -1 (menos um), 
como mostra o exemplo a seguir:
tupla = "a", "e", "i", "o", "u"
print(tupla[0]) #Saída: a
print(tupla[-1]) #Saída: u
print(tupla[0:2] #Saída: ('a', 'e')
Tuplas são estruturas imutáveis e, portanto, não possuem métodos que as modifiquem, 
como ordenação (sort) e inversão (reverse). 
Apesar de ser imutável, uma tupla pode conter uma lista como um elemento 
de sua relação. Como uma lista pode ser alterada, neste caso, a modificação 
é aceita pelo Python. Veja o exemplo a seguir:
tupla = 1, 2, ['a', 'b', 'c']
print(tupla) #Saída: (1, 2, ['a', 'b', 'c'])
tupla[2][1] = 'Z' #Modifica um elemento da lista
print(tupla) #Saída: (1, 2, ['a', 'Z', 'c'])
Você já sabe que uma tupla não pode ter seus elementos modificados. 
No entanto, é possível acrescentar elementos a uma tupla por meio da con-
catenação. Essa operação, na verdade, cria outra tupla com o mesmo nome, 
compreendendo o conteúdo das duas, como no exemplo a seguir:
tupla = "Domingo", "Segunda", "Terça"
tupla += "Quarta", "Quinta", "Sexta", "Sábado"
print(tupla)
#Saída: ("Domingo", "Segunda", "Terça", "Quarta", "Quinta", 
"Sexta", "Sábado")
7Fundamentos de coleções em Python
261 Programação em python utilizando coleções UNIDADE 4 Fundamentos de Coleções em Python PARTE 1
Você também pode percorrer uma tupla por meio das estruturas de repetição 
for. O acesso aos elementos ocorre da mesma forma que nas listas. Veja os 
exemplos a seguir:
tupla = "Domingo", "Segunda", "Terça", "Quarta", "Quinta", 
"Sexta", "Sábado"
tamanho = len(tupla)
for indice in range(0, tamanho): #Usando range
 print(tupla[indice])
for elemento in tupla: #Usando in
 print((elemento))
Acesse o link a seguir para conhecer mais sobre tuplas em Python. Este site contém 
a tradução do capítulo sobre tuplas do livro Pense em Python, de Allen B. Downey.
https://qrgo.page.link/AJHwe
Dicionários
Em Python, um dicionário (array associativo) é uma estrutura de objetos 
representados por pares que contêm chave e valor, na qual a chave é utilizada 
como índice para localizar determinado valor. A chave pode ser um elemento 
de qualquer tipo, não necessariamente um número (MENEZES, 2019).
Para criar um dicionário manualmente, insira elementos por meio de uma 
estrutura envolvida por chaves, conforme o exemplo a seguir, ilustrado na 
Figura 2.
dicionario = {'123':'Maurício', '125':'Maria', '131':'Manoela'}
Fundamentos de coleções em Python8
LABORATÓRIO DE PROGRAMAÇÃO262
Figura 2. Representação gráfica de um 
dicionário.
Chave Valor
123
125
131
Maurício
Maria
Manoela
Você também pode criar um dicionário a partir de uma lista de elementos, 
pela instrução dict. A lista deve estar composta por pares de tuplas, conforme 
o exemplo a seguir:
lista = [('123', 'Maurício'), ('125', 'Maria'), ('131', 'Manoela')]
dicionario = dict(lista)
Você pode acessar os valores de determinado elemento por meio das chaves 
do dicionário. O valor Manoela pode ser localizado por meio da chave 131, 
como mostra o exemplo a seguir:
print(dicionario['123']) #Saída: Maurício
print(dicionario['125']) #Saída: Maria
print(dicionario['131']) #Saída: Manoela
Outra forma de localizar um valor no dicionário é por meio da função 
get. O resultado pode ser atribuído diretamente a outra variável. Veja o 
exemplo a seguir:
nome = dicionario.get('123')
print(nome) #Saída: Maurício
Para alterar o valor de uma chave no dicionário, você pode atribuir o dado 
diretamente, como no exemplo a seguir: 
dicionario['125'] = 'Ana'
print(dicionario)
#Saída: {'123': 'Maurício', '125': 'Ana', '131': 'Manoela'}
9Fundamentos de coleções em Python
263 Programação em python utilizando coleções UNIDADE 4 Fundamentos de Coleções em Python PARTE 1
Uma nova entrada pode ser incluída ao dicionário, informando diretamente 
a chave e o valor, ou por meio do método update. Veja os exemplos a seguir:
dicionario['142'] = 'Pedro'
print(dicionario)
#Saída: {'123': 'Maurício', '125': 'Ana', '131': 'Manoela', '142': 
'Pedro'}
dicionario.update({'109':'João', '144':'Betânia'})
#Saída: {'123': 'Maurício', '125': 'Ana', '131': 'Manoela', 
# '142': 'Pedro', '109': 'João', '144': 'Betânia'}
A remoção de elementos de um dicionário pode ser realizada pela chave 
de um elemento, assim como pela função pop. Com a função pop é possível 
retornar uma mensagem caso o elemento nãoseja encontrado no dicionário. 
Veja os exemplos a seguir:
del dicionario['131'] #Exclui Manoela
print(dicionario)
#Saída: {'123': 'Maurício', '125': 'Ana', '142': 'Pedro', 
# '109': 'João', '144': 'Betânia'}
nome = dicionario.pop('141', 'Não encontrado para excluir')
print(nome) #Não existe a chave 141 para excluir
#Saída: Não encontrado para excluir 
nome = dicionario.pop('142', 'Não encontrado para excluir')
print(dicionario) #Excluiu o Pedro
#Saída: {'123': 'Maurício', '125': 'Ana', '109': 'João', 
# '144': 'Betânia'}
Fundamentos de coleções em Python10
LABORATÓRIO DE PROGRAMAÇÃO264
Você pode percorrer o dicionário por uma estrutura de repetição for. Nessa 
estrutura, você tem acesso tanto à chave quanto ao valor de cada elemento. 
Veja o exemplo a seguir:
for chave in dicionario:
 print(chave, dicionario[chave])
#Saída: 123 Maurício
#Saída: 125 Ana
#Saída: 109 João
#Saída: 144 Betânia
As funções keys, values e items retornam, respectivamente, as cha-
ves, os valores e as tuplas de cada elemento do dicionário, como mostra o 
exemplo a seguir:
print(dicionario.keys())
print(dicionario.values())
print(dicionario.items())
#Saída: dict _ keys(['123', '125', '109', '144'])
#Saída: dict _ values(['Maurício', 'Ana', 'João', 'Betânia'])
#Saída: dict _ items([('123', 'Maurício'), ('125', 'Ana'), 
# ('109', 'João'), ('144', 'Betânia')])
MATTHES, E. Curso intensivo de Python: uma introdução prática e baseada em projetos 
à programação. São Paulo: Novatec, 2016. 656 p.
MENEZES, N. N. C. Introdução à programação com Python: algoritmos e lógica de pro-
gramação para iniciantes. 3. ed. São Paulo: Novatec, 2019. 328 p.
MUELLER, J. P. Functional programming for dummies. Hoboken: Wiley, 2019. 320 p.
11Fundamentos de coleções em Python
LABORATÓRIO DE PROGRAMAÇÃO266
ENCERRA AQUI O TRECHO DO LIVRO DISPONIBILIZADO 
PELA SAGAH PARA ESTA PARTE DA UNIDADE.
PREZADO ESTUDANTE
unidade 
4
O conteúdo deste livro é 
disponibilizado por SAGAH.
Parte 2
Coleções Mapas em Python
LABORATÓRIO DE PROGRAMAÇÃO268
Coleções mapas em Python
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar coleções do tipo mapas (map).
 � Programar utilizando coleções do tipo mapas.
 � Comparar aplicações com e sem o uso de coleções do tipo mapas.
Introdução
No desenvolvimento de sistemas, aconselha-se que programadores 
utilizem os melhores recursos que as linguagens de programação ofe-
recem. A linguagem Python, por exemplo, fornece diversas funções para 
a manipulação de coleções, como a função map. Por meio dessa função 
é possível implementar programas mais claros e enxutos, como menos 
código-fonte e, consequentemente, menor propensão a erros.
Neste capítulo, você conhecerá a função map e acompanhará a 
implementação de um programa que faz uso desta. Além disso, você 
aprenderá a comparar aplicações com e sem o uso de map.
Mapas
A linguagem Python fornece diversos recursos para trabalhar com coleções, 
como listas tuplas, dicionários e outros. Entre esses recursos está a função 
map, que recebe basicamente dois parâmetros e retorna um resultado.
retorno = map(função, coleção)
 � Retorno: o retorno da função map é um objeto, que pode ser convertido 
para um tipo de coleção, de acordo com o formato desse retorno.
 � Função: nome de uma função que será executada, podendo ser uma 
função escrita por um programador ou uma função nativa da linguagem 
Python.
269 Programação em python utilizando coleções UNIDADE 4 Coleções Mapas em Python PARTE 2
 � Coleção: uma lista, tupla, dicionário ou outro tipo de coleção da lin-
guagem Python. A quantidade de coleções depende da quantidade de 
parâmetros da função.
O objetivo da função map é executar a função passada por parâmetro 
em cada um dos elementos da coleção e retornar uma nova coleção com as 
operações efetuadas (MUELLER, 2019).
Veja o exemplo a seguir da função map com uma coleção de números.
1 def dobro(n):
2 return n * 2
3
4 numeros = (5, 4, 3, 2, 1)
5 numerosDobrados = map(dobro, numeros)
6 print(numerosDobrados) #Saída: <map object at 0x000001DAB08D1240>
7 print(tuple(numerosDobrados)) #Saída: (10, 8, 6, 4, 2)
As duas primeiras linhas apresentam a função dobro, que recebe um 
número por parâmetro e retorna seu valor multiplicado por dois. Note que 
essa função não foi implementada para receber uma coleção, mas apenas um 
número, para devolvê-lo multiplicado por dois.
A linha 4 cria uma tupla de valores numéricos. Na linha 5, a variável nu-
merosDobrados invoca a função map, passando por parâmetro a função 
dobro e a tupla numeros. 
Nesse momento, a função map realiza, de modo transparente, a chamada 
da função dobro para cada elemento da tupla numeros, armazenando os 
retornos em memória para jogar o resultado à variável numerosDobrados.
Por fim, as duas últimas linhas imprimem, respectivamente, dados a seguir.
<map object at 0x000001DAB08D1240>
(10, 8, 6, 4, 2)
A primeira linha impressa apresenta o conteúdo de forma ilegível para 
seres humanos. Esse conteúdo é um objeto como resultado das operações da 
função map. Contudo, é possível converter esse objeto para uma coleção — 
no caso, tupla —, visando apresentar o resultado de maneira amigável ao 
usuário, conforme apresentado na segunda linha impressa.
Coleções mapas em Python2
LABORATÓRIO DE PROGRAMAÇÃO270
Outro exemplo de uso da função map pode ser apresentado com o apoio da 
função pow, nativa da linguagem Python. Essa função recebe dois parâmetros, 
sendo o primeiro a base e o segundo o índice para o cálculo da potência.
1 resultado = pow(3, 2)
2 print(resultado) #Saída: 9 (3²)
Como a função map requer que os parâmetros após a indicação da função 
sejam do tipo coleção, você pode utilizar uma tupla com todos os valores 
iguais pois, nesse caso, map utiliza os índices de cada coleção de maneira 
correlacionada.
1 numeros = [1, 2, 3, 4, 5]
2 indices = (2, 2, 2, 2, 2)
3 resultado = map(pow, numeros, indices)
4 print(list(resultado)) #Saída: [1, 4, 9, 16, 25]
Você pode observar que cada elemento da lista numeros foi elevado ao 
quadrado, pois a tupla indices possui o número 2 em cada item, conforme 
ilustra a Figura 1. 
Figura 1. Representação da função map com duas coleções.
1 1
2
3
4
4
9
16
255
2
2
2
2
2
12
22
32
42
52
numeros indices resultado
3Coleções mapas em Python
271 Programação em python utilizando coleções UNIDADE 4 Coleções Mapas em Python PARTE 2
A função map também pode ser utilizada para coleções de strings. 
O exemplo a seguir apresenta o uso em uma função que converte para maiúsculo 
a primeira letra de cada elemento de uma tupla.
1 def capitaliza(n):
2 return n.capitalize()
3
4 animais = 'cão', 'gato', 'pássaro',
5 animais _ c = map(capitaliza, animais)
6 print(tuple(animais _ c)) #Saída: ('Cão', 'Gato', 'Pássaro')
A função capitaliza recebe uma string e retorna a sua primeira letra 
em maiúsculo. A tupla animais possui três elementos com todas as letras 
minúsculas. O retorno da função map atribui a animais_c um objeto con-
tendo os novos elementos produzidos, cujas primeiras letras são maiúsculas. 
Por fim, a última linha do algoritmo imprime o resultado.
Programação com mapas
A função map é útil em diversos contextos, no âmbito da solução de problemas 
reais. Rotinas que precisariam ser implementadas com estruturas de repetição 
podem ser escritas de maneira simplificada e com menos linhas de código 
quando é preciso comparar ou realizar operações com coleções.
Muitos dos problemas reais são resolvidos por meio de simulações. Uma 
simulação servede base para executar rotinas com dados fictícios, que são 
utilizados para testar o comportamento de sistemas. 
O exemplo apresentado a seguir corrige provas por meio da simulação de 
respostas de candidatos, com o apoio da função map em conjunto com listas 
e dicionários em Python.
1 import random
2
3 total _ questoes = 10
4 alternativas = {0:'a', 1:'b', 2:'c', 3:'d', 4:'e'}
5 candidatos = {0:'Marilda', 1:'Marcelo', 2:'Matheus'}
Coleções mapas em Python4
LABORATÓRIO DE PROGRAMAÇÃO272
A primeira linha realiza a importação da biblioteca random para a geração 
de números aleatórios. A variável total_questoes armazena o número 
de questões das provas e os dicionários alternativas e candidatos 
armazenam, respectivamente, as alternativas das questões e os nomes dos 
candidatos.
6 def simular _ questoes(grade, total):
7 global alternativas
8
9 n = 0
10 while n < total:
11 n += 1
12 resposta = random.randint(0, 4)
13 grade.append(alternativas[resposta])
14 return grade
A função simular_questoes produz uma série de respostas que é 
utilizada para gerar o gabarito, bem como as simulações das respostas dos 
candidatos. Um número aleatório é gerado entre 0 e 4, correspondendo às 
alternativas disponíveis no dicionário alternativas: 'a', 'b', 'c', 
'd' e 'e'. A série de respostas é retornada como uma lista.
15 def verificar _ acertos(gabarito, candidato):
16 if (gabarito == candidato):
17 return '1'
18 else:
19 return '0'
A função verificar_acertos recebe o gabarito e as respostas de 
um candidato para comparar e produzir uma resposta que identifica '1' 
como resposta igual ao gabarito e '0' como diferente para cada alternativa 
do candidato. Essa função será utilizada, posteriormente, pela chamada da 
função map.
5Coleções mapas em Python
273 Programação em python utilizando coleções UNIDADE 4 Coleções Mapas em Python PARTE 2
20 gabarito = []
21 gabarito = simular _ questoes(gabarito, total _ questoes)
22 correcoes = []
23 maior _ acerto = 0
24 total _ candidatos = len(candidatos)
25 for indice in range(total _ candidatos):
26 print(f'Gabarito:{gabarito}')
27
28 candidato = []
29 candidato = simular _ questoes(candidato, total _ questoes)
30 print(f'{candidatos[indice]}: {candidato}')
31
32 correcao = tuple(map(verificar _ acertos, gabarito, 
candidato))
33
34 acertos = correcao.count('1')
35 print(f'{candidatos[indice]}: {correcao} = {acertos} 
acertos.')
36 if acertos > maior _ acerto:
37 maior _ acerto = acertos
38 vencedor = candidatos[indice]
39 print("") #linha em branco para facilitar a visualização
40
41 print(f'O vencedor é {vencedor} com {maior _ acerto} 
acertos.')
Este trecho produz o gabarito (linha 21) e implementa uma estrutura 
de repetição para simular as respostas de cada um dos candidatos (linhas 
25 a 41). Cada candidato recebe as suas alternativas geradas (linha 29), 
que são passadas pela função map junto com o gabarito e a função ve-
rificar_acertos (linha 32).
O retorno da função map produz uma nova lista, contendo os erros e 
acertos de cada candidato, por meio da comparação de cada alternativa 
do candidato com o gabarito. A quantidade de acertos de cada 
candidato é contabilizada pela função count (linha 34). 
Coleções mapas em Python6
LABORATÓRIO DE PROGRAMAÇÃO274
Por fim, o algoritmo identifica quem fez mais acertos e exibe as alter-
nativas de cada candidato na tela, bem como a tupla de correções de cada 
candidato, conforme a simulação a seguir (linhas 35 a 41).
Gabarito:['c', 'd', 'a', 'd', 'd', 'a', 'd', 'e', 'c', 'c']
Marilda: ['d', 'c', 'b', 'a', 'b', 'b', 'e', 'b', 'e', 'b']
Marilda: ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0'] = 0 
acertos.
Gabarito:['c', 'd', 'a', 'd', 'd', 'a', 'd', 'e', 'c', 'c']
Marcelo: ['b', 'e', 'e', 'd', 'c', 'e', 'd', 'c', 'd', 'e']
Marcelo: ['0', '0', '0', '1', '0', '0', '1', '0', '0', '0'] = 2 acertos.
Gabarito:['c', 'd', 'a', 'd', 'd', 'a', 'd', 'e', 'c', 'c']
Matheus: ['b', 'd', 'd', 'd', 'a', 'a', 'd', 'e', 'b', 'c']
Matheus: ['0', '1', '0', '1', '0', '1', '1', '1', '0', '1'] = 6 acertos.
O vencedor é Matheus com 6 acertos.
Com pequenas adaptações, esse algoritmo pode ser utilizado para simular e 
corrigir provas de vestibular, concursos públicos e outras situações semelhantes 
que possuem questões objetivas.
Comparação de programas com e sem mapas
Como visto, a função map pode ser utilizada para facilitar a execução de 
operações com coleções, uma vez que ela executa outra função junto com 
uma ou mais coleções por parâmetro, de acordo com a assinatura da função 
invocada — declaração e parâmetros esperados.
A forma de atuação da função map faz com que os elementos das coleções 
sejam tratados individualmente, reduzindo a quantidade de código que precisa 
ser escrito porque não requer a implementação de laços de repetição.
Nesse sentido, alguns exemplos de operações com listas serão apresentados 
para comparar soluções com e sem o uso da função map.
7Coleções mapas em Python
275 Programação em python utilizando coleções UNIDADE 4 Coleções Mapas em Python PARTE 2
Extração da raiz quadrada de todos os elementos 
de uma lista
Você pode utilizara a função sqrt da biblioteca math, do Python, para extrair 
a raiz quadrada de um número. No entanto, para extrair a raiz quadrada de 
todos os elementos de uma lista é preciso chamar a função sqrt individual-
mente, enquanto percorre uma lista por meio de uma estrutura de repetição.
1 import math
2 lista = [4, 9, 16, 36]
3
4 def raiz _ no _ map(lista):
5 retorno = []
6 for elemento in lista:
7 retorno.append(math.sqrt(elemento))
8 return retorno
9
10 retorno _ no _ map = raiz _ no _ map(lista)
11 print(retorno _ no _ map) #Saída: [2.0, 3.0, 4.0, 6.0]
A função raiz_no_map recebe uma lista por parâmetro, implementa 
uma estrutura de repetição for e, para cada elemento, invoca a função sqrt 
da biblioteca math. Cada retorno é anexado ao final da lista retorno.
Um algoritmo que implementa a função map é apresentado a seguir.
13 retorno _ map = list(map(math.sqrt, lista))
14 print(retorno _ map) #Saída: [2.0, 3.0, 4.0, 6.0]
Esse algoritmo passa a função sqrt da biblioteca math e uma lista como 
parâmetro para a função map. O retorno é um objeto que pode ser conver-
tido para uma coleção, como uma lista. A função sqrt é chamada para cada 
elemento da lista pela função map, armazenando os resultados em memória 
até que a lista seja totalmente percorrida. 
Coleções mapas em Python8
LABORATÓRIO DE PROGRAMAÇÃO276
Multiplicação entre elementos de duas listas
A função map pode ser utilizada com as funções da biblioteca operator. 
Essa biblioteca possui diversas funções que executam operações entre variáveis, 
como a comparação entre elementos (maior, menor ou igual), identificação de 
valores booleanos, extração de valor absoluto, cálculos de soma, subtração, 
divisão, multiplicação, entre outros (MOLINA, 2018).
1 import operator
2 print(operator.mul(2, 4)) #Saída: 8
A função mul da biblioteca operator retorna o resultado da multipli-
cação entre dois números passados por parâmetro. No exemplo apresentado, 
o resultado é 8 porque os parâmetros 2 e 4 são multiplicados entre si.
Nesse contexto, você pode implementar um algoritmo que multiplique os 
elementos de duas listas com o auxílio da função mul, conforme apresentado 
a seguir.
1 import operator
2 lista1 = [1, 2, 3, 4, 5]
3 lista2 = [6, 7, 8, 9, 0]
4
5 def multiplica(lista1,lista2):
6 tam = len(lista1)
7 resultado = []
8 for indice in range(tam):
9 n1 = lista1[indice]
10 n2 = lista2[indice]
11 resultado.append(operator.mul(n1, n2))
12 return resultado
13
14 retorno _ no _ map = multiplica(lista1, lista2)
15 print(retorno _ no _ map) #Saída: [6, 14, 24, 36, 0]
Note que a função multiplica precisa percorrer a quantidade de ele-
mentos das listas e utilizar a função mul individualmente entre cada elemento 
das duas listas. O resultado cria uma lista contendo a multiplicação desses 
elementos.
9Coleções mapas em Python
277 Programação em python utilizando coleções UNIDADE 4 Coleções Mapas em Python PARTE 2
Utilizando a função map, você pode implementar um algoritmo que apre-
senta o mesmo resultado com menos linhas de código.
17 retorno _ map = map(operator.mul, lista1, lista2)
18 print(list(retorno _ map)) #Saída: [6, 14, 24, 36, 0]
Semanticamente, os algoritmos apresentam o mesmo resultado. No entanto, 
utilizando a função map, percebe-se a redução do código, assim como sua 
simplificação. Além disso, reduz-se a possibilidade de erros, uma vez que o 
algoritmo sem a função map implementa as operações de maneira explícita.
Compreensão de listas
Compreensão de listas, ou list comprehensions, é uma maneira po-
derosa e concisa de gerar listas em Python. A compreensão de listas executa 
uma estrutura for diretamente na chamada e, assim como a função map, 
implementa operações de modo simples (KAMTHANE; KAMTHANE, 2018).
Veja o exemplo a seguir, em que cada elemento de uma lista é multiplicado 
por ele mesmo.
1 import operator 
2 lista = [1, 2, 3, 4, 5]
3
4 retorno _ comp = [n * n for n in lista]
5 print(retorno _ comp) #Saída: [1, 4, 9, 16, 25]
A lista retorno_comp recebe o resultado da multiplicação por meio de 
uma estrutura de repetição em que a variável n identifica cada elemento na 
lista. Com a função map, o mesmo algoritmo pode ser escrito como a seguir.
7 retorno _ map = map(operator.mul, lista, lista)
8 print(list(retorno _ map)) #Saída: [1, 4, 9, 16, 25]
Coleções mapas em Python10
LABORATÓRIO DE PROGRAMAÇÃO278
ENCERRA AQUI O TRECHO DO LIVRO DISPONIBILIZADO 
PELA SAGAH PARA ESTA PARTE DA UNIDADE.
PREZADO ESTUDANTE
KAMTHANE, A. N.; KAMTHANE, A. A. Python programming. Chennai: McGraw-Hill Edu-
cation India, 2018. 442 p.
MOLINA, A. Modern Python standard library: cookbook. Birmingham: Packt, 2018. 366 p.
MUELLER, J. P. Functional programming for dummies. Hoboken: Wiley, 2019. 320 p.
11Coleções mapas em Python
unidade 
4
O conteúdo deste livro é 
disponibilizado por SAGAH.
Parte 3
Coleções Conjunto em Python
LABORATÓRIO DE PROGRAMAÇÃO280
Coleções conjunto em Pyton
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar coleções do tipo conjunto (set).
 � Programar utilizando coleções do tipo conjunto.
 � Comparar aplicações com e sem o uso de coleções do tipo conjunto.
Introdução
Neste capítulo, você estudará a utilização de coleções do tipo conjunto 
(ou set), além de conhecer o desenvolvimento em linguagem Python 
pela utilização deste tipo. Por fim, iremos comparar aplicações com e 
sem o uso de coleções do tipo conjunto.
Coleções do tipo conjuntos (set) em Python
No passado, as linguagens dinâmicas eram vistas apenas como linguagens de 
script, utilizadas para automatizar pequenas tarefas. No entanto, com o passar 
do tempo elas cresceram, amadureceram e conquistaram o mercado, a ponto 
de chamar a atenção dos grandes fornecedores de tecnologia. Dentre essas 
linguagens de script, a grande protagonista foi a linguagem Python. Mas por 
que Python é uma linguagem de script? 
As linguagens de script são linguagens de programação para a automação 
de tarefas por meio de scripts. 
Scripts são programas escritos para um ambiente de execução que pode 
interpretar e automatizar a execução de tarefas ou instruções que poderiam 
ser executadas, uma por vez, por um operador humano. 
Já Python é uma linguagem de programação de alto nível, interpretada, 
imperativa, multiparadigma, de tipagem forte e dinâmica.
281 Programação em python utilizando coleções UNIDADE 4 Coleções Conjunto em Python PARTE 3
Dentre as características citadas da linguagem Python, uma em especial será 
objeto de nosso estudo: a tipagem forte e dinâmica. Dizemos que a tipagem é 
forte quando existem tipos bem definidos, sendo que cada objeto tem um tipo. 
Esta tipagem é dinâmica pois uma variável pode mudar de tipo e armazenar 
os mais diferentes tipos de objeto (CORREIA, 2016, documento on-line). 
Veja o exemplo a seguir.
1: >>> minhaVar = 10 
2: >>> type(minhaVar) 
3: <class 'int'> 
4: >>> outraVar = False 
5: >>> type(outraVar)
6: <class 'bool'> 
7: >>> 
8: >>> teste = minhaVar 
9: >>> type(teste) 
10: <class 'int'> 
11: >>> teste = outraVar 
12: >>> type(teste) 
13: <class 'bool'>
Na linha 1, criamos uma variável chamada minhaVar, e na linha 2, 
verificamos o seu tipo: int (linha 3). Fazemos o mesmo com a variável ou-
traVar, do tipo bool (booleana). Na linha 8, atribuímos o objeto guardado 
em minhaVar para a variável teste e, assim, teste passa a ter o mesmo 
tipo do objeto atribuído (int). Esse comportamento é o que Python chama 
de tipagem forte: os objetos têm tipos e não mudam. 
Na linha 11, pegamos a variável teste, que estava armazenando um 
objeto inteiro, e atribuímos agora um objeto booleano. Esse comportamento é 
o que Python chama de tipagem dinâmica: uma variável pode mudar de tipo.
Esta característica é um dos motivos para a linguagem Python ser tão 
difundida em aplicações de pequeno, médio e grande porte. Em suma, pode-
mos utilizar Python para construir qualquer tipo de sistema, desde aplicações 
básicas, até às mais complexas.
Sua tipagem forte e dinâmica fez com que a linguagem Python fosse 
segmentada em tipos e atributos. Como principal regra em Python, temos 
identificadores de variáveis válidos, que podem conter letras (maiúsculas ou 
minúsculas), números e _ (underline), no entanto, não podem começar com 
um número. O mesmo é válido para funções, classes, módulos, entre outros.
Coleções conjunto em Pyton2
LABORATÓRIO DE PROGRAMAÇÃO282
Veja o exemplo a seguir. 
>>> x = 10 
>>> v10 = 100 
>>> v _ 123 _ _ = "valido" 
>>> _ v = True 
>>> 10var = "erro" #inválido, começa com número 
File "<stdin>", line 1 
10var = "erro"
Em Python, não existe palavra-chave para declarar variáveis. Para criar 
uma variável, basta atribuir um valor para um identificador válido e aquela 
variável é criada. Uma vez criada, podemos usar a instrução del para deletar 
a variável. Assim, ela deixa de existir.
Outra característica da linguagem Python é que é possível fazer várias 
atribuições de variáveis em uma mesma linha. Nesse caso, basta separar os 
identificadores por vírgula do lado esquerdo da atribuição (lado esquerdo do 
igual) e manter a mesma ordem no lado direito. Tal função se relaciona com 
os chamados tipos nativos.
Os tipos nativos armazenam a categoria coleções com o tipo conjunto 
(set), que utiliza o delimitador chaves { }. No Quadro 1, temos os três tipos 
que fazem parte da categoria coleções de Python. 
Fonte: Adaptado de Built-in... (2019).
Coleções
Listas list [] x = []
x = [10, 20]
x = list()
Tupla tuple () x = ()
x = (10, 20)
x = tuple()
Coleção set {} x = {}
x = {10, 20}
x = set()
Quadro 1. Tipos que fazem parte da categoria coleções do Python
3Coleções conjunto em Pyton
283 Programação em python utilizando coleções UNIDADE 4Coleções Conjunto em Python PARTE 3
O que são as coleções set? Um set ou conjunto é uma estrutura disponível 
como nativa em Python, utilizadas para representar coleções desordenadas 
de elementos únicos. As principais características dos conjuntos são: 
 � os elementos não são armazenados em uma ordem específica;
 � conjuntos não contêm elementos repetidos.
Agora que compreendemos o que são as coleções do tipo conjunto (set), 
iremos apresentar exemplos práticos de implementação, utilizando uma co-
leção deste tipo. 
Desenvolvimento utilizando coleção do 
tipo conjunto
Os conjuntos matemáticos inspiraram as linguagens de script, como a lingua-
gem Python, que empregou em seus tipos nativos a noção de conjunto ou set. 
A indexação do código em Python não utiliza a palavra conjunto, mas a 
palavra set. Portanto, iremos adotar, a partir de agora, somente a expressão 
set para desenvolver a didática do conteúdo.
Vamos simular a criação e a operação com alguns conjuntos, a fim de 
desenvolver a implementação do tipo set, começando com o tipo mais básico 
de conjunto matemática, a união, ilustrada pela Figura 1.
Figura 1. União.
Fonte: Gouveia (2019, documento on-line).
Coleções conjunto em Pyton4
LABORATÓRIO DE PROGRAMAÇÃO284
A união é a junção de conjuntos, ou seja, é o conjunto formado pelos 
elementos de um conjunto somados aos elementos de outros conjuntos. Em 
Python, representamos a união por meio da implementação da coleção do tipo 
set, como no exemplo a seguir. 
1 >>> a = {1, 2, 3, 4}
2 >>> b = {3, 4, 5, 6}
3 >>> print a.union(b)
4 set([1, 2, 3, 4, 5, 6])
Do mesmo modo que realizamos uma união de conjuntos, por meio do tipo 
set, podemos, também, realizar uma intersecção, como ilustra a Figura 2. 
Uma intersecção ocorre quando segmentamos componentes em comum entre 
dois ou mais conjuntos.
Figura 2. Intersecção.
Fonte: Gouveia (2019, documento on-line).
Em Python, representamos a intersecção por meio da implementação da 
coleção do tipo set, como no exemplo a seguir. 
1 >>> print a.intersection(b)
2 set([3, 4])
Por fim, na diferença entre dois conjuntos A e B, ilustrada pela Figura 3, 
podemos apresentar os valores referentes a um conjunto específico e sua 
respectiva implementação, por meio da coleção do tipo set em Python.
5Coleções conjunto em Pyton
285 Programação em python utilizando coleções UNIDADE 4 Coleções Conjunto em Python PARTE 3
Figura 3. Diferença entre dois con-
juntos A e B.
Fonte: Gouveia (2019, documento on-line).
1 >>> a = {1, 2, 3, 4}
2 >>> b = {3, 4, 5, 6}
3 >>> print a.difference(b)
4 set([1, 2])
5 >>> print b.difference(a)
6 set([5, 6])
Aplicações com e sem o uso de coleções 
do tipo conjunto
Conforme visto anteriormente, não temos somente o tipo conjunto dentro 
das coleções em Python. Também temos listas e tuplas, com suas respectivas 
indexações: 
lista = []
tupla = () 
As implementações de listas usando colchetes [] e tuplas usando parênteses 
() seguem o mesmo princípio de conjuntos, mudando apenas a forma lógica 
de utilizá-las, pois tratam-se de ordenações de conjuntos. 
A Figura 4 ilustra um exemplo utilizado quando precisamos descobrir 
os elementos que duas listas possuem em comum, gerando uma interseção.
Coleções conjunto em Pyton6
LABORATÓRIO DE PROGRAMAÇÃO286
Figura 4. Interseção entre elementos de 
duas listas.
Fonte: Interseção (2005, documento on-line).
Podemos representá-la por meio de listas e de conjuntos (set), como 
podemos ver a seguir.
1 >>> print a.intersection(b)
2 set([3, 4])
3 >>> l1 = [1, 2, 3]
4 >>> l2 = [2, 4, 3]
5 >>> print set(l1).intersection(l2)
6 set([2, 3])
Note que convertemos l1 em conjunto para utilizarmos o método 
intersection. Já com l2 não foi preciso realizar a conversão, pois o set 
exige que apenas o primeiro argumento seja um conjunto.
Veja, a seguir, o resultado da interseção implementando uma lista.
1 >>> l3 = list((l1).intersection(l2))
2 >>> print l3
3 [2, 3]
O método intersection não modifica os conjuntos recebidos como 
parâmetro. Caso desejássemos que o resultado da interseção fosse armazenado 
como novo valor do primeiro conjunto, ao invés de retornar o novo conjunto 
como resultado, poderíamos utilizar o método intersection_update, 
como mostra o exemplo a seguir.
7Coleções conjunto em Pyton
287 Programação em python utilizando coleções UNIDADE 4 Coleções Conjunto em Python PARTE 3
1 >>> a.intersection _ update(b)
2 >>> print a
3 [2, 3]
O resultado da implementação com listas ou conjuntos (set) é o mesmo, 
pois ambos mostraram a intersecção [2, 3].
Agora, veremos a implementação com tupla (). Tanto a lista quanto a 
tupla são estruturas de dados de armazenamento de valores. No caso, a tupla 
é uma lista imutável, ou seja, o que diferencia a estrutura lista [] da estrutura 
tupla () é o fato de que a lista pode receber elementos novos a qualquer 
instante, enquanto a tupla, após definida, não permite a adição ou a remoção 
de elementos. Logo, o exemplo anterior caberia à tupla (), sendo a única 
diferença que, caso modificássemos os conjuntos, a intersecção criada não 
se modificaria. Portanto, não é aconselhável utilizar a tupla () em conjuntos, 
a não ser que se tenha certeza de que não ocorrerão mudanças posteriores. 
Um exemplo de emprego de tuplas em Python é a designação de datas, 
já que estas não mudam: a data de hoje será sempre a data de hoje, a data de 
amanhã será sempre a data de amanhã, e assim sucessivamente.
Veja o exemplo a seguir. 
1 >>> t = hoje
2 >>> t = ("01", "Terça-Feira", "Outubro", "2019")
Observe que a data de hoje (p. ex., 05/11/2019) será sempre a data de hoje, 
amanhã será outro dia, mas o registro do dia de hoje será sempre esta data. 
A partir deste exemplo, vamos declarar os dias da semana com tuplas e com 
conjuntos (set), supondo que estes começam no dia 01, e assim sucessivamente. 
Veja o exemplo a seguir, por meio de tuplas.
01 >>> print dias da semana com tuplas
02 >>> dias _ da _ semana = ("segunda", "terça", "quarta", 
"quinta", "sexta", "sábado", "domingo")
03 >>> segunda = 1
04 >>> terça = 2
05 >>> quarta = 3
06 >>> quinta = 4
07 >>> sexta = 5
08 >>> sábado = 6
09 >>> domingo = 7
Coleções conjunto em Pyton8
LABORATÓRIO DE PROGRAMAÇÃO288
Agora, vamos utilizar os conjuntos (set) no exemplo a seguir. 
01 >>> print dias da semana com sets
02 >>> dias _ da _ semana = {("segunda", "terça", "quarta", 
"quinta", "sexta", "sábado", "domingo"}
03 >>> set {1, 2, 3, 4, 5, 6, 7}
Perceba que acabamos de montar um calendário. Neste caso, podemos 
empregar tanto os sets como as tuplas e, por conseguinte, as listas, já que uma 
tupla nada mais é que uma lista.
BUILT-IN Types. Python Software Foundation, Wilmington, 2019. Disponível em: https://
docs.python.org/3/library/stdtypes.html. Acesso em: 6 nov. 2019.
CORREIA, R. H. S. Python uma linguagem de tipagem dinâmica e forte. Abra Seu Código, 
Sorocaba, 23 fev. 2016. Disponível em: http://blog.abraseucodigo.com.br/python-uma-
-linguagem-de-tipagem-dinamica-e-forte.html. Acesso em: 6 nov. 2019.
GOUVEIA, R. Operações com Conjuntos. Toda Matéria, Matosinhos, 13 maio 2019. 
Disponível em: https://www.todamateria.com.br/operacoes-com-conjuntos/. Acesso 
em: 6 nov. 2019.
INTERSEÇÃO. In: WIKIPEDIA: a enciclopédia livre. [San Francisco, CA: Wikimedia Foun-
dation, 2005]. Disponível em: https://pt.wikipedia.org/wiki/Culin%C3%A1ria_da_
Mal%C3%A1sia. Acesso em: 6 nov. 2019.
Leituras recomendadas
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7. ed. Porto 
Alegre: AMGH; Bookman, 2011. 780 p.
SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Pearson Prentice Hall, 2008. 
552p.
TONSIG, S. L. Engenharia de software: análise e projeto de sistemas. 2. ed. Rio de Janeiro: 
Ciência Moderna, 2008. 319 p.
9Coleções conjunto em Pyton
289 Programação em python utilizando coleções UNIDADE 4 Coleções Conjunto em Python PARTE 3
Os links para sites da Web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
Coleções conjunto em Pyton10
LABORATÓRIO DE PROGRAMAÇÃO290
ENCERRA AQUI O TRECHO DO LIVRO DISPONIBILIZADO 
PELA SAGAH PARA ESTA PARTE DA UNIDADE.
PREZADO ESTUDANTE
unidade 
4
O conteúdo deste livro é 
disponibilizado por SAGAH.
Parte 4
Teste de mesa e
depuração em Python
LABORATÓRIO DE PROGRAMAÇÃO292
Caso de teste: fazer login
Projeto: rede social Autor: Maria
Roteiro: V0.1 Data: 28/12/2019
Identificador 002
Localização Tela de login
Criticidade Média
Objeto de teste Login de usuário
Caso de teste Testar ação do botão “Login” do 
formulário de entrar no sistema
Pré-condição 1. O usuário deve ter uma conta criada no sistema
Procedimento 1. Preencher o campo de login 
2. Preencher o campo de senha 
3. Pressionar o botão “Login”
Resultado esperado 1. O sistema deverá armazenar o login.
2. O sistema deverá armazenar a senha e informar 
quando a tecla “Caps Lock” estiver ativa.
3. O sistema deverá buscar no banco de 
dados o login e a senha do usuário, e validar 
se o usuário existe no sistema e se o login e 
a senha estão corretos. Caso esteja correto, o 
sistema deverá redirecionar para a tela inicial 
do sistema. Caso contrário, deverá apresentar 
a mensagem “Login ou senha estão incorretos. 
Verifique suas credenciais e tente novamente”.
Quadro 3. Caso de teste de login
A partir dos Quadros 2 e 3, é possível efetuar o teste das duas funciona-
lidades do sistema. Assim, se encontrar um erro, o testador poderá informar 
em qual passo do caso de teste ele ocorreu. Dessa forma, o desenvolvedor já 
terá uma prévia de onde iniciar o processo de debug.
Teste de mesa e depuração em Python10
293 Programação em python utilizando coleções UNIDADE 4 Teste de mesa e depuração em Python PARTE 4
Para mais informações, acesse o glossário do IEEE (em inglês), disponível no link a seguir.
https://qrgo.page.link/daTiz
3 Exemplos de teste de mesa e procedimentos 
de debug
Como você já viu anteriormente, ao encontrar um erro no código, você precisará 
fazer a depuração dele. Conforme Pressman e Maxim (2016), a depuração (ou 
debug) surge como consequência de um teste bem-sucedido, uma vez que, ao se 
encontrar um erro durante os testes, o processo de depuração é necessário para 
detectar a causa do erro e corrigi-lo. No entanto, vale ressaltar que depuração não 
é teste. Na Figura 4, você pode observar o processo de depuração, que se inicia a 
partir de um caso de testes. Depois dos testes, é feita uma depuração, que tem dois 
resultados possíveis: a causa do erro será encontrada e poderá ser corrigida, ou a 
causa do erro não é encontrada, sendo necessário gerar casos de testes adicionais.
Figura 4. Processo de caso de depuração de um código.
Fonte: Pressman e Maxim (2016, p. 489).
11Teste de mesa e depuração em Python
LABORATÓRIO DE PROGRAMAÇÃO294
Há alguns métodos para fazer a depuração de um código. Alguns ambientes de 
desenvolvimento integrado — as conhecidas IDEs (Integrated Development Environ-
ment) — já oferecem ferramentas ou permitem a instalação de plugins para efetuar 
a depuração do código. Para este capítulo, vamos utilizar uma biblioteca padrão 
da linguagem Python: o pdb (python debbuger). O pdb é um depurador de código 
interativo para programas desenvolvidos em linguagem de programação Python. 
Analise o código a seguir, responsável por efetuar o cálculo da área de um círculo.
1 import pdb
2 import math
3
4 def main():
5 pdb.set_trace()
6 raios = [1, 2, 3, 4]
7 result = 0
8 for raio in raios:
9 result = areaCirculo(raio)
10
11 def areaCirculo(raio):
12 area = math.pi * math.pow(raio, 2)
13 return área
14
15 if __name__ == "__main__":
16 main()
Para utilizar a biblioteca pdb, basta importá-la como exposto na linha 1 do 
código. Esse código basicamente calcula a área para círculos com raios 1, 2, 
3 e 4, como consta na linha 6. O início do processo de depuração do código é 
marcado pela chamada da função set_trace(), na linha 4, a qual funciona 
de forma similar a um breakpoint. Breakpoints são pontos de parada que são 
inseridos nas linhas de códigos quando se utiliza alguma ferramenta de depu-
ração disponibilizada na IDE. Assim, quando a IDE encontra os breakpoints 
durante o processo de execução do código, a execução fica parada para que o 
desenvolvedor consiga depurar a linha. Quando o código for executado, ficará 
parado na linha 4 esperando a ação do desenvolvedor, como exposto na Figura 5.
Teste de mesa e depuração em Python12
295 Programação em python utilizando coleções UNIDADE 4 Teste de mesa e depuração em Python PARTE 4
Figura 5. Execução da biblioteca pdb.
Digitando o comando n ou next, a linha apresentada na figura com (Pdb) 
é executada. Seguindo a execução do código, dentro do laço for exposto na 
linha 8, podemos visualizar o valor que a variável raio está assumindo du-
rante determinado ponto da execução, utilizando o comando print(raio), 
como exposto na Figura 6.
Figura 6. Execução do comando n ou next da biblioteca pdb.
Utilizando o comando list ou l, você poderá ver em qual linha o pro-
grama está sendo executado no momento, como mostra a Figura 7.
13Teste de mesa e depuração em Python
LABORATÓRIO DE PROGRAMAÇÃO296
Dessa forma, o processo de depuração pode ajudar a encontrar falhas 
no código que não estão relacionadas a exceções, e sim a erros humanos de 
sintaxe ou de lógica. Para auxiliar no processo de depuração ou até mesmo 
no desenvolvimento inicial, há o teste de mesa, que nada mais é do que uma 
revisão feita de forma manual, em que se busca validar a lógica de determinado 
algoritmo (PRESSMAN; MAXIM, 2016).
Utilizando o mesmo exemplo do código que calcula a área de um círculo, 
um teste de mesa poderia ser feito para validar o resultado do cálculo para cada 
iteração do laço for. No Quadro 4, você pode observar o teste de mesa desse caso.
Iteração Valor de raio Valor de raios Valor de área
1 1 1, 2, 3, 4 3,14
2 2 1, 2, 3, 4 12,56
3 3 1, 2, 3, 4 28,27
4 4 1, 2, 3, 4 50,26
5 Fim Fim Fim
Quadro 4. Exemplo de teste de mesa
Figura 7. Execução do comando l ou list da biblioteca pdb.
Teste de mesa e depuração em Python14
297 Programação em python utilizando coleções UNIDADE 4 Teste de mesa e depuração em Python PARTE 4
IEEE. IEEE standard glossary of software engineering terminology: Std 610.12-1990. New 
York, 1990.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem profissional. 8. 
ed. Porto Alegre: AMGH, 2016.
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson Education do Brasil, 
2011.
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede éextremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
15Teste de mesa e depuração em Python
Se você encontrar algum problema nesse material, entre em 
contato pelo email eadproducao@unilasalle.edu.br. Descreva o 
que você encontrou e indique a página.
Lembre-se: a boa educação se faz com a contribuição de todos!
CONTRIBUA COM A QUALIDADE DO SEU CURSO
Av. Victor Barreto, 2288
Canoas - RS
CEP: 92010-000 | 0800 541 8500
eadproducao@unilasalle.edu.br

Continue navegando