Resumo Python Fundamentos
OPERADORES
Operações
Sinal
Exemplo
Resultado
Adição
+
3+2
=5
Subtração
-
5-2
=3
Multiplicação
*
5*3
= 15
Divisão
/
15 / 2
= 7.5
Divisão Inteira
//
6 // 3
=2
Resto (Módulo)
%
9%2
=1
Potenciação
**
2 ** 3
=8
Resto (Módulo), utilizamos quando:
Queremos saber se um número é par: a % 2 == 0
Queremos saber se um número é Ímpar: a % 2 != 0
Verificar múltiplos de qualquer número: a % b == 0, ou seja, a é múltiplo
de b?
9 % 3 == 0 → 9 é múltiplo de 3 ✔️
20 % 5 == 0 → 20 é múltiplo de 5 ✔️
15 % 4 == 3 → 15 não é múltiplo de 4 ❌
Mais Algumas Operações Importantes
Além das operações básicas, no Python (e em outras linguagens), possuímos
algumas operações juntas com atribuições como
+=, -= e *= .
Suponhamos que declaramos novamente duas variáveis:
X=6
Y=3
Se caso quiséssemos fazer uma adição da variável X com o número inteiro 4,
poderíamos fazer:
X = X + 4, correto?
Por baixo dos panos temos:
6 = 6 + 4, neste caso como o sinal de “=” é ATRIBUIÇÃO o valor da variável X
mudará para 10.
Mas ao invés de fazermos desta forma mais longa (X = X + 4), podemos
utilizar a seguinte Operação X += 4.
Exemplo
x=8
y=4
x = y + 2 # Por baixo dois panos temos: 8 = 4 + 2
print("Resultado:", x)
Tipos de Dados
Inteiros (int)
ex.: 123, 4, -2, -0, 13, -89
Usamos int quando estamos a contar algo (pessoas, livros, itens, páginas,
tentativas, etc), ou seja, precisamos do valor exato e inteiro, não faz sentido
usar fração, tipo 3.2 pessoas/livros.
Float
ex.: 1.85, 25.7, -87
Usamos os números com vírgula (ou ponto), porque eles representam valores
fracionados ou medidas precisas, ou seja, quando trabalhamos com medidas,
valores monetários, ou precisamos de precisão. Calculamos com ele
percentagem, médias, distâncias, etc.
String
Usado para descrever textos, porém devem estar dentro de duplas aspas (" ")
ou apas simples (' ').
ex.: "Michel", "Olá Mundo", "Ontem foi um dia muito triste porque ninguém se
divertiu"
Boleano
Chamado de booleano (em homenagem a um matemático chamado George
Boole), e pode ser um de dois valores: True ou False.
✅ Comparações: São as formas mais comuns de gerar valores booleanos.
5>3
# True
7<2
# False
10 == 10
# True
8 != 6
# True
4 >= 5
# False
✅ Guardar numa variável: Você pode guardar um valor booleano numa
variável.
eh_maior = 10 > 5
print(eh_maior) # True
✅ Usar em condições (if, while): As estruturas de controle usam booleanos
para tomar decisões.
esta_chovendo = True
if esta_chovendo:
print("Leva guarda-chuva")
else:
print("Vai tranquilo")
✅ Resultados de operações: Operações lógicas também retornam
booleanos.
a=5
b=3
print(a > b and a < 10) # True
print(a < b or b == 3)
# True
print(not a == 5)
# False
✅ Converter valores para booleanos: A função bool() converte qualquer
valor para True ou False, de acordo com regras da linguagem.
print(bool(0))
# False
print(bool(10))
# True
print(bool(""))
# False
print(bool("Oi")) # True
print(bool([]))
# False
print(bool([1,2])) # True
� Regras simples:
Números: 0 é False, qualquer outro é True
Strings: vazia " " é False, qualquer texto é True
Listas e objetos vazios são False
✨ Frase para memorizar:
> Booleano é a base das decisões.
> Tudo que o computador precisa saber é:
> "Sim ou não?" → True ou False.
Exemplo do que pode ser considerado como NÚMERO (int/float) e não Número
(String).
NÚMERO
Exemplo
Tipo
Explicação
1
int
um número inteiro
1.1
float
número decimal
12345.76
float
decimal
-10
int
inteiro negativo
.99
float
decimal, mesmo sem o zero antes do ponto
NÃO NÚMERO
192.168.1.1 - É um endereço de IP, separado por pontos. Não pode ser interpretado
como número único
+244 929587744 - É um número de telefone com símbolos.
$100 OU 100KZ - Tem símbolos de moeda, python entendi isso como textos
11.100.4 - Tem dois pontos decimais. Isso não é um número válido em python
OBSERVAÇÃO
Imagina que queremos escrever por exemplo "100Mil, 1Milhão, 1Mil ou Dez Mil e 20
centavos" como escrever no formato numérico?
Se a resposta foi "100.000 1.000.000 1.000 10.800,20" a resposta está errada.
Porquê?
Porque não são considerados como números pelo python e sim strings (textos), por
causa da formatação que usamos em português.
Entenda o porque: Em português, usamos ponto (.) para milhares e vírgula (,) para
separar decimais.
Mas em Python (e na maioria das linguagens): ponto (.) é usado como separador
decimal e Milhares não tem ponto nem vírgula.
Como Python entende um número real corretamente:
Escrito em Português | Forma correta em Python |
Tipo
1.000
|
1000
|
int
100.000
|
100000
|
int
1.000.000
|
1000000
|
int
10.800,20
|
10800.20
|
float
Funções e Módulos para Manipulação de String
Por que manipular strings?
Porque muitas vezes os dados chegam como textos, e precisamos:
Limpar, Corrigir, Separar, Unir, Substituir, Verificar partes do texto
Principais Funções do String
1- .upper() - Coloca tudo em MAIÚSCULO
frase = "quando eu quero me conectar com alguém, eu me torno o espelho dessa
pessoa"
print(frase.upper()) # QUANDO EU QUERO ME CONECTAR COM ALGUÉM, EU ME
TORNO O ESPELHO DESSA PESSOA
2-.lower - Coloca tudo em minúsculo
Por que é útil:
Em muitas situações, você precisa comparar ou analisar palavras sem se importar
com letras maiúsculas ou minúsculas. Exemplo: quando o usuário digita "Luanda",
"LUANDA" ou "luanda", todas devem ser reconhecidas como iguais.
Onde se usa:
Validação de login (e-mails/nomes de usuários)
Filtros de busca (para tornar a busca mais flexível)
Comparações sem erro por maiúsculas
frase1 = "QUANDO EU QUERO ME CONECTAR COM ALGUÉM, EU ME TORNO O
ESPELHO DESSA PESSOA, PERMITO QUE ELE/A SE ENXERGUE EM MIM"
print(frase1.lower()) # quando eu quero me conectar com alguém, eu me torno o
espelho dessa pessoa, permito que ele/a se enxergue em mim
.lower() e .upper() - Padronização de textos
Formação Profissional
Ao comparar textos em sistemas, usamos .lower() ou .upper() para evitar erro por
letras maiúsculas ou minúsculas.
resposta = input("Deseja continuar? (sim/não)")
if resposta.lower() == "sim":
print("Continuando...")
3- .title() - Coloca a primeira letra de cada palavra da string em maiúscula
Por que é útil:
Ideal para títulos ou nomes completos. Garante que cada palavra importante apareça
corretamente.
Onde se usa: Títulos de artigo, livros ou seções, Formulários que capturam nome
completo, Listagens organizadas
frase2 = "A VIDA é um jogo de surpresa e NÃO JOGAR É ERRO DA NATUREZA, sei
que essa frase não TEM SENTIDO."
print(frase2.title()) # A Vida É Um Jogo De Surpresa E Não Jogar É Erro Da Natureza, Sei
Que Essa Não Tem Sentido
4- .strip() - Remove espaços em branco (ou outros caracteres indesejados) do
início e fim da string
Por que é útil:
Usuários muitas vezes digitam informações com espaços acidentais, que podem
causar erros na hora de comparar, salvar ou processar dados.
Onde se usa: Formulários online, Comparação de textos, Limpeza de dados
importados.
frase3 = "
"
Quando eu quero que alguém me escute, eu começo ouvindo primeiro.
print(frase3.strip()) # Quando eu quero que alguém me escute, eu começo ouvindo
primeiro
5- .replace("antigo", "novo") - Substitui uma parte específica da string por outra.
Por que é útil:
Permite corrigir erros, traduzir palavras, limpar dados ou fazer substituições
específicas no texto de forma dinâmica e automatizada.
Onde se usa: Conversão de formatos de números, Troca de termos em relatórios,
Substituição de gírias ou palavras proibidas.
valor = "10.800,20"
valor_corrigido = valor.replace(".", "").replace(",", ".")
print(valor_corrigido) # 10800.20
anime = "O meu anime preferido é Shingeki no Kyojin"
anime_corrigido = anime.replace("Shingeki no Kyojin", "One Piece.")
print(anime_corrigido) # O meu anime preferido é One Piece
anime1 = ("Se eu pudesse categorizar os melhor animes que eu já assiste, a
classificação seria (em ordem ascendente): Shingeki no Kyojin, "
"Naruto, One Piece, Fairy Tail, Fire Force e Blue Lock")
anime1_corrigido = anime1.replace("Naruto", "The Promised Neverland") \
.replace("Fairy Tail", "Your Name") \
.replace("One Piece", "Ranking of Kings") \
.replace("Fire Force", "A Silent Voice") \
.replace("os melhor animes que eu já assiste", "os animes que eu
gostei muito de assistir")
print(anime1_corrigido) # Se eu pudesse categorizar os animes que eu gostei muito
de assistir, a classificação seria (em ordem ascendente): Shingeki no Kyojin, The
Promised Neverland, Your Name, Ranking of Kings, A Silent Voice e Blue Lock
Existe uma forma mais organizada de fazermos essas substituições
Ideia Principal:
1- Criarmos um dicionário comos textos que queremos trocar
2- Usamos o loop for para aplicar cada substituição de forma automática
texto = "Hoje é sexta feira e gostaria muito de sair com meus amigos para podermos
beber algumas cervejas."
Dicionário com os termos a substituir
substituicoes = {
"sair com meus amigos": "ficar em casa sozinho jogando PS4,",
"para podermos beber": "isso seria mais divertido e relaxante do que tomar"
}
# Loop que aplica cada substituição no texto
for antigo, novo in substituicoes.items():
texto = texto.replace(antigo, novo)
print(texto) # Hoje é sexta feira e gostaria muito de ficar em casa sozinho jogando PS4,
isso seria mais divertido e relaxante do que tomar algumas cervejas
6- .split("separador") - Divide a string em partes, com base em um separador
(espaço, vírgula, etc.) e devolve uma lista com as partes.
Por que é útil:
Muitas vezes temos várias informações em uma só frase. Separar essas partes facilita
o processamento e análise.
Onde se usa: Processamento de arquivos CSV, Análise de comandos escritos pelo
usuário, Separar nome e sobrenome, ou palavras-chaves.
frase4 = "Hoje será um dia muito calmo dado os acontecimento anteriores"
partes = frase4.split(" ")
print(partes) # ['Hoje', 'será', 'um', 'dia', 'muito', 'calmo', 'dado', 'os',
'acontecimento', 'anteriores']
7- .join(lista)- O método .join() serve para juntar os elementos de uma lista de
strings em uma única string só, com um separador que você escolhe (como
espaço, vírgula ou traço, nova linha \n).
Por que é útil:
Facilita a criação de frases ou arquivos de texto organizado, a partir de dados dividido.
Onde se usa: Gerar frases automáticas, Exportar informações formatadas, Criar
relatórios concatenando partes.
nomes = ['Arcanjo', 'Auriane', 'Hazael', 'Ariadina']
frase5 = ",".join(nomes)
print(frase5) # Arcanjo, Auriane, Hazael, Ariadina
💡 1. Para gerar frases automáticas:
palavras = ["Hoje", "o", "tempo", "está", "bom"]
print(" ".join(palavras)) # Hoje o tempo está bom
💡 2. Para formatar dados:
Se quiser exportar nomes separados por vírgula (CSV):
dados = ["João", "Maria", "Pedro"]
linha_csv = ",".join(dados)
print(linha_csv) # João, Maria, Pedro
💡 3. Para escrever arquivos organizados:
linhas = ["Linha 1", "Linha 2", "Linha 3"]
texto = "\n".join(linhas)
print(texto)
# Saída:
# Linha 1
# Linha 2
# Linha 3
⚠️ Importante:
O .join() só funciona com listas de strings.
Se tiver números ou outros tipos, você deve converter primeiro:
numeros = [1, 2, 3]
str_numeros = [str(n) for n in numeros]
resultado = " - ".join(str_numeros)
print(resultado) # 1 - 2 - 3
8- in - Verificar se existe algo dentro da string
email = "etelvinojoaquim7@gmail.com"
print("@" in email) # True
mensagem = "Olá, seja bem-vindo ao sistema!"
if "bem-vindo" in mensagem:
print("Mensagem de boas-vindas detectada!")
✅ Outros usos de in (fora da string) — para ampliar a visão
📦 Em listas:
nomes = ["Ana", "Carlos", "Bruno"]
print("Carlos" in nomes) # True
print("Paulo" in nomes) # False
📦 Em dicionários (verifica chaves, não valores):
dados = {"nome": "Etelvino", "idade": 25}
print("nome" in dados)
# True
print("Etelvino" in dados) # False
OU
"Etelvino" in dados.values() # True
✨ Frase para memorizar:
in responde à pergunta: "Isso está dentro daquilo?"
E responde com True (sim) ou False (não).
9- .find("texto") - Procura a posição (índice) onde um trecho aparece na string. Se
não encontrar, retorna -1.
Por que é útil:
Ajuda a saber se uma palavra existe na frase e onde ela começa, antes de tomar
decisões (como substituir, extrair ou ignorar).
Onde se usa: Verificação de comandos, Busca por palavras em arquivos, Análise de
dados textuais.
mensagem = "Eu amo jogar PS4"
print(mensagem.find("PS4")) # 13
print(mensagem.find("amo")) # 3
print(mensagem.find("beber")) # -1
1. Verificar se uma palavra está presente:
mensagem = "Bem-vindo à plataforma"
if mensagem.find("Bem-vindo") != -1:
print("Mensagem positiva detectada")
2. Cortar a string a partir de uma posição:
texto = "Início: importante"
pos = texto.find(":")
parte_importante = texto[pos+2:]
print(parte_importante) # importante
10 - len() - Mede quantos caracteres (letras, números, espaços, símbolos)
existem dentro da string.
Forma Profissional
Por que é útil:
Ajuda a validar campos (como limites de senha), contar palavras ou caracteres.
Onde se usa: Contar caracteres de um texto, Limites em formulários, Tamanho de
senhas, Em sistemas reais (ex.: cadastro, senhas), usamos len() para garantir
qualidade dos dados.
if len(email) > 50:
print("Email muito longo.")
11- .capitalize() - Transforma apenas a primeira letra da frase em
maiúscula e as demais em minúsculas.
Por que é útil:
Para exibir nomes e frases com aparência mais correta e elegante. Exemplo: "python é
fácil" - "Python é fácil".
Onde se usa: Exibição de nomes, Títulos de seções em um sistema, Apresentação de
repostas formatadas
frase6 = "o mundo não é tão CRUEL quanDo VOCÊ PENSA ANTES DE AGIR."
frase6_renovada = frase6.capitalize()
print(frase6_renovada) # O mundo não é tão cruel quando você pensa antes de agir.
12- .count() - Conta quantas vezes uma letra ou palavra aparece na string.
Por que é útil: Permite detetar frequência de uso, repetições e analisar textos.
Onde se usa: Estatísticas de palavras, Controle de ocorrências (ex.: número de vezes
que um nome aparece), Verificação de repetição de caracteres em senhas .
frutas = "maçã, morango, banana, ananás, laranja, morango, morango, laranja, laranja,
morango, ananás"
quantidade1 = frutas.count("laranja")
quantidade2 = frutas.count("morango")
print(quantidade1) # 3
print(quantidade2) # 4
3- .startswith() / .endswith() - Verificam se a string começa ou termina com
determinado conteúdo.
Por que são úteis:
São ótimos para validar formatos de dados, como verificar se um arquivo termina com
.pdf ou se um código começa com uma letra específica.
Onde se usa: Validação de e-mails ou links, verificar extensões de arquivos, Identificar
prefixos ou sufixos.
arquivo = "relatório final.pdf"
print(arquivo.startswith("relatório")) # True
print(arquivo.endswith(".pdf")) # True
print(arquivo.endswith(".doc")) # False
arquivo2 = "Eu, Michel, quando estudava 3 classe, era apaixonada pela minha
professora Marcia"
print(arquivo2.startswith("Eu")) # True
print(arquivo2.endswith("Marcia")) # True
print(arquivo2.endswith("Telma")) # False
14- .isnumeric(), .isalpha(), .isalnum - Verificam se a string contém apenas
números, apenas letras, ou letras e números misturados, respetivamente.
Por que são úteis
Essas funções garantem que os dados inseridos seguem regras específicas.
Onde se usa: Validação de códigos e senhas, Verificação de nomes e campos
numéricos, Segurança e consistência de dados.
l = "929587744"
m = "Michel"
n = "Michel929587744"
o = "Michel24anos"
p = "Michel2000"
print(l.isnumeric()) # True - só números
print(m.isalpha()) # True - só letras
print(n.isalnum()) # True - letras e números
print(o.isalpha()) # False - contém letras e números
print(p.isnumeric()) # False - contém números e letras
Em cada valor não pode ter símbolo ou espaço, apenas número ou letra
15- .zfill() e .rjust()
O que fazem:
.zfill preenche com zeros à esquerda até atingir um tamanho desejado.
.rjust preenche com espaços (ou outro caractere) à esquerda até alcançar um
tamanho.
Por que são úteis
São usados para formatar números ou strings e manter uma aparência uniforme em
listas, arquivos, ou relatórios.
Onde se usam: Código de produtos, Alinhamento de dados em tabelas,
Impressão de boletos ou faturas.
cod = "50"
cod2 = "Amanhã será um dia especial"
cod_reformado = cod.zfill(6) # Adiciona 0 à esquerda até ter 6 números no total
cod2_reformado = cod.rjust(6) # Adiciona espaço à esquerda até ter 6 caractere no
total
print(cod_reformado)
print(cod2_reformado)
🔁 Inverter texto:
texto[::-1]
🔼 Ordenar lista de números em ordem crescente:
numeros.sort()numeros.sort()
🔽 Ordenar lista de números em ordem decrescente:
numeros.sort(reverse=True)
Conclusão
Essas funções tornam a manipulação de texto fácil, segura e poderosa. Elas são
fundamentais em qualquer projeto real que envolva entrada,
validação ou formatação de textos, como:
Sistemas Web
Aplicações móveis
Sistemas bancários
Inteligência artificial
Leitura de arquivos
Conversores
Conversores são funções que usamos para mudar o tipo de um dado. Por exemplo,
transformar um número em texto, um texto em número, ou um número inteiro em
número decimal.
Para que servem?
Servem para quando você precisa usar um valor de outro tipo, por exemplo:
Juntar um número com uma string (precisa converter para string).
Fazer contas com um número que veio como texto (precisa converter para número).
Arredondar, truncar ou ajustar valores numéricos
Conversor
Significado
Exemplo
int()
Converter para inteiro
int("10") - 10
float()
Converter para número decimal
float("10.5") - 10.5
str()
Converter para string (texto)
str(25) - "25"
bool()
Converter para booleano (True/False)
bool(1) - True
Exemplos
# Convertendo texto em número inteiro
numero = int("45")
print(numero + 10) # 55
# Convertendo número em texto
idade = 30
mensagem = "Idade: " + str(idade)
print(mensagem) # idade: 30
# Convertendo número inteiro em decimal
preco = float(1000)
print(preco + 0.22) # 1000.22
# Convertendo número para booleano
print(bool(0)) # False
print(bool(10)) # True
Cuidado
int("dez") Erro! "dez" não é número
float("10.5") Erro! Precisa ser "10.5"
Por que é importante usar conversores
Na programação, os dados nem sempre vêm no formato que precisamos. E para
garantir que o programa funcione corretamente,
precisamos converter esses dados. É aí que entram os conversores.
1- Tipos diferentes não se misturam
Você não pode somar um número com um texto diretamente.
Por exemplo:
idade = 25
mensagem = "Sua idade é " + idade
print(mensagem) # Isso da Erro!
Esse erro acontece porque o Python não sabe somar texto com número. Mas se você
converter o número em texto com str():
idade = 24
mensagem = "Olá, o meu nome é Etelvino Joaquim e eu tenho " + str(24) + " de
idade." # Agora funciona
print(mensagem)
2- Dados externos vêm como texto (string)
Quando o usuário digita algo, ou quando você lê de um arquivo ou site, dados quase
sempre chegam como texto.
entrada = input("Digite sua idade: ")
print(entrada + 5) # Isso da Erro!
Para resolver convertemos
entrada = 20
idade = int(entrada)
print(idade + 2)
Lista em Python
compras = ["Ovos", "Arroz", "Massa", "Detergente", "Açúcar"]
nomes = ["Michel", "Arcanjo", "Auriane", "Manuel," "Domingas"]
idades = ["24", "11", "8", "63", "52"]
print(compras [4]) # Açúcar
print(nomes) # Imprime toda lista de nome
print(idades[-3]) # 8
Funções úteis com listas
Função
O que faz
append()
Adiciona um item no final
insert(pos, valor)
Insere em uma posição
remove(valor)
Remove um item específico
pop()
Remove o último item
len()
Retorna o tamanho da lista
sort()
Ordena a lista
reverse()
Inverte a ordem
clear()
Apaga todos os itens
animes = ["Naruto", "One Piece", "Blue Lock", "Your Name", "A silent Voice", "Bersek",
"Shingeki no Kyojin", "The Promised Neverland"]
animes.append("Spy x Family")
animes.sort() # letras ordem em ordem alfabética e número em ordem numérica e em
ordem decrescente usamos o .short(reverse=True)
animes.insert(5, "Haikyuu")
animes.pop(1) # Pop remove o último item, mas também podemos direcionar
para tornar mais específico o que queremos remover
print(len(animes))
print(animes)
for item in animes: # Para colocar a lista em ordem horizontal
print(item)
outra formas (sem o for, usando o join e \n)
print("\n".join(animes))
Tuplas
Tuplas são quase idênticas as listas, com a única diferença que não podem ser
modificadas, o valor inicial de uma tupla ficará até o final do programa, seria
basicamente um valor constante, ou seja, depois que você cria uma tupla, você não
pode alterar, adicionar ou remover elementos.
Podemos “navegar” nas tuplas, assim como fazemos com as listas, passando o
índice(posição) do item que desejamos buscar.
Por que usar Tuplas?
Tuplas são úteis quando você precisa armazenar dados que não devem ser alterados.
Alguns exemplos: Data de nascimento, Coordenadas (x, y), Informações fixas de
configuração, Dados que você quer ler, não modificar.
Como declarar uma Tupla?
tupla = ("Real Madrid", "Barcelona", "Arsenal", "Man City", "Man United")
print(tupla)
Características das Tuplas:
Característica
Explicação
Imutável
Não é possível adicionar, remover ou alterar elementos após a criação.
Indexada
Você pode acessar os elementos pela posição (como em listas)
Aceita dados mistos
Pode conter strings, inteiros, floats, booleans, etc.
Mais rápida
A tupla ocupa menos memória e é mais rápida que a lista para leitura.
Exemplo prático:
dados = ("Michel", "22", "Desempregado", "Angolano")
print(dados[-1]) # Angolano
print(dados[1]) # 22
Funções úteis com Tuplas
Funções
| Descrição
len(tuplas)
| Retorna a quantidade de itens
tupla.count(x) | Conta quantas vezes x aparece
tuplas.index(x) | Retornar a posição da primeira ocorrência
Exemplos
cores = ("Azul", "Amarela", "Vermelho", "Laranja", "Branco", "Rosa", "Laranja",
"Castanho", "Verde", "Laranja")
print(len(cores)) # 10 está função conta o quantos elementos existem dentro da tupla.
print(cores.count("Laranja")) # 3 quantas vezes um determinado valor aparece dentro
da tupla.
print(cores.index("Branco")) # 4 retorna, ou menciona a posição onde o elemento está
Se você criar uma tupla com um único item, não esqueça da vírgula no final da
código
tupla_simples = ("Angola",) # Correto
tupla_errada = ("Angola") # Isso é uma string, não uma tupla
print(tupla_errada)
print(tupla_simples)
Dicionário
Um dicionário em Python é uma estrutura de dados que serve para armazenar
informações com "rótulos". Esses rótulos são chamados de chaves (keys) e os dados
que estão ligados a essas chaves são os valores (values).
É como um dicionário real: A palavra é a chave & A Definição da palavra é o valor
Exemplo
pessoa = {
"nome": "Epifânia Joaquim", # "nome" é a chave e "Epifânia Joaquim" é o valor
"idade": 33, # "idade" é a chave e "33" é o valor
"bilhete": "0030026132LA036", # O mesmo princípio para o restante
"altura": 1.85,
"telefone": 929587744
}
Como acessar a todos os dados
print(pessoa["nome"])
print(pessoa["idade"])
print(pessoa["bilhete"])
print(pessoa["altura"])
print(pessoa["telefone"])
Podemos também
Adicionar um novo item: pessoa["profissão"] = "Professora"
Alterar um valor: pessoa["altura"] = 1.75
Remover um item: del pessoa["bilhete"]
Ver todas as chaves: print(pessoa.keys())
ver todos os valores: print(pessoa.values())
Ver tudo, chave e valores: print(pessoa.items())
ver tudo na vertical
for chave, valor in pessoa.items():
print(f"{chave}: {valor}")
carro = {
"marca": "Toyota",
"modelo": "Corolla",
"ano": "2022",
"cor": "vermelha"
}
for chave, valor in carro.items():
print(f"{chave}: {valor}")
Programa Interativo em Python
Um programa interativo é aquele que pede informações ao usuário usando a função
input() e responde com base nesses dados usando print(), ou seja, é um programa
interativo porque interagi com o usuário.
Por que usar?
Permite que o usuário participe
Torna o programa mais dinâmico
É o início para criar sistemas reais
Estrutura básica
Cadastro Simples
nome = input("Digite seu nome: ")
idade = input("Digite sua idade: ")
print(f"Olá, {nome}! Você tem {idade} anos.")
No terminal, é onde vais digitar os seus dados e apertar enter para cada pedido.
input() Pede uma informação ao usuário;
print() Exibe a resposta no terminal;
f" " Formata a mensagem com os dados digitados
CONDIÇÕES EM PYTHON
Um == 1
Dois == 2
Símbolo Descrição
Exemplos
==
IGUAL
Um == Dois
False
!=
DIFERENTE
Um != Dois
True
<
MENOR
Um < Dois
True
<=
MENOR OU IGUAL
Um <= Dois
True
>
MAIOR
Um > Dois
False
>=
MAIOR OU IGUAL
Um >= Dois
False
== (Igual) Verifica se os dois elementos são iguais ou não, se for igual retorna
VERDADEIRO se não volta FALSO;
!= (Diferente) Verifica se os dois elementos são diferentes ou não, se for diferente
retorna VERDADEIRO se não volta FALSO;
< (Menor) Caso o primeiro elemento seja menor que o segundo retorna
VERDADEIRO, caso contrário retorna FALSO;
<= (Menor Igual) Caso o primeiro elemento seja MENOR ou IGUAL ao segundo
elemento retorna Verdadeiro, se não volta FALSO;
> (Maior) Caso o primeiro elemento seja MAIOR que o segundo retorna
VERDADEIRO, se não retorna FALSO;
>= (Maior igual) Caso o primeiro elemento seja MAIOR ou IGUAL ao segundo retorno
VERDADEIRO, se não retorna FALSO.
Por que usamos condições?
Validar dados
Fazer perguntas ao usuário e responder de acordo
Controlar o fluxo do programa
Criar Interatividade
Mas também podemos usar:
if condição:
código se for verdadeiro
elif outra condição:
código se a primeira não for verdadeira, mas essa sim
else:
código se nenhuma das anteriores for verdadeira
Exemplo simples com if
idade = 20
if idade > 18:
print("Você é maior de idade.")
Exemplo com if...else
idade = 16
if idade > 18:
print("Você é maior de idade.")
else:
print("Você é menor de idade")
Exemplo com if...elif...else
nota = 65
if nota >= 90:
print("Excelente")
elif nota >= 70:
print("Bom")
else:
print("Reprovado")
Conclusão
Use if para a primeira verificação. Aqui testamos uma condição. Se for
verdadeira, o bloco de código é executado.
Use elif para uma nova condição que só é verificada se o if anterior for falso.
Podemos ter quantos elif forem necessários, dependendo das possibilidades
que queremos testar.
Use else opcionalmente para o caso final, quando nenhuma das condições
anteriores for verdadeira.
Por que o else não recebe condição?
Porque ele não precisa testar nada. Ele só existe para lidar com todos os casos que
não se enquadram nas condições anteriores.
Isso torna o código mais limpo, evita repetir condições, e serve como uma garantia de
respostas final.
🔁 CONDIÇÕES DENTRO DE CONDIÇÕES EM PYTHON
✅ O que é?
É quando você coloca um if dentro de outro if, para verificar uma nova condição,
somente se a anterior for verdadeira.
🔹 Exemplo simples:
idade = 20
sexo = "M"
if idade >= 18:
if sexo == "M":
print("Homem maior de idade")
else:
print("Mulher maior de idade")
else:
print("Menor de idade")
# Primeiro verifica a idade, depois, dentro do bloco, verifica o sexo.
🔹Exemplo com 3 níveis:
idade = 22
nacionalidade = "angolano"
tem_bi = True
if idade >= 18:
if nacionalidade == "angolano":
if tem_bi:
print("Pode votar em Angola")
else:
print("Precisa tirar o BI")
else:
print("Não é cidadão angolano")
else:
print("Ainda não tem idade para votar")
✅ Estrutura genérica:
if cond1:
if cond2:
# algo
elif cond3:
# outro algo
else:
# outro caminho
elif cond4:
# outro ramo principal
else:
# fallback
Operadores and e or
O que são?
Os operadores and e or são usados para combinar condições.
and: Todas as condições são verdadeiras;
or: Basta uma condição ser verdadeira.
Por que usamos?
'Usamos and e or quando queremos avaliar mais de uma condição ao mesmo tempo,
como em:
Formulário de acesso (login e senha corretos);
Decisões baseadas em idade E nacionalidade;
Situações em que uma coisa OU outra já é suficiente
✅ OPERADOR com and
Imagine que você queira validar se 2 variáveis obedecem uma condição, caso
contrário você ignora e sair do programa.
Para isso podemos utilizar o operador and(E). Se caso TODAS as sentenças forem
VERDADEIRAS em sua CONDIÇÃO, o processo é marcado como TRUE.
Exemplo
variavel = 1
variavel1 = 2
if variavel == 1 and variavel1 == 2:
print(True)
else:
print(False)
A pessoa só pode entrar se for maior de 18 e (and) tiver documento.
idade = 20
documento = True
if idade >= 18 and documento == True:
print("Pode entrar")
else:
print("Não pode entrar")
A pessoa só pode entrar se tiver dinheiro e (and) convite
tem_dinheiro = False
tem_convite = True
if tem_dinheiro and tem_convite:
print("Pode entrar")
else:
print("Não pode entrar")
✅ OPERADOR or (OU)
Imagine que você queira validar se pelo menos uma de 2 variáveis obedece a uma
condição, e se isso acontecer, você executa o processo, caso contrário, ignora ou sai
do programa.
Para isso podemos utilizar o operador or (OU).
Se pelo menos UMA das sentenças for VERDADEIRA, a condição geral é considerada
TRUE (verdadeira) e o processo é executado.
A pessoa pode entrar se tiver dinheiro ou (or) convite
tem_dinheiro = False
tem_convite = True
if tem_dinheiro or tem_convite:
print("Pode entrar")
else:
print("Não pode entrar")
A pessoa pode entrar se for maior de 18 ou (or) tiver documento.
idade = 20
documento = True
if idade >= 18 and documento == True:
print("Pode entrar")
else:
print("Não pode entrar")
✅ OPERADOR not (NÃO)
Imagine que você queira executar um processo somente quando uma condição não
for verdadeira, ou seja, quando for falsa.
Para isso, podemos utilizar o operador not (NÃO).
O not inverte o valor lógico da condição.
Se a condição for True, ela vira False.
Se for False, vira True.
📌 Exemplo prático com not:
logado = False
if not logado:
print("Acesso negado. Faça login.")
Aqui a variável logado é False, mas o not inverte para True, então a mensagem será
exibida.
✅ Comparação com outros operadores:|
Operador Significado
Requer
and
E
Todas as condições verdadeiras
or
Ou
Pelo menos uma verdadeira
not
Não (negação)
Inverte o resultado da condição
📌 Exemplo com expressão:
idade = 17
if not idade >= 18:
print("Menor de idade")
# idade >= 18 dá False, o not inverte e imprime o resultado.
📌 Exemplo com texto:
nome = ""
if not nome:
print("Nome não informado")
Strings vazias são consideradas False. O not inverte para True, e a condição é
executada.
� Resumo final:
not serve para negar uma condição
Inverte: True → False e False → True
Útil para testar se algo não está presente, não foi feito, ou é falso
Laços e Repetição
� O que são Laços de Repetição?
Laços de repetição são estruturas que permitem repetir uma ou mais instruções de
forma automática, até que uma condição seja satisfeita.
🔎 Por que Usamos?
Imagine se você tivesse que escrever o comando print("Olá!") cem vezes para dar
bom dia a cem pessoas...
Com um laço, você escreve uma única vez e manda o computador 100 vezes por
você.
📌 Evita Código repetitivo
📌 Facilita alterações e manutenção
📌 Torna o programa mais inteligente e adaptável
🎯 Quando usamos?
Usamos laços de repetição sempre que:
Precisamos executar ações mais de uma vez
Temos que percorrer listas (ex: nomes, números, produtos)
Queremos esperar uma condição acontecer (ex: o usuário digitar certo)
Desejamos automatizar tarefas rotineiras
# 🛠️ Tipos de laços em Python
Tipo de Laço
Quando Usar?
Explicação
while
Condições indefinidas
Enquanto a condição for verdadeira, continua repetindo
for
Situações definidas
Para cada item em uma sequência ou intervalo, executa
📘 Analogia simples:
Imagine um relógio com alarme que só para de tocar quando você acorda. Isso é um
while.
Agora, imagine que você quer beber 5 copos de água por dia. Você faz isso 5 vezes,
independentemente de qualquer coisa. Isso é um for.
� Cenário real: Lista de compras
Imagine que você tem uma lista de compras com vários itens e quer exibir um por um.
Como já sabemos exatamente quantos
itens existem, o for é ideal aqui.
📌 Exemplo com for:
lista_compras = ["Arroz", "Feijão", "Óleo", "Sabão", "Leite"]
for item in lista_compras:
print("Você precisa comprar:", item)
� O que está acontecendo?
O for pega cada item da lista e guarda temporariamente na variável item.
Em cada volta do laço, ele executa o print() com o valor atual de item.
Quando acaba a lista, o laço também termina.
� Outros usos do for
# Se quiser fazer algo um número fixo de vezes, também pode usar for com a função
range():
Exemplo com range():
for numero in range(1, 6): # Vai de 1 até 5
print("Esta é a repetição de número:", numero)
✅ Quando usar o for?
📌 Quando sabemos quantas vezes a ação será repetida.
📌 Quando estamos percorrendo listas, strings, dicionários ou usando range().
📌 Quando queremos fazer ações organizadas em sequência (ex: imprimir uma
tabela, listar nomes, contar de 1 a 10, etc.).
� Cenário real: Senha correta
Imagine que você tem um sistema que só deixa o usuário entrar quando digita a senha
certa. Você não sabe quantas tentativas ele vai precisar. Isso é perfeito para usar o
while.
📌 Exemplo com while:
senha_correta = "python123"
senha_digitada = input("Digite a senha: ")
while senha_digitada != senha_correta:
print("Senha incorreta. Tente novamente.")
senha_digitada = input("Digite a senha: ")
print("Acesso permitido! Bem-vindo.")
� O que está acontecendo?
📌 O programa pede a senha.
📌 Se estiver errada, ele repete o pedido infinitamente até o usuário digitar
corretamente.
📌 Quando a senha está certa, o laço para automaticamente e o acesso é concedido.
✅ Quando usar o while?
📌 Quando não sabemos quantas vezes a repetição acontecerá.
📌 Quando dependemos de uma condição externa (como entrada do usuário).
📌Quando queremos validar dados, como idade, senha, escolha de opções, etc.
✅ USO DE for E while COM CONDIÇÕES
📍 Parte 1: for com if
for i in range(10):
if i % 2 == 0:
print(f"{i} é par")
🔎 O laço percorre números de 0 a 9. O if filtra apenas os pares.
Exemplo com elif e else:
for idade in [12, 17, 20]:
if idade < 13:
print("Criança")
elif idade < 18:
print("Adolescente")
else:
print("Adulto")
📍 Parte 2: while com if
🔹 Exemplo simples:
contador = 1
while contador <= 5:
if contador == 3:
print("Número especial:", contador)
else:
print("Número comum:", contador)
contador += 1
É uma forma abreviada de escrever: contador = contador + 1
Ou seja, a cada repetição, o valor da variável contador aumenta 1 unidade.
🛑 E se não usasse contador += 1?
🔁 Resultado: o valor de contador nunca muda, fica sempre 1
⛔ Isso gera loop infinito — o programa trava.
🔹 Usando while para esperar uma condição:
senha = ""
while senha != "1234":
senha = input("Digite a senha: ")
print("Acesso liberado!")
📍 Condições mais complexas dentro de laços:
nomes = ["Ana", "Etelvino", "João", "Eva"]
for nome in nomes:
if nome.startswith("E"):
print(f"{nome} começa com E")
elif len(nome) <= 3:
print(f"{nome} é muito curto")
else:
print(f"{nome} não começa com E")
📍 Com break e continue
🔹 break – para o laço quando a condição for verdadeira
for i in range(10):
if i == 5:
break
print(i)
🔹 continue – pula para a próxima repetição
for i in range(5):
if i == 2:
continue
print(i)
� Exemplo real de uso dos dois com condição:
🔸 For com condição:
nomes = ["Ana", "Etelvino", "Carlos"]
for nome in nomes:
if "E" in nome.upper():
print(f"{nome} contém a letra E")
🔸 While com condição:
tentativas = 0
senha = ""
while senha != "python123" and tentativas < 3:
senha = input("Digite a senha: ")
tentativas += 1
if senha == "python123":
print("Acesso liberado")
else:
print("Tentativas excedidas")
✅ Conclusão
Você pode usar qualquer condição dentro de um for ou while
Combinar laços com if, elif, else permite controle total da lógica
Use break e continue para controlar o fluxo
while é ideal para esperar algo acontecer (entrada de usuário, por exemplo)
for é ideal para listas, intervalos e repetições fixas
✅ EXEMPLO: Classificação da idade
idade = int(input("\nDigite sua idade: "))
while idade < 0 or idade > 120:
print("\n❌ Idade inválida. Por favor, digite um valor realista.")
idade = int(input("⚠️ Digite a idade novamente (0 a 120 anos): "))
if idade <= 12:
fase = "Criança � "
elif idade <= 17:
fase = "Adolescente 👦"
elif idade <= 59:
fase = "Adulto 👨"
else:
fase = "Idoso 👴"
print("\n✅ Fase da vida:", fase)
✅ Forma alternativa (com a lista criada antes):
idades = [12, 17, 20] # ← Aqui está a lista criada
for idade in idades:
if idade < 13:
print("Criança")
elif idade < 18:
print("Adolescente")
else:
print("Adulto")
🔄 Exemplo com input para montar a lista:
idades = []
for i in range(3):
idade = int(input(f"Digite a idade da pessoa {i+1}: "))
idades.append(idade)
for idade in idades:
if idade < 13:
print("Criança")
elif idade < 18:
print("Adolescente")
else:
print("Adulto")
✅ DICIONÁRIO COM if, while e for EM PYTHON
📌 1. for COM DICIONÁRIO
🔹 Percorrendo as chaves:
pessoa = {"nome": "Etelvino", "idade": 25, "cidade": "Luanda"}
for chave in pessoa:
print(chave) # nome, idade, cidade
🔹 Percorrendo valores:
for valor in pessoa.values():
print(valor) # Etelvino, 25, Luanda
🔹 Percorrendo chave e valor juntos:
for chave, valor in pessoa.items():
print(f"{chave} → {valor}")
📌 2. if COM DICIONÁRIO
🔹 Verificando se uma chave existe:
produtos = {"arroz": 1000, "feijão": 1500}
if "arroz" in produtos:
print("Tem arroz à venda!")
🔹 Comparando valores:
if produtos["feijão"] > 1200:
print("Feijão está caro!")
📌 3. while COM DICIONÁRIO
Vamos usar um exemplo com input() onde o usuário pode adicionar produtos e preços
ao dicionário:
produtos = {}
while True:
nome = input("Digite o nome do produto (ou 'sair' para parar): ")
if nome.lower() == "sair":
break
preco = float(input("Digite o preço do produto: "))
produtos[nome] = preco
print("\nLista de produtos:")
for produto, preco in produtos.items():
print(f"{produto} → Kz {preco}")
✅ Exemplo completo com if, for e while juntos:
usuarios = {"admin": "1234", "joao": "senha"}
tentativas = 0
while tentativas < 3:
login = input("Usuário: ")
senha = input("Senha: ")
if login in usuarios and usuarios[login] == senha:
print("✅ Acesso permitido")
break
else:
print("❌ Login ou senha incorretos")
tentativas += 1
if tentativas == 3:
print("⛔ Acesso bloqueado após 3 tentativas")
✅ RESUMO: break e continue em Python
🔹 break → Interrompe o laço imediatamente, mesmo que a condição ainda seja
verdadeira.
📌 Usado para:
Sair do laço quando encontrar o que procura. Parar uma repetição antes do fim.
Exemplo:
for numero in range(1, 10):
if numero == 5:
break
print(numero)
🔎 Saída: 1 2 3 4 # vertical
🔹 continue → Pula a repetição atual e vai direto para a próxima.
📌 Usado para:
Ignorar certos valores.
Pular etapas dentro de laços sem parar o laço inteiro.
Exemplo:
for numero in range(1, 6):
if numero == 3:
continue
print(numero)
🔎 Saída: 1 2 3 4 5 # vertical
⚠️ No while, cuidado com o continue:
Sempre atualize a variável de controle antes de usar continue para evitar loop infinito.
❌ Errado (gera loop infinito):
contador = 0
while contador < 5:
if contador == 3:
continue # ❌ contador nunca aumenta
print(contador)
contador += 1
✅ Correto:
contador = 0
while contador < 5:
if contador == 3:
contador += 1 # atualiza antes de pular
continue
print(contador)
contador += 1
🔎 range() vs enumerate()
✅ Ambos são usados para acessar índices durante laços for
� 1. range() → Quando usar?
🔹 Quando só precisas do índice ou estás usando o índice para acessar a lista.
nomes = ["Ana", "Carlos", "Etelvino"]
for i in range(len(nomes)):
print(f"{i} → {nomes[i]}")
� Bom para:
Modificar elementos da lista (ex: lista[i] = ...)
Controlar manualmente o índice (ex: pular de 2 em 2)
Quando precisas de range(start, end, step)
Use range() quando quiser mais controle sobre os índices ou só precisa da
posição para acessar/modificar itens.
� 2. enumerate() → Quando usar?
🔹 Quando precisas do índice e do valor ao mesmo tempo, de forma mais legíve.
nomes = ["Ana", "Carlos", "Etelvino"]
for i, nome in enumerate(nomes):
print(f"{i} → {nome}")
� Bom para:
Deixar o código mais limpo e legível
Evitar len() + range() desnecessários
Usar o índice e o valor juntos com clareza
Use enumerate() sempre que precisar do índice e do valor ao mesmo tempo.
� Qual escolher?
Situação
range()
enumerate
Precisas apenas do **índice**
✅ Sim
❌ Não necessário
Precisas do **índice e valor** simultaneamente
❌ Menos claro
✅ Melhor escolha
Precisas de controle com `step`, `start`, `end`
✅ Sim
❌ Não serve
Quer legibilidade e código limpo
❌ Verboso
✅ Ideal
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )