Buscar

E-book Unidade 3

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

unidade 
3
PROGRAMAÇÃO
Laboratório de
unidade 
3Programação Python
Prezado estudante,
Estamos começando uma unidade desta disciplina. Os textos que a compõem foram 
organizados com cuidado e atenção, para que você tenha contato com um conteúdo 
completo e atualizado tanto quanto possível. Leia com dedicação, realize as atividades e 
tire suas dúvidas com os tutores. Dessa forma, você, com certeza, alcançará os objetivos 
propostos para essa disciplina.
OBJETIVO GERAL 
Desenvolver soluções algorítmicas em python com a manipulação de arquivos.
OBJETIVOS ESPECÍFICOS 
• Descrever a estrutura básica de um algoritmo em Python.
• Analisar algoritmos e programas.
• Resolver problemas utilizando programação.
• Descrever a organização de dados manipuláveis por um algoritmo na memória do 
computador.
• Formular soluções algorítmicas empregando os diferentes operadores.
• Interpretar soluções algorítmicas de manipulação de dados.
• Discutir a utilização de comandos condicionais aninhados.
• Realizar testes de mesa em problemas que utilizem comandos condicionais aninhados.
• Praticar os comandos condicionais aninhados em problemas computacionais.
• 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.
• Diferenciar os tipos de arquivos. 
• Descrever as formas de manipulação de arquivos. 
• Identificar as operações com arquivos.
• 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.
unidade 
3
O conteúdo deste livro é 
disponibilizado por SAGAH.
Parte 1
Conceitos básicos de
algoritmos em Python
LABORATÓRIO DE PROGRAMAÇÃO 144
Conceitos básicos de 
algoritmos em Python
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Descrever a estrutura básica de um algoritmo em Python.
  Analisar algoritmos e programas.
  Resolver problemas utilizando programação.
Introdução
As pessoas usam o pensamento lógico constantemente, muitas vezes 
sem perceber. Por exemplo, quando você acorda de manhã e realiza uma 
sequência de etapas até estar pronto para sair para o trabalho ou ir até a 
universidade, você está utilizando o pensamento lógico-algorítmico. Se 
todas essas etapas fossem escritas, obedecendo certa ordem, no formato 
de itens de uma lista, haveria um algoritmo.
No seu cotidiano, sem se dar conta, você está continuamente resol-
vendo problemas por meio do pensamento lógico. Na computação, 
isso não é diferente, e questões computacionais também podem ser 
resolvidas por meio do pensamento lógico-algorítmico.
Neste capítulo, você vai estudar os conceitos básicos de algoritmos e 
ver como eles podem ser usados para resolver problemas computacio-
nais. Para a solução desses problemas, é necessário usar o pensamento 
lógico-algorítmico, aplicado na forma de instruções e com etapas bem 
definidas para atingir determinado objetivo. Assim, você também vai 
verificar como essas instruções podem ser representadas por meio 
de estruturas visuais ou, na forma escrita, por meio de pseudocódigo. 
Além disso, você vai ver exemplos de algoritmos na linguagem de 
programação Python.
145 Programação Python UNIDADE 3 Conceitos básicos de algoritmos em Python PARTE 1
Resolução de problemas com programação
No momento da concepção de um programa e para que haja coerência com o 
que se está propondo resolver, é necessária certa atenção para entender o pro-
blema e apresentar uma solução viável. Descobrir um método para solucionar 
determinado problema não é uma tarefa tão simples assim. Dessa forma, a 
construção de um programa pode ser melhor executada quando se levam em 
conta alguns itens importantes. Veja a seguir.
  Requisitos do programa: você deve compreender as informações 
fornecidas (a entrada) e os resultados que devem ser produzidos (a 
saída). É preciso escrever uma descrição rigorosa da entrada e da saída, 
que cubra todos os casos do programa.
  Arquitetura: na programação, sempre existe a possibilidade de lidar 
com vários tipos de objetos e dados diferentes, como um cálculo, uma 
lista, uma simulação, entre outras infinitas situações. Para cada caso, 
haverá algumas operações básicas a serem executadas, como imprimir 
algo, adicionar algo ou mesmo buscar algo. O ideal é escrever essas 
operações na forma de pequenos procedimentos de algoritmo para 
resolver o problema de acordo com os requisitos do programa. Também 
é possível utilizar uma notação de linguagem natural, chamada pseu-
docódigo, para fazer uma descrição narrativa dos passos e da ordem 
das instruções. Por sua vez, as instruções devem ser claras o bastante 
para determinar de forma única e completa as ações necessária em 
cada passo do programa.
O pseudocódigo (ou pseudolinguagem) é uma forma de representação 
algorítmica (GUIMARÃES; LAGES, 1985). Além disso, é praticamente um 
programa escrito em linguagem natural e que tem a possibilidade de ser 
transmitido ao computador, com uso de algumas ferramentas que leem pseu-
docódigos. Para escrever códigos em pseudocódigo, é necessário conhecer 
as instruções básicas de um pseudocódigo. A seguir, veja as instruções de 
uma pseudolinguagem.
a) ESCREVA (“ ”): essa instrução é usada para exibir uma mensagem 
na tela.
b) LEIA: essa instrução é usada para ler valores que são digitados no 
teclado.
c) <- (recebe): essa instrução é usada como comando de atribuição.
Conceitos básicos de algoritmos em Python2
LABORATÓRIO DE PROGRAMAÇÃO 146
d) INÍCIO: essa instrução é usada para iniciar o programa principal.
e) FIM: essa instrução é usada para finalizar o algoritmo principal.
f) VAR: essa instrução é usada para declarar variáveis.
g) ALGORITMO: essa instrução é usada para indicar o início do 
programa.
h) FIM ALGORITMO: essa instrução é usada para indicar o final do 
programa.
i) ENQUANTO: essa instrução é usada para iterar enquanto uma condição 
for verdadeira.
j) PARA: essa instrução é usada também para iterar enquanto uma con-
dição for verdadeira.
k) FIM PARA: essa instrução é usada para indicar o final da instrução 
PARA.
l) SE ... ENTÃO: essa instrução é usada para avaliar se uma expressão 
é verdadeira ou falsa. Se for verdadeira, executa a instrução que está 
no corpo.
m) SENÃO SE: essa instrução também é usada para avaliar se uma ex-
pressão é verdadeira ou falsa. Se for verdadeira, executa a instrução 
que está no corpo.
n) SENÃO: essa instrução é usada para avaliar uma expressão caso as 
instruções SE ou SENÃO SE não sejam executadas.
o) FIM SE: essa instrução é usada para indicar o final da instrução SE.
Veja a seguir um exemplo de algoritmo em pseudocódigo:
ALGORITMO “somar e escrever se a soma é maior, menor ou 
igual a 10”
 VAR
 valor: real
 soma: real
 INÍCIO
 soma <- 0
 ESCREVA (“Digite um ‘valor’ ou 0 para parar:”)
 LEIA valor
3Conceitos básicos de algoritmos em Python
147 Programação Python UNIDADE 3 Conceitos básicos de algoritmos em Python PARTE 1
Além de serem representados pela pseudolinguagem, algoritmos também 
podem ser representados por símbolos que compõem uma notação visual. O 
conjunto desses símbolos dispostos de forma estruturada é conhecido como 
fluxograma. Um fluxograma é um diagrama que descreve um processo, 
sistema ou algoritmo de computador. Ele é amplamente utilizado em vários 
campos para documentar, estudar, planejar, melhorar e comunicarprocessos 
(às vezes) complexos em diagramas claros e fáceis de entender.
Os fluxogramas usam retângulos ovais, diamantes e outras formas para 
definir o tipo de etapa, juntamente com as setas de conexão para definir o fluxo 
e a sequência. Eles podem variar de gráficos simples e desenhados à mão a 
diagramas detalhados, desenhados por computador, representando várias etapas 
e rotas. Às vezes, os fluxogramas são chamados por nomes mais especializados, 
como fluxograma de processo, mapa de processos, fluxograma funcional, 
mapeamento de processos de negócios, modelagem e notação de processos de 
negócios (Business Process Model and Notation — BPMN) ou diagrama de 
fluxo de processos (Process Flow Diagram — PFD). Eles estão relacionados 
a outros diagramas populares, como Diagramas de Fluxo de Dados (DFDs) e 
diagramas de atividade da linguagem de modelagem unificada (Unified Modeling 
Language — UML). A seguir, veja os símbolos mais comuns de um fluxograma.
 ENQUANTO valor <> 0 FAÇA
 soma <- soma + valor
ESCREVA (“Soma atual: soma”)
ESCREVA (“Digite um ‘valor’ ou 0 para parar:”)
LEIA valor
 FIMENQUANTO
 SE soma > 10 ENTÃO
 ESCREVA (“Soma é maior que 10”)
 SENÃO SE soma < 10 ENTÃO
 ESCREVA (“Soma é menor que 10”)
 SENÃO
 ESCREVA (“Soma é igual a 10”)
 FIM SE
 FIM
FIM ALGORIMTO
Conceitos básicos de algoritmos em Python4
LABORATÓRIO DE PROGRAMAÇÃO 148
  Terminal: tem a forma oval e é usado para representar o início e o fim 
de um processo.
  Processo: tem a forma retangular e é obrigatório quando você inicia 
o fluxograma. Representa qualquer etapa do processo, como tarefas 
ou ações básicas.
  Seta (ou flecha): é usada para guiar o visualizador ao longo do caminho 
do fluxograma e indicar qual é a direção do fluxo de dados.
  Decisão: tem a forma de um diamante e simboliza que é necessária uma 
decisão para avançar. Pode ser uma escolha binária — por exemplo, sim 
ou não, verdadeiro ou falso — ou mesmo uma decisão mais complexa, 
com várias opções.
  Entrada/saída: tem a forma de um paralelogramo e simboliza a entrada 
ou a saída de dados.
Com esses cinco símbolos básicos, você tem quase tudo o que é necessário 
para diagramar um fluxograma simples (Figura 1).
Figura 1. Símbolos básicos de um fluxograma.
  Codificação: escolher adequadamente o que será utilizado para cada 
tipo de dado torna a solução do problema mais eficiente. É no momento 
da codificação que se escolhem as representações para os objetos de 
dados que serão utilizados no algoritmo. Quando já se tem um pseu-
docódigo para a solução do problema, a tradução do algoritmo para 
uma linguagem de programação é quase imediata. Na linguagem de 
programação Python, por exemplo, existem vários tipos de objetos que 
representam os conceitos de listas, matrizes, dicionários, filas, pilhas, 
entre outras estruturas.
5Conceitos básicos de algoritmos em Python
149 Programação Python UNIDADE 3 Conceitos básicos de algoritmos em Python PARTE 1
A seguir, veja o mesmo algoritmo apresentado em pseudocódigo, mas agora escrito 
na linguagem de programação Python.
# somar e escrever se a soma é maior, menor ou igual a 10
soma = 0
valor = float(input("Digite um 'valor' ou 0 para parar:"))
while valor != 0:
 soma += valor
print(f"Soma atual: {soma}")
valor = float(input("Digite um 'valor' ou 0 para parar:"))
if soma > 10:
 print("Soma é maior que 10")
elif soma < 10:
 print("Soma é menor que 10")
else:
 print("Soma é igual a 10")
Análise de algoritmos e programas
A razão mais objetiva para se analisar um algoritmo é descobrir suas carac-
terísticas a fi m de avaliar sua adequação a várias aplicações, ou compará-lo 
com outros algoritmos para a mesma aplicação. Além disso, a análise de um 
algoritmo pode ajudar o desenvolvedor a entendê-lo melhor e sugerir melhorias. 
Os algoritmos tendem a se tornar mais curtos, mais simples e mais elegantes 
durante o processo de análise.
Existe um ramo da ciência da computação teórica chamado complexidade 
de algoritmos, cujo objetivo é classificar os algoritmos de acordo com sua 
eficiência (SEDGEWICK; FLAJOLET, 2019). Do mesmo modo, um problema 
computacional comumente chamado de complexidade computacional é 
classificado de acordo com o seu nível de dificuldade. Essas classificações ge-
ralmente se concentram no desempenho do pior caso na ordem de crescimento.
Conceitos básicos de algoritmos em Python6
LABORATÓRIO DE PROGRAMAÇÃO 150
Um dos pontos principais da análise de um algoritmo é o tempo. Uma 
análise detalhada e completa do tempo de execução de um algoritmo envolve 
as etapas listadas a seguir.
1. Implementar o algoritmo completamente para a análise.
2. Determinar o tempo necessário para cada operação básica, tais como 
cálculos, repetições, instruções, etc.
3. Identificar quantidades desconhecidas que podem ser usadas para 
descrever a frequência de execução das operações básicas, como a 
quantidade de operações que crescem exponencialmente durante a 
execução do algoritmo.
4. Desenvolver um modelo realista para a entrada no programa.
5. Analisar as quantidades desconhecidas, assumindo a entrada modelada.
6. Calcular o tempo total de execução multiplicando o tempo pela frequên-
cia de cada operação e adicionando todos os produtos da soma ao final.
Os algoritmos geralmente são bem diferentes entre si, embora muitas 
vezes o objetivo deles seja o mesmo. Ao considerar um algoritmo para um 
problema específico, você deve começar a perceber os padrões, para que tipos 
de problemas semelhantes possam ser resolvidos com a ajuda desse algoritmo. 
Por exemplo, sabe-se que um conjunto de números pode ser classificado por 
meio de algoritmos diferentes. O número de comparações realizadas por um 
algoritmo pode ser diferente da quantidade de comparações realizadas por 
outro algoritmo, ainda que ambos sejam para a mesma entrada de dados. 
Portanto, a complexidade do tempo desses algoritmos pode ser diferente. Além 
disso, é necessário calcular o espaço de memória exigido por cada algoritmo. 
Assim, você deve levar em conta sob quais hipóteses o algoritmo vai operar. 
Geralmente, realizam-se os tipos de análise elencados a seguir.
  Pior caso: número máximo de etapas executadas em qualquer instância 
do algoritmo.
  Melhor caso: número mínimo de etapas executadas em qualquer ins-
tância do algoritmo.
  Caso médio: número médio de etapas executadas em qualquer instância 
do algoritmo.
Em resumo, a análise de algoritmo é o processo de analisar a capacidade de 
resolução de problemas do algoritmo em termos de tempo e tamanho necessá-
rios (o tamanho da memória para armazenamento durante a implementação).
7Conceitos básicos de algoritmos em Python
151 Programação Python UNIDADE 3 Conceitos básicos de algoritmos em Python PARTE 1
Para saber mais sobre o assunto deste capítulo, acesse o link a seguir (em inglês). Nele, 
você vai encontrar excelentes explicações sobre níveis mais avançados de análises de 
algoritmos, tais como análise assintótica e análise amortizada.
https://qrgo.page.link/RzqX5
Estrutura básica de algoritmo
A estrutura básica de um algoritmo é formada por vários componentes, co-
mumente encontrados na maioria dos algoritmos. Esses componentes deter-
minam como se dará o fl uxo de execução da tarefa, desde a inicialização até o 
encerramento (MOKARZEL; SOMA, 2008). Assim, pode haver determinado 
problema que, para ser resolvido, requer uma quantidade maior ou menor de 
componentes, dependendo da sua complexidade. Dessa forma, a execução de 
um programa pode ser mais efi ciente quando é levado em conta o comporta-
mento das estruturas básicas de algoritmos(Figura 2).
  Variáveis e constantes: esse componente de algoritmo possui conteúdo 
temporário e é usado para armazenar informações adicionais que uma 
instrução precisa para funcionar corretamente ou de forma efetiva. Seus 
valores podem variar conforme a execução do algoritmo progride, por 
isso o nome “variável”. Em contrapartida, as constantes armazenam 
valores que não são alterados durante a execução do algoritmo. Por 
exemplo, o valor PI usado para calcular a área do círculo é uma constante, 
já que seu valor não muda.
  Instruções: a instrução é um dos componentes principais de um algo-
ritmo. Um algoritmo contém em si mesmo uma série de subalgoritmos, 
sendo que cada um deles executa uma tarefa menor. Por exemplo, realizar 
o cálculo de uma equação pode ser uma tarefa muito grande para ser 
feita por apenas uma instrução. Assim, algumas tarefas, tais como 
adição, subtração, multiplicação e divisão, podem ser consideradas ins-
truções menores e auxiliam na tarefa principal, que, no caso, é calcular 
a equação. Dessa forma, todos os algoritmos podem ser, eventualmente, 
divididos ou fatorados em instruções menores.
Conceitos básicos de algoritmos em Python8
LABORATÓRIO DE PROGRAMAÇÃO 152
  Condicionais: em algum momento da execução de uma tarefa, alguns 
algoritmos podem ter de tomar determinadas decisões. Por exemplo, se a 
soma dos dois valores em questão for maior ou menor do que outro valor, 
quando comparados, a tarefa segue por determinado caminho de fluxo; 
caso contrário, a tarefa segue por outro caminho. Os componentes condi-
cionais permitem que um algoritmo execute instruções seletivamente com 
base em certas condições que devem ser satisfeitas, dependendo do caso.
  Repetições: esse componente de algoritmo permite executar determinadas 
instruções repetidas vezes, até que dada condição seja satisfeita. Existem 
casos, como uma lista, em que é necessário repetir uma instrução para 
cada elemento existente. Há também outros casos em que é preciso repetir 
um conjunto de instruções até um objetivo ser alcançado, ou até uma 
condição ser satisfeita. As repetições podem conter em si outras instruções, 
incluindo repetições comumente chamadas de “repetições aninhadas”.
Figura 2. Fluxograma das estruturas básicas de algoritmo para controle de fluxo de execução.
Estruturas básicas de algoritmo em Python
Antes de você se aprofundar no assunto das estruturas básicas em Python, 
deve entender o que realmente é essa linguagem e qual é o objeto pelo qual 
ela foi criada. Python é uma linguagem de programação e, como tal, possui 
algumas características ou atributos próprios. A seguir, veja o que, em síntese, 
esses atributos querem dizer.
  Tem sintaxe bonita: nesse atributo, estão em jogo as regras que determi-
nam os comandos, as palavras reservadas, as declarações, a indentação 
do código, as descrições formais, os operadores, etc.
9Conceitos básicos de algoritmos em Python
153 Programação Python UNIDADE 3 Conceitos básicos de algoritmos em Python PARTE 1
  Tem semântica inteligente: a semântica é o significado de cada item 
da sintaxe. Por exemplo, uma das instruções de repetição na linguagem 
de programação Python tem a sintaxe while, e a semântica dessa sintaxe 
é “repita enquanto a condição for verdadeira”.
  É uma linguagem interpretada: o interpretador do Python, que são os 
algoritmos internos da linguagem, executa o código-fonte diretamente, 
traduzindo cada linha de código para instruções de máquina.
  É de alto nível: o interpretador sabe lidar com os detalhes técnicos do 
computador. Assim, desenvolver um código é mais simples do que em 
linguagens de baixo nível, nas quais o programador deve se preocupar 
com detalhes da máquina, tais como quantidade de memória disponível, 
capacidade do processador, etc.
  É de propósito geral: o Python pode ser usado para desenvolver progra-
mas em diversas áreas, ao contrário de linguagens de domínio específico, 
que são especializadas e atendem somente a determinada aplicação.
  É dinamicamente tipada: não é necessário informar o tipo no momento 
da declaração da variável. O interpretador se encarrega de descobrir 
que tipo tem cada variável.
  É fortemente tipada: em Python, não é possível realizar operações 
com tipos diferentes. Por exemplo, na tentativa de somar um valor do 
tipo int (inteiro) com outro valor do tipo list (lista), o Python levantará 
uma exceção de erro.
Por essas e outras características, o Python consegue ser uma linguagem 
simples, de sintaxe bonita, legível e amigável. Além disso, muitas empresas, 
como a Nasa, o Google, o Facebook e a Amazon, utilizam o Python diariamente.
Para instalar a linguagem Python, primeiramente deve-se realizar o download do 
interpretador da linguagem, acessando o primeiro link listado a seguir. Essa página 
contém os links dos instaladores para variados tipos de sistemas operacionais, tais como 
Windows, Linux e Mac OS X. Para cada tipo de sistema operacional, é recomendado 
seguir o guia de instalação específico do Python, disponível no segundo link.
https://qrgo.page.link/2otU8
https://qrgo.page.link/oCyNg
Conceitos básicos de algoritmos em Python10
LABORATÓRIO DE PROGRAMAÇÃO 154
O desenvolvimento do Python começou no final da década de 1980, por 
Guido van Rossum. Ele decidiu usar esse nome porque estava lendo um ro-
teiro do Monty Python, um grupo de comédia britânico da década de 1970. 
Assim, a versão 1.0 do Python foi publicada em 1994, a versão 2.0, em 2000, 
e a versão 3.0, em 2008.
Há diversos ambientes integrados de desenvolvimento (no inglês Integrated Develop-
ment Environment — IDE) que dão suporte à linguagem de programação Python, 
sendo que alguns são mais simples e outros são mais complexos. Esses ambientes 
auxiliam significativamente nos seguintes quesitos: identificação das variáveis que 
foram declaradas; identificação dos erros no código; personalização do ambiente de 
trabalho; ocultação de parte do código para melhor visualização, etc. Ficam como 
dica alguns IDEs:
  PyCharm Edu
  Atom
  IDLE
  Spyder
Assim, você pode pesquisar as características de cada um deles no Google, fa-
zer o download no site do desenvolvedor do IDE e instalar o que você achar mais 
interessante.
Os algoritmos geralmente são criados usando pseudocódigo e são in-
dependentes das linguagens subjacentes, ou seja, um algoritmo pode ser 
implementado em mais de uma linguagem de programação. Da mesma forma, 
a maioria das linguagens de programação compartilha instruções básicas de 
código, como as repetições, os controles de fluxo, etc. Assim, quase todos 
os algoritmos têm a possiblidade de ser implementados na linguagem de 
programação Python.
No Python, as variáveis, funções e estruturas de dados são tratadas como 
objetos. Um identificador no Python é um nome usado para identificar 
esses objetos.
11Conceitos básicos de algoritmos em Python
155 Programação Python UNIDADE 3 Conceitos básicos de algoritmos em Python PARTE 1
A seguir, veja exemplos de identificadores para nomear objetos:
nome = "Paulo"
idade = 25
estado _ civil = "solteiro"
PI = 3.1415
Para declarar um identificador, você pode usar os conjuntos de letras (de 
A até Z e de a até z), os dígitos (de 0 a 9) e também o caractere especial subli-
nhado (_) (ROSSUM, 2001). O Python não permite caracteres especiais para 
identificadores, tais como os símbolos @, $ e %, pois alguns deles também 
são operadores aritméticos nessa linguagem.
O Python é uma linguagem de programação sensível ao caso (case-sensitive), ou seja, 
que faz distinção entre letras maiúsculas e letras minúsculas. Por exemplo, no Python, 
os objetos do tipo string “feliz” e “FELIZ” são diferentes entre si.
Algumas linguagensde programação, como o Java e o PHP, exigem que, 
para cada bloco de código, seja usado um par de chaves para indicar o corpo 
do bloco. No Python, não são necessárias essas chaves, pois os blocos de 
código são indicados por um recuo de linha, que é chamado de indentação 
(PYTHON SOFTWARE FOUNDATION, 2019a). A quantidade de espaços 
em branco na indentação é variável (geralmente quatro espaços), porém todas 
as instruções dentro do bloco devem ser recuadas com a mesma quantidade 
de espaços. Assim, todas as linhas recuadas com o mesmo número de espaços 
formam um bloco de código, e este termina quando a próxima linha tiver uma 
indentação diferente.
Conceitos básicos de algoritmos em Python12
LABORATÓRIO DE PROGRAMAÇÃO 156
Veja um exemplo de bloco de código com uma estrutura de controle de fluxo:
if 'a' == 'b':
 # início do bloco
 print('a é igual a b')
 a = 2 + 2
 b = 1 + 3
Um tipo de dado é na verdade um conjunto de valores com um conjunto de 
operações definidas para esses valores. O Python pode armazenar em memória 
diferentes tipos de dados, pois esses tipos estão embutidos nessa linguagem de 
programação. Por exemplo, imagine que seja necessário armazenar os dados 
do endereço de uma pessoa. Isso pode ser feito do seguinte modo: o número 
da casa da pessoa pode ser armazenado como um valor numérico, e o nome 
da rua em que a pessoa mora pode ser armazenado como texto. No Python, 
também é possível somar dois valores numéricos, mas não é possível somar 
um número e uma frase (texto). Os tipos de dados mais comuns que o Python 
possui são: numéricos, cadeias de caracteres (strings), listas, tuplas, conjuntos 
e dicionários (PYTHON SOFTWARE FOUNDATION, 2019b).
Veja a seguir um exemplo dos tipos de dados lista e dicionário:
lista = [1, 2, 3, 4]
dicionario = {
 'nome': 'Paulo', 
 'idade': 25, 
 'estado _ civil': 
 'solteiro'
}
13Conceitos básicos de algoritmos em Python
157 Programação Python UNIDADE 3 Conceitos básicos de algoritmos em Python PARTE 1
Operadores são estruturas que podem manipular os valores dos dados 
(PYTHON SOFTWARE FOUNDATION, 2019c). O Python dispõe de um 
vasto conjunto de operadores para realizar operações. Esses operadores tam-
bém são chamados de “operadores relacionais”. Por exemplo, os operadores 
de comparação analisam os valores em ambos os lados de uma expressão e 
decidem a relação entre eles. Os operadores mais comuns são os que realizam 
operações aritméticas, de comparação, lógicas, bit a bit, etc.
Veja um exemplo de alguns operadores aritméticos:
a = 2 + 2 # 4
b = 3 - 1 # 2
c = 4 * 3 # 12
d = 6 / 2 # 3
Estruturas de controle de fluxo avaliam expressões que produzem verda-
deiro ou falso como resultado. No Python, a tomada de decisão é de extrema 
importância, pois é a antecipação das condições que ocorrem durante a execu-
ção do programa. Com essas estruturas, é possível seguir determinado fluxo 
de execução e, de acordo com as condições (verdadeiro ou falso), tomar certas 
decisões (PYTHON SOFTWARE FOUNDATION, 2019d).
Veja a seguir um exemplo de algumas estruturas de controle para decisão:
if a > b:
 print('a é igual a b')
elif a < b:
 print('a é diferente de b')
else:
 print('a é b são iguais')
Conceitos básicos de algoritmos em Python14
LABORATÓRIO DE PROGRAMAÇÃO 158
Uma estrutura de repetição permite executar uma instrução ou grupo 
de instruções várias vezes. A linguagem de programação Python fornece 
algumas estruturas para lidar com os requisitos de repetição. Essas estruturas 
testam repetidamente a expressão e, se ela for verdade, executam o primeiro 
conjunto; se a expressão for falsa, o que pode ser verificado na primeira vez que 
ela é testada, o fluxo segue para o fim da repetição (PYTHON SOFTWARE 
FOUNDATION, 2019d).
Veja um exemplo de duas estruturas de repetição:
# while
i = 0
while i < 5:
 print(i)
 i += 1
# for
for i in range(5):
 print(i)
Nos links a seguir (em inglês), você pode consultar uma vasta gama de exemplos de 
estruturas em Python.
https://qrgo.page.link/MXfDk
https://qrgo.page.link/8yXEX
https://qrgo.page.link/qftMj
15Conceitos básicos de algoritmos em Python
159 Programação Python UNIDADE 3 Conceitos básicos de algoritmos em Python PARTE 1
GUIMARÃES, A. M.; LAGES, N. A. C., Algoritmos e estruturas de dados. Rio de Janeiro: 
LTC, 1985.
MOKARZEL, F.; SOMA, N. Introdução à ciência da computação. Rio de Janeiro: Elsevier, 
2008.
PYTHON SOFTWARE FOUNDATION. Built-in types. [2019c]. Disponível em: https://docs.
python.org/3/library/stdtypes.html. Acesso em: 30 dez. 2019.
PYTHON SOFTWARE FOUNDATION. Data types. [2019a]. Disponível em: https://docs.
python.org/3/library/datatypes.html. Acesso em: 30 dez. 2019.
PYTHON SOFTWARE FOUNDATION. Lexical analysis. [2019b]. Disponível em: https://
docs.python.org/3/reference/lexical_analysis.html?highlight=indent#indentation. 
Acesso em: 30 dez. 2019.
PYTHON SOFTWARE FOUNDATION. More control flow tools. [2019d]. Disponível em: 
https://docs.python.org/3/tutorial/controlflow.html?highlight=elif#more-control-
-flow-tools. Acesso em: 30 dez. 2019.
ROSSUM, G. PEP 8: style guide for Python code. 2001. Disponível em: https://www.
python.org/dev/peps/pep-0008/#naming-conventions. Acesso em: 30 dez. 2019.
SEDGEWICK, R.; FLAJOLET, P. An introduction to the analysis of algorithms. [2019]. Dispo-
nível em: https://aofa.cs.princeton.edu/home/. Acesso em: 30 dez. 2019.
Leituras recomendadas
PYTHON COURSE. Python3 tutorial. 2019. Disponível em: https://www.python-course.
eu/python3_course.php. Acesso em: 30 dez. 2019.
TUTORIALS POINT. DAA: methodology of analysis. 2019a. Disponível em: https://www.
tutorialspoint.com/design_and_analysis_of_algorithms/design_and_analysis_of_al-
gorithms_methodology.htm. Acesso em: 30 dez. 2019.
TUTORIALS POINT. Python tutorial. 2019b. Disponível em: https://www.tutorialspoint.
com/python/index.htm. Acesso em: 30 dez. 2019.
W3SCHOOLS. Python tutorial. 2019. Disponível em: https://www.w3schools.com/
python/. Acesso em: 30 dez. 2019.
Conceitos básicos de algoritmos em Python16
LABORATÓRIO DE PROGRAMAÇÃO 160
ENCERRA AQUI O TRECHO DO LIVRO DISPONIBILIZADO 
PELA SAGAH PARA ESTA PARTE DA UNIDADE.
PREZADO ESTUDANTE
Os links para sites da Web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
17Conceitos básicos de algoritmos em Python
unidade 
3
O conteúdo deste livro é 
disponibilizado por SAGAH.
Parte 2
Variáveis, tipos de dados
e operadores de algoritmos
em Python
LABORATÓRIO DE PROGRAMAÇÃO 162
Variáveis, tipos de 
dados e operadores de 
algoritmos em Python
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Descrever a organização de dados manipuláveis por um algoritmo 
na memória do computador.
  Formular soluções algorítmicas empregando os diferentes operadores.
  Interpretar soluções algorítmicas de manipulação de dados.
Introdução
Ao contrário de um ser humano, um computador não sabe a diferença 
entre a expressão “1234” e a expressão “abcd”. Para haver essa distinção 
em um sistema computacional, é necessária uma classificação que de-
termine o que uma variável (ou objeto) pode conter. Variáveis e tipos de 
dados são fatores importantes em praticamente todas as linguagens de 
programação de computadores, incluindo a linguagem de programação 
Python. Quando os programadores criam aplicativosde computador, seja 
para desktop, mobile ou mesmo para a Web, os tipos de dados devem ser 
referenciados e usados corretamente para garantir o resultado adequado 
e um programa sem erros.
Neste capítulo, você vai ver como manipular variáveis que armazenam 
qualquer tipo de dado, sejam dados numéricos, sequenciais ou lógicos. 
Você também vai conhecer uma variedade de operadores, como ope-
radores aritméticos, relacionais (ou de comparação), binários, lógicos e 
de atribuição. Além disso, você vai estudar a estrutura e o processo de 
avaliação de expressões, incluindo os conceitos de precedência dos 
operadores e associatividade de um operador.
163 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
Gerenciamento de memória e variáveis
Antes de você estudar as variáveis e os tipos de dados, deve compreender como 
o Python funciona e como as variáveis escritas em Python se comportam na 
memória de um computador. Para isso, é possível fazer uma analogia entre a 
memória de um computador e um livro de vários autores com espaços ainda 
vazios. Nesse livro, ainda não há muita coisa escrita nas páginas e, eventu-
almente, diferentes autores aparecerão. Cada autor deseja algum espaço para 
escrever sua própria história. Porém, como eles não podem escrever um em 
cima do texto do outro, devem ter cuidado com as páginas em que escrevem. 
Assim, antes de começarem a escrever, consultam o gerente do livro. O gerente 
decide em que local do livro cada autor tem permissão para escrever. Como 
esse livro existe há muito tempo, muitas histórias contidas nele não são mais 
relevantes. Assim, quando ninguém lê ou faz referência àquelas histórias 
sem relevância, elas são removidas para abrir espaço para novas narrativas.
Na verdade, em computação, é comum chamar blocos contíguos de “páginas 
de memória de comprimento fixo”. Portanto, essa analogia serve muito bem 
para se falar de memória de computador. Em essência, a memória do com-
putador é como aquele livro, e os autores são como diferentes aplicativos ou 
processos que precisam armazenar dados na memória. O gerente, que decide 
onde os autores podem escrever no livro, desempenha o papel de um tipo de 
gerenciador de memória. Por fim, a pessoa que removeu as histórias antigas 
para dar lugar a novas é um coletor de lixo de memória.
O gerenciamento de memória é o processo pelo qual os aplicativos leem 
e gravam dados. Um gerenciador de memória determina onde colocar os 
dados de um aplicativo. A memória, como as páginas do livro da analogia, 
são finitas. Logo, o gerente precisa encontrar algum espaço livre e fornecê-lo 
ao aplicativo. Esse processo de fornecer memória é geralmente chamado de 
alocação de memória. Assim, quando um dado não é mais necessário, ele 
pode ser excluído ou liberado. Porém, a pergunta que fica é: liberado para 
onde? De onde veio essa “memória”?
Variáveis, tipos de dados e operadores de algoritmos em Python2
LABORATÓRIO DE PROGRAMAÇÃO 164
Em algum lugar do computador, existe um dispositivo físico que armazena 
dados quando se executa programas Python. Existem muitas camadas de 
abstração pelas quais o código Python passa antes que os objetos cheguem 
ao hardware. Uma das principais camadas acima do hardware (como RAM 
ou disco rígido) é o Sistema Operacional (SO). O SO realiza (ou nega) solici-
tações para ler ou gravar o dado (ou informação) na memória. Acima do SO, 
existem aplicativos, um dos quais é a implementação padrão do Python, que 
vem por padrão incluída no sistema operacional, ou pode ser baixada do site 
oficial (www.python.org). O gerenciamento de memória para o código Python 
é tratado pelo aplicativo Python. O modo como o Python manipula e gerencia 
os dados de memória é o foco deste capítulo.
A implementação padrão do Python, chamada de “CPython”, é escrita na 
linguagem de programação C (PYTHON SOFTWARE FOUNDATION, 2019b). 
Ela converte seu código Python em instruções que são executadas em uma 
máquina virtual. Máquinas virtuais são como computadores físicos, mas são 
implementadas em software. Elas geralmente processam instruções básicas 
semelhantes às instruções de montagem (assembly). Assim, Python é uma 
linguagem de programação interpretada. Seu código Python é previamente 
compilado para obter instruções mais legíveis para computador, chamadas 
bytecode. Essas instruções são interpretadas por uma máquina virtual quando 
o código Python é executado.
É importante observar que existem outras implementações além do 
CPython. O IronPython, por exemplo, é compilado para execução no Com-
mon Language Runtime (CLR) da Microsoft. O Jython também é compilado 
no bytecode da linguagem de programação Java para ser executado na Java 
Virtual Machine (JVM). O CPython é escrito na linguagem de programação 
C, que não suporta nativamente a programação orientada a objetos. Por esse 
motivo, existem alguns designs interessantes no código CPython.
Tudo no Python é um objeto, mesmo tipos como int (inteiro) e str (string). 
Assim, em partes, isso é verdade em um nível de implementação no CPython. 
Existe uma estrutura chamada “PyObject”, que todos os outros objetos do 
3Variáveis, tipos de dados e operadores de algoritmos em Python
165 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
CPython usam. Pode-se dizer que o PyObject é pai de todos os objetos em 
Python; ele contém apenas dois elementos: ob_refcnt, que é a contagem de 
referência, e ob_type, que é o ponteiro para outro tipo de objeto. A contagem 
de referência é usada para coleta de lixo. Então, há um ponteiro para o tipo 
de objeto real. Esse tipo de objeto é apenas outra estrutura que descreve um 
objeto Python, como um dict (dicionário) ou um int (inteiro).
Cada objeto tem seu próprio alocador de memória específico e sabe fazer 
com que a memória o armazene. Além disso, cada objeto possui um desalo-
cador de memória específico que “libera” a memória quando ela não é mais 
necessária. No entanto, há um fator importante envolvendo todo esse assunto 
sobre alocação e liberação de memória. A memória é um recurso compartilhado 
no computador, e situações desagradáveis podem acontecer se dois processos 
diferentes tentarem gravar (escrever) no mesmo local ao mesmo tempo.
O Python tem um recurso chamado Global Interpreter Lock (GIL), que 
é uma solução para o problema comum de ter de lidar com recursos com-
partilhados, como a memória em um computador (PYTHON SOFTWARE 
FOUNDATION, 2019b). Quando dois processos (ou threads) tentam modificar 
o mesmo recurso ao mesmo tempo, eles podem “pisar nos dedos” um do 
outro. O resultado final pode ser uma bagunça ilegível, em que nenhum dos 
processos termina como esperado. Considerando a analogia do livro apresen-
tada anteriormente, suponha que dois autores decidam “teimosamente” que 
é a vez deles de escrever. Não apenas isso, mas ambos precisam escrever na 
mesma página do livro e, ainda, ao mesmo tempo. Cada um dos autores ignora 
a tentativa do outro de criar uma história e começa a escrever na página. O 
resultado final serão duas histórias, uma em cima da outra, o que tornará toda 
a página completamente ilegível.
Uma solução viável para o problema de memória compartilhada é fazer um 
bloqueio global e único no interpretador toda vez que um processo interage 
com a memória (a página do livro). Nesse caso, em outras palavras, apenas 
um autor de cada vez pode escrever naquela página. O GIL do Python realiza 
isso bloqueando todo intérprete, o que significa que não é possível que outro 
processo interfira no processo que está sendo realizado. Quando o CPython 
manipula a memória, ele usa o GIL para garantir segurança. Assim, o geren-
ciamento de memória é parte integrante do trabalho com computadores,e o 
Python lida com quase tudo nos bastidores. Na Figura 1, a seguir, veja um 
exemplo genérico do gerenciador de memória em Python.
Variáveis, tipos de dados e operadores de algoritmos em Python4
LABORATÓRIO DE PROGRAMAÇÃO 166
Figura 1. Gerenciador de memória em Python.
Variáveis em Python
Em Python, quando se fala em variável, deve-se pensar em uma variável 
como um nome anexado a um objeto específi co (PYTHON SOFTWARE 
FOUNDATION, 2019c). No Python, as variáveis não precisam ser declaradas 
ou defi nidas com antecedência, como é o caso em muitas outras linguagens de 
programação, por exemplo, C ou Java. Para criar uma variável, basta defi nir 
um nome, atribuir um valor para ela e começar a usá-la. A atribuição é feita 
com um único sinal de igual (=):
nome = "John"
Isso é lido ou interpretado como “para ‘nome’, seja atribuído o valor ‘John’”. 
Uma vez feito isso, o identificador “nome” pode ser usado em uma instrução 
(ou declaração) ou expressão.
Em muitas linguagens de programação, as variáveis são declaradas esta-
ticamente. Isso significa que uma variável é inicialmente relacionada a um 
tipo de dados específico, e qualquer valor atribuído a ela durante sua vida 
útil deve ter sempre esse tipo. Variáveis em Python não estão sujeitas a essa 
restrição. No Python, uma variável pode ser atribuída a um valor de um tipo 
e, posteriormente, redesignada a um valor de tipo diferente.
5Variáveis, tipos de dados e operadores de algoritmos em Python
167 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
var = 5.7
print(id(var)) # Endereço na memória: 4557936080
print(var) # Resultado: 5.7
print(type(var)) # Resultado: <class 'float'>
var = 'Agora eu sou uma string'
print(id(var)) # Endereço na memória: 4497916832
print(var) ## Resultado: Agora eu sou uma string
print(type(var)) # Resultado: <class 'str'>
No exemplo que você acabou de ver, foi utilizada uma função chamada 
“type()”. Essa função tem o objetivo de imprimir o tipo de dado que um objeto 
possui. Quando são apresentadas as instruções do exemplo, o interpretador 
Python está realizando os passos listados a seguir.
1. Crie na memória um objeto do tipo ponto flutuante ( float) cujo iden-
tificador é “var”.
2. Atribua-lhe o valor 5.7.
3. Exiba no console o número do identificador do objeto “var”.
4. Exiba no console o valor contido em “var”.
5. Exiba no console o tipo da classe do objeto “var”.
6. Crie na memória um novo objeto do tipo str cujo identificador é “var”, 
porém, como já existe um objeto na memória com esse identificador, 
antes, destrua o antigo objeto “var”.
7. Atribua-lhe o valor “Agora eu sou uma string”.
8. Exiba no console o número do identificador do objeto “var”.
9. Exiba no console o valor contido em “variável”.
10. Exiba no console o tipo da classe do objeto.
Variáveis, tipos de dados e operadores de algoritmos em Python6
LABORATÓRIO DE PROGRAMAÇÃO 168
O Python possui um tipo de função interna chamado “type()” para determinar o tipo 
de dados de uma variável ou o seu valor. Outra função interna é a “isinstance()”, que 
existe para testar se um objeto é uma instância de outro objeto.
Pode-se dizer que o Python é uma linguagem forte e dinamicamente tipada, 
ou seja, uma variável pode ser atribuída com outro tipo durante a sua vida 
útil no sistema, porém não é possível fazer operações com tipos diferentes, a 
menos que isso esteja muito bem definido previamente. Por exemplo, não é 
possível fazer uma operação de soma entre um tipo inteiro e um tipo string, 
a menos que seja sobrescrito como realizar essa operação, desenhando um 
método próprio para esse tipo de caso.
O Python é também uma linguagem altamente orientada a objetos. De fato, 
praticamente todos os itens de dados em um programa Python são objetos de 
um tipo ou classe específica (esse ponto será tratado mais adiante neste capí-
tulo). Assim, pode-se dizer que uma variável Python tem um nome simbólico 
(identificador) e é uma referência (ou ponteiro) para um objeto. Depois que um 
objeto é atribuído a uma variável, é possível se referir a ele com esse nome. 
Porém, os dados em si ainda estão contidos no objeto.
Um dos comportamentos das referências para um objeto em Python se dá 
por meio de um contador de referências. Quando se atribui um valor para uma 
variável, por exemplo, “a = 1”, uma referência “a” é adicionada ao objeto e a 
contagem de referência do valor “1” é incrementada. Quando o Python executa 
a próxima instrução, por exemplo, “b = 1”, já que se trata do mesmo valor (1), 
um novo objeto não é inicializado. O mesmo objeto na memória com o valor “1” 
apenas possui outra referência “b”. Isso faz parte do processo de gerenciamento 
de memória Python. Para “c = 2”, um novo objeto é criado novamente, pois 
ele possui um novo valor “2” com “c” como referência agora apontando para 
“1”. Por fim, se for atribuído um valor para uma nova variável, por exemplo, 
“d = a”, o gerenciador de memória incrementa mais uma referência para o 
objeto “1”, tendo também “d” como variável. O mesmo ocorre para valores 
de uma lista quando os elementos dela têm o mesmo valor atribuído a outra 
variável anteriormente.
7Variáveis, tipos de dados e operadores de algoritmos em Python
169 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
a = 1
print(id(a)) # ID: 4447157152 - Valor 1 tem 1 referência (a)
b = 1
print(id(b)) # ID: 4447157152 - Valor 1 tem 2 referências 
(a e b)
c = 2
print(id(c)) # ID 4466998208 - Valor 2 tem 1 referência (c)
d = a
print(id(d)) # ID: 4447157152 - Valor 1 tem 3 referências 
(a, b e c)
L = [1, 1, 1, 1] # Valor 1 tem 7 referências (a b, c, L[0], 
L[1], L[2} e L[3])
print(id(L[0])) # ID: 4447157152
print(id(L[1])) # ID: 4447157152
print(id(L[2])) # ID: 4447157152
print(id(L[3])) # ID: 4447157152
Os exemplos apresentados até agora usaram nomes curtos para as variáveis. 
Mas nomes de variáveis podem ser mais detalhados. De fato, geralmente é mais 
benéfico quando o nome da variável representa o seu conteúdo, pois isso torna 
o objetivo da variável mais evidente à primeira vista. Oficialmente, os nomes 
de variáveis no Python podem ter qualquer tamanho e podem consistir em 
letras maiúsculas e minúsculas (A–Z, a–z), dígitos (0–9) e caractere sublinhado 
(_). Uma restrição adicional é que, embora um nome de variável possa conter 
dígitos, o primeiro caractere de um nome de variável nunca pode ser um dígito.
Não há nada que impeça a criação de variáveis diferentes no mesmo programa 
denominadas “iDade”, “idade” e “idadE”. Mas isso é extremamente desaconselhá-
vel. Sem sombra de dúvida, qualquer um que tentasse ler o código ficaria confuso. 
Até mesmo o próprio programador do código, depois de ficar um tempo sem lidar 
com ele, ficaria confuso. Assim, vale a pena dar a uma variável um nome que seja 
descritivo o suficiente para esclarecer para que ela está sendo usada.
Variáveis, tipos de dados e operadores de algoritmos em Python8
LABORATÓRIO DE PROGRAMAÇÃO 170
Suponha que seja preciso calcular o número de pessoas que estão se formando na 
faculdade. É possível escolher qualquer um dos seguintes nomes:
numerodeformandos = 1500 # Todas minúsculas
NUMERODEFORMANDOS = 1500 # Todas maiúsculas
numeroDeFormandos = 1500 # Camel Case
NumeroDeFormandos = 1500 # Pascal Case
numero _ de _ formandos = 1500 # Snake Case
print(numerodeformandos,
 NUMERODEFORMANDOS,
 numeroDeFormandos,
 NumeroDeFormandos,
 numero _ de _ formandos)
