Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

PENSAMENTO 
COMPUTACIONAL
Cleiton Silvano Goulart
Comando for, 
variáveis contadoras e 
acumuladoras (utilizando 
a linguagem Python)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever o comando for e as variáveis contadoras e acumuladoras.
 � Realizar testes de mesa em problemas que utilizem o comando for 
e as variáveis contadoras e acumuladoras.
 � Aplicar o comando for e as variáveis contadoras e acumuladoras em 
soluções computacionais.
Introdução
Neste capítulo, você vai estudar o comando for da linguagem Python. 
Com ele, você poderá criar variáveis contadoras e variáveis acumulado-
ras, que são muito importantes para manipular alguma variável do tipo 
lista. Além disso, você vai analisar como funciona o teste de mesa para 
algoritmos que usam o comando for. Esse teste é uma importante 
ferramenta, que pode ser empregada para testar e validar um algoritmo 
que foi desenvolvido.
O comando for e as variáveis contadoras e 
acumuladoras
O comando for consiste em uma estrutura de repetição baseada em alguma 
variável do tipo lista. Com esse comando, é possível executar um código es-
pecífico para cada elemento da lista. A lista pode ser qualquer tipo específico 
que você já tenha disponível no seu código.
Na Figura 1, você pode ver um exemplo do uso do comando for. Nesse 
exemplo, foi declarada uma variável do tipo lista, contendo do número 10 ao 
número 15. O comando for faz com que a variável valor assuma cada um 
dos elementos da lista, um de cada vez. Dessa forma, o comando print é 
capaz de imprimir cada um dos números da lista (PYTHON SOFTWARE 
FOUNDATION, 2019).
Figura 1. Exemplo de uso do comando for para imprimir os números 
de uma lista de valores prévios.
Quando você não tem uma lista, mas, mesmo assim, quer usar o comando 
for, é possível usá-lo com o comando range. Veja a Figura 2 para um exemplo 
dessa abordagem. O comando range cria uma lista de valores com cinco 
números inteiros, começando em 0. Na Figura 2 você também pode observar 
outro exemplo de uso do comando for junto ao comando range. Utiliza-se 
a expressão range (4, 8) para que a lista numérica seja iniciada em 4 e 
vá até o número 8.
Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)2
Figura 2. Exemplo de uso do comando for para imprimir os números 
de uma lista de valores criada com o comando range.
Outros tipos de variáveis também podem ser usados junto com o comando 
for. Podemos usar uma variável de texto, ou string, junto com o comando for; 
na Figura 3, temos um exemplo dessa aplicação. Repare que o texto nada mais 
é do que uma lista de caracteres. O comando for é capaz de atribuir à variável 
caracter cada letra da variável texto, uma de cada vez. Observa-se que o 
comando for é extremamente útil quando queremos percorrer cada elemento 
de uma lista (PYTHON SOFTWARE FOUNDATION, 2019).
Figura 3. Exemplo de uso do comando for para imprimir cada caractere 
de uma variável do tipo string.
3Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Variáveis contadoras e acumuladoras
É muito comum realizarmos alguma operação numérica com listas. Por 
exemplo, se quisermos contar quantos caracteres existem em uma frase, 
podemos usar a função for, juntamente com uma variável, para a contagem 
de caracteres. Na Figura 4, temos um exemplo que ilustra exatamente essa 
situação. Observe que, para esse exemplo, foi criada a variável qtdeLetras. 
Dentro da estrutura do comando for, a cada letra que ele percorre na frase, a
variável qtdeLetras é incrementada, isto é, é acrescida uma unidade para 
seu valor. Pode-se dizer que essa variável é uma variável contadora. Repare 
que a variável contadora não considera o valor da variável de iteração do 
comando for, a qual, nesse exemplo, é a variável letra.
Figura 4. Exemplo do uso do comando for para fazer a contagem de caracteres de uma 
frase.
Às vezes, precisamos considerar o valor da variável de iteração do co-
mando for. Um exemplo clássico é o algoritmo para o cálculo de uma média, 
que está ilustrado na Figura 5. Observe que a variável soma vai aumentando 
seu valor a cada iteração do comando for, sempre se somando com o valor
da variável de iteração do comando for. A variável soma é uma variável 
acumuladora, pois ela está, a cada iteração, acumulando o seu valor com o 
valor da variável de iteração do comando for.
Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)4
Figura 5. Exemplo do uso do comando for para fazer o cálculo da média 
de uma lista de valores numéricos.
Apesar de seu uso simples, as variáveis contadoras e as variáveis acumu-
ladoras podem promover vários erros no algoritmo. A fim de evitar que esses 
erros ocorram, é necessário sempre fazer o teste de mesa.
Testes de mesa com estrutura de repetição for
Durante o desenvolvimento dos algoritmos, é necessário que sejam feitos testes, 
a fim de certificar que o funcionamento corresponde ao esperado. O teste que 
é realizado durante a fase de desenvolvimento do algoritmo é conhecido como 
teste de mesa, conforme leciona Schach (2009). Ele é realizado geralmente 
à mão, para cada iteração do comando for. É muito importante observar o 
valor atribuído a cada variável durante cada iteração; dessa forma, é possível 
acompanhar a evolução da variável sob análise.
5Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Teste de mesa para uma variável acumuladora
As variáveis acumuladoras apresentam uma alteração do seu valor a cada 
iteração do comando for. Dessa forma, quando for realizado um teste de mesa 
que envolva uma variável acumuladora, é imperativo que seja tomado nota 
de seu valor a cada iteração. Caso o algoritmo apresente alguma falha, por 
meio da análise da evolução da variável acumuladora, será possível 
determinar em qual local do código se encontra a falha de programação.
Na Figura 6, temos um algoritmo simples que soma os números pares até 10. 
Como a condição de paridade de um número é que ele seja divisível por 2, 
esse algoritmo deve ainda fazer essa verificação. Ele a faz por meio do 
comando 
if. Lembrando que o operador % retorna o resto inteiro da divisão de dois 
números. Caso o número seja par (divisível por 2), ele será somado na 
variável 
acumuladora soma. Para verificar se esse algoritmo está funcionando como 
esperado, vamos realizar um teste de mesa para ele.
Figura 6. Algoritmo para somar os números pares até 10.
No Quadro 1, está registrado o valor de cada variável em cada iteração. 
Observe que a variável soma só é alterada quando a variável numero assume 
um valor par.
Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)6
Iteração Variável numero Variável soma
1 0 0
2 1 0
3 2 2
4 3 2
5 4 6
6 5 6
7 6 12
8 7 12
9 8 20
10 9 20
Quadro 1. Valores para o teste de mesa do algoritmo da Figura 6
Teste de mesa com variáveis contadoras
O teste de mesa envolvendo variáveis contadoras é um pouco mais simples 
do que com variáveis acumuladoras. O valor das variáveis contadoras está 
diretamente associado ao número de interações que o laço for realiza. Um
cuidado especial deve ocorrer quando a variável contadora estiver associada a 
um comando condicional if. Nesse caso, a análise da condição deve ser feita
com bastante atenção, porque o valor da variável contadora está diretamente 
associado a essa condição.
Na Figura 7 temos um algoritmo capaz de contar quantos números múltiplos 
inteiros de 3 existem nos 20 primeiros números naturais. Para isso, foram 
utilizadas duas variáveis contadoras: noVerificados e noMultiplos.
Na variável noVerificados, deverá ser feita a contagem para determinar
quantos números foram verificados durante todo o algoritmo. Repare que essa 
variável não é condicionada. Já a variável noMultiplos será incrementada
apenas se a condição do comando if for satisfeita; assim, essa variável vai
contar o número de múltiplosoperandos 
envolvidos na multiplicação forem elementos de uma lista, o resultado é a 
multiplicação da quantidade de elementos da lista, e não a operação matemática 
de multiplicação dos elementos dela.
11Criação, acesso e operadores de listas (Python)
Identificação interna do documento
O exemplo da Figura 8 mostra um código que utiliza o operador multiplicativo com 
listas.
(a)
(b)
Figura 8. (a) Operador multiplicativo com matrizes. (b) Resultado da execução do código.
O código da Figura 8a mostra na linha 2 a criação e o preenchimento de uma lista 
com quatro valores inteiros. Na linha 3 da Figura 8a, o operador multiplicativo “*” no 
comando num * 3 triplica a quantidade de elementos da lista, repetindo eles por 
três vezes; observe a impressão da nova lista na linha [1] da Figura 8b. Na linha 4 da 
Figura 8a, o operador multiplicativo “*” no comando teste = [0] * 10 cria uma 
lista teste com 10 elementos com o valor zero; observe a impressão dessa lista na 
linha [2] da Figura 8b. Na linha 5 da Figura 8a, o operador multiplicativo “*” no comando 
teste _ 2 = [2,3] * 2 cria uma matriz teste _ 2 com quatro elementos, pois 
a multiplicação da lista [2,3] por 2 duplica o tamanho da lista; observe a impressão da 
nova lista na linha [3] da Figura 8b.
Operador de busca “in” com listas
Segundo Slatkin (2015), o operador de busca “in” é utilizado para verificar 
se um determinado conteúdo pertence a uma lista. Esse operador retorna True, 
caso o valor procurado pertença à lista, e False, caso não pertença.
Criação, acesso e operadores de listas (Python)12
Identificação interna do documento
O exemplo da Figura 9 mostra um código que utiliza o operador de busca “in” com 
listas.
(a)
(b)
Figura 9. (a) Operador “in” com listas. (b) Resultado da execução do código.
O código da Figura 9a mostra, na linha 2, a criação e o preenchimento de uma lista 
com nove valores inteiros. Na linha 4 da Figura 9a, o comando 1 in lin verifica 
se o valor 1 pertence a essa lista. Na linha 6 da Figura 9a, o comando 8 in lin 
verifica se o valor 8 pertence a essa lista. Na linha 8 da Figura 9a, o comando 10 in 
lin verifica se o valor 10 pertence a essa lista. Observe no resultado da execução 
do código, mostrado na Figura 9b, que os valores 1 e 8 pertencem à lista, enquanto 
o valor 10 não pertence.
Método len()
Segundo Banin (2018), em Python, o método len() retorna o comprimento 
de uma lista, ou seja, a quantidade de elementos existentes nessa lista. Esse 
método é muito útil para compreenderemos o funcionando dos operadores 
aditivos e multiplicativos em Python.
13Criação, acesso e operadores de listas (Python)
Identificação interna do documento
O exemplo da Figura 10 mostra um código que utiliza o método len() para mostrar 
a quantidade de elementos de diversas listas.
(a)
(b)
Figura 10. (a) Método len() utilizado com listas. (b) Resultado da execução do código.
O código da Figura 10a contém, na linha 2, a criação da primeira lista, lista _ 1, 
construída com quatro elementos com tipos de dados diferentes. Na linha 5 da Figura 9a, 
o comando len (teste) retorna a quantidade de elementos que a primeira lista 
possui — nesse exemplo, são quatro elementos. O resultado da execução desse 
comando pode ser observado na primeira linha impressa da Figura 9b.
A linha 7 traz a criação da segunda lista, lista _ 2. Observe que o comando 
len (lista _ 2) da linha 9 retorna que a segunda lista tem quatro elementos 
também — veja a segunda linha impressa da Figura 10b. Isso acontece porque o 
Python entende que a lista [‘A’, ‘B’] é um elemento da lista e, assim, indica que a lista 
tem quatro elementos.
Seguindo o código da Figura 10a, verifica-se a criação da terceira lista, lista _ 3, 
na linha 12. O comando len (lista _ 3) da linha 14 retorna que a terceira lista 
tem quatro elementos, conforme mostra a terceira linha impressa da Figura 10b. Isso 
porque as listas dentro de uma lista são contadas como elementos (colunas) da lista. 
Uso de matrizes em problemas computacionais
As listas são utilizadas em diversos problemas computacionais, como em 
programas para realizar cálculos matemáticos entre listas com valores numé-
ricos, em programas para criar gráficos para visualizar dados e em programas 
para gerar relatórios com dados de vendas de um estabelecimento comercial. 
Criação, acesso e operadores de listas (Python)14
Identificação interna do documento
Desse modo, o armazenamento de dados em listas é bastante comum em 
programação, pois seu uso facilita e dinamiza um programa que necessita de 
grandes quantidades de variáveis. Afinal, é mais simples acessar os dados a 
partir de uma variável com nome único, apenas referenciando a posição por 
meio dos índices da lista.
Biblioteca numpy
Segundo Ramalho (2015), a biblioteca numpy é um pacote de ferramentas 
utilizado para executar cálculos matemáticos com arrays multidimensionais 
(listas e matrizes) em Python. Ela contém funções e métodos que auxiliam os 
programadores a realizar operações numéricas com listas e vetores, necessá-
rias em diversas áreas, como no posicionamento espacial de manipuladores 
robóticos, em modelos machine learning, no processamento de imagem em 
computação gráfica, entre outras aplicações.
A Figura 11 mostra um código que utiliza a biblioteca numpy para criar 
e realizar operações matemáticas com listas em Python.
Figura 11. (a) Código com a biblioteca numpy para trabalhar com listas. (b) Resultado da 
execução do código.
(a)
(b)
15Criação, acesso e operadores de listas (Python)
Identificação interna do documento
Na Figura 11a, é possível observar, na linha 2, a importação da biblioteca 
numpy. Nas linhas 4 e 5, o método array() é utilizado para criar as listas 
com elementos listados entre colchetes. Seguindo o código, a linha 9 realiza 
a operação de soma entre os elementos das listas. A operação matemática da 
linha 9 soma o primeiro elemento da primeira lista com o primeiro elemento 
da segunda lista, o segundo elemento da primeira lista com o segundo ele-
mento da segunda lista, e assim por diante. A linha 10 realiza a operação de 
subtração dos elementos entre as listas. A operação matemática da linha 10 
subtrai o primeiro elemento da primeira lista com o primeiro elemento da 
segunda lista, o segundo elemento da primeira lista com o segundo elemento 
da segunda lista, e assim por diante. A linha 11 realiza a operação de mul-
tiplicação dos elementos entre as listas. A operação matemática da linha 11 
multiplica o primeiro elemento da primeira lista com o primeiro elemento da 
segunda lista, o segundo elemento da primeira lista com o segundo elemento 
da segunda lista, e assim por diante. Por fim, a linha 12 realiza a operação 
de divisão dos elementos entre as listas. A operação matemática da linha 12 
divide o primeiro elemento da primeira lista pelo primeiro elemento da segunda 
lista, o segundo elemento da primeira lista pelo segundo elemento da segunda 
lista, e assim por diante.
As operações de soma e multiplicação merecem uma atenção especial. 
Nesse caso, como as listas foram criadas com o método array() da biblioteca 
numpy, os sinais de adição “+” e de multiplicação “*” realizam as operações 
matemáticas de soma e multiplicação entre os elementos das listas.
Criando gráficos a partir de listas
Segundo Downey (2016), na linguagem de programação Python, as listas 
podem armazenar diversos dados, como o número de vendas mensal de uma 
loja de departamentos, a quantidade de acessos diários a um site na internet, 
o crescimento populacional em um país, o índice de criminalidade de uma 
região da cidade, entre outros elementos. Então, as listas podem ser utilizadas 
para gerar gráficos, que são utilizados frequentemente para exibir visualmente 
os dados brutos ou os valores numéricos armazenados nas listas e, assim, 
facilitar a interpretação dessas informações.
Em Python, a biblioteca matplotlib permite trabalhar com as informa-
ções registradas em listas e transformá-las em gráficos.A Figura 12 mostra 
um código que cria um gráfico a partir de dados armazenados em duas listas.
Criação, acesso e operadores de listas (Python)16
Identificação interna do documento
Figura 12. (a) Código com a biblioteca matplotlib para trabalhar com listas. (b) Resultado 
da execução do código.
(b)(a)
Na Figura 12a, é possível observar na linha 2 a importação da biblioteca 
matplotlib. Nas linhas 4 e 5, tem-se a criação das listas, que representarão 
os eixos x (horizontal) e y (vertical) do gráfico. Na linha 7, o comando plt.
plot() cria o gráfico e o armazena na memória do computador. Nas linhas 
9, 10 e 11, os elementos textuais (título, rótulo do eixo horizontal e rótulo do 
eixo vertical) do gráfico são inseridos no mesmo. Na linha 13, o comando 
plt.grid() mostra as linhas de grade do gráfico. Por fim, o comando plt.
show() da linha 15 mostra o gráfico na tela do computador. O resultado da 
execução do código é mostrado na Figura 12b.
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: 
Érica, 2018, 264 p.
BARRY, P. Use a cabeça! Python. 2. ed. Rio de Janeiro: Alta Books, 2018. 616 p. (Série Use 
a Cabeça/Head First).
DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo: 
Novatec, 2016. 312 p.
MATTHES, E. Curso intensivo de Python: uma introdução prática e baseada em projetos 
à programação. São Paulo: Novatec, 2016. 656 p.
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento 
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
17Criação, acesso e operadores de listas (Python)
Identificação interna do documento
RAMALHO, L. Python fluente. São Paulo: Novatec, 2015. 800 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo: 
Novatec, 2015. 296 p.
Leituras recomendadas
BANIN, S. L. Tipos de estruturados sequenciais em Python. In: BANIN, S. L. Python 3: 
conceitos e aplicações: uma abordagem didática. São Paulo: Érica, 2018. cap. 4.
BORGES, L. E. Python para desenvolvedores: aborda Python 3.3. São Paulo: Novatec, 2014. 
MATPLOTLIB: Python plotting. The Matplotlib development team, [S. l.], 2018. Disponível em: 
https://matplotlib.org/. Acesso em: 14 jun. 2019.
NUMPY: the fundamental package for scientific computing with Python. NumPy de-
velopers, [S. l.], 2019. Disponível em: https://www.numpy.org/. Acesso em: 14 jun. 2019.
RAMALHO, L. Dados sequenciais. In: RAMALHO, L. Python fluente. São Paulo: Novatec, 
2015. cap. 2.
Criação, acesso e operadores de listas (Python)18
Identificação interna do documento
Identificação interna do documento
Identificação interna do documento
PENSAMENTO 
COMPUTACIONAL
Fernando Esquírio Torres
Criação, acesso 
e operadores de 
matrizes (Python)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Definir matrizes em Python, a sua criação e o seu acesso.
 � Discutir os operadores de matrizes em Python.
 � Utilizar matrizes em problemas computacionais.
