Você está na página 1de 14

Campus Taguatinga

Curso: ABI - Ciência da Computação


Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

Algoritmos e Programação de Computadores - Aula 4

Lnguagem Python - Coleções e arquivos

1. Introdução
Anteriormente, analisamos alguns tipos built-in de Python, tais como
string, int e float, bem como bools. Estes não são os únicos tipos
built-in em Python; outro grupo de tipos built-in são os tipos coleção.
Uma coleção é um único objeto representando um grupo de objetos.
As coleções também podem ser referidas como containers. Essas
classes de coleção são frequentemente usadas como base para
objetos mais complexos ou estruturas de dados e tipos de dados
específicos da aplicação. Esses tipos de coleção suportam vários
tipos de estruturas de dados (tais como listas e mapas) e formas de
processar elementos dentro dessas estruturas.

2. Tipos de coleção em Python


Há quatro tipos de coleção em Python:
● Tuplas - uma Tupla representa uma coleção de objetos que são
ordenados e imutáveis (não podem ser modificados). As tuplas
permitem a duplicação de membros e são indexados;
● Listas - as listas contêm uma coleção de objetos que são
ordenados e mutáveis, são indexados e permitem membros
duplicados;
● Sets - sets são uma coleção que não é ordenada e não indexada.
Eles são mutáveis (modificável), mas não permitir que valores
duplicados sejam mantidos;

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

● Dicionário - um dicionário é uma coleção não ordenada que é


indexada por uma chave que faz referência a um valor. O valor é
devolvido quando a chave é fornecida. Não são permitidas chaves
duplicadas. Valores duplicados são permitidos. Os dicionários são
containers mutáveis.

2.1 Tuplas
Tuplas, junto com Lists, são, provavelmente, um dos tipos de
containers Pythons mais usados. Eles estarão presentes em quase
todos os programas Python não-triviais. As Tuplas são uma coleção
imutável de objetos ordenados, isto é, cada elemento em uma tupla
tem uma posição específica (seu índice) e essa posição não muda
com o tempo. De fato, não é possível adicionar ou remover elementos
da tupla uma vez que ele tenha sido criado.

Sintaxe para criação de tupla.

nome_da_tupla = (valor1, valor2, ..., valorn)

Exemplo:
tupla_1 = (1, 3, 5, 7)

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

2.1.1 Função tuple


A função tuple() também pode ser usada para criar um novo tuple a
partir de um iterável, como List ou dicionário, por exemplo.

Exemplo:
list1 = [1, 2, 3]
t1 = tuple(list1)

print(t1)

2.1.2 Acessando elemento de uma tupla


Os elementos de uma tupla podem ser acessados usando um índice
entre colchetes, por exemplo:

tupla1 = (1,3,5,7)
print(tupla1)
print('tupla1[0]:\t', tupla1[0])

print('tupla1[1]:\t', tupla1[1])
print('tupla1[2]:\t', tupla1[2])
print('tupla1[3]:\t', tupla1[3])

Atividade 1 - Trabalhando com tuplas


1 - Crie uma tupla, como mostra o código a seguir.
pesos_notas = (2,3,5)

2 - Exiba os valores dos pesos como mostra o código a seguir.


print(pesos_notas)

3 - Mude o valor do peso 5 para 6, como mostra o código a seguir.


pesos_notas[2] = 6

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

4 - Exiba novamente os valores da tupla, como mostra o código a


seguir. Veja que foi gerado um erro ao fazer essa operação, porque os
valores em uma tupla são imutáveis, depois da sua definição.
print(pesos_notas)

2.1.3 Criando novas tuplas a partir de tuplas existentes


Também é possível devolver o que é conhecido como uma fatia de
uma tupla, esta nova tupla é composta de um subconjunto da tupla
original. Isto é feito fornecendo os índices de início e fim para a fatia,
separada por dois pontos, dentro do colchetes. Por exemplo:
tupla1 = (1,3,5,7)
tupla2 = tupla1[1:3]
print(tupla2)# Resultado (3,5)

