Buscar

Linguagem de Programação

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 277 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 277 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 277 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

Editora:
E d i t o r a
SÃO PAULO/ SP
Linguagem de 
Programação
</>
RAFAEL MUNHOZ ALMEIDA DA SILVA
Editora:
E d i t o r a
1º EDIÇÃO - 2021 | SÃO PAULO/ SP
RAFAEL MUNHOZ ALMEIDA DA SILVA
LINGUAGEM DE 
PROGRAMAÇÃO
LINGUAGEM DE PROGRAMAÇÃO
EXPEDIENTE
COORDENAÇÃO GERAL
Nelson Boni
COORDENAÇÃO DE 
REVISÃO ORTOGRÁFICA
Esthela Malacrida
AUTOR(ES)
Rafael Munhoz Almeida da 
Silva
COORDENAÇÃO, 
PROJETO GRÁFICO E CAPA
João Guedes
1º EDIÇÃO - 2021 | SÃO PAULO/ SP
Ficha Catalográfica/ ISBN
CATALOGAÇÃO ELABORADA POR GLAUCY DOS SANTOS SILVA - CRB8/6353
E d i t o r a
4
Apresentação
Prezado Aluno,
N este livro você vai entrar em contato com os pri-meiros passos no mundo da programação de computadores. Você verá os principais conceitos 
tais como variáveis, estruturas de controle de fluxo, laços 
de repetição. Nos capítulos finais você verá uma introdução 
a como construir um formulário utilizando uma interface 
gráfica e por fim uma introdução a uma biblioteca de de-
senvolvimento de jogos. 
Utilizamos a linguagem Python que é muito atual e fácil 
de usar, depois de estudar este material, você será capaz 
de ler e escrever código em Python de maneira a expandir 
os conhecimentos, para outras áreas onde a linguagem Py-
thon é muito forte, tais como a área de machine learning, 
programação de aplicativos web entre outras.
Nos últimos anos o mercado vem demandando cada vez 
mais programadores, portanto aprender a programar, irá 
abrir novos horizontes e possibilidades de carreira. Além 
disso, a linguagem Python vem ganhando muita força no 
mercado, devido a sua simplicidade e quantidade de biblio-
tecas disponíveis.
Bons Estudos!
	� SUMÁRIO:
UNIDADE 1: 
CONCEITOS BÁSICOS DA LINGUAGEM ������������������������������1-1
CAPÍTULO 1: 
MONTANDO O AMBIENTE ����������������������������������������������� 1-2
Exercícios Propostos ������������������������������������������������������� 1-9
CAPÍTULO 2: 
VARIÁVEIS ���������������������������������������������������������������� 2-1
Exercícios Propostos ����������������������������������������������������� 2-37
UNIDADE 2: 
ESTRUTURAS DE CONTROLE �����������������������������������������3-1
CAPÍTULO 3: 
EXPRESSÕES CONDICIONAIS ������������������������������������������� 3-2
Exercícios propostos ����������������������������������������������������� 3-17
CAPÍTULO 4: 
LAÇOS DE REPETIÇÃO��������������������������������������������������� 4-1
Exercícios propostos ����������������������������������������������������� 4-18
UNIDADE 3: 
LISTAS/MATRIZES E ARQUIVOS �������������������������������������5-1
CAPÍTULO 5: 
LISTAS E MATRIZES ����������������������������������������������������� 5-2
Exercícios propostos ����������������������������������������������������� 5-29
CAPÍTULO 6: 
ARQUIVOS ���������������������������������������������������������������� 6-1
Exercícios propostos ����������������������������������������������������� 6-10
UNIDADE 4: 
FUNÇÕES, MÓDULOS E STRINGS ������������������������������������7-1
CAPÍTULO 7: 
FUNÇÕES ������������������������������������������������������������������ 7-2
Exercícios propostos ����������������������������������������������������� 7-23
CAPÍTULO 8: 
MÓDULOS E STRINGS���������������������������������������������������� 8-1
Exercícios propostos ����������������������������������������������������� 8-11
UNIDADE 5: 
ORIENTAÇÃO A OBJETO E BANCO DE DADOS ����������������������9-1
CAPÍTULO 9: 
INTRODUÇÃO A POO ����������������������������������������������������� 9-2
Exercícios propostos ����������������������������������������������������� 9-19
CAPÍTULO 10: 
BANCO DE DADOS������������������������������������������������������ 10-1
Exercícios propostos ���������������������������������������������������� 10-16
UNIDADE 6: 
BIBLIOTECAS GRÁFICAS ������������������������������������������� 11-1
CAPÍTULO 11: 
BIBLIOTECA PYGAME ������������������������������������������������� 11-2
Exercícios propostos ����������������������������������������������������� 11-8
CAPÍTULO 12: 
BIBLIOTECA KIVY ������������������������������������������������������ 12-1
Exercícios propostos ����������������������������������������������������� 12-9
REFERÊNCIAS ��������������������������������������������������������� 13-1
GABARITO ������������������������������������������������������������� 14-1
D I S C I P L I N A :
Linguagem de 
Programação
UNIDADE 1: 
CONCEITOS BÁSICOS DA LINGUAGEM
Caro(a) Aluno(a)
Seja bem-vindo(a)!
Nesta primeira unidade iremos dar início aos estudos da lin-
guagem de programação Python. 
Iremos abordar a montagem do ambiente de desenvolvimen-
to, ou seja, o lugar onde iremos escrever o código e rodar os nos-
sos programas. Na sequência vamos estudar o conceito de variá-
veis e faremos o nosso primeiro programa.
Conteúdos da Unidade
Montagem do ambiente, primeiro programa, nomes de variá-
veis, tipos de variáveis, valores literais, operadores numéricos, 
operadores relacionais, operadores lógicos, entrada de dados.
Ótimos estudos!
D I S C I P L I N A :
Linguagem de 
Programação
CAPÍTULO 1: 
MONTANDO O AMBIENTE
1-3
Linguagem de Programação
 M
O
N
TA
N
D
O
 O
 A
M
B
IE
N
TE
1< / >
1�1 Instalando o ambiente do Python
1.1.1 Instalando o Python
O ambiente de desenvolvimento da linguagem Python é 
gratuito e pode ser baixado no link https://www.python.org/. O 
ambiente é multiplataforma então pode ser instalado em vários 
sistemas operacionais como Linux, Windows e MAC OS X. 
A instalação fornecida por esse link fornece um editor de tex-
tos chamado Idle, e o console do Python, usaremos ambas estas 
ferramentas durante todo o material, mas o leitor pode ficar à von-
tade para escolher o editor de textos que lhe for mais familiar.
Alguns sistemas operacionais já vem com o Python instalado 
porém este material usa a versão 3.7 e pode ser que a instalação 
padrão do sistema que você vai usar pode não ser compatível, vale 
a pena verificar a versão, usando o comando python -v na sua linha 
de comando.
1.1.2 Programa: Olá Mundo (Hello World)
Depois que a instalação do Python 3.7 terminar teremos 
duas ferramentas importantes instaladas, uma delas é o terminal 
do Python que possui o interpretador em tempo real, podemos fa-
zer muitas experiências interessantes com esse console, e é nele 
que vamos escrever o nosso primeiro programa.
A segunda ferramenta que foi instalada é um editor de tex-
to que será muito útil quando os programas começarem a ter um 
maior número de linhas, se continuarmos a usar o console vere-
mos que o código ficará difícil de ler.
1-4
Linguagem de Programação
 M
O
N
TA
N
D
O
 O
 A
M
B
IE
N
TE
1< / >
Vamos então ao nosso primeiro programa, como ele será 
um programa de apenas uma linha o uso do console será muito 
adequado. Por hora não se preocupe em entender todo o código, 
pois mesmo para um programa simples alguns conceitos um pouco 
mais avançados serão utilizados.
1| Python 3.7.7 (v3.7.7:d7c567b08f, Mar 10 
2020, 02:56:16)
2| [Clang 6.0 (clang-600.0.57)] on darwin
3| Type “help”, “copyright”, “credits” or 
“license()” for 4 more information.
4| >>> print(‘Olá Mundo’)
5| Olá Mundo
6| >>>
A linha 1 mostra qual é a versão do interpretador do Python 
que foi instalada e que será usada para interpretar as linhas de có-
digo que vão sendo digitadas no console.
O Clang mostrado na linha 2 é um programa do sistema ope-
racional usado pelo Python para acessar bibliotecas de baixo nível, 
entre essas bibliotecas estão as que provêm acesso ao disco, tecla-
do, vídeo entre outros periféricos. 
Não se preocupe se essa linha for diferente no seu console, 
pois esse texto depende de qual sistema operacional está sendo uti-
lizado. Esse texto foi retirado de um console que estava rodando no 
sistema operacional macOS Big Sur. As linhas 3 e 4 mostram 4 
comandos que podem ser usados para se obter mais informações 
sobre a linguagem Python.
1-5
Linguagem de Programação
 M
O
N
TA
N
D
O
 O
 A
M
B
IE
N
TE1< / >
Até agora falamos das linhas que apenas trazem informações 
sobre o console e sobre a linguagem Python que estamos usando. É 
na linha 5 que está escrito o código do nosso primeiro comando o 
print, note que logo na sequência temos um parêntese, esse símbo-
lo nos diz que o comando print é uma função do Python. Funções 
serão tema nos próximos capítulos.
Logo na sequência temos um texto ‘Olá Mundo’ entre aspas 
simples, duas informações importantes podem ser ditas sobre este 
texto, uma delas é que em Python podemos afirmar que este texto 
é um tipo muito utilizado no Python chamado de str, esse é o tipo 
utilizado para representarmos texto.
Outro ponto importante é que o texto ‘Olá Mundo’, é tam-
bém um parâmetro para a função print, funções em Python po-
dem ou não receber um ou mais parâmetros, e fazer algum tipo de 
operação, no caso da função print, o valor deste parâmetro será 
exibido como a saída do programa, como vemos na linha 6.
Todo programa tem um propósito e o propósito deste simples 
programa foi mostrar no console do Python a frase: Olá Mundo.
1.1.3 Operadores numéricos
Vamos agora utilizar o console do Python para realizarmos 
algumas operações matemáticas, veja que pelo console podemos 
resolver algumas expressões matemáticas, podendo utilizá-lo 
como uma poderosa calculadora.
1| >>> 9 - 2
2| 7
3| >>> 9 + 2
1-6
Linguagem de Programação
 M
O
N
TA
N
D
O
 O
 A