Introdução
As matrizes são utilizadas em diversas aplicações, por exemplo: na criação 
de objetos 2D e 3D na computação gráfica, na navegação de dispositivos 
móveis usados na robótica, na implementação de redes neurais artificiais, 
na representação de imagens digitais, entre outras. Nesse contexto, o 
Python é bastante utilizado para solucionar problemas dessas áreas, seja 
no desenvolvimento de jogos, na análise de dados em Data Science, na 
programação de robôs, etc.
A linguagem Python oferece ferramentas para manipular matrizes, 
proporcionando flexibilidade e versatilidade para trabalhar com esse tipo 
de estrutura sequencial. As matrizes são, em algumas situações, utilizadas 
para correlacionar informações, podendo armazenar dados de diversos 
tipos. Desse modo, é importante que o programador aprenda a trabalhar 
com essa estrutura sequencial de dados.
Neste capítulo, você vai verificar como definir matrizes em Python, 
como criá-las e como acessá-las. Em seguida, você vai estudar os opera-
dores de matrizes na linguagem Python. Por fim, vai analisar aplicações 
que utilizam matrizes para resolver problemas computacionais.
Matrizes em Python: criação e acesso
As matrizes podem ser compreendidas como um conjunto de dados, números 
e/ou símbolos estruturados em duas ou mais dimensões. A estrutura matricial 
mais comum é a matriz bidimensional, isto é, com duas dimensões, que tem 
sua estrutura em forma de tabela, com os elementos organizados em linhas 
e colunas.
Em Python, as matrizes são estruturas que armazenam seus dados sequen-
cialmente e permitem o acesso individual ou em grupo aos seus elementos. 
Segundo Ramalho (2015), a linguagem Python classifica as matrizes por tipos 
de dados sequenciais; elas podem ser obtidas a partir da construção de uma 
lista de listas. Os grupos de valores armazenados em uma matriz podem ser 
do mesmo tipo ou de diferentes tipos de dados (numéricos, caracteres, strings, 
etc.). Além disso, as matrizes têm a propriedade de serem utilizadas como 
objetos iteráveis, isto é, objetos cujos elementos podem ser percorridos de 
forma implícita, conforme leciona Banin (2018).
Segundo Barry (2018), na matemática, as matrizes bidimensionais m × n 
têm seus elementos organizados em m linhas e n colunas. Os elementos de 
uma matriz são indicados por aij, em que i e j são índices que representam, 
respectivamente, a linha e a coluna do elemento dentro da matriz (Figura 1). 
O índice i (linha) começa no valor 0 e vai até o valor m – 1, e o índice j vai de 
0 até o n – 1. Desse modo, o primeiro elemento da matriz a00 está na linha 0 
e na coluna 0, e o último elemento da matriz am-1n-1 está na linha m − 1 e na 
coluna n − 1. Essa informação será importante quando for necessário percorrer 
os elementos dentro de uma matriz.
Figura 1. Elementos de uma matriz bidimensional m × n.
Criação, acesso e operadores de matrizes (Python)2
Criação de matrizes em Python
Segundo Ramalho (2015), uma matriz é uma lista de listas. Relembrando: 
a criação de listas é realizada com os itens sequenciais organizados entre 
colchetes [] e separados por vírgulas, conforme o exemplo a seguir: 
a = [0, 1, 2, 3, 4]
Desse modo, a criação de uma matriz em Python é realizada pela agregação 
de listas — que não precisam ser do mesmo tamanho (número de colunas) 
—, organizadas sequencialmente. De acordo com Borges (2014), as listas 
dentro de uma matriz representam as linhas dessa matriz, e as colunas são os 
elementos das listas, como mostrado na declaração a seguir:
matriz = [lista 1, lista 2, ..., lista N]
Por exemplo, a matriz bidimensional que é mostrada a seguir possui duas 
listas, ou seja, duas linhas, e essas listas possuem dois elementos, ou seja, 
duas colunas.
matriz = [[0, 1], [2, 3]]
Assim como as listas, as matrizes podem armazenar itens heterogêneos, 
ou seja, diferentes tipos de dados. Conforme mostra o exemplo a seguir, é 
possível criar uma matriz com o nome de uma pessoa, que é uma sequência de 
caracteres, e a idade, que é um valor numérico. Observe que, nesse exemplo, 
as listas não precisam ter o mesmo tamanho (número de colunas).
matriz = [['Pedro', 22], ['Ana', 15], ['João']]
Acesso a matrizes em Python
Matrizes armazenam seus dados organizados sequencialmente em seu con-
teúdo. Elas permitem o acesso individual a cada um de seus elementos e 
podem ser utilizadas como estruturas iteráveis, conforme visto anteriormente. 
Lembre-se de que a localização dos elementos (aij) em uma matriz é indicada 
pelos índices i (linha) e j (coluna), começando a contagem sempre pelo valor 
0 (zero). Então, o primeiro elemento está na posição linha 0 (zero) e coluna 
3Criação, acesso e operadores de matrizes (Python)
0 (zero), o segundo elemento está na posição linha 0 (zero) e coluna 1 (um), 
e assim por diante.
O acesso individual a um elemento específico de uma matriz é realizado 
pelo nome dado à matriz na sua criação e pelos índices, especificando a linha 
(i) e a coluna (j) entre colchetes,como mostrado na declaração abaixo. Esse 
comando faz a leitura de um dado da matriz localizado na posição [i][j], 
indicada pelos índices linha (i) e coluna (j).
matriz[i][j]
Caso você queira modificar o valor de um elemento específico da matriz, 
basta utilizar o operador de atribuição com o novo valor a ser armazenado, 
como mostrado no comando a seguir. Na declaração mostrada, o valor 35 é 
armazenado no elemento da posição linha 0 e coluna 1.
matriz[0][1]=35
Observe o exemplo mostrado na Figura 2, que possui um código para fazer a leitura 
e a alteração de elementos de uma matriz individualmente.
(b)
(a)
Figura 2. (a) Leitura e alteração de um elemento em uma matriz. (b) Resultado da execução 
do código.
Criação, acesso e operadores de matrizes (Python)4
As linhas 4 e 5 do código da Figura 2a contêm os comandos matriz[0][0] e 
matriz[1][0], que servem para ler um elemento individualmente na matriz. O 
resultado da execução desses comandos é mostrado nas duas primeiras linhas da Figura 
2b. Os comandos das linhas 8 e 9 modificam o conteúdo de um elemento especificado 
pelos índices i (linha) e j (coluna) entre colchetes. O resultado da execução desses 
comandos é mostrado nas duas últimas linhas da Figura 2b.
Como uma matriz é uma lista de listas, o acesso a um grupo de elementos 
de uma matriz é construído por partes. Sendo assim, é possível acessar um 
conjunto de elementos da matriz das seguintes formas:
 � Indicando apenas a linha que se deseja acessar, por meio do comando 
nome_da_matriz[linha]. Esse comando acessa todos os elemen-
tos da linha da matriz.
 � Indicando um intervalo de linhas da matriz, por meio do comando 
nome_da_matriz[linha
inicial
:linha
final
]. Esse comando 
retornará as linhas a partir da linha
inicial
 até a linha
final
 – 1.