Nota: o índice inferior e é inclusive e o superior é exclusive, por isso o


7 não entrou na tupla2.

Atividade 2 - Fatiando uma tupla


1 - Crie a tupla como mostrada no código a seguir.
quadrado_perfeito = (1, 4, 9, 16, 25, 36, 49, 64, 81, 100)

2 - Crie uma nova tupla, a partir da tupla original, com os 3 primeiros


valores, como mostra o código a seguir. Imprima o a nova tupla e veja
o resultado.
fat1 = quadrado_perfeito[0:3]

3 - Crie uma nova tupla, a partir da tupla original, com os números a


partir do 16, como mostra o código a seguir. Imprima e veja o
resultado.
fat2 = quadrado_perfeito[3:]

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

4 - Inverta a tupla original e imprima-a e imprima a tupla original,


como mostra o código a seguir. Veja que a tupla original não ficou
invertida.
print(quadrado_perfeito[::-1])
print(quadrado_perfeito)

Atividade 3 - Conhecendo outras características da tupla


1 - Crie uma tupla e imprima-a, como mostrado no código a seguir.
Veja que é possível colocar qualquer tipo de dados em uma tupla,
inclusive, outra tupla.
tupla4 = (35,'Maria', False, 40.56,-10,(2,5))

print(tupla4)

3 - Crie uma tupla como mostra o código a seguir.


tupla5 = ('Mônica','Cebolinha','Cascão','Magali')

4 - Percorra a tupla, usando o laço for, como mostra o código a seguir.


Veja que não é necessário usar range para percorrer a tupla toda.
for nome in nomes:
print(nome)

5 - Percorra a tupla, usando o laço for, como mostra o código a seguir.


Veja que é possível usar range para percorrer a tupla, nesse caso,
podemos usar a função len() para capturar o tamanho da tupla.
for i in range(0,len(nomes)):
print(nomes[i])

6 - Crie a tupla conforme mostra o código a seguir.