M
B
IE
N
TE
1< / >
4| 11
5| >>> 3 * 4
6| 12
7| >>> 13 / 2
8| 6.5
9| >>> 13 // 2
10| 6
11| >>> 2 ** 3
12| 8
13| >>> 11 % 2
14| 1
15| >>> 
Analisando as operações descritas acima percebemos um 
padrão entre elas, veja que sempre temos número seguido de um 
símbolo e depois outro número. Ao símbolo que aparece entre os 
números damos o nome de Operador, e neste caso em particular, 
chamaremos esses símbolos de Operadores Numéricos.
A tabela a seguir mostra em detalhes o que cada um desses 
operadores significa
Tabela 1-1: Operadores Numéricos
Operador Descrição da Operação
- Operador de Subtração.
+ Operador de Adição.
/ Operador de Divisão (Não inteira)
1-7
Linguagem de Programação
 M
O
N
TA
N
D
O
 O
 A
M
B
IE
N
TE
1< / >
* Operador de Multiplicação
// Operador de Divisão (Inteira)
** Operador de Potenciação
% Operador de Resto (Comumente chamado de módulo)
Vale a pena comentarmos sobre alguns operadores que são 
um pouco diferentes dos ensinados na matemática dos cursos fun-
damental e médio.
Vamos começar pela diferença entre os operadores / e // 
para isso analise o código abaixo:
1| >>> 13 / 2
2| 6.5
3| >>> 13 // 2
4| 6
Veja que 13 / 2 foi igual a 6.5 ou seja a divisão gerou um 
resultado decimal, podemos então afirmar que esse operador de 
divisão gera resultados não inteiros.
Na sequência veja que a operação 13 // 2 gerou um número 
inteiro, ou seja a divisão parou quando não se podia mais dividir e 
manter o resultado inteiro.
Outro operador muito utilizado em linguagens de computa-
dores e algoritmos é o Operador de Resto, comumente chamado 
de Módulo, o resultado de sua operação é o valor do resto da divi-
são entre os dois operandos, como mostrado abaixo:
1| >>> 11 % 2
1-8
Linguagem de Programação
 M
O
N
TA
N
D
O
 O
 A
M
B
IE
N
TE
1< / >
2| 1
Note que se fizermos uma divisão inteira de 11 por 2 teremos 
como resultado inteiro o número 10 e como resto o valor 1.
Podemos também usar o console do Python para resolver ex-
pressões matemáticas utilizando os parênteses como modificador 
de precedência, veja o exemplo seguinte:
1| >>> ( 1 + 3 ) * 2
2| 8
3| >>> 1 + 3 * 2
4| 7
Na primeira expressão agrupamos a soma dos valores 1 e 3 
ou seja a precedência será primeiro calcular o valor 4 e depois mul-
tiplicar pelo valor 2 dando como resultado final o valor 8.
Na segunda expressão, veja que removemos os parênteses, 
neste caso a precedência da expressão é primeiro realizar a ope-
ração de multiplicação ou seja calcular o valor de 3 multiplicado 
por 2 que será 6 e por fim somar com o valor 1, tendo assim como 
resultado final o valor 7.
1-9
	� EXERCÍCIOS PROPOSTOS
1) Podemos dizer que a expressão print, da linguagem Python é:
( ) -a) Um operador numérico.
( ) -b) Um comando que não existe.
( ) -c) Uma função.
( ) -d) Uma função que não exibe nada na tela
( ) -e) Uma função que não pode receber nenhum parâmetro
2) Podemos dizer que a expressão ‘Olá Mundo’ em Python é:
( ) -a) Uma variável.
( ) -b) Um valor literal do tipo str.
( ) -c) Retornará um erro.
( ) -d) Não pode ser usado como parâmetro na função print.
( ) -e) É equivalente à expressão Olá Mundo, sem aspas.
3) Quando queremos o valor que representa o resto de uma divisão qual 
operador usamos ?
( ) -a) Não existe nenhum operador em Python que calcule esta 
operação.
( ) -b) Usamos operador // que retorna o resultado da divisão jun-
tamente com o resto. 
( ) -c) O operador **.
( ) -d) O operador %
( ) -e) O operador %%
4) Como o Python avalia a seguinte expressão 15 / 2 ? 
( ) -a) Um erro acontecerá pois / não é um operador definido.
1-10
Ex
er
cí
ci
os
 P
ro
po
st
os
( ) -b) O resultado será o valor inteiro 7.
( ) -c) Um erro acontecerá pois 15 não possui divisão inteira por 2.
( ) -d) O resultado será o valor decimal 7.5
( ) -e) NDA.
5) Qual é o tipo numérico retornado como resultado da operação 17 // 2 ?
( ) -a) É um número com representação decimal.
( ) -b) É um número com representação inteira.
( ) -c) Um erro vai acontecer.
( ) -d) Nenhum tipo numérico será retornado.
( ) -e) NDA.
6) Qual é o resultado da expressão 233 % 9 no console do Python ?
( ) -a) Um erro vai acontecer pois % não é um operador válido.
( ) -b) O resultado será 20.97
( ) -c) O resultado será 8 pois % é o operador de resto e o resto da 
divisão inteira de 233 por 9 é 8.
( ) -d) O resultado será 25.88
( ) -e) O resultado será 25
7) Qual é o resultado da operação 133 % 0 no console Python ?
( ) -a) Um erro vai acontecer pois não existe divisão por 0. Pois o 
operador % é o operador de divisão inteira.
( ) -b) O resultado será 0.
( ) -c) O resultado será 133.
( ) -d) Um erro vai acontecer pois não existe divisão por 0. Pois o 
operador % é o operador que retorna o valor do resto de uma 
divisão.
( ) -e) O resultado será 1.
8) Qual é o resultado da operação ( 1 + 4 ) ** 2 no console Python ?
( ) -a) O valor é 25.
1-11
Ex
er
cí
ci
os
 P
ro
po
st
os
( ) -b) Um erro vai acontecer pois o operador ** não existe
( ) -c) O valor é 17.
( ) -d) O valor é 8.
( ) -e) Um erro vai acontecer pois não podemos usar os parênteses 
com o operador **.
9) Qual é o resultado da operação 7 + 2 ) // 3 no console Python ?
( ) -a) O valor é 3.
( ) -b) Um erro de sintaxe vai aparecer pois está faltando um dos 
parentes.
( ) -c) O valor é 4.66
( ) -d) Um erro de sintaxe vai aparecer pois o operador // não 
existe.
( ) -e) NDA.
10) Qual é o resultado da chamada da função print (Olá Mundo)
( ) -a) O texto Olá mundo será mostrado no console.
( ) -b) Um erro vai acontecer informando que o valor passado como 
parâmetro é um número.
( ) -c) Um erro vai acontecer pois a função print não foi definida na 
linguagem Python.
( ) -d) Um erro de sintaxe vai acontecer pois estamos passando o 
parâmetro do tipo str, porém sem aspas simples.
( ) -e) Um erro vai acontecer pois a função print não pode receber 
nenhum parâmetro.
D I S C I P L I N A :
Linguagem de 
Programação
CAPÍTULO 2: 
VARIÁVEIS
2-2
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
2�1 Introdução ao conceito de variáveis
Todo programa de computador tem como funcionalidade 
básica receber um dado, fazer um determinado processamento e 
exibir uma resposta. Vemos isso em programas de planilha eletrô-
nica, processadores de texto, sistemas operacionais complexos, jo-
gos de videogame e até mesmo pequenos programas que calculam 
a média de notas de uma disciplina.
O dado é fornecido ao programa, por algum dispositivo de 
entrada, como um teclado, mouse, joystick, leitor de código de 
barras, câmera etc, para que o programa consigareter esses dados 
para executar um processamento é necessário que esse dado fique 
armazenado em alguma posição na memória RAM.
O Python faz essa reserva de memória e armazenagem do 
dado por meio das variáveis do programa.
2.1.1 Declarando uma variável
Vamos escrever nosso primeiro programa que faz uso de uma 
variável, o propósito desse programa vai ser bem simples, exibir na 
tela o valor que foi atribuído para a variável.
Desta vez ao invés do console do Python vamos utilizar 
o editor de texto que vem junto com a instalação da linguagem 
para criar um arquivo que armazenará o programa. Crie um novo 
arquivo e digite o código abaixo, depois salve o arquivo com o 
nome programa_2_1.py.
Todo o código que será mostrado neste material será exibido 
com o número das linhas para facilitar a explicação ao digitar o 
código no editor de textos ou no console do Python ignore e não 
digite os números que indicam as linhas.
2-3
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
1| # Programa 2.1 - Mostrando o valor 
da variável
2| x = 7
3| print(x)
Como desta vez utilizamos o editor de texto ao invés do con-
sole Python precisamos salvar o arquivo e executar o programa, 
para isso utilize a tecla F5 ou no menu do editor na opção Run, 
depois clique em Run Module. Veja que o valor 7 foi mostrado na 
tela do console Python.
Vamos agora detalhar linha por linha o que faz esse progra-
ma, veja que na linha 1 temos um texto que começa com o caractere 
#, isso indica ao interpretador do Python que essa linha é um co-
mentário e será ignorada durante o processo.
Comentários podem ser colocados em quaisquer linhas 
bastando começar com o caractere #. Podemos usar comentários 
para deixar pistas de como e por que escrevemos o código da-
quela maneira. 
Isso é muito útil quando vamos compartilhar um código 
mais complicado com um colega ou mesmo quando, depois de 
um tempo, abrimos o código e não lembramos mais o que o pro-
grama fazia.
Agora vamos para a Linha 2, é nesta linha que está o obje-
tivo deste capítulo, é nesta linha que declaramos a variável x e 
na sequência atribuímos a ela o valor 7 por meio do operador de 
atribuição representado pelo símbolo =.
Neste momento o Python reserva e armazena na memória 
RAM o valor 7, como entre a linha 2 e alinha 3 não modifica-
mos o valor dessa variável podemos garantir que o dado que será 
2-4
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
mostrado na tela é o número 7 como vemos no texto abaixo retira-
do do console:
7
>>> 
2.1.2 Nomeando uma variável
Como mostrado anteriormente utilizamos uma variável para 
armazenar um determinado dado na memória do computador, 
para que esse dado seja utilizado futuramente em algum tipo de 
processamento. Que no caso do exemplo anterior foi mostrar o va-
lor desta variável no console do Python. 
Posto isso, veja que é muito interessante dar nomes a variá-
veis de maneira que esses nomes refletem de uma maneira sucinta 
qual é a finalidade do dado que essa variável armazena. 
Além disso, a linguagem Python exige que o nome de uma 
variável deverá começar com uma letra, mas símbolos e números 
podem ser usados em outras partes do nome da variável.
Por convenção é muito comum vermos em nomes de variá-
veis utilizando o símbolo _ para representar espaço em branco no 
nome de uma variável, já que o espaço em branco não é permitido 
no meio do nome de uma variável.
Vamos supor que queremos armazenar o nome de um usuá-
rio num programa que faz uma consulta no banco de dados, para 
isso podemos chamar essa variável da seguinte maneira: nome_
usuario. Isso seria permitido pelo Python, mas se quisermos cha-
mar essa mesma variável de: nome usuario geramos um erro 
no interpretador.
2-5
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
1| >>> nome usuario = “Joe Doe”
2| SyntaxError: invalid syntax
3| >>> nome_usuario = “Joe Doe”
4| >>> 
Veja que na linha 1 tentamos definir o nome da variável como 
nome usuario, mas na linha 2 o interpretador nos retornou um 
erro avisando que a sintaxe estava errada. Logo na linha 3 renome-
amos a variável para um nome permitido e o erro de sintaxe não 
aconteceu mais.
Confira na tabela abaixo alguns nomes de variáveis válidos e 
outros inválidos
Tabela 2-1: Nomes de variáveis válidos e inválidos
Nome da 
variável Validade Resultado
y1 é válido Começa com uma letra e o número vem depois, então pode ser usado.
altura é válido O nome só possui letras portanto é válido
altura1 é válido O nome possui um letra e um número só no final o que o deixa válido
nome_candidato é válido É permitido pois usa letras e o símbolo _ que é permitido
nome candidato é invalido Não é permitido, pois nomes de variáveis não podem ter espaços em branco.
1x é invalido Esse nome não é permitido pois começa com um número.
A versão 3 da linguagem Python permite o uso de caracteres 
UTF-8 ou seja podemos colocar nos nomes das variáveis acentos, 
porém nos códigos de exemplo deste livro os acentos não serão 
2-6
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
utilizados, com isso mantemos a compatibilidade com outras ver-
sões mais antigas do Python.
Quando definimos uma variável em Python não fica explícito 
no código mas nos bastidores a variável também recebe um tipo 
dependendo do valor que foi armazenado nela, este tipo pode ser 
de números inteiros, número de ponto flutuante, cadeias 
de caracteres muito conhecidas como strings e o tipo booleano 
que pode ter apenas dois valores sendo eles verdadeiro representa-
do por True ou falso representado por False.
2.1.3 Variáveis do tipo numérico
A variável do tipo numérico pode armazenar valores inteiros, 
ou seja números sem casa decimal, ou valores de ponto flutuante, 
ou seja valores onde a casa decimal é necessária.
No Python para representar as casas decimais de um número 
de ponto flutuante utilizamos o caractere ponto e nunca a vírgula 
como estamos acostumados, isso acontece pois na língua inglesa o 
separador de casas decimais é o ponto e não a vírgula.
Vamos nos adiantar um pouco e usar uma função ainda não 
apresentada que é a type, a função type recebe como parâmetro 
uma variável e mostra qual é o tipo desta variável, veja no código 
abaixo como o Python escolhe automaticamente o tipo das variá-
veis que foram declaradas:
1| >>> x = 1.2
2| >>> type(x)
3| <class ‘float’>
4| >>> y = 1
2-7
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
5| >>> type(y)
6| <class ‘int’>
Já na linha 1 definimos uma variável chamada x com o va-
lor inicial de 1.2, ou seja, um número com a parte inteira de valor 
1 e a parte decimal de valor 2, veja que o separador é o ponto e 
não a vírgula.
Na linha 2 utilizamos a função type, passando como parâ-
metro a variável x. Note que na linha 3 temos a resposta do inter-
pretador mostrando que o tipo da variável x é float. Em Python o 
tipo de variável de ponto flutuante é chamado float.
Agora na linha 4 definimos a variável y, atribuindo-lhe o va-
lor 1, veja que o valor 1 não possui o separador decimal ou seja 
podemos afirmar que o valor 1 é um valor inteiro.
Novamente usando a função type, checamos o tipo da variá-
vel y, que é mostrado na linha 6. Note que em Python o tipo inteiro 
é chamado de int.
2.1.4 Variáveis lógicas ou booleanas
É muito comum na computação usarmos variáveis para re-
presentar situações com apenas dois valores possíveis, como no 
caso de ligado ou desligado, certo ou errado, verdadeiro ou falso. 
Para essas situações utilizamos as variáveis do tipo lógico, 
essas variáveis aceitam apenas dois possíveis valores, que podem 
ser True ou False. Veja no código abaixo como declarar esse tipo 
de variável no console do Python.
1| >>> ligado = True
2-8
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
2| >>> type(ligado)
3| <class ‘bool’>
Definimos na linha 1 uma variável de nome ligado e logo na 
linha 2 utilizamos novamente função type passando como parâ-
metro a variável ligado. Na linha 3 vemos escrito o nome do tipodessa variável que é bool, portanto em Python variáveis lógicas ou 
booleanas são definidas como do tipo bool.
2.1.5 Operadores relacionais
Operadores relacionais necessitam de dois operandos e rea-
lizam comparações com estes operandos tendo como resultado um 
valor do tipo booleano. Veja tabela abaixo 
Tabela 2-2: Operadores relacionais
Operador relacional Operação
==
Verifica igualdade entre dois operandos, retorna o 
valor True se os operandos forem iguais e False caso 
contrário.
!=
Verifica se dois operandos são diferentes, retorna True 
se os operandos são diferentes e False se os operan-
dos são iguais.
>
Verifica se o operando da esquerda é maior que o 
operando da direita, retorna True se isso for verdadeiro 
ou False caso contrário.
<
Verifica se o operando da esquerda é menor que o 
operando da direita, retorna True se isso for verdadeiro 
ou False caso contrário.
>=
Verifica se o operando da esquerda é maior ou igual 
ao operando da direita, retorna True se isso for verdade 
ou False caso contrário.
2-9
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Operador relacional Operação
<=
Verifica se o operando da esquerda é menor ou igual 
ao operando da direita, retorna True se isso for verdade 
ou False caso contrário.
Vamos agora utilizar o console do Python, para fazer algu-
mas experiências com os operadores relacionais.
1| >>> x = 1
2| >>> y = 6
3| >>> z = 3
4| >>> w = 1
5| >>> x == w
6| True
7| >>> x != w
8| False
9| >>> z < y
10| True
11| >>> x <= w
12| True
13| >>> z > x
14| True
15| >>> z >= x
16| True
2-10
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Nas linhas 1 até 6 definimos as variáveis numéricas x, y, z 
e w, com os respectivos valores 1, 6 ,3 e 1. Na linha 5 utilizamos o 
operador de igualdade utilizando as variáveis x e w como operan-
dos, veja que como x possui o valor 1 e w também possui o valor 1 o 
resultado da operação é True, pois os valores são iguais.
Agora é a vez do operador !=, veja que na linha 7 o operando 
da direita é novamente a variável x e o da esquerda a variável w, 
porém neste caso o resultado será False, pois ambos possuem o 
mesmo valor.
Na sequência temos o operador <, o operando da esquerda é 
a variável z e o operando do lado direito é a variável y, como o valor 
de z é 3 e o valor de y é 6 ou seja z é menor que y, vemos na linha 
10 o valor True.
Vamos agora analisar o operador da linha 11 que é o <=, o 
operando do lado esquerdo é a variável x e o operando do lado 
direito é a variável w e como w e x possuem o mesmo valor então 
veremos que na linha 12 temos o resultado da operação com o va-
lor True.
Chegamos na linha 13, o operador utilizado aqui foi o >, o 
operando da esquerda é a variável z e o operando da direita é a 
variável x, o valor de z é 3 e o valor de x é 1 ou seja z é maior que x 
logo o valor da operação que vai aparecer na linha 14 é True.
Por fim vamos verificar o operador >=, neste caso o operan-
do da esquerda é a variável z e o operando da direta é a variável x, 
seus valores são respectivamente 3 e 1, veja que os valores não são 
iguais mas 3 é maior que 1 deste modo o resultado da operação será 
True, como mostrado na linha 16.
2-11
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
2.1.6 Operadores lógicos
Operações com variáveis do tipo bool, ou seja variáveis boo-
leanas são muito utilizadas em programação, suponha a situação 
onde se o salário de um funcionário é maior que R$2000,00 reais 
e se o funcionário tem mais de 2 anos de casa, então se essas duas 
afirmações forem verdadeiras iremos dar um bônus de R$100,00 
ao funcionário. 
Veja que neste caso temos duas afirmações e caso as duas 
sejam verdadeiras então teremos uma consequência que é o bônus 
que será pago ao funcionário. Nesta situação, fizemos uso implici-
tamente do operador lógico e que em Python é representado pela 
palavra and. Veja na tabela abaixo os operadores lógicos disponí-
veis na linguagem Python.
Tabela 2-3: Operadores lógicos
Operador lógico em Python Operação lógica
and operação lógica e
or operação lógica ou
not operação lógica não
Podemos afirmar que os operadores lógicos and e or, são 
operadores binários pois necessitam de dois operandos. E o ope-
rador lógico not é um operador unário, pois necessita de apenas 
um operando.
É possível escrever todos os possíveis valores resultantes 
das operações lógicas numa tabela, à qual damos o nome de ta-
bela verdade.
2-12
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
2.1.6.1 O operador lógico not
O operador not inverte o valor da variável booleana, de ma-
neira que se o valor da variável é True, então após a operação com 
not, o valor dessa variável será False. 
Caso o valor da variável seja False, após a operação com 
not, o valor da variável será True.
Vamos usar o console do Python para verificar as afirmações 
escritas logo acima.
1| >>> p1 = True
2| >>> p2 = False
3| >>> not p1
4| False
5| >>> not p2
6| True
Nas linhas 1 e 2 definimos as variáveis p1 e p2, com valores 
True e False respectivamente na linha 3 fizemos a operação not 
com a variável p1 e veja que na linha 4 o resultado dessa operação 
foi o valor False.
Para demonstrar o outro caso na linha 5 aplicamos o ope-
rador not na variável p2, lembre-se que o valor da variável p2 é 
False, e por isso na linha 6 vemos que o valor que aparece é True.
Na sequência vamos montar a tabela verdade 
para o operador not.
2-13
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Tabela 2-4: Tabela verdade operador not.
valor not valor
True False
False True
2.1.6.2 O operador lógico or
Agora vamos analisar o operador lógico or, em resumo essa 
operação lógica apenas retornará o valor True quando pelo menos 
um dos operandos for diferentes de False.
Fazendo algumas experiências com o console do Py-
thon temos:
1| >>> val1 = True
2| >>> val2 = False
3| >>> val1 or val2
4| True
5| >>> val2 or val1
6| True
7| >>> val1 or val1
8| True
9| >>> val2 or val2
10| False
Nas linhas 1 e 2 declaramos novamente duas variáveis com 
os nomes de val1 e val2, atribuímos a essas variáveis respectiva-
mente os valores True e False.
2-14
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Agora na linha 3 realizamos a primeira operação com o ope-
rando or, veja que neste caso bastou a variável val1 possuir o va-
lor True para que o resultado da operação mostrado na linha 4 
seja True.
Na linha 5 invertemos os operandos, mas sabemos que o 
operando val1, ainda possui o valor True, neste caso novamente 
na linha 6 teremos como resultado o valor True.
Vamos mudar um pouco agora e utilizarmos apenas a vari-
ável val1, neste caso ambos os operandos possuem valor igual a 
True e por isso na linha 8 temos o resultado True.
Por fim, vamos analisar o caso onde ambos os operandos 
possuem o valor False, como dito anteriormente, é apenas nesse 
caso que o resultado da operação or vai retornar o valor False, 
como podemos ver na linha 10 do código.
Com base nesses resultados podemos montar a tabela verda-
de para o operador or.
Tabela 2-5: Tabela verdade operador or.
valor1 valor2 valor1 or valor2
True False True
False True True
True True True
False False False
2.1.6.3 O operador lógico and
Analisaremos agora o operador and, em resumo, uma ope-
ração com and só vai retornar o valor True, no caso onde os dois 
operandos possuem o valor True. Podemos ver que essa afirmação 
é verdadeira no console to Python:
2-15
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
1| >>> exp1 = True
2| >>> exp2 = False
3| >>> exp1 and exp2
4| False
5| >>> exp2 and exp1
6| False
7| >>> exp2 and exp2
8| False
9| >>> exp1 and exp1
10| True
Começando pelas linhas 1 e 2 definimos duas variáveis cha-
madas exp1 e exp2, com valores True e False respectivamen-
te. Logo na linha 3 efetuamos uma operação lógica e como o va-
lor de exp2 é False temos na linha 4 o resultado esperado como 
sendo False.
Agora vamos trocar a ordem dos operandos e colocar variá-
velexp2 como sendo o primeiro operando, porém o valor de exp2 
ainda é False, e novamente o resultado dessa operação lógica será 
False, como exibido na linha 6.
Vamos testar o caso onde ambos os operandos possuem o 
valor False, para isso vamos usar a variável exp2 em ambas as 
posições, como mostrado na linha 7, novamente neste caso temos 
como resultado da operação o valor False, que é exibido na linha 8.
Por fim, vamos ver o único caso onde o resultado desta ope-
ração será True, para isso vamos usar a variável exp1 em ambas 
posições da operação, como feito na linha 9, lembre-se que o valor 
2-16
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
da variável exp1 é True, neste caso o resultado da operação será 
True como mostrado na linha 10.
Com base nesses dados vamos montar a tabela verdade da 
operação lógica and:
Tabela 2-6: Tabela verdade operador and
valor1 valor2 valor1 and valor2
True False False
False True False
True True True
False False False
2.1.7 Variáveis do tipo string (texto)
Até agora vimos como armazenar números e valores lógicos 
em variáveis, veremos neste capítulo como armazenar um texto em 
uma variável.
É muito comum na programação nos referimos a um texto 
como sendo uma cadeia de caracteres, por isso no Python o nome 
do tipo que é dado a uma variável de texto é chamado de str, que é 
do inglês significa linha, fio ou corrente, podemos então pensar no 
tipo string como sendo uma “linha” de caracteres.
Vamos usar uma frase clássica na programação que é a “Olá 
Mundo”, é muito comum sempre que estamos aprendendo uma lin-
guagem nova usarmos essa frase durante as experiências iniciais. 
Nem de perto isso é mandatório, mas é tradicional entre os 
programadores que estão aprendendo uma nova linguagem. Va-
mos então usar o console para fazermos algumas experiências in-
teressantes com esse novo tipo que vamos estudar:
2-17
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
1| >>> texto = ‘Olá Mundo’
2| >>> type(texto)
3| <class ‘str’>
4| >>> texto[0]
5| ‘O’
6| >>> texto[2]
7| ‘á’
8| >>> len(texto)
9| 9
Começando pela linha 1 definimos a variável texto, com o 
valor ‘Olá Mundo’, quando escrevemos algo entre aspas simples 
estamos criando uma string literal, na mesma linha temos o sím-
bolo de atribuição então em resumo o que fizemos foi atribuir uma 
string literal a uma variável com nome texto. Criando desta ma-
neira uma variável do tipo str como mostrado na linha 3 por meio 
da função type.
Note que escrevemos a frase entre aspas simples ‘ ‘, pode-
ríamos ter usado aspas duplas “ ”, mas para manter o padrão do 
material vamos usar aspas simples.
Podemos pensar que a string foi armazenada na memória 
como uma lista indexada onde cada posição dessa lista corres-
ponde a um caractere do texto da string, como mostrado na ta-
bela abaixo.
2-18
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Tabela 2-7: Modelo em memória de uma string
O l á m u n d o
0 1 2 3 4 5 6 7 8
Veja que na linha 4 acessamos a posição 0 dessa lista inde-
xada usando a notação [0], vale a pena atentar para o fato de que 
essa lista indexada começa sempre no índice 0.
Na linha 5 vemos que o caractere ‘O’ apareceu pois ele é o 
primeiro caractere e está armazenado na posição 0 da variável que 
chamamos de texto do tipo str.
Vamos fazer mais um experimento e acessar o caractere da 
posição 2, partindo do índice 0 e contando até o índice 2 vemos que 
o valor armazenado nesta posição é o caractere ‘á’, como mostrado 
na linha 7 do código do terminal.
Por fim, vamos demonstrar o uso da função len que como 
visto na linha 8 recebe um parâmetro do tipo str e retorna o núme-
ro de caracteres desta string, como mostrado na linha 9.
2.1.8 Operações comuns com strings
Agora que já sabemos como definir uma variável do tipo 
string, podemos efetuar algumas operações que são muito úteis 
no dia a dia de um programador. 
Uma dessas operações permite “juntar” uma string com ou-
tra, a essa operação chamamos de concatenação. 
Em outras situações queremos dividir a string em alguma 
posição, como vimos anteriormente podemos pensar na string 
como sendo uma lista indexada de caracteres, podemos pegar uma 
dessas posições e criar 2 strings a partir de uma.
2-19
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Por fim, às vezes, temos a necessidade de injetar uma outra 
variável entre os caracteres de uma string
2.1.8.1 Concatenação de strings
Vamos usar o seguinte código no console do Python para en-
tendermos com funciona a concatenação de strings:
1| >>> nome = ‘João’
2| >>> sobre_nome = ‘Silva’
3| >>> nome + ‘ ‘ + sobre_nome
4| ‘João Silva’
Começaremos pela linha 1, veja que nesta linha definimos 
uma variável chamada nome, do tipo string com o valor ‘João’ e 
na linha 2 uma outra variável chamada sobre_nome, também do 
tipo string, e com valor ‘Silva’.
Na linha 3 fazemos a operação de concatenação utilizando o 
operador +. Veja que na linha 4 temos a resposta desta operação, 
ou seja a string com o valor ‘João Silva’.
Como dito anteriormente podemos pensar na operação de 
concatenação como sendo uma operação que junta os valores de 
duas ou mais variáveis.
Vamos fazer uma experiência agora de tentar concatenar 
uma variável do tipo int com uma variável do tipo str.
1| >>> val1 = 2
2| >>> texto = ‘meu número’
2-20
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
3| >>> texto + val1
4| Traceback (most recent call last):
5| File “<pyshell#5>”, line 1, in <module>
6| texto + val1
7| TypeError: can only concatenate str (not 
“int”) to str
Na linha 1 definimos uma variável val1, do tipo int com 
value 2 e na linha 2 definimos mais uma variável do tipo str com 
valor ‘meu número’.
Vamos então tentar concatenar as duas variáveis, veja que a 
variável chamada texto é do tipo str e a variável chamada val1, é 
do tipo int, por isso nas linhas 5, 6 e 7 temos um erro, onde a men-
sagem mais importante está na linha 7 e indica que apenas valores 
do tipo str podem ser concatenados.
Para corrigirmos esse comportamento é necessário transfor-
marmos a variável val1 em uma variável do tipo str para isso usa-
mos a função str, passando como parâmetro a variável val1, veja 
isso na linha 3.
1| >>> val1 = 2
2| >>> texto = ‘meu número’
3| >>> texto + str(val1)
4| ‘meu número2’
Agora não temos mais o erro, podemos ver que na linha 4 
temos a concatenação das strings e o resultado dessa operação é: 
‘meu número 2’
2-21
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
2.1.8.2 Divisão de strings
Vimos anteriormente que é possível acessarmos individual-
mente os caracteres de uma variável do tipo str por meio da nota-
ção: [índice], onde o valor de índice é do tipo inteiro.
Vamos usar a tabela abaixo para representar a string ‘Frase 
de teste’
Tabela 2-8: Modelo em memória de uma string
F r a s e d e t e s t e
0 1 2 3 4 5 6 7 8 9 10 11 12 13
1| >>> texto = ‘Frase de teste’
2| >>> len(texto)
3| 14
4| >>> texto[6:14]
5| ‘de teste’
6| >>> texto[:5]
7| ‘Frase’
8| >>> texto[-5:]
9| ‘teste’
10| >>> texto[9:14]
11| ‘teste’
Na primeira linha definimos uma variável do tipo str chama-
da texto, com o valor ‘Frase de teste’. Na linha 2 usamos a função 
2-22
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
len, passando como parâmetro a variável chamada texto, para 
mostrarmos o número de caracteres armazenados, na linha 3.
Usando a notação [limite_inferior: limite_superior], 
dizemos que o parâmetro limite_inferior, marca o índice onde o 
corte da string vai começar, incluindo o próprio índice.
O limite_superior, é o índice que marca até onde o corte 
da string vai se estender, porém o índice passado no parâmetro 
limite_superior, não será considerado no corte da string.
Voltando ao código digitado no console do Python, na linha 4 
temos o código texto[6:14], olhando para a tabela que representa 
o modelo da string em memória vemos que o caractere que está 
no índice 6 é o ‘d’.
Na sequência, temos o índice 14, como ditoanteriormen-
te o parâmetro limite_superior não é considerado no corte da 
string, logo devemos considerar o índice 13, onde está armazena-
do o caractere ‘e’.
Na linha 5 temos então o resultado do corte da string que é 
o texto ‘de teste’, ou seja, o código texto[6:14] quer dizer o Python 
para pegar os caracteres começando do índice 6, inclusive até o 
indice 13, pois o índice 14 não está incluso.
Vamos agora ao código da linha 6, temos então texto[:5], 
neste caso omitimos o parâmetro limite_inferior, isso faz 
com que o Python use como limite inferior do corte o índice 0 
e como superior o índice 4, lembre-se que o valor do limite su-
perior é desconsiderado sendo que no lugar dele sempre tere-
mos limite_superior - 1.
Com isso vemos na linha 7 a string ‘Frase’, pois o coman-
do texto[:5], pega os caracteres do índice 0 inclusive até o ín-
dice 4, veja que no modelo de memória temos os caracteres que 
2-23
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
formam a string ‘Frase’ dentro do intervalo de índices que vai de 
0 a 4, incluindo o 0.
Por fim vamos considerar agora a linha 8, que possui o co-
mando texto[-5:], neste caso o Python entende que devemos pe-
gar o limite inferior como sendo índice 9 pois como vimos na linha 
13 o número de caracteres da string armazenada na variável cha-
mada texto é 14. 
Note que temos um sinal de menos que acompanha o núme-
ro 5 no primeiro parâmetro, isso nos faz calcular que o primeiro 
índice do corte será 9 = 14 - 5, ou seja o primeiro índice do corte 
será o 9, como não passamos nenhum valor para o segundo parâ-
metro devemos considerar é o índice do final do corte será o 13, 
que segundo o modelo de memória da string é o último índice 
da string.
Podemos então entender que texto[-5:] é igual a tex-
to[9:14] e na linha 9 veremos a string ‘teste’’. Como forma de 
comparação, a linha 10 mostra que o comando texto[9:10] resul-
ta no mesmo valor como mostrado na linha 11.
Por curiosidade, vamos tentar acessar um índice da variável 
texto que não está definido, neste caso vemos que o último índice 
da string é o 13. Vamos usar o console do Python para saber qual 
é o valor armazenado no índice 14
1| >>> texto[14]
2| Traceback (most recent call last):
3| File “<pyshell#23>”, line 1, in <module>
4| texto[14]
5| IndexError: string index out of range
2-24
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Logo na linha 1 usamos o comando do Python para tentar 
acessar o índice 14 da variável texto, mas olhando para o modelo 
de memória da string, vemos que o último índice é o 13, ou seja o 
índice 14 não está definido portanto vemos nas linhas 2 até 5 uma 
mensagem de erro informando que o índice que foi usado como 
parâmetro está fora do intervalo de índices definidos pelo modelo 
de memória da string.
2.1.8.3 Interpolação de strings
Vamos agora estudar uma maneira de inserir uma nova va-
riável no meio de uma string já definida, este conceito é muito 
utilizado quando queremos fazer uma saída de dados com algum 
processamento realizado pelo nosso programa. 
Para isso vamos começar usando o console do Python, digi-
tando um programa bem simples, como mostrado abaixo:
1| >>> lado = 3
2| >>> área = lado ** 2
3| >>> ‘O lado do quadrado é %d e a área é 
%d’ %(lado, área)
4| ‘O lado do quadrado é 3 e a área é 9’
Na linha 1 definimos a variável do tipo int chamada de lado 
com o valor 3. Na segunda linha definimos a variável área como 
sendo a variável lado elevada à segunda potência.
Agora queremos mostrar os dados armazenados nessas duas 
variáveis em uma única frase, de maneira que os seus valores apa-
reçam no meio da frase, como mostrado na linha 3, note que usa-
mos dois marcadores iguais descritos como %d. 
2-25
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Nesta mesma linha fora da definição da string temos o có-
digo %(lado, área), isso indica que o primeiro marcador %d será 
substituído pelo valor da variável inteira lado, e o segundo mar-
cador do mesmo tipo %d será substituído pelo valor da variável 
área, por isso o valor final da string mostrado na linha 4 é ‘O lado 
do quadrado é 3 e a área é.
Além do marcador do tipo %d que é utilizado quando quere-
mos interpolar inteiros numa string, temos outros dois marcado-
res, o %f que é utilizado para variáveis do tipo float e o %s quando 
for o caso de interpolar variáveis do tipo string.
Agora veremos um exemplo de interpolação de string com 
todos os marcadores:
1| >>> n = ‘Lúcia’
2| >>> q = 3
3| >>> p = ‘bala’
4| >>> v = 1.55
5| >>> ‘%s comprou %d %s(s) no total de 
R$%2.2f’ %(n, q, p, q * v)
6| ‘Lúcia comprou 3 bala(s) no total 
de R$4.65’
Começando na linha 1 definimos a variável com nome n do 
tipo string que irá armazenar o valor ‘Lúcia’, ou seja o nome do 
nosso cliente. 
Na sequência a variável q, que vai representar a quantidade 
do produto que o nosso cliente comprou, e será do tipo inteiro 
com o valor 3. 
2-26
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Na linha 3 a variável p, que será do tipo string e vai armaze-
nar o nome do produto, por fim definimos a variável v do tipo float 
que vai guardar o valor do produto que nesse caso é representado 
pelo número decimal 1,55.
Agora vamos a definição da string interpolada, veja que 
usamos os marcadores %s, para mostrar o nome do cliente, na 
sequência o marcador %d que irá exibir a quantidade do pro-
duto que foi comprada, seguido do marcador %s que vai mostrar o 
nome do produto e por fim o marcador %f, que foi utilizado para 
mostrar o número do tipo float onde estará armazenado o cálculo 
total do valor que o cliente deve pagar no caixa. Por fim, a linha 6 
exibe a string resultante das interpolações.
2.1.9 A Entrada de dados
Até agora, nos exemplos estudados, a entrada de dados foi 
feita por meio de valores armazenados em variáveis, veja que não 
usamos nenhum tipo de periférico de entrada, tais como teclado, 
mouse ou joystick para fornecer os dados de entrada.
Veremos agora como fazemos em Python para pegar um 
texto digitado no teclado e armazenar este texto numa variável do 
tipo string.
O propósito deste programa é pedir ao usuário um nome e 
um sobrenome, ou seja, esta será a entrada do programa, e 
a saída do programa será a concatenação dessas duas strings 
para formar o nome completo baseado nos dados que foram entra-
dos pelo usuário do programa.
Para isso vamos usar o editor de textos que vem com a insta-
lação do Python para codificarmos este programa.
2-27
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
1| # Programa 2 - Nome e sobrenome com en-
trada de dados
2| 
3| nome = input(‘Digite o nome: ‘)
4| sobre_nome = input(‘Digite o sobre nome: ‘)
5| 
6| print(‘O nome completo é %s %s.’ 
%(nome, sobre_nome))
O que vemos de novo neste código é a função input, veja que 
ela recebe como parâmetro uma string, é essa string que será 
apresentada ao usuário do programa, informando a ele que um 
nome deverá ser digitado.
Veja que a função input, na linha 1, retorna um valor que 
é armazenado na variável nome, a função input sempre retorna 
um valor do tipo string, ou seja consequentemente o tipo da vari-
ável nome será string.
Na linha 3 utilizamos da mesma maneira a função input, 
mas agora vamos pedir ao usuário o sobrenome, que agora será 
armazenado na variável sobre_nome, atente ao fato de que se 
usássemos a mesma variável nome para armazenar o sobre_
nome perderíamos a informação do nome que foi digitada pelo 
usuário e o programa não faria aquilo ao que ele se propõe a fazer.
Por fim, na última linha utilizamos a interpolação de strings 
com variáveis para exibir o resultado de uma maneira legível ao 
usuário, veja que usamos dois marcadores %s, pois ambos os valo-
res das variáveis nome e sobre_nome são do tipo string.
Como escrevemos o programa no editor de textos do Python, 
precisamos rodar o programa clicando no menu Run e na opção 
2-28
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Run Module, ou simplesmentefazendo uso do atalho a esse menu 
que está na tecla F5.
A resposta será como a que está mostrada logo abaixo:
1| Digite o nome: Joe
2| Digite o sobre nome: Doe
3| O nome completo é Joe Doe.
Ao executar o programa, iremos perceber que o console do 
Python vai parar na linha 1, e o cursor para entrada de texto vai 
aparecer logo depois da frase ‘Digite o nome:’, no meu caso eu di-
gitei o nome Joe e logo depois apertei a tecla enter.
Esse comportamento de esperar a entrada e finalizar com 
o pressionamento da tecla enter é todo fornecido pela função 
input, neste caso o programador apenas deve esperar que isso 
aconteça e não precisa fazer mais nada para pegar o dado do usu-
ário do teclado.
Na linha 2 o mesmo vai acontecer, o console vai parar no fi-
nal da frase ‘Digite o sobre nome’ e esperar do usuário a entrada de 
dados, logo após a tecla enter ser pressionada o programa mostra 
a linha 3 com o resultado esperado, que é a concatenação das vari-
áveis nome e sobre_nome na frase ‘O nome completo é Joe Doe’.
Seria interessante o leitor digitar este simples programa no 
editor de textos do Python, executar e fazer algumas experiências 
para se familiarizar tanto com o ambiente do Python quanto com o 
modo que o programa se comporta com a entrada de dados.
Vamos fazer uma experiência para mostrarmos que a função 
input retorna um valor do tipo string, para isso vamos escrever o 
seguinte programa.
2-29
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
1| # Programa 3 - Erro de entrada tipo string 
usado como número
2| 
3| qtd = input(‘Digite a quantidade: ‘)
4| valor_unitario = input(‘Digite o va-
lor unitário: ‘)
5| 
6| total = qtd * valor_unitario
7| 
8| print(‘O valor total é: R$%2.2f’ % total)
O primeiro dado pedido ao usuário será a quantidade de um 
determinado item, este valor por natureza será inteiro. 
Este valor será armazenado na variável qtd, lembre-se que a 
função input sempre retorna um valor do tipo string, então já na 
linha 3 podemos afirmar que o tipo da variável qtd é string. 
Na próxima linha, é pedido para o usuário entrar com o valor 
unitário do item, neste caso o usuário irá digitar algum valor deci-
mal, mas de novo, como a função input sempre retorna um valor 
do tipo string, podemos dizer que o tipo da variável valor_uni-
tario é string.
Na linha 6 efetuamos a operação de multiplicação e atribu-
ímos o valor do resultado à variável definida com o nome de to-
tal. Antes de prosseguir reflita um pouco, tente adivinhar qual é o 
tipo da variável total, será que essa operação de multiplicação vai 
se realizar?
Executando este programa temos como resultado o có-
digo abaixo:
2-30
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
1| Digite a quantidade: 2
2| Digite o valor unitário: 1.89
3| Traceback (most recent call last):
4| File 
5| ”/Users/munhra/Desktop/programas
6| /code/prg_3_erro_tipo_input.py”, line 6, 
in <module>
7| total = qtd * valor_unitario
8| TypeError: can’t multiply sequence by 
non-int of type ‘str’
Como esperado nas linhas 1 e 2 temos a função input entran-
do em ação, e os valores 2 e 1.89 fornecidos pelo usuário, porém na 
linha 3 acontece algo diferente, temos o começo de uma mensagem 
de erro, que termina na linha 8 informando ao usuário que: não 
é possível multiplicar uma sequência por um tipo não in-
teiro do tipo string. Confuso não ? Para entendermos esse erro, 
vamos fazer uma rápida experiência no terminal do Python:
1| >>> ‘x’ * 3
2| ‘xxx’
Veja que na linha 1 estamos multiplicando uma string por 
um número inteiro, e isto é válido na linguagem Python, na linha 
2 temos o resultado desta operação que é a própria string multi-
plicada por 3.
Voltando ao erro do programa anterior, vemos que o Python 
está informando que não conseguiu multiplicar a sequência, no 
2-31
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
caso podemos entender a sequência como sendo uma string por 
um tipo não inteiro que não é uma string, ou seja, se lembrar-
mos que a função input sempre retornar um tipo string estamos 
tentando multiplicar uma string por outra, o que não é válido na 
linguagem Python.
Para simplificar, veja o código abaixo digitado no terminal:
1| >>> ‘x’ * ‘3’
2| Traceback (most recent call last):
3| File “<pyshell#69>”, line 1, in <module>
4| ‘x’ * ‘3’
5| TypeError: can’t multiply sequence 
by non-int 
6| of type ‘str’
Para reproduzir o erro modificamos na linha 1 o tipo do li-
teral de valor 3 note que agora o 3 aparece entre aspas ‘3’, isso 
faz com que o Python entenda que estamos tentando multiplicar 
uma string por outra, o que não é válido.
Veja que o erro gerado neste simples exemplo é o mesmo que 
aconteceu no nosso programa que multiplica a quantidade pelo va-
lor unitário.
Para corrigir este programa, precisamos transformar os va-
lores que são devolvidos pela função input, para valores numéri-
cos, no caso da quantidade devemos transformar o valor em um 
inteiro, e no input que pega o preço unitário, devemos transfor-
mar para float, para isso usamos a função float que recebe uma 
2-32
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
string como parâmetro e a função int que também recebe uma 
string no caso da quantidade.
1| # Programa 4 - Custo total
2| qtd = int(input(‘Digite a quantidade: ‘))
3| valor_unitario = float(input(‘Digite o 
valor unitário: ‘))
4| total = qtd * valor_unitario
5| print(‘O valor total é: R$%2.2f’ % total)
Neste código vale a pena destacar as linhas 2 e 3, veja que 
na linha 2 utilizamos a função int e passamos como parâmetro o 
resultado da função input diretamente para ela, deste modo pode-
mos afirmar que o tipo da variável qtd é inteiro.
Na linha 2, fizemos algo parecido, mas no lugar da função 
int, utilizamos a função float, neste caso o tipo da variável va-
lor_unitario, será float.
Agora, como o tipo da variável qtd é inteiro e o tipo da vari-
ável valor_unitario é float, podemos afirmar que o tipo da vari-
ável total será float, logo o erro não acontecerá mais. 
Por fim, na última linha temos o comando print, com o mar-
cador %2.2f, que irá interpolar o valor da variável total, ao texto da 
frase, como mostrado abaixo na saída do programa.
Digite a quantidade: 3
Digite o valor unitário: 1.89
O valor total é: R$5.67
2-33
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Agora que já sabemos fazer uma entrada de dados pelo tecla-
do, vamos escrever mais um programa, que pede como entrada o 
valor total de uma compra em unidades monetárias, na sequência 
o programa deverá pedir ao usuário o número de parcelas que o 
valor total deverá ser dividido.
Por fim, o programa terá como saída uma frase que mostra 
para o usuário qual será o valor de cada parcela.
1| # Programa 5 - Cálculo do valor da parcela
2| 
3| total = float(input(‘Digite o total 
da compra: ‘))
4| qtd_parcelas = int(input(‘Digite o núme-
ro de parcelas: ‘))
5| 
6| valor_parcela = total / qtd_parcelas
7| 
8| print(‘O valor de cada parcela será 
R$%2.2f’ %valor_parcela)
Neste código na linha 3 usamos a função float para trans-
formar o valor do tipo string retornado pela função input, logo a 
variável chamada total terá um valor do tipo float.
Na linha 4 fazemos algo similar, mas desta vez transforman-
do o tipo string retornado pelo método input no tipo integer, e 
armazenando este valor na variável qtd_parcelas.
2-34
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
Logo em seguida na linha 6 fizemos o cálculo do valor da par-
cela, ou seja dividimos a variável total pela quantidade de parcelas 
armazenado como um valor inteiro na variável qtd_parcelas.
O resultado dessa divisão será armazenado na variável va-
lor_parcela, que será do tipo float, pois o resultado armazenado 
veio de uma operação entre uma variável do tipo int e outra do 
tipo float.
Finalmente na linha 8 mostramos a string interpolada com 
o valor da variável valor_parcela sendo impresso com duas ca-
sas decimais conforme definido no marcador. No códigoabaixo é 
mostrada a saída do programa:
Digite o total da compra: 30.50
Digite o número de parcelas: 3
O valor de cada parcela será R$10.17
Agora vamos fazer uma reflexão e nos perguntar, o que será 
que aconteceria se no número de parcelas fosse entrado pelo usu-
ário o valor 0.
Inspecionando o código percebemos que este valor 0 seria o 
denominador da divisão que acontece na linha 6, sabemos da ma-
temática básica que não existe divisão por 0, veja o código abaixo 
onde fica demonstrado como o Python reage a esse erro:
1| Digite o total da compra: 15.90
2| Digite o número de parcelas: 0
3| Traceback (most recent call last):
4| File “/Users/teste/Desktop
2-35
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
5| /python/code/prg_5_calc_parcela.py”, 
6| line 6, in <module>
7| valor_parcela = total / qtd_parcelas
8| ZeroDivisionError: float division by zero
Na linha 2 entramos com o valor 0 e já na linha 03 temos o 
começo do erro, veja que como o código foi escrito num arquivo 
o interpretador do Python, mostra o caminho e o nome do arqui-
vo, além de mostrar em qual linha do arquivo o erro aconteceu, 
isso é muito útil quando estamos tentando resolver falhas em nos-
sos programas.
Neste caso, o interpretador da linguagem mostra que o erro 
aconteceu na linha 6 do arquivo. E em seguida diz a natureza do 
erro, lendo a frase percebemos que aconteceu uma divisão por 0.
Agora vamos forçar outro cenário de erro, vamos supor que 
no lugar da quantidade de parcelas o usuário digite um texto, re-
flita um pouco antes de olhar a explicação, e pense no que pode 
acontecer neste caso. Depois disso analise o código escrito abaixo e 
tente entender o que aconteceu.
1| Digite o total da compra: 14.50
2| Digite o número de parcelas: duas
3| Traceback (most recent call last):
4| File “/Users/user1/Desktop/python/code/
5| prg_5_calc_parcela.py”, line 4, 
in <module>
6| qtd_parcelas = int(input
2-36
Linguagem de Programação
 V
A
R
IÁ
V
EI
S
2< / >
7| (‘Digite o número de parcelas: ‘))
8| ValueError: 
9| invalid literal for int() with base 
10: ‘duas’
Novamente nas linhas 1 e 2 o programa pede ao usuário para 
ele entrar o total da compra e na sequência o número de parcelas, 
neste caso o usuário digitou a string ‘duas’.
Logo na linha 3 aparece o erro, veja que o interpretador do 
Python tentou converter a string ‘duas’ em um valor inteiro, mas 
neste momento aconteceu um erro e o interpretador informou que 
não tinha um literal válido para uma conversão em um inteiro de 
base 10, ou seja o interpretador Python, obviamente, não é capaz 
de gerar um valor inteiro partindo de uma string de texto que não 
representa um valor inteiro de base 10.
Esses são alguns dos erros que podem aparecer durante a en-
trada de dados, alguns dos possíveis erros poderiam ser resolvidos 
fazendo o uso de expressões de condição, este será o assunto 
do próximo capítulo.
Mas já que tocamos no assunto de tratamento de erros, 
também veremos em outros capítulos posteriores o conceito 
de exceções.
2-37
	� EXERCÍCIOS PROPOSTOS
1) O que acontece se definirmos uma variável da seguinte maneira salário 
do usuário = 1000.00 ?
( ) -a) Criaremos uma variável com sucesso de nome salário do 
usuário do tipo float com o valor 1000.00
( ) -b) Criaremos uma variável com sucesso de nome salário do 
usuário do tipo int com valor 1000.00
( ) -c) Um erro vai acontecer, mas mesmo assim uma variável do 
tipo float, chamada salário do usuário com o valor 1000.00 
será criada.
( ) -d) Um erro de sintaxe inválida vai acontecer pois o valor 
1000.00 é invalido.
( ) -e) Um erro de sintaxe inválida vai acontecer pois o nome da 
variável salário do usuário é invalido, pois temos espaços en-
tre as palavras que definem a variável e isso é uma definição 
invalida para um nome de variável.
2) Ao declararmos uma variável da seguinte maneira taxa_juros = 1.0 qual 
será o resultado correto ?
( ) -a) Um erro de sintaxe vai acontecer pois não podemos usar o 
caractere _ na definição do nome da variável.
( ) -b) Um erro de sintaxe vai acontecer pois o valor literal repre-
senta uma string e não poderá ser armazenado nesta variá-
vel que é do tipo float.
( ) -c) A variável de nome taxa_juros, será criada com sucesso e 
seu tipo será int.
( ) -d) A variável de nome taxa_juros, será criada com sucesso e 
seu tipo será str.
( ) -e) A variável de nome taxa_juros, será criada com sucesso e 
seu topo será float.
2-38
Ex
er
cí
ci
os
 P