Conforme leciona Downey (2016), as colunas em uma matriz são elementos 
dentro de listas (linhas), que estão dentro da lista maior, que é a matriz. Assim, 
não é possível acessá-las dessa mesma forma, sendo necessário acessar os 
elementos individualmente (isso será visto na próxima subseção). 
Caso você queira modificar uma ou mais linhas de elementos de uma matriz, 
basta indicar o intervalo a ser alterado e utilizar o operador de atribuição com 
o conjunto de valores a ser armazenado.
5Criação, acesso e operadores de matrizes (Python)
Observe o exemplo mostrado na Figura 3, que possui um código para fazer a leitura 
e a alteração de um grupo de elementos de uma matriz.
(a)
(b)
Figura 3. (a) Leitura e alteração de um grupo de elementos em uma matriz. (b) Resultado 
da execução do código.
Segundo Ramalho (2015), a linha 5 do código da Figura 3a contém o comando 
numeros[0], que serve para acessar todos os elementos de uma linha. Observe na 
Figura 3b o resultado da execução desse comando. O comando da linha 8, nume-
ros[1:3], acessa as linhas 1 e 2 da matriz, que são especificadas pelo intervalo 1:3 
entre colchetes. O resultado da execução desses comandos é mostrado na segunda 
linha da Figura 3b.
A linha 11 da Figura 3a contém o comando numeros[1] = ['A', 'B', 'C', 
'D'], que modifica a lista da segunda linha da matriz. O resultado da execução desse 
comando pode ser observado na terceira linha impressa da Figura 3b. Repare que se 
pode substituir a lista completa que estava na linha selecionada pela nova lista, e essa 
nova lista não precisa ter os mesmos tipos e a mesma quantidade de elementos. O 
comando numeros[0:2] = [['W', 'X', 'Y', 'Z'],[20, 30, 40, 
50]], na linha 15 da Figura 3ª, substitui as linhas 0 e 1 da matriz, indicadas pelo 
intervalo 0:2. O resultado da execução desse comando pode ser visualizado na quarta 
linha impressa da Figura 3b.
Criação, acesso e operadores de matrizes (Python)6
Percorrer elementos de uma matriz em Python
Na subseção anterior, foi visto como acessar individualmente os elementos 
de uma matriz, e os exemplos citados funcionaram de forma satisfatória para 
acessar poucos elementos. Mas, como proceder se for necessário acessar todos 
os elementos de uma matriz? Imagine uma matriz com 100 elementos — não 
seria prático fazer um comando para acessar cada elemento individualmente, 
certo? Então, existe uma solução melhor?
De acordo com Perkovic (2016), em Python, é possível percorrer cada 
elemento de uma matriz por meio de laços de repetição (for ou while) 
aninhados (um laço dentro do outro), seja para preencher a matriz ou para 
acessar e imprimir os elementos dessa matriz.
O exemplo da Figura 4 mostra um código para preencher uma matriz 2 × 3 com valores 
numéricos, utilizando laços de repetição aninhados, e depois acessar e imprimir esses 
dados formatados em uma tabela, também utilizando laços de repetição aninhados.
(a)
(b)
(c)
Figura 4. (a) Código para percorrer dados de uma matriz. (b) Entrada de dados do programa. 
(c) Resultado da execução do código.
7Criação, acesso e operadores de matrizes (Python)
Para um melhor entendimento do código da Figura 4a, ele será explicado por 
partes. Na primeira parte, temos a criação da matriz com valores nulos. O comando da 
linha 2 cria uma matriz 2 × 3 com valores nulos; nesse caso, a dimensão da matriz foi 
preestabelecida (duas linhas e três colunas). Porém, segundo Banin (2018), existe uma 
maneira mais eficiente para popular matrizes com valores nulos, utilizando o método 
append (). Para o presente capítulo, essa forma é uma estratégia possível dentro 
do que foi ensinado para popular matrizes com valores nulos.
Na segunda parte, temos o preenchimento da matriz. Os laços de repetição (for) 
aninhados nas linhas 6 e 7 permitem o acesso a cada elemento da matriz. O comando 
for da linha 6 fixa a linha da matriz, variando a variável lin entre os valores 0 e 
len(matriz) - 1, enquanto o comando for da linha 7 varre as colunas de cada 
linha, variando a variável col entre os valores 0 e len(matriz[lin]) - 1. Assim, 
o laço externo controla as linhas da matriz, e o laço interno, as colunas, percorrendo 
todos os elementos dela. Segundo Matthes (2016), o método len() retorna o tama-
nho de uma lista mais externa. Por exemplo, o comando len(matriz) retorna a 
quantidade de linhas que estão dentro da matriz — no código da Figura 4a, temos 
duas linhas —, e o comando len(matriz([linha]) retorna o tamanho da 
lista interna de cada linha da matriz — no código da Figura 4a, temos três colunas. 
Desse modo, a linha percorre os índices 0 e 1, e a coluna percorre os índices 0, 1 e 2, 
acessando os elementos nas posições (0,0), (0,1), (0,2), (1,0), (1,1) e (1,2). O comando da 
linha 8 da Figura 4a, dentro dos for aninhados, solicita ao usuário um número que 
será armazenado em cada elemento da matriz. O resultado da execução dessa parte 
do código é mostrado na Figura 4b.
Por fim, na terceira parte, temos a impressão da matriz. Os laços for aninhados nas 
linhas 14 e 15 fazem a varredura dos elementos da matriz, de modo semelhante ao 
explicado na parte anterior. O que difere são os comandos para imprimir os valores 
da matriz formatados em uma tabela, como mostrado na Figura 4c.
De acordo com Slatkin (2015), pode-se imprimir os dados de uma tabela de 
uma maneira mais simples, sendo possível imprimir linha por linha completa 
ou elemento por elemento, sem a necessidade do método len().
Criação, acesso e operadores de matrizes (Python)8
O exemplo da Figura 5 mostra um código para percorrer uma matriz e imprimir seus 
elementos de uma maneira mais simples e prática.
(a)
(b)
Figura 5. (a) Imprimindo uma matriz de uma forma mais simples. (b) Resultado da execução 
do código.
O código mostrado na Figura 5a possui o comando para criação e inicialização da 
matriz na linha 2. O primeiro laço for na linha 6 da Figura 5a imprime as linhas da 
matriz. Nesse comando, for lin in matriz:, a variável lin percorre as listas; 
assim, a variável lin representa, a cada iteração do for, uma lin da matriz. Observe 
na primeira parte da Figura 5b que, no resultado da execução desse laço, as listas que 
compõem as linhas da matriz sãoimpressas na tela. Nas linhas 13 e 14 da Figura 5b, o 
laço de repetição com fors aninhados imprime os elementos dessa matriz. O laço 
externo, for lin in matriz:, percorre as linhas da matriz, enquanto o laço 
interno, for elem in lin:, percorre os elementos dentro de cada lista (linha), 
ou seja, das colunas da matriz.
9Criação, acesso e operadores de matrizes (Python)
Operadores de matrizes em Python
A linguagem Python permite não somente acessar individualmente um ele-
mento de uma matriz para ler ou alterar o seu conteúdo, mas também, utilizar 
operadores para manipular as matrizes. Nesta seção, você verá como funcionam 
o operador aditivo "+", o operador multiplicativo "*" e o operador de busca 
"in" e como utilizar o método len(). 
Operador aditivo “+” com matrizes
Segundo Matthes (2016), o operador de adição “+” é utilizado para concatenar 
matrizes; ou seja, esse operador vai unir o conteúdo de uma matriz a outra 
matriz ou uma determinada lista. Portanto, deve-se ter muito cuidado ao 
utilizar esse operador, pois, em Python, quando os operandos envolvidos na 
soma forem elementos de uma lista, o resultado é a concatenação dos mesmos, 
e não a soma dos elementos da matriz, mesmo que eles sejam do tipo numérico.
O exemplo da Figura 6 mostra um código que utiliza o operador aditivo com uma matriz.
(a)
(b)
Figura 6. (a) Operador aditivo com matrizes. (b) Resultado da execução do código.
Criação, acesso e operadores de matrizes (Python)10
O código da Figura 6a mostra, na linha 2, a criação e o preenchimento de uma 
matriz 2 × 3 com valores inteiros. Na linha 3 da Figura 6a, o operador aditivo “+” no 
comando num + num concatenou duas matrizes num, resultando em uma matriz 
4 × 3; observe a nova matriz formada na linha [1]: da Figura 6b. Na linha 4 da Figura 
6a, o operador aditivo “+” no comando num + [[7, 8, 9]] uniu uma nova lista 
(linha) na matriz num, resultando em uma matriz 3 × 3; observe a nova matriz formada 
na linha [2]: da Figura 6b.
O mesmo acontece em matrizes com outros tipos de dados. Por exemplo, continu-
ando no código da Figura 6a, na linha 7, a matriz mat 2 × 2 é criada e preenchida com 
valores literais (caracteres). Na linha 8 da Figura 6a, o operador aditivo “+” no comando 
mat + mat concatenou duas matrizes mat, resultando em uma matriz 4 × 2; observe 
a nova matriz na linha [3]: da Figura 6b. Na linha 9 da Figura 6a, o operador aditivo “+” 
no comando mat + [['E', 'F']] uniu uma nova lista (linha) na matriz num, 
resultando em uma matriz 3 × 2; observe a nova matriz formada na linha [4]: da Figura 6b.
Operador multiplicativo “*” com matrizes
Segundo Matthes (2016), o operador multiplicativo “*” é utilizado para aumen-
tar as linhas das matrizes em x vezes; ou seja, esse operador vai multiplicar a 
quantidade de listas dentro de uma matriz por um valor numérico desejado. 
Portanto, deve-se ter muito cuidado ao utilizar esse operador, pois, em Python, 
quando os operandos envolvidos na multiplicação forem elementos de uma 
lista, o resultado é a multiplicação da quantidade de listas dentro da matriz, 
e não a multiplicação dos elementos da matriz.
11Criação, acesso e operadores de matrizes (Python)
Operador de busca “in” com matrizes
Segundo Slatkin (2015), o operador de busca “in” é utilizado para procurar 
se um determinado conteúdo pertence a uma lista. Esse operador retorna 
True, caso o valor procurado pertença à lista, e False, caso não pertença. 
Como as linhas de uma matriz são formadas por listas, então, basta procurar 
em cada linha, utilizando um laço de repetição.
O exemplo da Figura 7 mostra um código que utiliza o operador multiplicativo com 
uma matriz.
(a)
(b)
Figura 7. (a) Operador multiplicativo com matrizes. (b) Resultado da execução do código.
O código da Figura 7a mostra, na linha 2, a criação e o preenchimento de uma 
matriz 2 × 3 com valores inteiros. Na linha 3 da Figura 7a, o operador multiplicativo 
“*” no comando num * 3 triplica as listas que formam a matriz num, resultando em 
uma matriz 6 × 3; observe a nova matriz formada na linha [1]: da Figura 7b. Na linha 
4 da Figura 7a, o operador multiplicativo “*” no comando teste = [[0]] * 10 
cria uma matriz teste com 10 linhas (listas) e uma coluna preenchida com o valor 
0; observe a nova matriz formada na linha [2]: da Figura 7b. Na linha 5 da Figura 7a, 
o operador multiplicativo “*” no comando teste_2 = [[2,3]] * 2 cria uma 
matriz teste_2 de tamanho 2 × 2, pois a multiplicação da lista [2,3] por 2 duplica o 
tamanho da lista; observe a nova matriz formada na linha [3]: da Figura 7b.
Criação, acesso e operadores de matrizes (Python)12
O exemplo da Figura 8 mostra um código que utiliza o operador de busca “in” com 
uma matriz.
(a)
(b)
Figura 8. (a) Operador “in” com matrizes. (b) Resultado da execução do código.
O código da Figura 8a mostra, na linha 2, a criação e o preenchimento de uma matriz 
3 × 2 com valores inteiros. Na linha 3 da Figura 8a, o laço de repetição for percorre 
cada lista da matriz e executa a busca pelo valor 1, com o comando 1 in lin, na 
linha 7 da Figura 8a. Observe o resultado da execução do código mostrado na Figura 
8b; a única busca que retornou verdadeira foi na linha 0, onde existe o valor 1.
Método len()
Segundo Banin (2018), em Python, o método len() retorna o comprimento 
de uma lista, ou seja, a quantidade de elementos existentes nessa lista. Segundo 
Matthes (2016), quando o método len() é utilizado em uma matriz, ele retorna 
a quantidade de listas que estão dentro da matriz, ou seja, o número de linhas 
dela. Esse método é muito útil para compreendermos o funcionamento dos 
operadores aditivos e multiplicativos em Python.
13Criação, acesso e operadores de matrizes (Python)
O exemplo da Figura 9 mostra um código que utiliza o método len() para mostrar 
a quantidade de linhas (listas) de uma matriz e a quantidade de colunas de cada linha 
dessa matriz.
(a)
(b)
Figura 9. (a) Método len() utilizado com matrizes. (b) Resultado da execução do código.
O código da Figura 9a contém, na linha 2, a criação de uma matriz teste construída 
com três listas, que não possuem o mesmo tamanho. Na linha 5 da Figura 9a, o comando 
len (teste) retorna a quantidade de listas (linhas) que essa matriz possui — no 
exemplo, três linhas. O resultado da execução desse comando pode ser observado 
na linha [1]: da Figura 9b.
Seguindo o código da Figura 9a, o laço de repetição da linha 9, for lin in 
teste:, percorre as linhas da matriz teste; assim, a cada iteração do laço, a variável 
lin assume o valor de uma das listas da matriz. Portanto, o comando da linha 11 da 
Figura 9a retorna a quantidade de elementos, ou seja, colunas, de cada linha da matriz 
teste, o que é apontado nas linhas [2], [3] e [4] da Figura 9b.
Criação, acesso e operadores de matrizes (Python)14
O exemplo da Figura 10 mostra um código que utiliza o método len() de diferentes 
maneiras para verificar o funcionamento dos operadores aditivo e multiplicativo.
(a)
(b)
Figura 10. (a) Método len() utilizado com matrizes. (b) Resultado da execução do código.
O código da Figura 10a contém, na linha 2, a criação de uma matriz teste cons-
truída com três listas, que não possuem o mesmo tamanho. Na linha 5 da Figura 10a, 
o comando len (teste) retorna a quantidade de listas (linhas) que essa matriz 
possui — no exemplo, três linhas. O resultado da execução desse comando pode ser 
observado na linha [1]: da Figura 10b.
Seguindo o código da Figura 10a, o comando len (teste_2) da linha 11 retorna 
a quantidade de listas (linhas) que a matriz teste_2 possui — no exemplo, quatro 
linhas; observe que, na linha 8, uma nova lista foi adicionada à matriz, por meio do 
operador aditivo. O resultado da execução desse comando pode ser observado na 
linha [2]: da Figura 10b.
15Criação, acesso e operadores de matrizes (Python)
Continuando no código da Figura 10a, o comando len (teste_3) da linha 18 
retorna a quantidade de listas (linhas) que a matriz teste_3 possui — no exemplo,cinco linhas; observe que, na linha 15, duas novas listas foram adicionadas à matriz, 
por meio do operador aditivo. O resultado da execução desse comando pode ser 
observado na linha [3]: da Figura 10b.
Por fim, no código da Figura 10a, o comando len (teste_4) da linha 24 retorna 
a quantidade de listas (linhas) que a matriz teste_4 possui — no exemplo, seis linhas; 
observe que, na linha 21, o número de listas da matriz teste foi multiplicado por 2, 
ou seja, foi dobrado. O resultado da execução desse comando pode ser observado 
na linha [4]: da Figura 10b.
Matrizes em problemas computacionais
As matrizes são amplamente utilizadas no processamento digital de imagens, 
para armazenar digitalmente uma foto ou uma figura; dessa forma, o progra-
mador pode realizar a análise de dados multidimensionais das informações 
contidas nessa imagem. Por exemplo, uma fotografia capturada por um robô 
explorador em Marte é armazenada digitalmente em forma de uma matriz, 
assim como uma fotografia capturada por um radar de velocidade.
A análise digital de imagem já está presente no nosso dia a dia em diversas 
situações. Por exemplo, o Facebook consegue identificar pessoas e objetos 
nas fotos postadas na rede social; o Google utiliza imagens no reCAPTCHA, 
que é uma técnica para detectar se o usuário que está acessando determinado 
conteúdo é um humano ou um robô.
O exemplo da Figura 11, a seguir, mostra como ler a imagem do logo do 
Python, mostrado na Figura 12. Essa imagem tem 1024 × 1024 pixels; ou seja, 
ela tem 1024 pixels de altura e 1024 pixels de largura. Além disso, ela possui 
quatro canais de cores, sendo três deles para o RGB (red, green e blue) e mais 
um canal para a escala de cinza. Nesse exemplo, são realizadas operações 
simples, pois o foco deste capítulo é mostrar como matrizes podem ser úteis 
em problemas computacionais, e não ensinar a fazer o processamento digital 
de imagens.
Criação, acesso e operadores de matrizes (Python)16
Figura 11. (a) Código para armazenar uma imagem em uma matriz e extrair 
informações dela. (b) Resultado da execução do código.
(a)
(b)
Figura 12. Logotipo do Python.
Fonte: The Python… (2019, documento 
on-line).
A linha 2 do código da Figura 11a contém a importação da biblioteca 
matplotlib. Essa biblioteca contém os métodos para plotagem de gráficos 
e para trabalhar com imagens na linguagem de programação Python. Na 
linha 4 da Figura 11a, o comando imagem = imread() lê uma imagem 
de diferentes formatos (JPG, PNG, TIFF, etc.), indicada no caminho entre 
parênteses, e salva em uma variável as informações da imagem, em forma 
de matriz (Figura 13). A função imread() utiliza métodos vetorizados, 
semelhantes aos laços de repetição (for ou while), para percorrer as linhas 
17Criação, acesso e operadores de matrizes (Python)
(altura) e as colunas (largura) da imagem e armazena esses dados em uma 
matriz. Lembre-se de que você deverá colocar o caminho completo da imagem 
como parâmetro da função imread ().
Figura 13. Variável imagem com os dados digitais da imagem.
Continuando no código da Figura 11a, o comando imagem.shape[], 
utilizado nas linhas 6, 8 e 9, retorna as propriedades, como o número de linhas, 
colunas e canais de cores da imagem armazenada na variável. Sendo assim, 
o comando imagem.shape[0] na linha 6 obtém a largura da imagem, ou 
seja, o número de colunas dela. O comando imagem.shape[1] obtém a 
altura da imagem, ou seja, o número de linhas dela. E, por fim, o comando 
imagem.shape[2] obtém o número de canais de cores (quatro canais). A 
Figura 11b mostra o resultado da execução desse código, que será impresso 
na tela.
Criação, acesso e operadores de matrizes (Python)18
Outro exemplo muito comum do uso de matrizes em Python é para transfor-
mar imagens coloridas em imagens em tons de cinza. Essa técnica é utilizada 
em muitas aplicações no processamento de imagens, como na detecção de 
borda, na impressão em preto e branco e no processamento de imagem em 
um único canal. A linguagem Python, juntamente com as bibliotecas mat-
plotlib, pillow e numpy, permite escrever um código para converter 
uma imagem colorida em uma imagem em tons de cinza, conforme mostra a 
Figura 14a. O resultado é mostrado na Figura 14b.
Figura 14. (a) Código para converter uma imagem colorida em uma imagem em tons 
de cinza. (b) Resultado da execução do código.
(a)
(b)
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: 
Érica, 2018, 264 p.
BARRY, P. Use a cabeça! Python. 2. ed. Rio de Janeiro: Alta Books, 2018. 616 p. (Série Use 
a Cabeça/Head First).
19Criação, acesso e operadores de matrizes (Python)
DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo: 
Novatec, 2016. 312 p. Disponível em: https://penseallen.github.io/PensePython2e/. 
Acesso em: 23 jun. 2019.
MATTHES, E. Curso intensivo de Python: uma introdução prática e baseada em projetos 
à programação. São Paulo: Novatec, 2016. 656 p.
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento 
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
RAMALHO, L. Python fluente. São Paulo: Novatec, 2015. 800 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo: 
Novatec, 2015. 296 p.
THE PYTHON Logo. Python Software Foundation, Wilmington, 2019. Disponível em: 
https://staging.python.org/community/logos/. Acesso em: 30 jun. 2019.
Leituras recomendadas
BORGES, L. E. Python para desenvolvedores: aborda Python 3.3. São Paulo: Novatec, 2014. 
CLARK, A. et al. Pillow - the friendly Python Imaging Library fork. Read the Docs, Portland, 
2019. Disponível em: https://pillow.readthedocs.io/en/stable/. Acesso em: 30 jun. 2019.
MATPLOTLIB: Python plotting. The Matplotlib development team, [S. l.], 2018. Disponível 
em: https://matplotlib.org/. Acesso em: 30 jun. 2019.
NUMPY: the fundamental package for scientific computing with Python. NumPy de-
velopers, [S. l.], 2019. Disponível em: https://www.numpy.org/. Acesso em: 30 jun. 2019.
RAMALHO, L. Dados sequenciais. In: RAMALHO, L. Python fluente. São Paulo: Novatec, 
2015. cap. 2.
Criação, acesso e operadores de matrizes (Python)20
PENSAMENTO 
COMPUTACIONAL
Cleiton Silvano Goulart
Leitura de arquivos 
em Python 
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Explicar a leitura de arquivos no formato txt nos diferentes modos 
de abertura.
 � Definir a leitura de arquivos no formato csv nos diferentes modos 
de abertura.
 � Ler arquivos em diferentes problemas computacionais.
Introdução
Neste capítulo, você vai estudar os modos de abertura utilizados para 
abrir um arquivo na linguagem Python. Você vai verificar como abrir e ler 
arquivos no formato txt e arquivos separados por vírgula, no formato csv. 
Os arquivos csv são um formato muito versátil e simples para a troca de 
informações entre diferentes programas e equipamentos de automação 
industrial. Por fim, você vai analisar a leitura de arquivos em diferentes 
problemas computacionais.
Arquivos de texto puro (txt)
O computador armazena todas as informações na forma de arquivos. Os ar-
quivos consistem em uma sequência de caracteres, que são armazenados nas 
mídias convencionais dos computadores, isto é, no disco rígido, no pen-drive, 
nos discos ópticos (CD-ROM, DVD-ROM, Blu-Ray), etc. Esses arquivos 
servem para armazenar diferentes tipos de informações.
Em primeira instância, os arquivos podem ser divididos em arquivos de 
texto e arquivos binários. Quando nos referimos aos arquivos de texto, que-
remos dizer que o conteúdo desse arquivo é composto por uma sequência 
de caracteres legíveis em algum idioma, como um texto de um livro. Já os 
arquivos binários são compostos por uma sequência de caracteres que não 
são facilmente compreensíveis. Os arquivos binários servem para armazenar 
programas de computador, arquivos de imagens, arquivos de vídeos e, até 
mesmo, algum formato especial para algum aplicativoespecífico, conforme 
lecionam Forbellone e Eberspächer (2005).
Modos de abertura de arquivos
Para poder acessar o conteúdo de um arquivo, seja para leitura ou para a escrita 
nele, é preciso primeiro abrir o arquivo. Façamos uma analogia: se você vai 
ler um livro, primeiro você precisa localizar ele na estante de livros, depois, 
você deve abrir o livro, para, só então, começar a ler seu conteúdo. Com os 
arquivos de computadores, o processo é praticamente o mesmo. Quando 
você precisa acessar algum arquivo do seu computador, primeiro, o sistema 
operacional localiza ele no disco rígido (ou no disco em que ele estiver arma-
zenado). Então, ao ser localizado, o arquivo estará disponível para que você 
possa trabalhar com ele.
Porém, antes de começar a ler o arquivo, da mesma forma como ocorre 
com o livro, você deve abrir o arquivo. Quando você vai abrir um arquivo, 
existem alguns modos de abertura. O modo de abertura é uma configuração 
que você deve especificar para informar ao sistema operacional qual é o nível 
de controle que você precisa ter sobre o arquivo. Se você vai apenas ler seu 
conteúdo, você pode abrir o arquivo em modo de leitura. Agora, se você 
precisa abrir o arquivo para modificar seu conteúdo, seja escrevendo novas 
linhas no final do arquivo ou alterando alguma linha existente, você deve abrir 
o arquivo em modo de escrita. O Quadro 1 apresenta os modos de abertura 
que estão disponíveis na linguagem Python. 
Leitura de arquivos em Python2
Fonte: Adaptado de Python Software Foundation (2019a).
MODO DE ABERTURA DESCRIÇÃO
‘r’ Abre o arquivo somente para a 
leitura do seu conteúdo
‘w’ Abre o arquivo para escrita a 
partir do início do arquivo
‘a’ Abre o arquivo para escrita a 
partir do final do arquivo
‘t’ Abre o arquivo como um arquivo de texto
‘b’ Abre o arquivo como um arquivo binário
Quadro 1. Principais modos de abertura de arquivos da linguagem Python
Abrindo arquivos com a linguagem Python
Para abrir um arquivo, a linguagem Python conta com o comando open. Esse 
comando deve receber como parâmetro, no mínimo, o nome do arquivo que será 
aberto. Outro parâmetro opcional do comando open é o modo de abertura do 
arquivo. Caso não seja especificado nenhum modo, ele vai assumir que você 
quer abrir um arquivo texto em modo de leitura, isto é, ‘rt’, conforme leciona 
Perkovic (2016). Veja na Figura 1 um exemplo de como abrir um arquivo.
Figura 1. Exemplo de abertura de arquivo na linguagem Python.
A variável arquivo é um tipo especial de variável, que serve para especifi-
car o arquivo que está sendo acessado. Todas as funções que serão usadas para 
ler seu conteúdo ou para modificá-lo deverão ser feitas a partir dessa variável 
identificadora do arquivo. Tome cuidado para não tentar abrir um arquivo ine-
xistente. Caso isso ocorra, a linguagem Python vai gerar um erro semelhante 
ao erro ilustrado na Figura 2 (PYTHON SOFTWARE FOUNDATION, 2019a).
3Leitura de arquivos em Python
Figura 2. Mensagem de erro que pode ocorrer no caso de arquivos inexistentes.
Acessando o conteúdo dos arquivos texto
Depois de abrir o arquivo, você estará pronto para acessar seu conteúdo. Veja 
na Figura 3 um exemplo de como acessar o conteúdo do arquivo. Foi usado o 
comando for para percorrer todas as linhas do arquivo. A função readli-
nes() do objeto arquivo retorna uma lista com todas as linhas que o arquivo 
possui. Assim, é possível acessar linha por linha do arquivo de forma simples 
e prática (PYTHON SOFTWARE FOUNDATION, 2019a).
Figura 3. Exemplo de acesso do conteúdo de um arquivo texto na linguagem Python. 
Nesse exemplo, cada linha do arquivo é lida e, depois, impressa na tela.
É possível ainda acessar uma linha de cada vez, sem usar o comando 
for. Na Figura 4, você pode observar como é possível ler uma linha de cada 
vez com o uso da função readline(). Após você usar essa função, ela vai 
automaticamente ler a próxima linha.
Leitura de arquivos em Python4
Figura 4. Exemplo de acesso do conteúdo de um arquivo texto na linguagem Python. 
Nesse exemplo, cada linha é lida de uma vez.
Arquivos separados por vírgulas (csv)
Os arquivos separados por vírgulas (csv) são arquivos texto com vários 
dados separados, como se fossem uma tabela. Cada linha do arquivo é como 
se fosse uma linha da tabela. Os campos em uma mesma linha são separados 
usando, tradicionalmente, a vírgula; ou seja, cada coluna da tabela é separada 
da outra por meio de um caractere separador.
Nos arquivos csv, a vírgula é o caractere separador mais usado; porém, é possível usar, 
por exemplo, ponto e vírgula ou caractere de tabulação (tecla Tab).
Esses arquivos são muito úteis quando queremos levar um conjunto de 
dados de um programa para outro. Por exemplo, você abre uma planilha 
eletrônica contendo vários dados e exporta esses dados para um arquivo csv. 
Depois, você pode abrir esses dados na linguagem Python, para fazer algum 
processamento com eles. Veja na Figura 5 um exemplo de arquivo csv.
5Leitura de arquivos em Python
Figura 5. Exemplo de um arquivo separado por vírgulas (csv).
Acessando o conteúdo dos arquivos csv
Para acessar um arquivo csv, é preciso, antes de tudo, que o arquivo seja aberto. 
Para isso, você pode usar o mesmo comando usado para abrir um arquivo 
de texto — isto é, o comando open. Repare que um arquivo csv é, antes de
tudo, um arquivo de texto. Logo, o modo de abertura do arquivo deve ser 
especificado da mesma forma como para os arquivos texto. Veja o Quadro 1 
para relembrar os modos de abertura possíveis. Para a maioria das situações, 
o arquivo csv será aberto no modo padrão, que é ‘rt’ (PYTHON SOFTWARE
FOUNDATION, 2019b).
A linguagem Python possui o módulo csv, que facilita o processo de leitura 
e interpretação dos campos separados por vírgulas. Para usar esse módulo, é 
preciso informar que será utilizado esse módulo antes de digitar os comandos, 
utilizando o comando import csv. O módulo csv possui o comando rea-
der, que cria um objeto capaz de ler e interpretar cada linha do arquivo csv. 
Por exemplo, com o comando leitorCSV = csv.reader(arquivoCSV), 
será criada a variável leitorCSV, pela qual será possível acessar o ar-
quivoCSV. A vantagem de usar esses comandos é que, por meio deles, você 
pode ler um campo por vez (PYTHON SOFTWARE FOUNDATION, 2019b).
Acesse o link a seguir para verificar mais funções do módulo csv da linguagem Python. 
https://qrgo.page.link/c6aTR
Leitura de arquivos em Python6
No exemplo da Figura 6, um arquivo csv é aberto usando o comando 
open; depois, seu conteúdo é acessado linha por linha, por meio do objetivo 
criado pelo comando csv.reader. Observe nesse exemplo que a primeira 
instrução orienta a linguagem Python a usar o módulo csv. Esse exemplo se 
limita a ler linha por linha do arquivo e imprimir o conteúdo lido na tela. 
Repare que cada linha lida é, na verdade, uma lista, em que os elementos são 
os campos existentes no arquivo. Ainda nesse exemplo, é possível observar 
que o comando csv.reader possui o parâmetro opcional delimiter=’,’, 
que serve para especificar qual é o caractere que será usado como delimitador 
de campos do arquivo csv (PYTHON SOFTWARE FOUNDATION, 2019b).
Figura 6. Algoritmo em linguagem Python capaz de ler um arquivo csv. Nesse exemplo, 
é ilustrada a leitura do arquivo csv reproduzido na Figura 5.
Na Figura 7, verifica-se outra forma de acessar o conteúdo do arquivo csv. 
Repare que agora foi utilizado como separador de campos o caractere ponto 
e vírgula. Outro aspecto muito importante desse exemplo é que, para que 
os dados do arquivo csv fossem exibidos, a variável linha foi acessada da 
mesma forma que uma variável do tipo lista. Usando os colchetes e o índice 
0, pode-se acessar o conteúdo da primeira coluna do arquivo csv; usando o 
índice 1, pode-se acessar a segunda coluna, e, assim, sucessivamente.
7Leitura de arquivos em Python
Figura 7. Exemplo de leitura de um arquivo csv cujo separador é o ponto e vírgula. Nesse 
exemplo, é ilustrado o acesso aos campos comolistas.
Aplicações práticas de manipulação de arquivos 
Agora que você já viu como acessar o conteúdo de arquivos csv e de arquivos 
texto, vamos conhecer um pouco as aplicações que podemos fazer usando esse 
recurso. Os arquivos de texto e csv são a forma mais simples de se transportar 
alguma informação de um programa para outro. Com dois exemplos simples, 
você vai ver como é possível usar os métodos de leitura de arquivos csv e 
arquivos texto para a manipulação e o tratamento de dados.
Tabela de vendas de impressora fiscal
Suponha que uma impressora de cupom fiscal registre internamente, em uma 
memória dedicada, todos os cupons que ela emitiu desde que foi fabricada. 
Com alguns comandos do programa de controle dessa impressora, pode-se 
enviar um arquivo csv para o computador, contendo um relatório resumido 
dos cupons que foram emitidos. Um algoritmo em linguagem Python pode ser 
criado para acessar o conteúdo desse equipamento, a fim de mostrar quantos 
cupons a impressora já emitiu desde que foi criada, o valor total acumulado 
de cupons emitidos e o valor médio por cupom.
A Figura 8 ilustra o conteúdo de um arquivo csv e um algoritmo em lin-
guagem Python. Esse algoritmo faz a leitura do arquivo csv e, com o auxílio 
do comando for, da variável contadora noCupons e da variável valorA-
cumulado, ele é capaz de determinar quantos cupons foram emitidos, qual 
é o valor acumulado de cupons emitidos e qual é o valor médio dos cupons 
que foram emitidos. Observe que, para a determinação do valor acumulado, 
foi usada a função int para converter o conteúdo da variável cupom para 
um número inteiro. Isso foi necessário porque o módulo csv considera que 
todo campo é uma string.
Leitura de arquivos em Python8
Figura 8. Exemplo de processamento de quantidade de cupons emitidos, valor máximo acu-
mulado e valor médio por cupons a partir do arquivo csv gerado por uma impressora fiscal.
Processamento de dados
Uma situação em que a leitura dos arquivos csv se torna muito interessante 
é realizar algum processamento a partir dos registros de um programa. Su-
ponha que, por exemplo, um determinado programa de controle de estoque é 
capaz de gerar um arquivo csv com toda a relação de estoque da empresa. O 
arquivo gerado possui o código do produto, um nome curto para identificar, a 
quantidade de peças em estoque e a quantidade máxima suportada em estoque. 
Agora, suponha que você precise enviar um novo pedido de compras para o 
fornecedor das peças, mas você só vai pedir as peças cujos estoques tenham 
zerado, ou que estejam abaixo de 5% do valor de estoque máximo comportado 
pela empresa. Assim, será empregado um algoritmo em linguagem Python 
para fazer esse processamento.
A Figura 9 ilustra um exemplo do relatório de estoque, em que as colunas 
são: código do produto, descrição simples, quantidade de estoque e capaci-
dade máxima de estoque. Nessa mesma figura, foi ilustrado um algoritmo 
em Python que faz a leitura desse arquivo csv; a partir dos dados lidos para 
cada produto, o algoritmo verifica se o estoque é 0 e se o estoque está inferior 
a 5% do estoque máximo. Caso alguma dessas condições sejam satisfeitas, 
o algoritmo vai imprimir na tela os produtos que devem ser solicitados para 
repor o estoque.
9Leitura de arquivos em Python
Figura 9. Exemplo de processamento para levantamento de lista de peças a comprar, 
com base em critérios preestabelecidos. Como base de dados para o processamento, foi 
considerado um relatório em formato csv com os dados de estoque da empresa.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a construção de 
algoritmos e estruturas de dados. 3. ed. São Paulo: Pearson Prentice Hall, 2005. 218 p. 
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento 
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
PYTHON SOFTWARE FOUNDATION. Built-in Functions: open. In: PYTHON SOFTWARE 
FOUNDATION. The Python tutorial. Wilmington, 2019a. Disponível em: https://docs.
python.org/3/library/functions.html#open. Acesso em: 11 jun. 2019.
PYTHON SOFTWARE FOUNDATION. CSV File Reading and Writing. In: PYTHON SOF-
TWARE FOUNDATION. The Python tutorial. Wilmington, 2019b. Disponível em: https://
docs.python.org/3/library/csv.html. Acesso em: 11 jun. 2019.
Leituras recomendadas
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: 
Érica, 2018, 264 p.
BARRY, P. Use a cabeça! Python. 2. ed. Rio de Janeiro: Alta Books, 2018. 616 p. (Série Use 
a Cabeça/Head First).
Leitura de arquivos em Python10
READING and Writing Files in Python. Python for Beginners, [S. l.], 8 Jul. 2013. Disponível 
em: https://www.pythonforbeginners.com/files/reading-and-writing-files-in-python. 
Acesso em: 11 jun. 2019. 
USING the CSV module in Python. Python for Beginners, [S. l.], 18 Jan. 2013. Disponível 
em: https://www.pythonforbeginners.com/systems-programming/using-the-csv-
-module-in-python/. Acesso em: 11 jun. 2019.
11Leitura de arquivos em Pythonde 3 que existem dentro do intervalo de análise 
do algoritmo.
7Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Figura 7. Algoritmo para contar quantos múltiplos inteiros de 3 
existem nos 20 primeiros números naturais.
Para fazer o teste de mesa do algoritmo da Figura 7, foi usada a tabela do Quadro 2 
como apoio. Conforme o comando percorria o intervalo de valores definidos pelo 
comando range(20), ambas as variáveis tiveram seu valor anotado. Os resultados 
obtidos pela execução do algoritmo, conforme já ilustrado na Figura 7, é idêntico 
ao resultado do teste de mesa, que foi relacionado no Quadro 2.
Número
noVeri-
ficados
noMul-
tiplos Número
noVeri-
ficados
noMul-
tiplos
0 1 1 10 11 4
1 2 1 11 12 4
2 3 1 12 13 5
3 4 2 13 14 5
4 5 2 14 15 5
5 6 2 15 16 6
6 7 3 16 17 6
7 8 3 17 18 6
8 9 3 18 19 7
9 10 4 19 20 7
Quadro 2. Valores para o teste de mesa do algoritmo da Figura 7
Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)8
Aplicações práticas das variáveis contadoras e 
acumuladoras
O comando for é uma das estruturas mais básicas existentes na linguagem 
Python. Ao mesmo tempo que ela é simples, é muito poderosa. Com esse 
comando e com o auxílio das variáveis contadoras e das variáveis acumula-
doras, é possível resolver vários problemas computacionais, conforme expõe 
Santos (2018). 
Cálculo do fatorial de um número
O cálculo do fatorial de um número qualquer consiste em uma operação 
matemática simples. Diz-se que o fatorial de um número é igual ao produto 
de todos os números decrescentes do número até 0, isto é, o fatorial n! = n ⋅ 
(n – 1) ⋅ (n – 2) ⋅ ··· ⋅ (n – k), sendo que k = n – 1. Por exemplo, o fatorial de 
3 é 3! = 3 ⋅ 2 ⋅ 1 = 6. Para implementar esse processo na linguagem Python, 
por meio do comando for, pode ser utilizado o código ilustrado na Figura 8.
Figura 8. Exemplo do uso do comando for para fazer o cálculo do fatorial de um número 
qualquer.
No exemplo da Figura 8, o comando range teve seus parâmetros alterados 
para que a contagem não incluísse o número 0. Repare no exemplo da Figura 2, 
em que o comando range inclui o 0, caso não seja informado explicitamente 
o início e o fim da faixa de valores. Para determinar o valor do fatorial, foi 
empregado o operador de atribuição composto *=, para fazer o produto da 
variável fatorial com cada termo, até chegar no número que o usuário escolheu 
por meio do comando input. O comando int serve apenas para converter 
o valor digitado pelo usuário para um número inteiro.
9Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Soma de duas listas
Uma lista numérica pode ser somada à outra de igual dimensão, por meio 
da soma de cada elemento individual. Por exemplo, se tivermos uma lista 
A = [2, 3, 4] e quisermos somar com outra lista B = [7, – 3, 2], basta fazer a 
soma elemento a elemento. Dessa forma, a soma dessas duas listas é dada por: 
A + B = [(2 + 7), (3 + (–3)), (4 + 2)] = [9, 0, 6], conforme lecionam Forbellone 
e Eberspächer (2005).
Para fazer essa mesma operação usando a linguagem Python, podemos 
usar o comando for para fazer o controle iterativo, elemento a elemento. 
Na Figura 9 está ilustrado esse mesmo exemplo, porém, em linguagem Python. 
Observe que foi utilizada uma variável auxiliar, denominada indice, junta-
mente com o comando range. O comando range, nesse caso, cria uma lista 
de números inteiros iniciada em 0, com um total de três elementos. A variável 
indice é usada, nesse caso, para representar o índice de cada lista, que será 
obtido para fazer a soma. Por exemplo, quando indice = 0, o algoritmo estará 
obtendo o elemento 0 da lista A e o elemento 0 da lista B. Por fim, a lista C 
será alimentada com o resultado dessa operação.
Figura 9. Exemplo do uso do comando for para fazer a soma de duas listas de tamanhos 
iguais.
Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)10
Encontrando números primos
Número primo é todo aquele que é divisível apenas por 1 e por si mesmo. 
Por exemplo, o número 7 é primo, porque só conseguimos dividir 7 por 7 e 
por 1 para obter um resultado inteiro, ou uma divisão sem resto. Na compu-
tação, os números primos são muito importantes, porque, a partir deles, são 
construídos vários algoritmos de criptografia. Quando o número é pequeno, 
é fácil descobrir se ele é ou não um número primo; porém, quanto maior o 
número fica, mais difícil é descobrir se ele é ou não primo, conforme apontam 
Holanda Filho e Gomes (2019).
No link a seguir, você poderá verificar porque os números primos são tão importantes 
para a criptografia.
https://qrgo.page.link/h9Pdd
É possível usar o comando for para criar um algoritmo que busque os 
números primos dentro de um intervalo de valores. Na Figura 10, está ilustrado 
um algoritmo que usa dois comandos for para essa tarefa. O primeiro comando 
for percorre uma lista de 20 números iniciada em 0, que é produzida pelo 
comando range. Assim, esse algoritmo vai verificar quais são os números 
primos que existem até o número 20. O segundo comando for faz o teste de 
divisão com todos os números de 1 até o próprio número, para verificar se 
existe ou não resto na divisão.
Observe que foi utilizado o comando range, percorrendo de 1 até o nú-
mero + 1. Isso é necessário porque o comando range cria uma lista iniciada 
em 0, e não é possível dividir nenhum número por 0. Em seguida, a variável 
div funciona como uma variável contadora, armazenando a quantidade de 
números que conseguiram dividir o número sob teste, resultando em um resto 0 
(o operador % retorna o resto inteiro da divisão). Caso o número de divisores 
seja igual a 2, o número pode ser considerado primo.
11Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Figura 10. Exemplo do uso do comando for para determinar números primos.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a construção de 
algoritmos e estruturas de dados. 3. ed. São Paulo: Pearson Prentice Hall, 2005. 218 p.
HOLANDA FILHO, I. O.; GOMES, R. L. R. Criptografia e números primos: um namoro 
que deu certo. Portal Educação, São Paulo, 22 abr. 2014. Disponível em: https://www.
portaleducacao.com.br/conteudo/artigos/pedagogia/criptografia-e-numeros-primos-
-um-namoro-que-deu-certo/56347. Acesso em: 9 jun. 2019.
PYTHON SOFTWARE FOUNDATION. The Python tutorial. Wilmington, 2019. Disponível 
em: https://docs.python.org/3/tutorial/index.html. Acesso em: 9 jun. 2019.
SANTOS, M. G. Algoritmos e programação. Porto Alegre: Sagah, 2018. 89 p.
SCHACH, S. R. Engenharia de software: os paradigmas clássico & orientado a objetos. 7. 
ed. São Paulo, McGraw-Hill, 2009. 618 p.
Leituras recomendadas
DASGUPTA, S.; PAPADIMITRIOU, C.; VIZIRANI, U. Algoritmos. São Paulo: McGraw-Hill, 
2009. 336 p.
SANTOS, M. G.; SARAIVA, M. O.; GONÇALVES, P. F. Linguagem de programação. Porto 
Alegre: Sagah, 2018. 204 p.
Comando for, variáveis contadoras e acumuladoras (utilizando a linguagem Python)12
PENSAMENTO 
COMPUTACIONAL
Fernando Esquírio Torres
Comando while, 
variáveis contadoras e 
acumuladoras (utilizando 
a linguagem Python)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever o comando while e as variáveis contadoras e acumuladoras.
 � Realizar testes de mesa em problemas que utilizem o comando while 