Todos os exemplos que você acabou de ver são melhores nomes do que 
apenas um “n”, um “ndf” ou similares. Pelo menos, é possível dizer pelo nome 
qual valor a variável representa. Por outro lado, nem todos são igualmentelegíveis. Como em muitas situações, nesse caso a escolha é uma questão de 
preferência pessoal, mas a maioria das pessoas consideraria os dois primeiros 
exemplos (particularmente o que utiliza todas as letras maiúsculas), em que 
todas as letras são colocadas juntas, mais difíceis de ler. Os métodos mais 
usados para construir um nome de variável com várias palavras são os três 
últimos exemplos. A seguir, você vai conhecê-los melhor.
  Camel case: a segunda palavra e as subsequentes têm iniciais maiúsculas 
para facilitar a visualização dos limites dos termos. (Provavelmente, 
ocorreu a alguém em algum momento que as letras maiúsculas espa-
lhadas pelo nome da variável se assemelham vagamente à corcundas 
dos camelos.)
  Pascal case: idêntico ao Camel case, exceto que a primeira palavra 
também tem inicial maiúscula.
  Snake case: as palavras são separadas por sublinhados.
9Variáveis, tipos de dados e operadores de algoritmos em Python
171 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
Os programadores que usam Python debatem calorosamente sobre qual dos 
métodos é preferível. Há argumentos para defender cada um desses estilos. 
O programador deve utilizar o que for mais atraente visualmente para ele. 
Assim, deve escolher um e usá-lo de forma consistente.
As variáveis não são os únicos elementos que podem receber nomes em 
Python. Além delas, também se nomeiam funções, classes, módulos e assim 
por diante. As regras que se aplicam a nomes de variáveis também se aplicam 
a identificadores, o termo mais geral para nomes dados a objetos de programa. 
O Guia de Estilo para Código Python, também conhecido como PEP-0008, 
contém convenções de nomenclatura que listam padrões sugeridos para nomes 
de diferentes tipos de objetos. O PEP-0008 inclui as recomendações a seguir.
  Snake case: deve ser usado para funções e nomes de variáveis.
  Pascal case: deve ser usado para nomes de classe.