ro
po
st
os
3) Qual o resultado da expressão 2.0 == 2 ?
( ) -a) O resultado será False pois o lado esquerdo é um literal do 
tipo float e o lado direito é um literal do tipo int.
( ) -b) Um erro de sintax acontecerá pois uma variável com nome 
2.0 não poderá ser definida.
( ) -c) Uma variável chamada 2.0 será definida com sucesso e o seu 
valor será 2, e seu tipo será int.
( ) -d) O resultado será True pois o valor literal 2.0 e o literal 2 são 
matematicamente iguais.
( ) -e) Nda.
4) Considere as variáveis p1 = True, p2 = False, p3 = 3 > 5, qual é o resulta-
do da expressão not p1 and p3 or p2.
( ) -a) O resultado será True.
( ) -b) O resultado será False.
( ) -c) Não tem como saber pois 3 > 5 não é um valor booleano.
( ) -d) Um erro de sintaxe vai acontecer pois 3 > 5 não pode ser 
operando do operador or.
( ) -e) Nda.
5) Considere a variável texto = ‘Este é um curso de Python’, encontre a al-
ternativa verdadeira:
( ) -a) O tipo da variável é int.
( ) -b) O valor armazenado em texto[1] é o caractere ‘E’.
( ) -c) O valor armazenado em texto[25] é o caractere ‘n’.
( ) -d) Não é possível acessar o caractere texto[0].
( ) -e) O valor armazenado em texto[0] é o caractere ‘E’.
6) Considere a variável t1 = ‘casa’ e a variável t2 = ‘branca’ e escolha a 
afirmação correta:
( ) -a) A operação t1 * t2 é uma operação válida e o seu resultado é 
‘t1 * t2’.
2-39
Ex
er
cí
ci
os
 P