carros =
(('Fiat','Toro','PAZ1250'),('BMW','320i','JKK1450'),('Ford','Focus','

JEK8256'))

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

7 - Percorra a tupla como mostrado no código a seguir. Note que a


forma de percorrer uma tupla (ou outra coleção Python) é semelhante
ao processo usado para percorrer uma matriz em outras linguagens.
for i in range(0,len(carros)):
for j in range(0,len(carros[0])):
print(carros[i][j])

2.2 Listas
Muito do que foi falado a respeito de tupla serve para listas também,
exceto que elas são mutáveis, ou seja, é possível inserir, remover e
modificar elementos de uma lista. Os elementos da lista matêm-se
em ordem de inserção. Para melhor entendimento de lista, faça a
atividade a seguir.

Atividade 4 - Trabalhando com listas


1 - Crie a lista a seguir. Veja que no lugar do dos parênteses foram
usados colchetes. É possível percorrer a lista da mesma forma que foi
feito com as tuplas.
nomes = ['Mônica','Cebolinha','Cascão','Magali']

2 - Acrescente um elemento ao fim da lista, como mostra o código a


seguir.
nomes.append('Tina')

3 - Acrescente o nome da “Anjinho” no lugar do “Cebolinha”,


mudando-o de posição, como mostra o código a seguir.
nomes.insert(1,'Anjinho')

4 - Remova o último elemento da lista, como mostra o código a seguir.


nomes.pop()

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

5 - Remova o “Anjinho” da lista, como mostra o código a seguir.


del nomes[1]

6 - Remova da lista o nome cujo índice seja 3 e mostre o nome


removido, como mostra o código a seguir.
removido = nomes.pop(3)
print('Nome removido: ',removido)

7 - Insira novamente a “Mônica” no fim da lista, como mostra o código


a seguir.
nomes.append('Mônica')

8 - Remova a “Mônica”, como mostra o código a seguir. Mostre a lista,


antes e depois da remoção, e veja que apenas a primeira ocorrência
do nome foi removida.
nomes.remove('Mônica')

2.3 Sets (conjuntos)


Muito que foi dito a respeito de listas e tuplas serve para set também,
exceto que ele é um conjunto de elementos imutáveis, não é possível
alterar seus elementos (mas é possível inserir novos), que não
permite duplicatas (não permite que seja inserido elementos
repetidos). Para melhor entendimento de set, faça a atividade a
seguir.

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

Atividade 5 - Trabalhando com sets


1 - Crie o set a seguir. Veja que no lugar do dos parênteses foram
usadas chaves. É possível percorrer um set da mesma forma que foi
feito com as tuplas.
frutas = {'Maçã','Laranja','Uva','Ameixa','Maçã'}

2 - Percorra o set, como mostra o código a seguir. Note que a “Maçã”


só foi inserida uma vez no set e a ordem de inserção não foi mantida.
for fruta in frutas:
print(fruta)

3 - Verifique se existe “Laranja” no set, como mostra o código a


seguir.
print('Laranja' in frutas)

4 - Adicione “Goiaba” ao set, como mostra o código a seguir.


frutas.add('Goiaba')

5 - Adicione mais de uma fruta ao mesmo tempo, como mostra o


código a seguir.
frutas.update(['Umbu','Cajá','Manga'])

2.4 Dicionário
Um dicionário é um conjunto que associa um par chave-valor, não é
ordenado, é mutável e indexado. Um exemplo de dicionário é
mostrado na figura a seguir, onde temos um conjunto de países e
suas capitais. Observe que em um dicionário as chaves devem ser
únicas, mas os valores não precisam ser únicos. Para melhor
entendimento de set, faça a atividade a seguir.

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

Atividade 6 - Trabalhando com dicionários


1 - Crie o dicionário a seguir.
alunos = {1010:'Maria Paula',2020:'Carla Almeida',3030:'Silvia Souza'}

2 - Imprima o nome do aluno cuja matrícula seja 2020, como mostra o


código a seguir.
print(alunos[2020])

Ou
print(alunos.get(2020))
3 - Percorra o dicionário exibindo todos os nomes dos alunos, como
mostra o código a seguir.
for matricula in alunos.keys():
print(alunos[matricula])

4 - Percorra o dicionário exibindo todas as matrículas dos alunos,


como mostra o código a seguir.
for matricula in alunos.keys():

print(matricula)

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

5 - Percorra o dicionário exibindo todas as matrículas e todos os


nomes dos alunos, como mostra o código a seguir.
for matricula in alunos.keys():
print(matricula,': ',alunos[matricula])

6 - Adicione um novo aluno, como mostra o código a seguir.


alunos[4040] = 'Sophia Amorim'

7 - Altere o nome da “Maria Paula” para “Maria Paula Andrade”, como


mostra o código a seguir.
alunos[1010] = 'Maria Paula Andrade'

8 - Remova o último aluno inserido, como mostra o código a seguir.


alunos.popitem()

9 - Remova o aluno cuja matrícula seja 2020, como mostra o código a


seguir. Note que se a chave não existir, uma exceção será gerada.
alunos.pop(2020)

10 - Use os métodos values(), keys() e items() para exibir os dados do


dicionário, como mostra o código a seguir.
print(alunos.keys())
print(alunos.values())

print(alunos.items())

Exercícios
1 - Faça um programa em Python que leia um vetor de 5 posições
para números reais e, depois, um código inteiro. Se o código for 0,
finalize o programa; se for 1, mostre o vetor na ordem direta; se for 2,
mostre o vetor na ordem inversa. Caso o código seja diferente de 0, 1
ou 2, exiba uma mensagem e espere o usuário digitar um valor
correto.

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

2 - Faça um programa em Python que leia dois vetores de inteiros, x e


y, cada um com 5 elementos. Calcule e mostre os vetores resultantes
em cada caso a seguir.
Soma entre x e y: soma de cada elemento de x com o elemento da
mesma posição em y.
Produto entre x e y: multiplicação de cada elemento de x com o
elemento de y na mesma posição.

3 - Fazer um programa em Python para gerar e imprimir uma matriz


10x10, onde seus elementos são formados de acordo com as
seguintes regras:
A[i,j] = 2i + 7j - 2 se i < j;
A[i,j] = 3i2 - 1 se i = j
A[i,j] = 4i3 - 5j2 + 1 se i > j

3. Manipulação de arquivos em Python


Manipulação de arquivos em Python não tem diferença significativa
em relação a qualquer outra linguagem de programação. As
operações são as mesmas: abrir, fazer operações e fechar. A função
responsável pela abertura é a open(). Para conhecer essa função,
execute, no Python console, o comando a seguir.
print(open.__doc__)

Entre outras informações, tem-se as seguintes:


"a" - Escreve ao final do arquivo; se este não existir, é criado
"r" - Abre o arquivo para a leitura, se não existir, lança um erro de
IOError

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

"r+" - Abre um arquivo para leitura e escrita. Se não existe, lança um


erro IOError
"w" - Abre um arquivo para escrita. Se existe, ele 'trunca' tudo e
escreve por cima. Se não existir o arquivo, ele cria
"w+" - Abre para leitura e escrita. Se existe, apaga todo conteúdo e
escreve por cima. Se não existir o arquivo, ele cria
"ab", "rb", "r+b", "wb", "w+b" - Abre arquivos para trabalhar com
entrada e saída no modo binário

Para entender melhor o funcionamento de arquivos em Python, faça a


atividade a seguir.

Atividade 7 - Trabalhando com arquivos


1 - Crie uma arquivo chamado arq1.txt diretamente na pasta do
projeto Python e acrescente as informações a seguir.
Linha 1 do arquivo
Linha 2 do arquivo

Linha 3 do arquivo
Linha 4 do arquivo
Linha 5 do arquivo

2 - Execute as instruções do código a seguir. A linha 1 abre o arquivo


no modo leitura, as linhas 2 e 3 iteram sobre o arquivo e a última linha
fecha o arquivo.
arq = open('arq1.txt','r')
for linha in arq:

print(linha)
arq.close()

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

3 - Crie um arquivo para escrita, insira dados nele, leia-o e mostre os


dados na tela, como mostra o código a seguir.
arq1 = open('arq2.txt','w')
while True:

linha = input('Digite uma linha ($ para sair): ')


if linha == '$':
break

arq1.write(linha)
arq1.write('\n')
arq1.close()

4 - Crie um arquivo csv (notas.csv), como mostrado a seguir.


Nome,Nota1,Nota2,Nota3
Mônica,7.8,6.2,5.4
Magali,2.5,8.8,3.4
Cebolinha,9.0,5.8,4.6

Cascão,7.5,2.9,6.8

5 - Leia o arquivo criado no item anterior, coloque o conteúdo em um


dicionário e exiba os valores, como mostra o código a seguir.
from csv import DictReader
with open('notas.csv','r') as arquivo:

leitor_csv = DictReader(arquivo, delimiter=',')


for linha in leitor_csv:
# Cada linha é um OrderedDict

print(f"{linha['Nome']} tem nota1 = {linha['Nota1']}, nota2 =


{linha['Nota2']},nota3 = {linha['Nota3']},")
arquivo.close()

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)


Campus Taguatinga
Curso: ABI - Ciência da Computação
Disciplina: Algoritmos e Programação de Computadores
Professor: José Gonçalo dos Santos

Exercícios
1 - Leia o arquivo de notas (notas.csv), calcule a média das notas, crie
um novo arquivo e grave os mesmos dados do arquivo original
acrescido da média de cada aluno.

Bibliografia consultada
HUNT, John. A Beginners Guide to Python 3 Programming.
Springer: Brighton - UK, 2020.
LEE, Kent D. Python Programming Fundamentals. Springer: USA,
2014.

Professor José Gonçalo dos Santos (jose.santos@ifb.edu.br)

Você também pode gostar