e as variáveis contadoras e acumuladoras.
 � Resolver problemas computacionais utilizando o comando while 
e as variáveis contadoras e acumuladoras.
Introdução
Neste capítulo, você vai estudar a estrutura de repetição while e enten-
der como funcionam as variáveis contadoras e acumuladoras, necessárias 
para controlar os laços de repetição e acumular valores de variáveis, 
respectivamente. Em seguida, você vai aprender como verificar o fluxo 
de repetição do laço while por meio de um teste de mesa. Por fim, você 
vai compreender como utilizar esse laço de repetiçãopara solucionar 
problemas computacionais.
Laços de repetição while
Imagine que você é um programador e está desenvolvendo um programa em 
Python para ler as notas de três alunos. A solução proposta por você é imple-
mentar três linhas de código com o comando input() para fazer a leitura 
dessas notas, como demonstra a Figura 1.
Figura 1. Programa para ler as notas de três alunos.
O código implementado na Figura 1 resolve satisfatoriamente seu problema 
para a leitura de três notas. Porém, se o problema possuir uma escala maior, 
como ler as notas de 50 alunos, não será uma boa prática de programação 
escrever 50 linhas de código com o comando input() para a leitura de todas 
essas notas. Uma solução mais profissional e recomendada nesse caso é a 
utilização de uma estrutura que possa repetir a leitura da nota quantas vezes 
for necessário. Essa estrutura, amplamente utilizada em programação para nos 
auxiliar nesse tipo de problema, é chamada de laço ou estrutura de repetição. 
Ela permite a repetição de um bloco de código enquanto uma determinada 
condição for verdadeira, evitando a escrita recorrente de trechos de código.
Os laços (loops) de repetição são utilizados para repetir blocos de código 
específicos por um certo número de vezes ou até que uma condição seja atin-
gida, conforme leciona Banin (2018). A primeira estrutura de repetição que 
você vai estudar é o while. Porém, antes de aprender sobre esse assunto, é 
necessário que você compreenda o que são blocos de instrução, tema importante 
a ser abordado neste momento.
Blocos de instrução
Segundo Ramalho (2015), os blocos de instrução são um conjunto de comandos 
pertencentes a uma função, uma estrutura condicional, um laço de repetição, 
etc. Na maioria da linguagens de programação, os blocos são delimitados por 
abertura ( { ) e fechamento ( } ) de chaves ({ }). Porém, na linguagem Python, 
os blocos de instrução são delimitados pela indentação do código, ou seja, 
o recuo aplicado ao código fonte em relação à sua margem, a fim de tornar o 
código mais legível e facilitar o reconhecimento de sua estrutura (Figura 2).
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)2
Figura 2. Delimitação do bloco de instruções (a) na linguagem C e (b) em Python.
(a)
(b)
Na Figura 2a, que mostra um código implementado na linguagem C, é 
possível observar que o conjunto de instrução (bloco) que pertence ao laço 
de repetição while está delimitado pelas chaves { } e que o comando 
printf (utilizado na linguagem C para imprimir dados na tela), que está 
fora da área delimitada pelas chaves, não pertence a esse bloco. Na Figura 2b, 
em Python, é possível ver que o que define o conjunto de instrução do 
laço while é a indentação do código à direta. Os comandos de impressão 
(print('Mensagem impressa')) e de incremento (i+=1) apresentam 
um espaço (semelhante a um parágrafo), que identifica o bloco de instruções 
pertencente ao laço while. O segundo print, alinhado ao comando while, 
já está fora do bloco de instruções.
3Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Comando while
Segundo Barry (2018), o laço de repetição while (“enquanto”, em inglês) 
permite repetir um conjunto de instruções enquanto a condição testada for 
verdadeira. Essa condição, que é sempre testada no início do laço, contém 
uma expressão booleana que pode assumir o valor de verdadeira ou falsa. O 
f uxograma da Figura 3 mostra o funcionamento do comando while, em 
que a condição é testada antes de iniciar a iteração do laço; enquanto ela for 
verdadeira, o loop será repetido.
Figura 3. Fluxograma do laço while.
A sintaxe do comando while é:
#inicialização da variável contadora
while condição:
#sequência de comando(s) executado(s) no corpo do while
 comando _ 1
 comando _ 2
 ...
 comando _ n