ro
po
st
os
( ) -b) A operação t1 - t2 é uma operação válida e o seu resultado é 
‘casa - branca’.
( ) -c) A operação t1 + t2 é uma operação válida e o seu resultado é 
‘casabranca’
( ) -d) A operação t1 + t2 não é válida, pois t1 e t2 são do tipo str
( ) -e) A operação t1 + ‘ ‘ + t2 não é válida.
7) Considere a variável v1 = ‘carro’ e a variável v2 = 10, e escolha a afirma-
ção correta:
( ) -a) A operação v1 + v2 resulta num erro pois não é possível con-
catenar uma variável do tipo str, com uma do tipo int.
( ) -b) A operação v1 + v2 é válida e o resultado será ‘carro10’.
( ) -c) A operação v1 + v2 é inválida e resulta num erro pois só po-
demos concatenar valores do tipo int, porém v1 é do tipo int 
e v2 é do tipo str.
( ) -d) O resultado da operação v2 + v1 será ‘10carro’.
( ) -e) Nda.
8) Considere a variável texto = ‘Python é uma linguagem de programação’, 
escolha a alternativa verdadeira.
( ) -a) O valor de texto[:6] será igual a ‘Python’.
( ) -b) O valor de texto[0:6] irá resultar num erro pois o índice da 
variável texto igual a 0 não está definido.
( ) -c) O valor de texto[-100:] irá resultar num erro pois a string 
armazenada na variável possui apenas 37 caracteres.
( ) -d) O valor de texto[1:4] será ‘Pyth’.
( ) -e) O valor de texto[-1:] irá resultar num erro pois estamos pas-
sando como parâmetro um índice de valor negativo.
9) Considere o programa abaixo e escolha a alternativa correta
1| # Programa 17 - Erro de interpolação
2| 
3| aresta = 3
2-40
Ex
er
cí
ci
os
 P