Além das regras de sintaxe para os nomes de variáveis, ainda existe mais 
uma restrição para os nomes desses identificadores. A linguagem de progra-
mação Python reserva um pequeno conjunto de palavras-chave (keywords) que 
designam funcionalidades especiais da linguagem. Nenhum objeto pode ter 
o mesmo nome que uma dessas palavras reservadas. No Python 3.7, existem 
35 palavras-chave reservadas (Quadro 1).
False def if raise continue break assert
None del import return global for finally
True elif in try pass not nonlocal
and else is while class async yield
as except lambda with from await or
Quadro 1. Palavras-chave reservadas do Python
É possível ver essa lista a qualquer momento digitando “help(‘keyword’)” 
em um terminal ou console com interpretador Python. As palavras reservadas 
diferenciam maiúsculas de minúsculas e devem ser usadas exatamente como 
mostrado no Quadro 1. Todas as keywords são escritas em letras minúsculas, 
Variáveis, tipos de dados e operadores de algoritmos em Python10
LABORATÓRIO DE PROGRAMAÇÃO 172
exceto False, None e True, que têm a primeira letra capitalizada. Se você 
tentasse criar uma variável com o mesmo nome de qualquer palavra reservada, 
isso resultaria em uma exceção (Exception) levantada pelo Python.
Tipos de dados em Python
Em geral, um tipo de dado defi ne o formato e os limites superior e inferior dos 
dados para que um programa possa usá-los adequadamente. No entanto, os 
tipos de dados Python são muito mais do que isso. No Python, não é preciso 
declarar uma variável mencionando explicitamente o tipo do dado. Esse recurso, 
como foi discutido anteriormente, é conhecido como “tipagem dinâmica” 
(PYTHON SOFTWARE FOUNDATION, 2019a). O Python determina o tipo 
de um valor diretamente na sintaxe do código e em tempo de execução. Por 
exemplo, as aspas marcam a declaração de um valor sequencial, os colchetes 
representam uma lista e as chaves são utilizadas para um dicionário. Além 
disso, os números não decimais serão atribuídos ao tipo inteiro, enquanto 
aqueles com um ponto decimal serão atribuídos para pontos fl utuantes.
A seguir, está a lista de tipos de dados importantes comumente usados 
no Python. Depois, você vai conhecer melhor cada um deles e ver exemplos.
  Booleanos (booleans)
  Numéricos (numbers)
  Cadeias de caracteres (strings)
  Bytes
  Listas (lists)
  Tuplas (tuples)
  Conjuntos (sets)
  Dicionários (dictionaries)
Tipos numéricos
São um dos tipos de dados mais importantes em Python. Ao contrário de 
muitas linguagens que possuem apenas números inteiros e fl utuantes, o Python 
introduz o número complexo como um novo tipo de dado numérico. Os ti-
pos de dados numéricos em Python são classifi cados usando as seguintes 
palavras-chave: int, fl oat e complex. Os tipos booleanos são considerados uma 
especialização do tipo inteiro.
11Variáveis, tipos de dados e operadores de algoritmos em Python
173 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
Booleano
É um tipo de dado que quase todas as linguagens de programação possuem. O 
booleano em Python pode ter dois valores, verdadeiro ou falso. Esses valores 
são constantes e podem ser usados para atribuir ou comparar valores booleanos. 
Veja um exemplo simples a seguir.
condicao = False
if condicao: # Equivalente a: if condicao == True
 print("Continuar programa!")
else:
 print("O programa será encerrado!")