#incremento ou decremento da variável contadora
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)4
Variável contadora 
No comando while, a variável contadora é utilizada como controle do 
laço; ela determina o número de vezes que o conjunto de instruções do laço 
while será executado. Ela deve ser inicializada antes do comando while e 
ser incrementada ou decrementada dentro do bloco de instrução do comando 
while, de modo que a condição se torne falsa quando o número de repetições 
desejadas for atingido. 
Incrementar é somar uma quantidade do valor atual de uma variável. Decrementar é 
diminuir uma quantidade do valor atual de uma variável.
Fique atento a essa questão, pois, do contrário, você pode criar um loop 
infinito indesejado, conforme aponta Borges (2014).
O exemplo da Figura 4 traz o laço de repetição while utilizando uma variável con-
tadora, que incrementa o seu valor a cada execução do loop. O bloco de instruções 
dentro do laço é repetido três vezes.
(a)
(b)
Figura 4. (a) Laço de repetição while com incremento da variável contadora e (b) resultado 
da execução do código.
5Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
O código da Figura 4a inicializa, fora do laço de repetição, a variável contadora de 
controle, nomeada nesse exemplo como cont, que recebe valor 1. O teste lógico no 
comando while é cont=1, ou seja, 
o laço vai repetir o bloco de instruções enquanto a variável cont for maior ou igual 
a 1. Assim, a condição de parada do laço acontece quando cont assumir um valor 
menor do que 1. Nesse exemplo, o bloco de instruções possui dois comandos: a função 
print(), para imprimir a mensagem na tela, e o decremento de uma unidade da 
variável contadora, (cont-=1). O resultado da execução desse código é mostrado na 
Figura 5b, em que podemos averiguar que o bloco do comando while é executado 
e imprime a mensagem de dentro do laço cinco vezes.
Instruções break e continue
O comando break, quando utilizado dentro de um laço de repetição, serve 
para interromper a repetição, encerrando a execução do loop e, em seguida, 
saltando para a linha de código imediatamente após o bloco de instruções do 
laço, conforme leciona Perkovic (2016).
O exemplo mostrado na Figura 6 traz o laço de repetição infinito, que é um laço que 
apresenta uma condição de teste sempre verdadeira, implementado com while. Ele 
contém o valor True (Verdadeiro) como teste lógico e a estrutura condicional if 
para determinar quando executar o comando break e encerrar a execução do loop.
O código da Figura 6a é um loop infinito, pois a condição do comando while é 
sempre verdadeira (True); assim, não há uma condição de parada. A variável conta-
dora de controle cont é inicializada fora dolaço com o valor 1; em toda a execução 
do loop, ela é incrementada de uma unidade no comando cont+=1 e testada na 
estrutura condicional if (cont>3). Quando o valor de cont for maior do que 3, 
o teste lógico da estrutura condicional if é verdadeiro e, então, o comando break 
é executado, parando o laço de repetição while. O resultado da execução desse 
código é mostrado na Figura 6b, em que é possível perceber que o comando while 
imprime a mensagem dentro do laço três vezes, semelhante ao exemplo da Figura 4.
7Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
(a)
(b)
Figura 6. (a) Laço de repetição while com instrução break e (b) resultado da execução 
do código.
O comando continue interrompe o fluxo de execução do laço de repe-
tição. Porém, ele avança para a próxima execução do loop, conforme explica 
Perkovic (2016).
O exemplo mostrado na Figura 7 traz o laço de repetição while e a estrutura con-
dicional if para determinar quando executar o comando continue e saltar para a 
nova execução do loop. Ou seja, se a condição do if for verdadeira, o continue é 
executado e o loop retorna ao início, ignorando as próximas linhas de código.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)8
(a)
(b)
Figura 7. (a) Laço de repetição while com instrução continue e (b) resultado da 
execução do código.
O código da Figura 7a apresenta o while com a variável contadora de controle 
cont, que é inicializada fora do laço com o valor 1. A cada execução do loop, ela é 
incrementada de uma unidade no comando cont+=1 e testada na estrutura condi-
cional if (cont%2==1), que testa se um valor é ímpar, isto é, se o resto da divisão de 
cont/2 é igual a 1. Se a condição for verdadeira, o comando continue é executado, 
pulando a linha do comando print (cont) e iniciando a próxima execução do 
laço de repetição. O resultado da execução desse código é mostrado na Figura 7b. Ao 
final, verificamos que o comando while imprime os números pares positivos até 10.
Teste de mesa para o laço de repetição while 
O teste de mesa é uma técnica utilizada para verificar manualmente o fluxo de 
execução de um programa, sem utilizar o computador e necessitando apenas 
de papel e caneta, conforme aponta Barry (2018). Esse teste é útil para verificar 
erros de lógica e, geralmente, é utilizado quando não existe uma ferramenta 
automatizada de debug ou de simulação para verificar o funcionamento do 
código implementado.
9Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Como o teste de mesa é uma avaliação manual do funcionamento do pro-
grama, seu escopo deve ser muito bem definido, para que o desenvolvedor 
consiga rastrear os estados de todas as variáveis observadas. Em programas 
maiores, esse tipo de teste pode ser feito em blocos, testando, por exemplo, o 
comportamento das variáveis dentro do laço de repetição while.
A configuração dos testes de mesa depende fortemente da função do código 
implementado e do tipo de lógica que se pretende avaliar. De forma geral, 
segundo Slatkin (2015), para realizar o teste de mesa, é necessário seguir os 
seguintes passos:
1. Indicar as variáveis, os testes lógicos e/ou os resultados de operações
que serão rastreadas no teste de mesa.
2. Criar uma tabela com linhas e colunas, em que as colunas serão os
elementos rastreados, que foram identificados no primeiro passo, e
as linhas serão enumeradas de acordo com as instruções observadas/
executadas durante o teste de mesa.
3. Percorrer o trecho de código a ser testado linha por linha, preenchendo 
a tabela com os valores atualizados dos elementos rastreados ao final
da execução de cada linha observada.
4. Executar o terceiro passo do teste até o final do trecho de código que
se deseja verificar.
No laço de repetição while, o teste de mesa verifica o seu funcionamento, 
atualizando o conteúdo dos elementos rastreados a cada reinício do loop. Dentro 
de um laço de repetição while, os elementos que poderão ser rastreados são
número de iteração/repetição do while, status da condição testada, conteúdo 
das variáveis contadora e acumuladora (se houver), entre outros. A Figura 8 
mostra o laço de repetição que soma o 10 primeiros números positivos (Figura 
8a) e o teste de mesa desse código (Figura 8b). 
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)10
Figura 8. (a) Teste de mesa do comando while e (b) tabela com teste de mesa do código.
(a)
(b)
O teste de mesa da Figura 8b mostra a mensagem impressa com os elemen-
tos rastreados: o número da iteração/repetição do laço de repetição while,
o status da condição testada e os conteúdos das variáveis contadora cont
e acumuladora soma a cada reinício do loop. Na primeira vez que o laço
de repetição é executado, a condição testada é verdadeira, a variável cont
contém o valor 1 e a soma do valor acumulado é 1. Na segunda repetição do
laço, a condição testada ainda é verdadeira, o conteúdo da variável cont é 
incrementado de uma unidade, por causa da execução do comando da linha 
9 (Figura 8a), cont+=1, e o conteúdo da variável soma é atuaizado para 3. 
Isso porque é acumulado o valor anterior (1) dessa variável, sendo somado 
com o valor atual da variável cont (2), por meio do comando da linha 6 
(Figura 8a), soma += cont. À medida que cada iteração/repetição do laço 
while ocorre, a variável contadora cont é incrementada em uma unidade,
e a variável soma acumula o valor do somatório dos n números. O teste de
mesa é realizado até que a condição lógica do laço while assume o valor 
False (última linha da Figura 8b).
11Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Variável acumuladora 
Variáveis acumuladoras são comumente empregadas em laços de repetição. 
Sua função é acumular um determinado valor a cada iteração/repetição do 
loop. Dessa forma, o valor da variável acumuladora é somado com um valor 
numérico ou com o conteúdo de outra variável, conforme leciona Matthes 
(2016).
O código mostrado na Figura 8a possui um laço while com uma variável 
acumuladora soma. Essa variável acumula o seu próprio valor anterior, mais 
outro valor ou o valor de uma variável (no caso, a variável cont), acumulando, 
assim, o valor somado a cada iteração do while.
Aplicações práticas utilizando o laço de 
repetição while
Existem diversas aplicações para o laço de repetição while. Dentre elas, 
pode-se citar a criação de menus interativos para se comunicar com o usuário e 
a impressão de uma sequência numérica, como fatorial, somatório e produtório 
de números, progressões aritmética e geométrica, sequência de Fibonacci, 
entre outros, conforme expõe Downey (2016).
Sequência de Fibonacci
Segundo Matthes (2016), a sucessão ou sequência de Fibonacci é uma sequência 
numérica em que os dois primeiros números têm valor F0= 0 e F1= 1 e os outros 
números da sequência são calculados pela equação Fn = F(n-1) + F(n-2). Assim, o ter-
ceiro elemento é calculado por F3 = F2 + F1 = 1, o quarto elemento é F4 = F3 + F2 = 2, 
o quinto é F5 = F4 + F3 = 3, e assim por diante. O código da Figura 9 mostra 
um programa da sequência de Fibonacci, em que o usuário escolhe quantos 
elementos da sequência ele quer imprimir.
O código da Figura 9 possui dois comandos while, sendo que o primeiro 
controla a continuidade de execução do programa. Ele repetirá o cálculo da 
sequência de Fibonacci (comando a, b = b, a+b) até que o usuário digite 
um valor diferente de 1; caso o usuário digite o valor 0, a variável de controle 
é atualizada, e é encerrada a execução do programa. O segundo comando 
while é responsável por calcular e imprimir os elementos da sequência de 
Fibonacci conforme a quantidade de números escolhida pelo usuário.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)12
Figura 9. (a) Método format() para strings e (b) um resultado da formatação.
(a)
(b)
Calculadora simples com menu interativoO laço de repetição while também é utilizado na construção de menus intera-
tivos, que servem para comunicar ao usuário informações importantes, como 
orientações de funcionamento, ajuda, inserção de dados ou encerramento do 
programa, conforme aponta Slatkin (2015). A aplicação da Figura 10 mostra 
como construir um menu interativo para uma calculadora, que faz diversas 
operações entre dois números reais. 
13Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Figura 10. Calculadora simples com um menu interativo.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)14
A calculadora da Figura 10 possui um laço de repetição while sempre 
verdadeiro (while True:), permitindo que o menu interativo seja apresentado 
ao usuário até que o teste lógico da estrutura condicional (if (controle 
== 7):) seja verdadeiro. Essa condição do if só será verdadeira se o usuário 
escolher a opção 7; então, a instrução break será executada, finalizando o 
laço de repetição. Quando o usuário escolhe outra opção (de 1 a 6), a estrutura 
condicional composta if-elif interage com o usuário, solicitando a entrada 
do(s) valor(es) numérico(s) e realizando a operação matemática escolhida.
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: 
Érica, 2018. 264 p.
BARRY, P. Use a cabeça! Python. 2. ed. Rio de Janeiro: Alta Books, 2018. 616 p. (Série Use 
a Cabeça/Head First).
BORGES, L. E. Python para desenvolvedores: aborda Python 3.3. São Paulo: Novatec, 
2014. 320 p.
DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo: 
Novatec, 2016. 312 p.
MATTHES, E. Curso intensivo de Python: uma introdução prática e baseada em projetos 
à programação. São Paulo: Novatec, 2016. 656 p.
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento 
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
RAMALHO, L. Python fluente. São Paulo: Novatec, 2015. 800 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo: 
Novatec, 2015. 296 p.
Leituras recomendadas
HETTINGER, R.; CARROLL, W. I. Python Enhancement Proposal (PEP) 315: Enhanced 
while loop. Python Software Foundation, Wilmington, 2003. Disponível em: https://
www.python.org/dev/peps/pep-0315/. Acesso em: 3 jun. 2019.
LABAKI, J. Testes, loops, varreduras e erros. In: LABAKI, J. Introdução a Python: módulo 
A. Ilha Solteira: Departamento de Engenharia Mecânica, Universidade Estadual Pau-
lista “Júlio de Mesquita Filho”, 2004. p. 29–46. Disponível em: https://www.dcc.ufrj.
br/~fabiom/mab225/pythonbasico.pdf. Acesso em: 3 jun. 2019.
15Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
PINA JÚNIOR, J. C.; MORIMOTO, C. H. Comando de repetição: while. In: PINA JÚNIOR, J. 
C.; MORIMOTO, C. H. Introdução à Computação com Python. São Paulo: Departamento 
de Ciência da Computação, IME-USP, 2019. Disponível em: https://panda.ime.usp.br/
cc110/static/cc110/03-while.html. Acesso em: 3 jun. 2019. 
VIEGAS, T. B. Correções para PEP8 - Listas 03 e 04. Python Brasil Exercícios, [S. l.], 4 ago. 
2014. Disponível em: https://github.com/selatotal/pythonBrasilExercicios/tree/mas-
ter/03_EstruturasRepeticao. Acesso em: 3 jun. 2019.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)16
PENSAMENTO 
COMPUTACIONAL
Fabricio Machado da Silva 
Aplicações utilizando 
comandos iterativos 
aninhados (nível fácil de 
aninhamento — Python)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever a utilização dos comandos iterativos for e while em
estruturas aninhadas em problemas de nível inicial.
 � Desenvolver testes de mesa em programas que utilizem comandos