ro
po
st
os
4| volume = aresta ** 3
5| 
6| print(‘A aresta do cubo é %d e seu volume 
é %d.’ 
7| %(aresta, volume))
( ) -a) O programa dá um erro de execução pois o tipo da variável 
aresta é float, e o marcador de formatação é %d o que repre-
senta um inteiro.
( ) -b) O programa termina com sucesso e a sua resposta será: ‘A 
aresta do cubo é 3 e seu volume é 27.’
( ) -c) O programa dá um erro de execução pois não podemos in-
terpolar duas variáveis em uma mesma string.
( ) -d) O programa dá um erro de execução pois o operador ** não 
é definido.
( ) -e) O programa termina com sucesso e a suaresposta será: ‘A 
aresta do cubo é 3.00 e seu volume é 27.00.’
10) Considere o programa abaixo e escolha a alternativa correta:
1| # Programa 18 - Meses de vida
2| 
3| anos_de_vida = input(‘Digite quantos anos 
você tem: ‘)
4| meses_de_vida = anos_de_vida * 12
5| 
6| print(‘Você tem %d meses de 
vida.’ %(meses_de_vida))
( ) -a) O programa executa com sucesso e no caso do valor digitado 
ser igual a 12 a resposta será: ‘Você tem 144 meses de vida.’
( ) -b) Acontece um erro de execução, pois o tipo da variável anos_
de_vida é float, e o marcador %d da linha 6 só opera com 
variáveis do tipo int.
2-41
Ex
er
cí
ci
os
 P
ro
po
st
os
( ) -c) Acontece um erro pois o tipo da variável meses_de_vida é 
float e o marcador %d da linha 6 só opera com variáveis do 
tipo int.
( ) -d) O programa executa com sucesso e no caso do valor digitado 
ser igual a 12 a resposta será: ‘Você tem 12 meses de vida.’
( ) -e) Acontece um erro de execução, pois o tipo de valor retor-
nado pela função input é str, isso faz com que a variável 
meses_de_vida se torne do tipo str, desta maneira, deixará 
invalido o marcador %d da linha 6.
D I S C I P L I N A :
Linguagem de 
Programação
UNIDADE 2: 
ESTRUTURAS DE CONTROLE
Caro(a) Aluno(a)
Seja bem-vindo(a)!
Nesta unidade veremos como controlar o fluxo do programa 
por meio de estruturas condicionais e laços de repetição. Você 
verá que nem todo código de um programa sempre será executa-
do e que é possível repetir um bloco de código várias vezes.
Conteúdos da Unidade
Estruturas de controle de fluxo, if, else, elif, definição de bloco 
de código aninhado, estruturas de repetição while, break, con-
tinue, conceitos básicos de performance, estruturas de repeti-
ção aninhadas, teste de mesa.
Ótimos estudos!
D I S C I P L I N A :
Linguagem de 
Programação
CAPÍTULO 3: 
EXPRESSÕES CONDICIONAIS
3-3
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
3�1 Introdução às expressões condicionais
No final do capítulo anterior estudamos alguns casos possí-
veis de erro que poderiam acontecer, um deles era se o usuário en-
trasse com um valor igual a 0 e esse valor fosse usado numa divisão 
então teríamos um erro que pararia o programa.
É uma boa prática no desenvolvimento de programas que to-
dos os possíveis erros sejam tratados de maneira a nunca chegar 
a derrubar o programa e além disso sempre mostrar ao usuário 
uma mensagem que explique quais passos ele deve fazer para que 
o programa possa prosseguir.
Veja que para tratar esse simples cenário, onde um valor 
invalido foi fornecido pelo usuário, podemos usar uma simples 
expressão condicional implementada pelo if, como veremos logo 
em seguida.
3.1.1 O comando if
O comando if cria uma condição que servirá como uma bar-
reira que se o resultado lógico avaliado em sua condição for ver-
dadeiro então o bloco de código aninhado abaixo da expressão 
da condição será executado, caso contrário esse bloco aninhado 
não será executado, e o fluxo do programa seguirá para as próxi-
mas linhas
Entenda como bloco aninhado o código escrito abaixo da ex-
pressão de condição contando 4 espaços do comando if. Veja na 
sequência, de maneira genérica como é o código de uma expressão 
condicional em Python:
3-4
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
 if <condição>:
 bloco verdadeiro
Saindo da definição genérica mostrada acima, vamos para 
um exemplo concreto:
1| # Programa 6 - Checando uma senha
2| senha_secreta = ‘9871’
3| senha_de_entrada = input(‘Usuário digite 
a sua senha: ‘)
4| if senha_secreta == senha_de_entrada:
5| print(‘Bem vindo usuário, senha secreta 
correta !!!’)
Como já foi estudado anteriormente na linha 1 definimos 
uma variável chamada senha_secreta do tipo string com o valor 
‘9871’. Na linha 3 pedimos ao usuário entrar com uma senha, este 
valor do tipo string será armazenado na variável senha_de_en-
trada, que também é do tipo string, até agora nada de novo.
Já na linha 4 temos o assunto desse capítulo que é uma 
expressão condicional, veja que estamos comparando se a 
variável senha_secreta possui o mesmo valor da variável se-
nha_de_entrada, para isso usamos o operador == que testa a 
igualdade e caso a condição retorne um valor verdadeiro ou seja 
True a mensagem ‘Bem vindo usuário, senha secreta correta !!!’ 
será exibida no console do Python. 
Caso contrário se a condição da expressão retornar falso ou 
seja o valor False, então esta mesma mensagem não será mostra-
da ao usuário.
3-5
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
Um erro muito comum quando se começa a programar em 
Python é muito comum esquecermos o caractere dois pontos:, no 
final da expressão condicional, portanto fique atento e tente se 
lembrar deste detalhe.
Outro ponto que devemos ficar atentos é que um bloco de 
código é, por padrão, definido por uma endentação de 4 espaços 
3.1.2 A expressão else
Podemos entender que a expressão else executa o bloco de 
código quando a condição do if retorna o valor False, vamos olhar 
de maneira genérica como ficaria esta construção
 if <condição>:
 bloco verdadeiro
else:
 bloco falso