a = True + 0 # Resultado: 1
b = False + 0 # Resultado: 0
print(type(a)) # Resultado: <class 'int'>
print(type(b)) # Resultado: <class 'int'>
A expressão em um bloco de condições produzirá um valor booleano. 
O Python cria contextos booleanos para avaliar expressões. Seja qual for a 
expressão, o Python usará o contexto booleano para determinar seu valor 
verdadeiro. Como o Python possui muitos tipos de dados, eles operam com 
suas próprias regras para encontrar o resultado em um contexto booleano. 
Em alguns casos, as constantes booleanas True e False também podem atuar 
como números. É evidente no exemplo anterior que True é 1 e que o valor de 
False é 0. Eles se transformarão em números durante operações aritméticas.
Inteiros
A partir do Python 3, efetivamente não há limite para o quão longo um valor 
inteiro pode ser. Obviamente, ele é limitado pela quantidade de memória que 
o sistema possui, mas, para além disso, um número inteiro pode ser tão longo 
Variáveis, tipos de dados e operadores de algoritmos em Python12
LABORATÓRIO DE PROGRAMAÇÃO 174
quanto necessário. O Python interpreta uma sequência de dígitos numéricos e 
sem nenhum prefi xo como um número decimal de base 10. Outras sequências 
de caracteres podem ser anexadas a um valor inteiro para indicar uma base 
diferente de 10. O tipo subjacente de um número inteiro Python, independen-
temente da base usada para especifi cá-lo, é chamado de int.
print(10) # Base 10 (decimal) - Resultado 10
print(type(10)) # <class 'int'>
print(0b10) # Base 2 (binário) - Resultado 2
print(type(0b10)) # <class 'int'>
print(0o10) # base 8 (Octal) - Resultado 8
print(type(0o10)) # <class 'int'>
print(0x10) # Base 16 (Hexadecimal) - Resultado 16
print(type(0x10)) # <class 'int'>
print(4.2) # Resultado: 4.2
print(type(4.2)) # <class 'float'>
print(0.12 * 10e8) # Resultado: 120000000.0
print(type(0.12 * 10e8)) # <class 'float'>
print(complex(2, 3)) # Resultado: (2+3j)
print(type(2 + 3j)) # <class 'complex'>
Números de ponto flutuante
Esse tipo designa um número de ponto fl utuante no Python. Valores fl utu-
antes são especifi cados com um ponto (.) que separa os valores decimais dos 
valores inteiros. Um número de ponto fl utuante é aquele em que a posição 
do ponto decimal pode “fl utuar” em vez de estar em uma posição fi xa dentro 
de um número. Exemplos denúmeros de ponto fl utuante são: 1.23, 87.425 e 
13Variáveis, tipos de dados e operadores de algoritmos em Python
175 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
9039454.2. Diferentes linguagens de programação ou sistemas podem ter 
limites de tamanho ou formas distintas de defi nir números de ponto fl utuante.
Opcionalmente, o caractere “e” ou “E” seguido por um número inteiro, 
positivo ou negativo, pode ser anexado para especificar a notação científica. 
Uma notação de ponto flutuante é um cálculo matemático usado para exibir 
números longos de forma “curta”. Por exemplo, um número como 12.000.000 
pode ser escrito como 12e6 ou também pode ser 0.12 * 10e8.
No Python, não é preciso descrever a parte inteira do tipo float quando ela for zero. 
Para representar “0.5”, basta apenas descrever: “.5”. Veja como pode ser descrita uma 
expressão que eleva um valor “x” a meio: x**.5 seria o mesmo que x**(1/2).
Números complexos
O Python também suporta números complexos, ou números compostos por 
uma parte real e uma parte imaginária. Assim como a instrução “print()” é 
usada para imprimir valores, a função “complex()” é usada para criar números 
complexos. Essa função requer dois valores, o primeiro será a parte real do 
número complexo, enquanto o segundo valor será a parte imaginária.
Tipos sequenciais
Existem alguns tipos básicos e personalizados de sequências em Python: listas 
(objetos list) e tuplas (objetos tuple) são tipos básicos. Além disso, existem os 
tipos de sequências personalizados para o processamento de dados binários 
(objetos bytes) e as sequências de texto ou cadeias de caracteres (objetos str).
Variáveis, tipos de dados e operadores de algoritmos em Python14
LABORATÓRIO DE PROGRAMAÇÃO 176
Cadeias de caracteres
Uma sequência de um ou mais caracteres entre aspas simples (') ou aspas duplas (") 
é considerada string no Python. Qualquer letra, número ou símbolo pode fazer parte 
da sequência. Python também suporta sequências de várias linhas, que requerem 
estar entre aspas triplas ("""). Sequências de caracteres entre triplas de aspas (simples 
ou duplas) conservam o caractere de quebra de linha (\n) como parte da string.
aspas _ simples = 'Esse tipo de string permite aspas "du-
plas" incorporadas.'
aspas _ duplas = "Esse tipo de string permite aspas 'sim-
ples' incorporadas."
tripla _ de _ aspas _ simples = '''Esse tipo de string permite 
aspas 'simples', 
"duplas" e ""triplas duplas""" incorporadas.'''
tripla _ de _ aspas _ duplas = """Esse tipo de string permite 
aspas 'simples', 
"duplas" e '''tripla simples''' incorporadas."""
print(type(aspas _ simples)) # <class 'str'>
print(aspas _ simples[0:5]) # Cinco primeiros caracteres
print(aspas _ simples[1:5]) # Substring de 2 até 5
print(aspas _ simples[-6:-1]) # Cinco caracteres antes do 
último
print(aspas _ simples[-2:]) # Dois últimos caracteres
print(aspas _ simples[:2]) # Dois primeiros caracteres
15Variáveis, tipos de dados e operadores de algoritmos em Python
177 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
Bytes
O byte é um tipo imutável em Python. Ele pode armazenar uma sequência de 
bytes (cada byte tem 8 bits) variando de 0 a 255. Semelhante ao que ocorre em 
uma lista, é possível buscar o valor de um único byte usando o índice. Mas 
não é possível modifi car o valor em nenhuma posição. A seguir, veja algumas 
diferenças entre byte e string.
  Os objetos do tipo byte contêm uma sequência de bytes, enquanto as 
strings contêm uma sequência de caracteres.
  Os bytes são objetos legíveis apenas para o computador, enquanto as 
strings estão na forma legível para os humanos.
  Como o byte é legível apenas por máquina, ele pode ser armazenado 
diretamente no disco. Já as strings precisam ser codificadas antes de 
serem armazenadas no disco.
Um contexto em que os bytes são importantes é quando se executam 
operações de entrada e saída (E/S) com o buffer (espaço reservado) ativado. 
Considere, por exemplo, um programa que está recebendo continuamente os 
dados pela rede. Ele vai armazenando os dados que vêm pelo fluxo; depois 
que os cabeçalhos e terminadores de mensagens aparecem no fluxo, os dados 
recebidos são analisados. Então, o programa continua anexando mais bytes 
que estão chegando no buffer de forma contínua.
objeto _ vazio = bytes(2)
print(type(objeto _ vazio)) # <class 'bytes'>
print(objeto _ vazio) # Resultado: b'\\x00\\x00'
buffer = b''
while verificar _ mensagem(buffer):
 buffer += ler _ do _ socket()
Variáveis, tipos de dados e operadores de algoritmos em Python16
LABORATÓRIO DE PROGRAMAÇÃO 178
Listas
São construções semelhantes às strings, porém servem para armazenar objetos 
de tipo arbitrário em uma sequência ordenada. Uma lista é muito fl exível e 
não possui um tamanho fi xo. O índice de lista é também uma lista que começa 
com zero no Python. É uma coleção heterogênea de itens de tipos de dados 
variados. As listas em Python podem ser declaradas se os elementos forem 
colocados entre colchetes e forem separados por vírgulas. A seguir, veja as 
características importantes das listas Python:
  as listas são ordenadas;
  as listas podem conter objetos arbitrários;
  os elementos da lista podem ser acessados pelo índice;
  as listas podem ser aninhadas com profundidade arbitrária;
  as listas são mutáveis;
  as listas são dinâmicas.
Tuplas
As tuplas são imutáveis, ou seja, seus elementos não podem ser modifi cados 
ou excluídos depois de confi gurados. As tuplas geralmente têm melhor 
desempenho (seus dados podem ser acessados mais rapidamente) do que 
uma lista regular. Uma tupla é uma estrutura de dados ideal para uma lista 
de itens heterogêneos (que se diferem em tipo ou comprimento) cujo valor 
não muda. As tuplas são idênticas às listas em todos os aspectos, exceto 
pelos seguintes itens:
  as tuplas são definidas colocando-se os elementos entre parênteses em 
vez de entre colchetes;
  as tuplas são imutáveis;
  as tuplas podem ser embaladas e desembaladas (packed e unpacked).
17Variáveis, tipos de dados e operadores de algoritmos em Python
179 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
lista = [True, 1, 1.1, 1 + 2j, 'Teste', b'bytes', [1, 2, 3], 
(1, 2), {1: 'a'}]
for elemento in lista:
 print(type(elemento)) # Resultados:
# <class 'bool'>
# <class 'int'>
# <class 'float'>
# <class 'complex'>
# <class 'str'>
# <class 'bytes'>
# <class 'list'>
# <class 'tuple'>
# <class 'dict'>
tupla = ('01', '02', '03') # Embalar
(janeiro, fevereiro, marco) = tupla # desembalar
print(janeiro) # Resultado: 01
print(fevereiro) # Resultado: 02
print(marco) # Resultado: 03
Mapas
Um objeto de mapeamento mapeia valores hash (identifi cadores de tamanho 
fi xo e que podem ser ordenados) para objetos arbitrários. Mapeamentos são 
objetos mutáveis. Atualmente, existe apenas um tipo de mapeamento padrão, 
o dicionário.
Dicionários
O dicionário é um tipo de estrutura de dados utilizado para mapear ou asso-
ciar itens. Um dicionário em Python é como um dicionário no mundo real e 
é composto por dois elementos, as chaves e os valores. As chaves devem ser 
elementos únicos, ou seja, em um dicionário, não pode haver duas chaves com 
Variáveis, tipos de dados e operadores de algoritmos em Python18
LABORATÓRIO DE PROGRAMAÇÃO 180
o mesmo nome ou valor. Os valores podem ser praticamente de qualquer tipo, 
por exemplo, uma lista ou lista de lista, numéricos, booleanos, etc. A seguir, 
veja as características dos dicionários.
  São mutáveis.Podem ter seus valores e chaves alterados.
  São dinâmicos. Eles podem crescer e encolher conforme necessário.
  Podem ser aninhados. Um dicionário pode conter outro dicionário ou 
uma lista.
  Os elementos do dicionário são acessados via chaves.
  Os dicionários podem ser criados colocando-se uma lista separada por 
vírgula de pares “chave:valor” entre chaves. Cada par de chave mapeia 
para seu valor associado.
dicionario1 = dict() # mesmo que: dicionario = {}
dicionario2 = { # chave numérica
 1: 'futebol',
 2: 'basebol'
}
print(dicionario2) # Resultado: {1: 'futebol', 2: 'basebol'}
dicionario3 = dict({ # chaves de tipos diferentes
 'classe': 'primeira',
 1: [1, 2, 3]
})
print(dicionario3) # Resultado: {'classe': 'primeira', 1: 
[1, 2, 3]}
dicionario4 = dict([ # Criado com uma sequência de tuplas
 (1, 'teste1'),
 (2, 'teste2')
])
print(dicionario4) # Resultado: {1: 'teste1', 2: 'teste2'}
19Variáveis, tipos de dados e operadores de algoritmos em Python
181 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
Operadores em Python
Como muitas outras linguagens de programação, o Python também reserva 
alguns caracteres especiais para atuar como operadores (PYTHON SOF-
TWARE FOUNDATION, 2019d). Todo operador realiza algumas operações, 
como adição e multiplicação, para manipular dados e variáveis. As variáveis 
passadas como entrada para um operador são conhecidas como “operandos”.
Operadores aritméticos
São os símbolos que representam operações matemáticas aritméticas. Com 
operadores aritméticos, é possível realizar várias operações aritméticas, como 
adição, subtração, multiplicação, divisão, módulo, expoente, etc. O Python 
fornece várias maneiras para cálculos aritméticos, como função eval(), declarar 
variável e calcular ou mesmo chamar funções. No Quadro 2, a seguir, veja 
uma lista dos operadores aritméticos.
Operador Propósito Uso
+ Adição a + b
– Subtração a – b
* Multiplicação a * b
/ Divisão a / b
// Inteiro da divisão a // b
% Módulo a % b
** Expoente a ** b
 Quadro 2. Lista dos operadores aritméticos 
Operadores de comparação
Na programação Python, os operadores de comparação permitem determinar 
se dois valores são iguais ou se um é maior do que o outro, e então tomar 
uma decisão com base no resultado. O Quadro 3 descreve os operadores de 
comparação internos no Python.
Variáveis, tipos de dados e operadores de algoritmos em Python20
LABORATÓRIO DE PROGRAMAÇÃO 182
Operador Propósito Uso
> Maior que a > b
< Menor que a < b
== Igual a a == b
!= Diferente de a != b
>= Maior ou igual a a >= b
<= Menor ou igual a a <= b
 Quadro 3. Lista dos operadores de comparação 
Operadores lógicos
Os operadores lógicos do Python permitem a tomada de decisões com base 
em várias condições. Os operandos agem como condições que podem resultar 
em um valor verdadeiro ou falso. O resultado dessa operação é verdadeiro ou 
falso (ou seja, um valor booleano). No entanto, nem todos esses operadores 
retornam um resultado booleano. Os operadores an e or retornam um de seus 
operandos em vez do valor booleano puro. Já o operador not sempre fornece 
um resultado booleano real. No Quadro 4, veja um exemplo que mostra como 
esses operadores funcionam no Python.
Operador Propósito Uso
and Se “a” for falso, então “a”; caso contrário, “b” a and b
or Se “a” for falso, então “b”; caso contrário, “a” a or b
not Se “a” for falso, então True; caso contrário, False not a
 Quadro 4. Lista dos operadores lógicos 
21Variáveis, tipos de dados e operadores de algoritmos em Python
183 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
Operadores bit a bit
Os operadores de bit a bit do Python processam os bits individuais de va-
lores inteiros. Eles os tratam como sequências de bits binários. É possível 
usar operadores bit a bit para verifi car se um bit específi co está defi nido. 
Por exemplo, os sensores geralmente trabalham com bits específi cos que 
indicam se determinada função está ativa ou não. Em situações similares, 
esses operadores binários podem ajudar. No Quadro 5, veja uma lista dos 
operadores binários.
Operador Propósito Uso
& Retorna 1 se ambos os bits correspondentes forem 1 a & b
| Retorna 1 se algum dos bits correspondentes for 1 a | b
~ Inverte todos os bits em um único operando ~ a
^ Retorna 1 se algum dos bits correspondentes 
for 1, mas não os dois
a ^ b
>> Desloca os bits de “a” para a direita, “b” número de vezes a >> b
<< Desloca os bits de “a” para a esquerda, 
“b” número de vezes
a << b
 Quadro 5. Lista dos operadores binários 
Operadores de atribuição
No Python, é possível usar operadores de atribuição para defi nir valores em 
variáveis. Por exemplo, a instrução “a = 4” usa um operador de atribuição 
primitivo que atribui o valor “4” ao operando esquerdo da instrução. No Quadro 
6, está a lista de operadores compostos disponíveis no Python. Por exemplo, a 
instrução “a += 1” é adicionada à variável e, em seguida, atribui essa mesma 
variável. O operador será avaliado como “a = a + 1”.
Variáveis, tipos de dados e operadores de algoritmos em Python22
LABORATÓRIO DE PROGRAMAÇÃO 184
Operador Exemplo Mesmo que
= a = 1 a = 1
+= a += 1 a = a + 1
–= a –= 1 a = a – 1
*= a *= 1 a = a * 1
/= a /= 1 a = a / 1
%= a %= 1 a = a % 1
**= a **= 1 a = a ** 1
&= a &= 1 a = a & 1
|= a |= 1 a = a | 1
^= a ^= 1 a = a ^ 1
>>= a >>= 1 a = a >> 1
<<= a <<= 1 a = a << 1
 Quadro 6. Lista dos operadores de atribuição 
Operadores avançados
O Python também tem alguns operadores para fi ns especiais. Eles são conhe-
cidos como “operadores avançados Python” e são os operadores de identidade 
e os operadores de associação. Veja a seguir.
Operadores de identidade
Esses operadores permitem comparar os locais de memória de dois objetos 
Python. Além disso, permitem saber se os objetos Python compartilham o 
mesmo endereço de memória. As variáveis com valores iguais não são ne-
cessariamente idênticas. Como alternativa, é possível usar esses operadores 
para determinar se um valor é de uma classe ou tipo específi co. Consulte o 
Quadro 7 para entender mais sobre eles.
23Variáveis, tipos de dados e operadores de algoritmos em Python
185 Programação Python UNIDADE 3 Variáveis, tipos de dados e operadores de algoritmos em Python PARTE 2
Operador Propósito Uso
is Retorna True se os operandos referenciam o 
mesmo objeto
a is b
is not Retorna True se os operandos não referenciam o 
mesmo objeto
a is not b
 Quadro 7. Lista dos operadores de identidade 
Operadores de associação
Os operadores de associação permitem testar se um valor é membro de outros 
objetos Python, como strings, listas ou tuplas. Além disso, esse operador 
também pode testar em um dicionário, mas apenas para a chave, não para o 
valor. No Quadro 8, veja os operadores de associação.
Operador Propósito Uso
in Retorna True se o valor 
existe na sequência
1 in [1, 2, 3]
not in Retorna True se o valor 
não existe na sequência
4 not in {1:2, 2:7, 3:9}
 Quadro 8. Lista dos operadores de associação 
Precedência de operadores em Python
Quando é agrupado um conjunto de valores, variáveis, operadores ou chamadas 
de função, é necessário ter uma ordem em que as operações e operadores são 
avaliados. Por exemplo: “3 + 4” é uma expressão simples em Python e con-
tém apenas um operador e dois operandos. No entanto, uma expressão mais 
complexa pode incluir vários operadores, por exemplo, “2 * 4**4 + 5”. Para 
avaliar expressões complexas, o Python estabelece a regra de precedência, 
que governa a ordem em que as operações ocorrem. Aseguir está a lista da 
precedência dos operadores, da maior para a menor.
Variáveis, tipos de dados e operadores de algoritmos em Python24
LABORATÓRIO DE PROGRAMAÇÃO 186
1. (**) — expoente
2. (~x) — bit a bit de negação
3. (+x, -x) — positivo, negativo
4. (*, /, %) — produto, divisão, resto
5. (+, –) — adição, subtração
6. (<<, >>) — deslocamento para a esquerda/direita
7. (&) — bit a bit AND
8. (̂ ) — bit a bit XOR
9. (|) — bit a bit OR
10. (in, not in, is, is not, <, <=, >, >=, !=, ==) — comparação, associação, 
identidade
11. (not x) — booleano NOT
12. (and) — booleano AND
13. (or) — booleano OR
Os operadores na parte inferior da lista têm a menor precedência, e aqueles 
na parte superior da lista têm a mais alta precedência. Quaisquer operadores no 
mesmo item da lista têm a mesma precedência. Está claro que a multiplicação 
é realizada antes da adição, pois tem precedência mais alta, conforme a lista 
anterior. Da mesma forma, a potência tem a precedência mais alta entre todos 
os itens da lista. Por exemplo, na expressão “2 * 4**4 + 5”, primeiramente será 
avaliada a potência, depois será avaliado o produto e, por fim, será avaliada 
a adição. Na matemática, seria algo assim: {[2 * (4**4)] + 5}.
PYTHON SOFTWARE FOUNDATION. Data types. [2019a]. Disponível em: https://docs.
python.org/3/library/datatypes.html. Acesso em: 30 dez. 2019.
PYTHON SOFTWARE FOUNDATION. Glossary. [2019b]. Disponível em: https://docs.
python.org/3/glossary.html#term-bytecode. Acesso em: 30 dez. 2019.
PYTHON SOFTWARE FOUNDATION. Identifiers and keywords. [2019c]. Disponível em: 
https://docs.python.org/3/reference/lexical_analysis.html#identifiers. Acesso em: 30 
dez. 2019.
PYTHON SOFTWARE FOUNDATION. Standard operators as functions. [2019d]. Disponível 
em: https://docs.python.org/3.8/library/operator.html. Acesso em: 30 dez. 2019.
25Variáveis, tipos de dados e operadores de algoritmos em Python
LABORATÓRIO DE PROGRAMAÇÃO 188
ENCERRA AQUI O TRECHO DO LIVRO DISPONIBILIZADO 
PELA SAGAH PARA ESTA PARTE DA UNIDADE.
PREZADO ESTUDANTE
unidade 
3
O conteúdo deste livro é 
disponibilizado por SAGAH.
Parte 3
Comando condicional if
(estruturas aninhadas) - Python
LABORATÓRIO DE PROGRAMAÇÃO 190
Comando condicional 
if (estruturas 
aninhadas) — Python
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Discutir a utilização de comandos condicionais aninhados.
 � Realizar testes de mesa em problemas que utilizem comandos con-
dicionais aninhados.
 � Praticar os comandos condicionais aninhados em problemas 
computacionais.
Introdução
Ao escrever um código, é possível determinar algumas condições, que 
serão executadas conforme o comando. Se a condição for verdadeira, 
uma estrutura será seguida; se for falsa, outra estrutura será seguida. Os 
comandos condicionais aninhados permitem que caminhos sejam orga-
nizados dentro de uma mesma programação; a partir deles, as decisões 
serão executadas.
Neste capítulo, você vai estudar sobre os comandos condicionais ani-
nhados, verificando também como realizar testes de mesa em problemas 
que utilizem comandos condicionais aninhados e como praticar esses 
comandos em problemas computacionais.
191 Programação Python UNIDADE 3 Comando condicional if (estruturas aninhadas) - Python PARTE 3
Comandos condicionais aninhados e 
sua utilização
No seu dia a dia, provavelmente, algumas decisões são tomadas com base 
em determinadas condições. Por exemplo: se um aluno leva 30 minutos para 
chegar até a universidade, e a aula começa às 8 horas, esse aluno precisa 
tomar a decisão sobre qual é a melhor hora para sair de casa, para que chegue 
pontualmente na universidade. Um exemplo mais simples é: se o aluno está 
cansado, então, ele vai dormir. Trata-se de condições simples que devem ser 
observadas para que uma decisão seja tomada. Isso também ocorre durante a 
programação, na qual se utilizam ações e tomadas de decisão. Para tanto, são 
utilizados os comandos condicionais — códigos que, quando incluídos na 
programação, dependem de uma ou mais condições para que sejam executados. 
Em programação, a escolha entre duas ou mais opções ocorre quando o 
programa lê os dados de um arquivo e realiza uma ação, tomando como base 
os dados lidos ou a entrada de um usuário. Essa escolha, no ambiente Python, 
é escrita a partir de uma instrução if, pela qual a condição é avaliada. Caso 
a condição seja verdadeira, serão realizadas as instruções apontadas como 
“então”. Se não for verdadeira, verificam-se as instruções após a instrução 
if, conforme leciona Lee (2011).
Ao escrever os comandos no ambiente de programação Python, observa-se que a 
indentação deve ser rigorosamente seguida, pois, ao contrário de outras linguagens 
de programação, o ambiente Python define e articula os blocos a partir dos recuos 
que são reconhecidos. Sendo assim, a indentação não pode ser ignorada. 
De maneira análoga, pode-se imaginar a seguinte situação: ao comprar 
algo em uma loja, o comprador pode escolher se o pagamento vai ser realizado 
em cartão de crédito ou de débito ou em dinheiro. Se a compra vai ser paga 
em cartão, o comprador vai para um lado da fila; se vai ser paga em dinheiro, 
o comprador vai para o outro lado da fila. Caso o cartão seja recusado, a 
compra deverá ser paga em dinheiro, devendo o comprador se dirigir para a 
fila do dinheiro. Após o pagamento, quem pagou com cartão e quem pagou 
em dinheiro sairão com suas compras pelo mesmo lugar. 
Comando condicional if (estruturas aninhadas) — Python2
LABORATÓRIO DE PROGRAMAÇÃO 192
A Figura 1 exemplifica o uso do comando if, em que a condição será 
avaliada para dar sequência às próximas instruções de “então”.
Figura 1. Comando if — aqui, 
emprega-se o termo “declaração” em 
referência a “comando”.
Fonte: Adaptada de Lee (2011).
declarações 
antes da 
declaração if
condição
declarações 
depois da 
declaração if
então
declarações
Verdadeiro
Falso
Caso a condição seja verdadeira, será seguido um comando; caso seja 
falsa, outro comando será executado. Nas situações em que um comando só 
é realizado caso a condição seja verdadeira, após realizar a constatação, o 
programa executa o comando; se a condição for falsa, e o programa não for 
3Comando condicional if (estruturas aninhadas) — Python
193 Programação Python UNIDADE 3 Comando condicional if (estruturas aninhadas) - Python PARTE 3
instruído com nenhum comando para a condição falsa, ele vai prosseguir para 
os próximos comandos que estão sem indentação. 
Comando condicional if
O comando if é um comando condicional importante, que pode ser utilizado 
para a execução de códigos que comparem dois valores. Esse comando pode 
ser utilizado para as condições sim/não ou verdadeiro/falso. Ao ser utilizado, 
o comando if apresentará a estrutura representada na Figura 2.
Figura 2. Representação 
genérica do comando if.
if condição:
 comandoV1
 comandoV2
Figura 3. Exemplo de comando if utilizando Python.
O código da Figura 3 pode ser descrito da seguinte forma: se a temperatura 
for maior do que 30º, a variável estaCalor será verdadeira (True). Observa-
-se que o comando foi executado, pois a variável estaCalor foi apontada 
como True. Isso porque a temperatura é de 35º, ou seja, maior do que 30º.
Comando condicional if (estruturas aninhadas) — Python4
LABORATÓRIO DE PROGRAMAÇÃO 194
Comando condicional else
Em programação, pode-se determinar algo que tenha duas respostas, isto é, 
duas instruções: uma para o caso de a condição ser verdadeira e outra para o 
caso de a condição ser falsa. O comando condicional else possibilita fazer 
alguma coisa quando a condição é avaliada como falsa. Nesse caso, a resposta 
poderá ser não, falso ou, até mesmo, 0.
Ao utilizar

Outros materiais