iterativos aninhados.
 � Resolver problemas computacionais utilizando comandos iterativos
aninhados.
Introdução
Muitas vezes, durante a construção de um programa, nos deparamos com 
uma situação em que precisamos repetir um bloco de código mais de 
uma vez. Ainda, as estruturas precisam ser executadas em um formato 
hierárquico, em que um laço de repetição é executado como parte do 
bloco de código de outra repetição. O conceito que define que uma 
estrutura está contida no escopo de outra é denominado aninhamento.
No desenvolvimento de programas, o aninhamento pode ser utilizado 
em casos em que se faz necessário repetir condições de teste sucessiva-
mente; para isso, é necessário fazer uso dos comandos iterativos for e
while. A utilização de blocos aninhados utilizando comandos iterativos
é muito usual no desenvolvimento de programas, como na manipulação 
de matrizes, nos mecanismos de busca, nos algoritmos de ordenação e 
nos cálculos matemáticos complexos.
Neste capítulo, você vai verificar os comandos iterativos for e while 
aninhados, aplicados à resolução de problemas computacionais, e vai 
conferir diferentes formas de uso desses comandos na linguagem de 
programação Python. Por meio do teste de mesa, você vai poder testar a 
lógica da construção dos comandos iterativos aninhados, para determinar 
se o seu funcionamento está adequado. Por fim, você vai aprender na 
prática a resolver problemas computacionais por meio desses comandos. 
Comandos iterativos for e while
Existem situações em que queremos que a própria estrutura de repetição (loop) 
seja repetida um número específico de vezes, conforme expõe Wazlawick 
(2017). Moreira de Matos (2018, documento on-line) faz uma analogia do 
uso de loops aninhados com o nosso calendário, conforme descrito abaixo.
 � O ano tem 12 meses, sendo que todo ano começa em janeiro, depois 
vêm os meses fevereiro, março, e assim por diante, até chegar dezembro. 
Depois de cada ano completado, tudo recomeça. Isso é um looping. 
 � Cada mês do ano contém os dias do mês, iniciando no dia 1, que é 
seguido pelos dias 2, 3, etc., até o último dia do mês (que é variável). 
Mas, quando acaba o mês, inicia-se tudo de novo. Dessa forma, ocorre 
um novo looping.
 � Também podemos considerar que dentro do dia temos as horas, que 
também se repetem a cada dia. E, dentro de cada hora, há o loop dos 
minutos. E, dentro de cada minuto, há o loop dos segundos. Assim, 
podemos considerar que vivemos em loops aninhados. 
Vamos colocar esse conceito em prática utilizando a linguagem Python. Ao 
empregarmos uma instrução while, podemos fazer um bloco de código ser 
repetido diversas vezes, gerando um loop controlado, até que uma determinada 
condição seja verdadeira. A instrução while é composta por:
 � uma palavra-chave while;
 � uma expressão (condição de teste);
 � dois-pontos.
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)2
while :
 
Em Python, podemos criar estruturas while combinadas, gerando es-
truturas aninhadas, em que o resultado de um bloco while vai influenciar 
no resultado de outro, possibilitando obter resultados interessantes, como a 
repetição de um incremento de duas variáveis, conforme leciona Menezes 
(2014). A sintaxe de uma condição de loop while aninhado é:
while :
 while :
 
 
Para ilustrarmos isso, vamos analisar o código mostrado na Figura 1, que 
usa comandos while aninhados para percorrer uma estrutura de dados que 
pode ter sido obtida de um serviço da internet.
Figura 1. Exemplo de comandos while aninhados em Python.
3Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
No código da Figura 1, há uma estrutura de dados de dicionário contendo a 
informação das refeições de dois animais (linha 1). Podemos utilizar comandos 
while aninhados para percorrer os dois níveis dessa estrutura: o primeiro 
nível é a chave que indica o nome do cachorro (linha 4), e o segundo nível é 
o dos elementos que compõem a refeição do animal (linha 8). 
O comando while, por si só, é muito útil em diversos casos, comoquando 
existe a necessidade de implementação de algoritmos de pesquisa binária, 
devido à possibilidade de criar comportamento iterativo no código. No entanto, 
devido à natureza das estruturas de dados utilizadas em Python, torna-se mais 
compreensível a utilização da instrução for. Na estrutura de código, uma 
instrução for é composta por:
 � uma palavra-chave for;
 � uma variável;
 � uma palavra-chave in;
 � um objeto iterável de tamanho finito, contendo vários elementos; 
 � dois-pontos.
for in :
 
Um objeto iterável pode ser uma lista ou um dicionário. Para simular o comportamento 
similar ao while utilizando uma variável contadora, podemos utilizar a função range, 
que gera uma lista com os números de zero até o valor informado como parâmetro. 
for i in range ([valor inicial], valor final, [passo]):
 
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)4
Observe que o bloco do comando for se inicia na próxima linha, em 
um bloco de código indentado. Como a estrutura for é um comando que 
pode ter outros comandos subordinados a ele, então, podemos implementar 
perfeitamente outro comando for dentro de seu bloco de execução, conforme 
leciona Wazlawick (2017). A sintaxe de dois comandos for aninhados é:
for in :
 
 for in :
 
 