Vamos modificar o exemplo concreto utilizado anteriormen-
te, agora quando o usuário errar a senha uma mensagem será exi-
bida para ele informando esse fato.
1| # Programa 7 - Checando uma senha e re-
tornando mensagem de erro
2| 
3| senha_secreta = ‘9871’
4| senha_de_entrada = input(‘Usuário digite 
a sua senha: ‘)
3-6
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
5| 
6| if senha_secreta == senha_de_entrada:
7| print(‘Bem vindo usuário, senha secreta 
correta !!!’)
8| else:
9| print(‘Senha inválida !!!’)
Na linha 3 definimos a variável chamada senha_secreta, e 
na sequência, pedimos ao usuário que ele entre com o valor de uma 
senha. Como anteriormente na linha 6 temos a condição que veri-
fica se o valor da variável senha_secreta for igual ao valor da va-
riável senha_de_entrada, então o valor da condição será igual a 
True, neste caso o bloco de código da linha 7 será executado.
A diferença deste código e do anterior é a expressão else, ou 
seja neste caso quando a condição senha_secreta == senha_
de_entrada retornar o valor False, então o bloco de código da 
linha 9 será executado.
Vamos agora executar o código descrito acima e ver o que 
acontece nos diferentes cenários cobertos, no primeiro caso, va-
mos acertar a senha, para isso vamos digitar como entrada do pro-
grama o valor ‘9871’, sem as aspas.
1| Usuário digite a sua senha: 9871
2| Bem vindo usuário, senha secreta correta !!!
Veja que nesse caso a mensagem que aparece na linha 2 é 
de que o usuário acertou a senha, como foi esperado pois a string 
‘9871’ é igual ao valor da variável senha_secreta.
3-7
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
Agora vamos errar a senha propositalmente, para isso, basta 
digitar qualquer valor que não seja ‘9871’, vamos escolher o va-
lor ‘2231’
1| Usuário digite a sua senha: 2231
2| Senha inválida !!!
Como tínhamos previsto, neste caso o bloco de código que 
foi executado é o que está aninhado com 4 espaços logo abaixo da 
expressão else.
Uma dica para os iniciantes na programação Python é pensar 
na expressão condicional em português da seguinte forma:
Se <condição> então <bloco verdadeiro> Senão 
<bloco falso>
Até agora vimos um simples programa para mostrar como as 
expressões condicionais funcionam, vamos agora estudar a seguin-
te situação, suponha que numa empresa sempre no final do ano 
os funcionários recebem um bônus que é calculado com base nos 
anos que o funcionário tem de casa, seguindo as regras:
 ● Se o funcionário possuir tempo de casa inferior a 4 anos, 
então seu bônus será de 1% sobre o seu salário atual.
 ● Se o funcionário possuir tempo de casa igual a 4 anos, en-
tão o seu bônus será de 5% sobre o seu salário atual
 ● Se o funcionáriopossuir tempo de casa igual a 5 anos, en-
tão o seu bônus será de 10% sobre o seu salário atual
 ● Se o funcionário possuir tempo de casa igual a 6 anos, en-
tão o seu bônus será de 15% sobre o seu salário atual.
3-8
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
 ● Se o funcionário possuir tempo de casa igual a 7 anos ou 
mais, então o seu bônus será de 25% sobre o seu salá-
rio atual.
Para melhor esclarecer as regras descritas anteriormente, 
considere o exemplo onde um funcionário possui 6 anos de casa, 
e recebe um salário de R$1200,00, neste caso, como ele possui 6 
anos de casa, seu bônus será de 15% sobre o salário de R$1200,00 
ou seja ele receberá de bônus o valor de R$180,00.
Um outro exemplo seria um funcionário com 10 anos de casa 
que recebe R$5000,00, neste caso por ter mais do que 7 anos de 
casa ele receberia um bônus de 25% sobre o salário, que neste caso 
é de R$5000,00 ou seja ele receberia o valor de R$1250,00.
Um programa escrito em Python que resolve este problema 
está escrito abaixo:
1| # Programa 8 - Complicando o cálculo do 
bônus de fim de ano
2| 
3| tempo_de_casa = int(input(‘Digite o tem-
po de casa em anos: ‘))
4| salario_base = float(input(‘Digite o sa-
lário atual: ‘))
5| 
6| if tempo_de_casa < 4:
7| porcentagem_bonus = 1
8| else:
9| if tempo_de_casa == 4:
3-9
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
10| porcentagem_bonus = 5
11| else:
12| if tempo_de_casa == 5:
13| porcentagem_bonus = 10
14| else:
15| if tempo_de_casa == 6:
16| porcentagem_bonus = 15
17| else:
18| if tempo_de_casa >= 7:
19| porcentagem_bonus = 25
20| 
21| valor_do_bonus = (salario_base * porcen-
tagem_bonus) / 100
22| print(‘Parabéns você ganhou R$%2.2f de 
bônus’ %(valor_do_bonus))
Veja que agora temos um programa um pouco mais comple-
xo, o objetivo deste exemplo será mostrar que podemos aninhar 
expressões condicionais dentro de outras expressões condicionais, 
o que às vezes pode elevar a complexidade do programa assim 
como seu entendimento, e dificultar a sua manutenção em caso de 
algum problema
Analisando este programa vemos que nas linhas 3 e 4 esta-
mos fazendo a entrada dos dados necessários para a solução do 
problema proposto, veja que armazenamos na variável tempo_
de_casa o valor em anos que o funcionário trabalha na empresa, 
note que o tipo desta variável será int.
3-10
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
Na sequência pedimos ao usuário o valor do salário do fun-
cionário, este valor do tipo float será armazenado na variável sa-
lario_base, e será desta variável que obteremos o valor do bônus 
aplicando a porcentagem que será escolhida dependendo do tem-
po de casa do funcionário.
A primeira condição checamos na linha 4 é se o funcionário 
possui um tempo de casa menor que 4 anos, ou seja os possíveis 
valores que vão cair neste caso são 0, 1, 2, 3. Neste caso o valor 
do bônus será de 1%, veja que na linha 7 armazenamos o valor da 
porcentagem do bônus na variável chamada porcentagem_bo-
nus, mais adiante essa variável vai ser utilizada na linha 21 para o 
cálculo do valor em Reais que o funcionário vai receber.
Caso contrário, se o valor da variável tempo_de_casa for 
maior que 4 então cairemos no bloco de código aninhado abaixo da 
expressão else da linha 8, ou seja este bloco de código começa na 
linha 9, com a expressão condicional que verifica se a variável tem-
po_de_casa é igual a 4, caso essa afirmação seja verdadeira, en-
tão o valor 5 será armazenado na variável porcentagem_bonus, 
para ser usado mais adiante no cálculo final do valor do bônus.
Se a variável tempo_de_casa, não possuir o valor 4, então 
o fluxo do programa, irá parar na linha 11, veja que nessa linha 
temos uma nova expressão else, neste caso o bloco de código que 
será executado está logo abaixo na linha 12 e já começa com a ex-
pressão condicional que verifica se a variável tempo_de_casa é 
igual a 5, se essa condição for verdadeira ou seja retornar o valor 
True, então o bloco de código da linha 13 será executado e o valor 
10 será armazenado na variável porcentagem_bonus, para ser 
utilizado mais a frente.
3-11
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
Mas no caso do valor da variável tempo_de_casa, não ser 
igual a 5 então a próxima linha a ser executada é a linha 15, ou seja 
a primeira linha do bloco de código da expressão else da linha 14. 
Novamente temos uma expressão condicional que vai ava-
liar se o valor da variável tempo_de_casa é igual a 6 e se isso 
for verdade, então o bloco de código da linha 16 será executado, 
e o valor 15 será armazenado na variável porcentagem_bonus 
e será usado posteriormente no cálculo do valor do bônus que é o 
objetivo do nosso programa.
Ainda temos o caso do valor da variável tempo_de_casa 
não ser igual a 6 ou seja a condição da linha 15 vai retornar o valor 
lógico False, neste caso o fluxo do programa vai para a linha 18, 
pois temos uma expressão else na linha 17.
Agora é a vez da expressão condicional que verifica se o va-
lor da variável tempo_de_casa, é maior ou igual a 7, se isso for 
verdade, ou seja se a condição retornar o valor lógico True, então 
o bloco de código da linha 19 será executado, e o valor 25 vai ser 
armazenado na variável porcentagem_bonus.
Por fim temos a linha 21 que vai fazer o cálculo do valor do 
bônus, utilizando como porcentagem o valor armazenado na variá-
vel valor_do_bonus, que foi escolhido pela sequência de expres-
sões condicionais definidas nas linhas de 9 até 19. E na linha 22, 
uma mensagem será exibida ao usuário informado a ele qual será 
o valor do bônus que o funcionário deverá receber no final do ano.
Neste exemplo podemos notar que ao aninhar expressões 
condicionais utilizando o else, vemos que com 4 expressões o có-
digo já começa a ficar difícil de ler, imagine só, se mais 2 expressões 
fossem necessárias para resolver o nosso problema teríamos mais 
blocos de código aninhados, ou seja aumentamos a complexidade e 
consequentemente a dificuldade da manutenção deste código.
3-12
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
Outro ponto interessante para citar neste exemplo é o fato de 
que nem todo o código será executado sempre, ou seja dependendo 
dos valores de entrada do programa, algumas linhas serão execu-
tadas e outras não.
Sabendo que nem todo código pode ser executado, mesmo 
nesse simples exemplo, como faríamos para garantir que todas as 
condições funcionam da maneira que desejamos?
Uma possível resposta para esta pergunta é nós mesmos tes-
tarmos o código para ver se tudo está correto. Veja que neste 
pequeno programa, precisamos montar os seguintes ce-
nários de teste:
1. Vamos usar um valor inteiro menor que 4 para que a 
condição da linha 6 seja verdadeira, ou seja retorne 
o valor True, vamos escolher o valor 1 para a variá-
vel tempo_de_casa.
2. Precisamos testar agora o bloco de código da linha 10, 
ou seja, temos que colocar o valor 4 na variável tem-
po_de_casa, com isso executaremos o bloco de código 
desta linha.
3. Agora queremos um cenário para que a condição da li-
nha 9 seja verdadeira, para isso devemos escolher um 
valor para a variável tempo_de_casa, que torne essa 
expressão condicional verdadeira, neste caso o único va-
lor possível é o inteiro 5.
4. Chegou a vez de testarmos a condição da linha 15, neste 
caso devemos escolher o valor 6 para a variável tem-
po_de_casa, fazendo isto teremos certeza de que o 
bloco de código da linha 16 será executado.
3-13
Linguagem de Programação
 E
X
P
R
ES
S
Õ
ES
 C
O
N
D
IC
IO
N
A
IS
3< / >
5. Mais uma vez, só que agora precisamos executar o bloco 
de código da linha 19 para isso precisamos escolher um 
valor que seja igual a 7 ou maior que 7 para a variável 
tempo_de_casa, vamos escolher o valor 11.
Pronto, com isso temos todos os possíveis

Continue navegando