A Figura 2 ilustra a implementação do mesmo programa anterior (Fi-
gura 1), mas utilizando o comando iterativo for. Perceba que, por percorrer 
diretamente os objetos iteráveis, esse programa utiliza menos variáveis e é 
construído com menos linhas.
Figura 2. Exemplo de comandos for aninhados em Python.
Ambos os comandos iterativos, for e while, podem ser construídos 
em estruturas iterativas aninhadas em conjunto, ou seja, um for pode estar 
contido em um while e vice-versa. Veja na Figura 3 um programa que, uti-
lizando loops while e for, imprime a cada linha uma nova letra da palavra 
informada (linha 1), até apresentá-la por completo. 
5Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
Figura 3. Exemplo de comandos while e for aninhados 
em Python.
Em Python, os comandos iterativos for são tradicionalmente usados 
quando você tem um bloco de código que deseja repetir um número fixo de 
vezes. A instrução Python for faz a iteração sobre os componentes de uma 
sequência em ordem, executando o bloco a cada vez. Em contraste, a instrução 
com o loop while é usada quando uma condição precisa ser verificada em 
cada iteração, ou para repetir um bloco de código, inclusive eternamente. 
Teste de mesa em algoritmos com 
estruturas iterativas
Ao projetarmos um algoritmo para solucionar um determinado problema, 
geralmente realizamos um exercício mental, com um passo a passo do que 
será executado pelo programa. Entretanto, muitas vezes nos deparamos com 
um programa que apresenta comportamentos diferentes do que foi projetado 
e que é dado como a solução correta. Por isso, é importante sempre testarmos 
o algoritmo antes de implementar e submeter ao compilador, simulando a sua 
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)6
execução para verificar antecipadamente possíveis erros lógicos. Para tanto, 
existe uma prática utilizada com sucesso na área de programação, chamada de 
teste de mesa, que consiste na execução do algoritmo em um passo a passo, 
com o apoio de papel e caneta.
Existem alguns softwares disponíveis no mercado que efetuam a interpretação de 
algoritmos representados em pseudocódigos ou em fluxogramas. Seu objetivo é 
realizar um teste similar ao teste de mesa.
Para simularmos a aplicação do teste de mesa em estruturas com comandos 
iterativos aninhados, vamos supor um algoritmo que cria um array bidimen-
sional, que é um array com duas dimensões acessadas por linhas e colunas, 
caracterizando-se por uma matriz, conforme mostra a Figura 4. 
Figura 4. Array bidimensional.
Fonte: Adaptada de Pereira et al. ([201-?], documento on-line).
7Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
A Figura 4 apresenta uma matriz com três colunas e três linhas. É im-
portante entender que cada célula dessa matriz corresponde a um elemento, 
que é referenciado por dois índices diferentes: um que corresponde à linha, e 
outro, à coluna. Assim, [1,1] refere-se ao elemento da linha 1 com a coluna 1, 
por exemplo. Cabe lembrar que, em Python, a primeira posição de um vetor 
ou lista é enumerada com o índice 0. Então, diferentemente da tabela acima, 
ao executarmos nosso algoritmo em Python para o preenchimento de uma 
matriz que é uma lista bidimensional, o programa vai iniciar no índice M [0,0], 
indicando a primeira linha e a primeira coluna. 
Para nosso teste de mesa, vamos considerar que o preenchimento de uma 
matriz pode ser executado da esquerda para a direita e de cima para baixo, 
ou seja, começando na posição [0,0] e seguindo para a posição [0,1], e assim 
por adiante. Vamos supor que tenhamos construído um algoritmo em Python 
para preencher uma matriz 3 × 3, conforme mostra a Figura 5.
Figura 5. Algoritmo de implementação de uma matriz 3 × 3. 
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)8
Para simularmos o teste de mesa, temos uma variável com valor inicial igual 
a 10 e uma variável para guardar o incremento igual a 5. O algoritmo inicia 
o for mais externo e, para cada execução desse for, executa o for mais 
interno, em que o valor é armazenado na posição da matriz e é incrementado 
em 5, com a variável de incremento. Realizando o teste de mesa (Quadro 1), 
obtemos:
Posição 0,0 = 10
Posição 0,1 = 15
Posição 0,2 = 20
Posição 1,0 = 25
Posição 1,1 = 30
Posição 1,2 = 35
Posição 2,0 = 40
Posição 2,1 = 45
Posição 2,2 = 50
Iteração
Linha 
de 1 
até 3
Coluna 
de 1 
até 3
Valor_
inicial
M [linha, 
coluna] = 
Valor_inicial
Valor_inicial 
= valor inicial 
+ incremento
1 0 0 10 M [0,0] =10 10 + 5 = 15
2 0 1 15 M [0,1] = 15 15 + 5 = 20
3 0 2 20 M [0,2] = 20 20 + 5 = 25
4 1 0 25 M [1,0] = 25 25 + 5 = 30
5 1 1 30 M [1,1] = 30 30 + 5 = 35
6 1 2 35 M [1,2] = 35 35 + 5 = 40
7 2 0 40 M [2,0] = 40 40 + 5 = 45
8 2 1 45 M [2,1] = 45 45 + 5 = 50
9 2 2 50 M [2,2] = 50 50 + 5 = 55
Quadro 1. Exemplo de teste de mesa
9Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
Dessa forma, para preencher a matriz, executamos ao todo nove iterações, 
como pode ser visto na execução do programa, mostrada na Figura 6.
Figura 6. Algoritmo de implementação de matriz 3 × 3 e a saída do programa. 
Como é possível perceber, a utilização do teste de mesa possibilitou enten-
der, passo a passo, exatamente como o compilador vai processar cada linha 
de comando do código. Assim, foi possível verificar que o código não deverá 
apresentar comportamento diferente do esperado. Iterar, na computação, 
significa repetir uma instrução ou um conjunto de instruções até que uma 
condição não seja mais aceita. Ou seja, trata-se de executar a série de instruções 
por uma determinada quantidade de vezes, ou até mesmo infinitamente, se a 
cláusula assim permitir.
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)10
Problemas computacionais solucionados por 
comandos iterativos aninhados
A condição de estruturar blocos aninhados, conforme citado anteriormente, é 
muito usual em cálculos matemáticos. Observe a Figura 7, que ilustra um código 
que implementa comandos while e for aninhados para o cálculo de fatorial. 
O fatorial de um número (n) natural é calculado pela multiplicação desse n 
por todos os seus antecessores, até chegar ao número 1, sendo definido por:
n! = n.(n – 1).(n – 2).(n – 3)!
Por exemplo: 
Fatorial de 0: 0! = 1
Fatorial de 1: 1! = 1
Fatorial de 2: 2! = 2.1 =2
Fatorial de 3: 3! = 3.2.1 = 6
E assim por diante.
Figura 7. Cálculo de fatorial de 10 números. 
11Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
O primeiro while itera sobre os números que queremos calcular, ou 
seja, os números de 0 a 10, enquanto o for interno faz a decomposição e a 
multiplicação dos valores, gerando o resultado do fatorial do número.
Vamos acompanhar outro exemplo (Figura 8) com vários for aninhados, 
criando uma espécie de simulador de relógio digital, em que, a cada instante, 
será impressa na tela a informação de hora (variando de 0 a 23) e minuto 
(variando de 0 a 59). Nesse caso, serão usadas duas estruturas for aninhadas, 
em que o for mais externo, o primeiro, realiza a contagem das horas, e o 
segundo, que é o mais interno, conta os minutos, o que é repetido várias vezes. 
Figura 8. Exemplo de comandos for aninhados para o cálculo das horas. 
Observe que esse é o princípio do funcionamento de um relógio, que im-
prime todas as horas e todos os minutos em poucos instantes. Você pode ainda 
adicionar um for e incluir os segundos no seu relógio. 
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)12
Por último, a Figura 9 ilustra a implementação de um comando for ani-
nhado dentro de outro, para o cálculo da média de notas de uma turma de 
alunos em variadas disciplinas. 
Figura 9. Exemplo de dois comandos iterativos for aninhados, para o cálculo da média 
dos alunos.
13Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
O programa da Figura 9 é um programa típico de entrada de dados. Ele usa 
um for para percorrer a lista de alunos e, depois, utiliza o for interno para 
perguntar o valor de todas as notas do aluno, para calcular a média. Dessa 
forma, tem-se, ao final, um conjunto de médias por aluno, que pode ser usado 
para calcular a média da turma.
A página Como Pensar Como um Cientista da Computação, que traz a tradução do 
livro How to Think Like a Computer Scientist: Interactive Version, de Brad Miller e David 
Ranum, aborda alguns aspectos sobre os tipos de iteração que existem, especialmente 
em relação à sua duração. Segundo a página, o comando for realiza a iteração em 
determinadas sequências de valores, como uma lista de nomes ou de números que 
utiliza o comando range. Ao utilizar o for, sabe-se quantas vezes será possível iterar 
sobre o conjunto de valores, já que é criado um laço do tipo iteração definida (definite 
iteration), com um término programado. Já no caso do comando while, o término 
do laço depende de uma condição falsa, que não se sabe exatamente quando vai 
ocorrer; trata-se, portanto, de uma iteração indefinida (indefinite iteration). Nesse caso, 
eventualmente, a condição de controle da iteração vai falhar, e a iteração vai parar — 
a não ser que se trate de um laço infinito, o que representa um problema, conforme 
descrito na página. Veja no link a seguir o conteúdo abordado de forma mais completa. 
https://qrgo.page.link/vVtcF
Estruturas aninhadas são ótimas para reaproveitamento de código, pois, 
em vez de se criar uma única estrutura com muitos membros, que nem sempre 
serão acessados, várias estruturas podem ser criadas e reutilizadas em diver-
sas partes do seu projeto. Portanto, as estruturas aninhadas são um recurso 
muito útil para que você consiga resolver o seu problema de forma ainda mais 
eficiente e modularizada.
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)14
MENEZES, N. N. C. Introdução à programação com Python: algoritmos e lógica de pro-
gramação para iniciantes. 2. ed. São Paulo: Novatec, 2014. 328 p.
MOREIRA DE MATOS, F. J. Loops Aninhados (Laço dentro de laço). Python Progressivo, 
Fortaleza, maio 2018. Disponível em: https://www.pythonprogressivo.net/2018/05/
Loopings-Aninhados-Laco-dentro-Lado.html. Acesso em: 28 ago. 2019.
PEREIRA, F. V. Y. R. et al. Comandos de Repetição (Laços ou Loops). ITAbits, São José dos 
Campos, [201-?]. Disponível em: https://sites.google.com/site/itabits/treinamento/
introducao-a-programacao-em-c/comandos-de-repeticao. Acesso em: 28 ago. 2019.
WAZLAWICK, R. S. Introdução a algoritmos e programação com Python: uma abordagem 
dirigida por testes. Rio de Janeiro: Elsevier, 2017. 232 p.
Leituras recomendadas
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: 
Érica, 2018, 264 p.
BARRY, P. Use a cabeça! Python. 2. ed. Rio de Janeiro: Alta Books, 2018. 616 p. (Série Use 
a Cabeça/Head First).
BORGES, L. E. Python para desenvolvedores. 2. ed. Rio de Janeiro: Edição do Autor, 2010. 
360 p. Disponível em: https://ark4n.wordpress.com/python/. Acesso em: 24 jul. 2019.
DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo: 
Novatec, 2016. 312 p. Disponível em: https://penseallen.github.io/PensePython2e/. 
Acesso em: 23 jun. 2019.
MATTHES, E. Curso intensivo de Python: uma introdução prática e baseada em projetos 
à programação. São Paulo: Novatec, 2016. 656 p.
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento 
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
RAMALHO, L. Python fluente: programação clara, concisa e eficaz. São Paulo: Novatec, 
2015. 800 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo: 
Novatec, 2016. 296 p.
15Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
PENSAMENTO 
COMPUTACIONAL
Fernando Esquírio Torres
Identificação interna do documento
Criação, acesso e 
operadores de listas 
(Python)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Definir listas em Python, a sua criação e o seu acesso.
 � Discutir os operadores de listas em Python.
 � Utilizar listas em problemas computacionais.
Introdução
As listas são estruturas de dados simples, bastante utilizadas para armaze-
nar conteúdos variados e, assim, evitar criar uma quantidade numerosa de 
variáveis no seu programa. Essa é, portanto, a maior vantagem de utilizar 
listas em seu código, pois é possível trabalhar com mais variáveis utili-
zando um único nome. As listas também são conhecidas como vetores. 
Porém, em Python, o conceito de listas vai muito além de um conjunto 
de dados listados sequencialmente na memória — elas agregam diversas 
funcionalidades e métodos.
A linguagem Python oferece diferentes maneiras de manipular listas, 
que proporcionam flexibilidade e versatilidade para trabalhar com esse 
tipo de estrutura sequencial. As listas podem armazenar itens de mesmo 
tipo ou de diferentes tipos de dados. Desse modo, é importante que o 
programador aprenda a trabalhar com essa estrutura sequencial de dados.
Neste capítulo, você vai verificar como definir listas em Python, como 
criá-las e como acessá-las. Em seguida, você vai identificar os operadores 
de listas na linguagem Python e, por fim, vai analisar aplicações que 
utilizam listas para resolver problemas computacionais.
Identificação interna do documento
Listas em Python: definição, criação e acesso
Segundo Ramalho (2015), as listas podem ser compreendidas como um con-
junto de dados, números e/ou símbolos que são estruturados em uma dimensão. 
A linguagem Python classifica as listas conforme os tipos de dados sequenciais; 
uma lista pode armazenar itens do mesmo tipo ou de diferentes tipos de dados 
(numéricos, caracteres, strings, etc.).
Segundo Banin (2018), uma lista pode ser considerada como uma estrutura que ar-
mazena seus dados sequencialmente na memória e permite o acesso individual ou 
em grupo aos seus elementos. 
Segundo Barry (2018), a lista tem seus elementos organizados em uma 
linha e n colunas, formando, assim, um vetor 1 × n. Os elementos de uma lista 
são indicados por aj, em que j é o índice que representa a coluna do elemento 
dentro da lista (Figura 1). O índice j vai de 0 (zero) até n − 1. Desse modo, o 
primeiroelemento da lista, a0, está na coluna 0 (zero), e o último elemento da 
lista, an–1, está na coluna n – 1. Essa informação será importante quando for 
necessário percorrer ou modificar os elementos dentro de uma lista.
Figura 1. Elementos de uma lista 1 × n.
n – 1
Criação, acesso e operadores de listas (Python)2
Identificação interna do documento
Criação de listas em Python
Segundo Ramalho (2015), a criação de listas é realizada com os itens se-
quenciais organizados entre colchetes [ ] e separados por vírgulas, conforme 
o exemplo a seguir, que cria uma lista com cinco valores numéricos inteiros.
a = [0, 1, 2, 3, 4]
Porém, as listas também podem armazenar itens heterogêneos, abrangendo 
diferentes tipos de dados. O exemplo a seguir mostra como é possível criar 
uma lista para armazenar itens variados, como o nome de uma pessoa, que 
é uma sequência de caracteres, a idade, que é um valor numérico inteiro, o 
saldo bancário, que é um valor numérico real, e o status atual da pessoa, que 
é um valor booleano.
lista = ['Jorel', 22, 215.24, True]
Acesso às listas em Python
Segundo Ramalho (2015), as listas armazenam seus dados organizados se-
quencialmente e permitem o acesso individual a cada um de seus elementos, 
ou o acesso a um grupo de elementos. Nas listas, é possível percorrer todos 
os elementos de forma implícita; sendo assim, elas podem ser utilizadas como 
estruturas iteráveis. Como visto anteriormente, a localização dos elementos 
(aj) em uma lista é indicada pelo índice j (coluna), que indica a posição do 
elemento na lista, iniciando a contagem sempre pelo valor 0 (zero). Então, o 
primeiro elemento está na posição coluna 0 (zero), o segundo elemento está 
na posição coluna 1 (um), e assim por diante.
O acesso individual a um elemento específico de uma lista é realizado 
pelo nome dado à lista na sua criação e o índice, que especifica a coluna entre 
colchetes, como mostrado na declaração a seguir. Esse comando faz a leitura 
de um dado da lista localizado na posição [j], que indica a coluna da lista.
lista[j]
3Criação, acesso e operadores de listas (Python)
Identificação interna do documento
Caso você queira modificar o valor de um elemento específico da lista, 
basta utilizar o operador de atribuição com o novo valor a ser armazenado, 
como mostrado no comando abaixo. Na declaração mostrada, o valor 35 é 
armazenado no elemento da posição coluna 1 da lista.
lista[1] = 35
Observe o exemplo mostrado na Figura 2, que possui um código para fazer a leitura 
e a alteração individual de elementos de uma lista.
(a) (b)
Figura 2. (a) Código de leitura e alteração de um elemento em uma lista. (b) Resultado da 
execução do código.
O código mostrado na Figura 2a mostra a criação da lista (linha 1) com o nome 
minha _ lista. Essa lista contém itens de diferentes tipos de dados. O comando 
print da linha 4 imprime a lista original. O resultado da execução desse comando 
é mostrado na primeira linha da Figura 2b. As linhas 7 e 9 do código da Figura 2a 
contêm os comandos minha _ lista[0] e minha _ lista[1], que servem para 
ler um elemento em uma posição específica na lista. O resultado da execução desses 
comandos é mostrado na segunda e na terceira linhas da Figura 2b. Os comandos 
das linhas 12 e 13 modificam o conteúdo de um elemento especificado pelo índice j 
(coluna) entre colchetes. O resultado da execução desses comandos é mostrado nas 
duas últimas linhas da Figura 2b.
Segundo Slatkin (2015), além de acessar individualmente os elementos de 
uma lista, é possível acessar um grupo de elementos dela. O acesso a um grupo 
de elementos de uma lista é feito determinando-se o intervalo de elementos 
desejado, utilizando uma das seguintes formas:
Criação, acesso e operadores de listas (Python)4
Identificação interna do documento
 � Utilizando o sinal de “:” entre os colchetes, indicando o acesso a todos os 
elementos de uma lista por meio do comando nome _ da _ lista[:].
 � Indicando um intervalo de colunas da lista por meio do comando 
nome _ da _ lista[col
inicial
:col
final
]. Esse comando retornará 
os elementos a partir da col
inicial
 até a col
final
 – 1.
De acordo com Downey (2016), caso você queira modificar um ou mais 
elementos de uma lista, basta indicar o intervalo a ser alterado e utilizar o 
operador de atribuição com o conjunto de valores a ser armazenado.
Observe o exemplo mostrado na Figura 3, que possui um código para fazer a leitura 
e a alteração de um grupo de elementos de uma lista.
(a)
(b)
Figura 3. (a) Código de leitura e alteração de um grupo de elementos em uma lista. (b) 
Resultado da execução do código.
Conforme explica Ramalho (2015), a linha 5 do código da Figura 3a contém o comando 
numeros[:], que serve para acessar todos os elementos de uma lista. Observe na 
Figura 3b o resultado da execução desse comando. O comando da linha 8, nume-
ros[1:3], acessa os elementos das posições 1 e 2 da lista, que são especificadas 
pelo intervalo 1:3 entre colchetes. O resultado da execução desses comandos é 
mostrado na segunda linha da Figura 3b. A linha 11 da Figura 3a contém o comando 
numeros[5:8] = ['A', 'B', 'C'], que modifica os elementos nas posições 5, 
6 e 7 da lista. O resultado da execução desse comando pode ser observado na terceira 
linha impressa da Figura 3b — repare que são substituídos apenas os elementos a partir 
da posição 5 da lista. O resultado da execução desse comando pode ser visualizado 
na última linha impressa da Figura 3b.
5Criação, acesso e operadores de listas (Python)
Identificação interna do documento
De acordo com Banin (2018), se você tentar acessar uma posição da lista 
que não contenha elementos, ocorrerá um erro de execução, devido à tentativa 
de acessar um índice fora da faixa da lista. 
Percorrer elementos de uma lista em Python
Acessar um elemento de uma lista é bem simples, conforme foi mostrado 
na seção anterior. Os exemplos citados anteriormente funcionam de forma 
satisfatória para acessar poucos elementos; mas, e se for necessário acessar 
todos os elementos de uma lista? Imagine uma lista com 100 elementos — não 
seria prático fazer 100 linhas de comando com cada acesso individual. Então, 
é preciso pensar em uma solução melhor. Mas qual seria essa solução?
De acordo com Perkovic (2016), em Python, é possível percorrer cada 
elemento de uma lista por meio de um laço de repetição (for ou while), 
seja para preencher a lista ou para acessar e imprimir os elementos dela.
O exemplo da Figura 4 mostra um código para preencher uma lista 1 x 5 com valores 
numéricos, utilizando o laço de repetição for, e, depois, acessar e imprimir esses 
dados formatados em uma tabela, também utilizando um laço de repetição for.
(a)
(b) (c)
Figura 4. (a) Código para percorrer elementos de uma lista e (b) entrada de dados do 
programa. (c) Resultado da execução do código.
Criação, acesso e operadores de listas (Python)6
Identificação interna do documento
Para um melhor entendimento do código da Figura 4a, ele será explicado por partes. 
Na primeira parte, temos a criação da lista com valores nulos; o comando da linha 2 
cria uma lista com cinco valores numéricos nulos. Nesse caso, a dimensão da lista foi 
preestabelecida (cinco colunas). Porém, segundo Banin (2018), existe uma maneira mais 
eficiente para popular listas com valores nulos, utilizando o método append (), 
que não será tratado neste capítulo. Aqui, é empregada uma estratégia para popular 
matrizes com valores nulos com base no conteúdo do presente capítulo.
Na segunda parte do código, ocorre o preenchimento da lista, e o laço de repetição 
for na linha 6 permite acessar cada elemento dela. O comando for da linha 6 altera 
a variável col entre os valores 0 e len(minha _ lista) – 1. Assim, é possível 
percorrer todos os elementos da lista. Segundo Matthes (2016), o método len() 
retorna o tamanho de uma lista; por exemplo, o comando len(minha _ lista) 
retorna o tamanho da lista, ou seja, o número de elementos da lista, conforme podeser observado no código da Figura 4a. Desse modo, a variável col percorre os índices 
0, 1, 2, 3, 4 e 5, acessando os elementos nas posições minha _ lista[0], mi-
nha _ lista[1], minha _ lista[2], minha _ lista[3], minha _ lista[4] 
e minha _ lista[5]. O comando da linha 7 da Figura 4a, dentro do laço for, solicita 
ao usuário que digite o número que será armazenado em cada elemento da lista. O 
resultado da execução dessa parte do código é mostrado na Figura 4b.
Por fim, na terceira parte, “imprimindo a lista”, o laço for na linha 13 faz a varredura 
dos elementos da lista, de forma semelhante ao explicado na parte anterior. O que 
difere são os comandos para imprimir os valores da lista formatados em uma tabela, 
como mostrado na Figura 4c.
Clonando uma lista em Python
Segundo Ramalho (2015), o programador de Python deve tomar cuidado 
ao copiar os elementos de uma lista para outra. Assim como ocorre com as 
variáveis, no momento em que uma lista é declarada, ela faz referência a um 
objeto. Então, o sinal de atribuição “=” faz com que as duas listas referenciem 
ao mesmo objeto, ou seja, ao mesmo endereço de memória. Sendo assim, 
utilizar o sinal de atribuição “=” para copiar o conteúdo de uma lista para 
outra pode não surtir o resultado esperado. A Figura 5 mostra como funciona 
o sinal de atribuição para “copiar” o conteúdo de listas.
7Criação, acesso e operadores de listas (Python)
Identificação interna do documento
Figura 5. (a) Código que utiliza o sinal de atribuição “=” com 
uma lista. (b) Resultado da execução do código.
(a)
(b)
O código da Figura 5a contém a criação da lista original na linha 2, com 
três elementos, por meio do comando minha _ lista = ['A', 'B','C']. 
A linha 4 apresenta o comando outra _ lista = minha _ lista, 
que utiliza o sinal de atribuição “=”; isso faz com que a segunda lista (ou-
tra _ lista) referencie o mesmo endereço de memória da lista original. 
Sendo assim, o comando da linha 6, minha _ lista[0] = 1, modifica o 
elemento da posição 0 da lista original. Porém, ao executar os comandos das 
linhas 7 e 8, observa-se que as duas listas tiveram o seu conteúdo modificado. 
O resultado é mostrado nas duas primeiras linhas da Figura 5b.
Seguindo o código, o comando da linha 11, outra _ lista[2] = 5, 
modifica o elemento da posição 2 da segunda lista. Mas, ao executar os coman-
dos das linhas 12 e 13, observa-se que as duas listas tiveram o seu conteúdo 
modificado. O resultado é mostrado nas duas últimas linhas da Figura 5b. Nos 
dois casos, o conteúdo das duas listas é modificado, pois, como já foi dito, 
o sinal de atribuição “=” faz com que as duas listas apontem para o mesmo 
objeto. Portanto, ao modificar um elemento de qualquer uma das listas, ambas 
terão seu conteúdo alterado.
Para evitar alterações indesejadas no conteúdo de uma lista, é necessário 
cloná-la e, assim, criar um objeto, ou seja, uma nova referência na memória. 
Isso pode ser feito indicando-se o intervalo completo dos elementos da lista, 
ou por meio do método copy(). A Figura 6 mostra as duas maneiras de 
clonar uma lista.
Criação, acesso e operadores de listas (Python)8
Identificação interna do documento
Figura 6. (a) Código para clonar uma lista. (b) Resultado da execução do código.
(a)
(b)
O código da Figura 6a contém a criação da lista original na linha 2, com 
três elementos, por meio do comando minha _ lista = ['A', 'B','C']. 
A linha 4 possui o comando segunda _ lista = minha _ lista[:], 
que utiliza o sinal de atribuição “=”, mas indicando o grupo de elementos 
que será acessado. O sinal “:” dentro de colchetes indica todos os elementos 
da lista; isso faz com que a segunda lista vire uma cópia da primeira lista e 
referencie um novo objeto e, consequentemente, um novo endereço de memória 
da lista original.
Sendo assim, o comando da linha 6, minha _ lista[0] = 1, modifica 
apenas o elemento da posição 0 da lista original. Ao executar os comandos das 
linhas 7 e 8, observa-se que a lista original foi modificada, e a segunda lista, 
não. O resultado é mostrado nas duas primeiras linhas da Figura 6b. Seguindo 
o código, o comando da linha 11, segunda _ lista[2] = 5, modifica 
apenas o elemento da posição 2 da segunda lista. Ao executar os comandos 
das linhas 12 e 13, observa-se que apenas a segunda lista foi modificada, e a 
lista original, não. O resultado é mostrado na terceira e na quarta linhas da 
Figura 6b.
Na linha 16, o comando terceira _ lista = minha _ lista.
copy() utiliza o método copy(), que copia os elementos de uma lista em 
outra, criando um novo objeto na memória do computador. Sendo assim, o 
comando da linha 18, minha _ lista[0] = 1, modifica apenas o ele-
mento da posição 0 da lista original. Ao executar os comandos das linhas 19 
e 20, observa-se que a lista original foi modificada, e a terceira lista, não. O 
9Criação, acesso e operadores de listas (Python)
Identificação interna do documento
resultado é mostrado na Figura 6b. Seguindo o código, o comando da linha 
23, terceira _ lista[2] = 5, modifica apenas o elemento da posição
2 da terceira lista. Ao executar os comandos das linhas 24 e 25, observa-se 
que apenas a terceira lista foi modificada, e a lista original, não. O resultado 
é mostrado na Figura 6b.
Operadores de matrizes em Python
A linguagem Python permite não somente acessar individualmente um ele-
mento de uma lista para ler ou alterar o seu conteúdo como também utilizar 
operadores para manipular as listas. Nesta seção, você verá como funcionam 
o operador aditivo “+”, o operador multiplicativo “*” e o operador de busca
“in”. Você também vai verificar como utilizar o método len().
Operador aditivo “+” com listas
Segundo Matthes (2016), o operador de adição “+” é utilizado para concatenar 
listas, ou seja, esse operador vai unir o conteúdo de uma lista a outra. Deve-
-se ter muito cuidado ao utilizar esse operador, pois, em Python, quando os
operandos envolvidos na soma forem elementos de uma lista, o resultado é a
concatenação dos mesmos, e não a operação matemática de soma dos elementos
da lista, mesmo que esses elementos sejam do tipo numérico.
O exemplo da Figura 7 mostra um código que utiliza o operador aditivo com listas.
(a)
(b)
Figura 7. (a) Operador aditivo com listas. (b) Resultado da execução do código.
Criação, acesso e operadores de listas (Python)10
Identificação interna do documento
O código da Figura 6a mostra na linha 2 a criação e o preenchimento de uma lista 
com três elementos numérico inteiros. Na linha 3 da Figura 6a, o operador aditivo ”+” no 
comando uma _ lista + uma _ lista concatenou as duas listas uma _ lista, 
resultando em uma lista com seis elementos; observe a nova lista impressa na linha [1] 
da Figura 6b. Na linha 4 da Figura 6a, o operador aditivo “+” no comando uma _ lista 
+ [4,5] uniu os elementos listados entre colchetes na lista original uma _ lista, 
resultando em uma lista com cinco elementos; observe a nova lista impressa na linha 
[2] da Figura 6b.
Observe que o mesmo acontece com listas que possuem outros tipos de dados. Por 
exemplo, continuando no código da Figura 6a, na linha 7, a lista outra _ lista é 
criada e preenchida com cinco valores literais (caracteres). Na linha 8 da Figura 6a, o 
operador aditivo “+” no comando outra _ lista + outra _ lista concate-
nou as duas listas, resultando em uma lista com oito elementos; observe a nova lista 
impressa na linha [3] da Figura 6b. Na linha 9 da Figura 6a, o operador aditivo “+” no 
comando outra _ lista + ['E', 'F'] uniu os elementos entre colchetes na 
lista outra _ lista, resultando em uma lista com seis elementos; observe a nova 
lista impressa na linha [4] da Figura 6b.
Operador multiplicativo “*” com matrizes
Segundo Matthes (2016), o operador multiplicativo “*” é utilizado para 
multiplicar x vezes a quantidade de elementos de uma lista; ou seja, esse 
operador produz uma nova lista com repetições da lista original. Deve-se ter 
muito cuidado ao utilizar esse operador, pois, em Python, quando os

Mais conteúdos dessa disciplina