Disciplina: Informática e Introdução à Programação
Carga Horária Total: 30 horas (15 semanas – 2h/semana)
Faltas permitidas: 30 horas * 0,25% = 7,5 horas ou 3 encontros
Público: Alunos de cursos de Engenharia
Objetivos: Ambientar os alunos às ferramentas de informática (Google Docs, Sheets, Presentation) e introduzir os conceitos básicos de programação em Python, com apoio dos conteúdos do PensePy.
A lógica de programação é como usar um GPS: você dá instruções claras, passo a passo, para chegar a um destino. Cada instrução deve ser precisa para o computador entender e executar. O Portugol nos ajuda a praticar essa lógica escrevendo algoritmos em português, preparando-nos para o Python.
algoritmo "Potências de 9"
inicio
inteiro VAR1
VAR1 <- 9
escrever "9 = ", VAR1
inteiro VAR2
VAR2 <- 9 * 9
escrever "9² = ", VAR2
inteiro VAR3
VAR3 <- 9 * 9 * 9
escrever "9³ = ", VAR3
inteiro SOMA
SOMA <- VAR1 + VAR2 + VAR3
escrever "Soma total = ", SOMA
fim
Saída: 9 = 9, 9² = 81, 9³ = 729, Soma total = 819
Explicação: Declaramos variáveis inteiras, atribuímos valores (9, 9², 9³) e calculamos a soma. O comando escrever
exibe os resultados.
algoritmo "Par ou Ímpar"
inicio
inteiro NUM
escrever "Digite um número: "
ler NUM
se (NUM % 2 = 0) entao
escrever NUM, " é par"
senao
escrever NUM, " é ímpar"
fimse
fim
Explicação: O programa lê um número e usa o operador %
(resto da divisão) para verificar se é par ou ímpar.
Você pode testar os exemplos acima usando uma IDE online chamada Visualg Web, que simula o comportamento do Visualg diretamente no navegador, sem precisar instalar nada.
Acesse: https://visualg.netlify.app
Dica: Você pode alterar os valores e experimentar com diferentes condições!
Python usa indentação (espaços ou tabs) para organizar o código, ao invés de chaves ({}
) como outras linguagens. Isso melhora a legibilidade, mas cuidado: misturar espaços e tabs pode causar erros!
print("Olá, mundo!")
.Tipo | Descrição | Exemplo |
---|---|---|
int |
Números inteiros | 42 , -10 |
float |
Números decimais | 3.14 , -0.5 |
str |
Texto (strings) | "Olá" , "Python" |
bool |
Verdadeiro ou Falso | True , False |
Pense nos tipos como ferramentas para diferentes tarefas:
int
: Uma maçã inteira (ex.: 5).float
: Uma maçã cortada (ex.: 5.25).str
: Uma etiqueta com texto (ex.: "Maçã").bool
: Um interruptor (ex.: True
ou False
).
Entrada e Saída: A função input()
sempre retorna texto (str
). Para números, use int()
ou float()
. Sem conversão, operações podem falhar. Exemplo: "2" + "3"
resulta em "23"
, não 5
.
=
. Exemplo:
nome = "Ana"
idade = 20
altura = 1.65
estudante = True
print(nome, idade, altura, estudante)
Saída: Ana 20 1.65 True
print()
: Exibe dados na tela.input()
: Lê dados do usuário. Exemplo:
nome = input("Digite seu nome: ")
idade = int(input("Digite sua idade: "))
print("Olá,", nome, "! Você tem", idade, "anos.")
Saída (exemplo): Digite seu nome: João
Digite sua idade: 22
Olá, João! Você tem 22 anos.
Nota: Use int()
para converter a entrada (string) em número.
var1 = 9
var2 = 9 ** 2 # 9²
var3 = 9 ** 3 # 9³
soma = var1 + var2 + var3
print("9 =", var1)
print("9² =", var2)
print("9³ =", var3)
print("Soma total =", soma)
Saída: 9 = 9
9² = 81
9³ = 729
Soma total = 819
num = int(input("Digite um número: "))
if num % 2 == 0:
print(num, "é par")
else:
print(num, "é ímpar")
Saída (exemplo): Digite um número: 7
7 é ímpar
# Conversor de Real (BRL) para Dólar (USD)
real = float(input("Digite o valor em Reais (R$): "))
taxa = 5.50 # Taxa de câmbio fixa
dolar = real / taxa
print(f"R${real:.2f} equivale a US${dolar:.2f}")
Saída (exemplo): Digite o valor em Reais (R$): 100
R$100.00 equivale a US$18.18
Explicação: O programa lê um valor em Reais, divide pela taxa de câmbio e usa f-string
com .2f
para formatar com duas casas decimais.
Teste Você Mesmo! No Repl.it, mude a taxa para 5.70 ou teste valores como 50.0.
# Calcula a idade com base no ano de nascimento
ano_nascimento = int(input("Digite seu ano de nascimento: "))
ano_atual = 2025
idade = ano_atual - ano_nascimento
print(f"Em {ano_atual}, você tem {idade} anos.")
Saída (exemplo): Digite seu ano de nascimento: 2000
Em 2025, você tem 25 anos.
Explicação: O programa subtrai o ano de nascimento do ano atual (2025) para calcular a idade, usando int()
para garantir um número inteiro.
Teste Você Mesmo! Teste com anos como 1995 ou 2010.
int("5")
converte string em inteiro.print(type("Hello"))
?
<class 'str'>
type()
retorna o tipo de dado. Como "Hello" é uma string, o resultado é <class 'str'>
.
input()
para int
em num = input("Digite um número: "); print(num + num)
?
input()
retorna uma string. Se num
for "5", num + num
resulta em "55", não 10.
3.14
?
float
3.14
é um número decimal, representado pelo tipo float
em Python.
input()
.int()
para idade e float()
para altura).print()
, como: "Olá, [nome]! Você tem [idade] anos e [altura] metros."
nome = input("Digite seu nome: ")
idade = int(input("Digite sua idade: "))
altura = float(input("Digite sua altura (ex.: 1.75): "))
print("Olá,", nome, "! Você tem", idade, "anos e", altura, "metros.")
Crie um programa que peça o peso (kg) e a altura (m) do usuário e calcule o Índice de Massa Corporal (IMC) usando a fórmula: IMC = peso / (altura * altura)
. Exiba o resultado com duas casas decimais.
# Calculadora de IMC
peso = float(input("Digite seu peso (kg): "))
altura = float(input("Digite sua altura (m): "))
imc = peso / (altura * altura)
print(f"Seu IMC é {imc:.2f}")
Explicação: O programa lê peso e altura como float
, calcula o IMC e usa f-string
com .2f
para formatar a saída.
Teste Você Mesmo! Teste com peso 70.0 e altura 1.75.
Escreva um programa que peça o nome do usuário e o ano atual, e exiba uma saudação como: "Olá, [nome]! Bem-vindo a [ano]!".
# Saudação com ano
nome = input("Digite seu nome: ")
ano = input("Digite o ano atual: ")
print(f"Olá, {nome}! Bem-vindo a {ano}!")
Explicação: O programa lê o nome e o ano como strings e usa uma f-string
para criar uma mensagem personalizada.
Teste Você Mesmo! Use seu nome e o ano 2025.
O Python IDLE tem dois modos: interativo (para testar comandos rapidamente, como uma calculadora) e script (para escrever e salvar programas). No modo interativo, você vê resultados imediatamente após digitar. No modo script, use File > New File
, escreva o código, salve e execute com Run > Run Module
.
$ python
>>> 10 + 10
20
>>> print("aprendendo python")
aprendendo python
Atenção: Use aspas corretas para delimitar strings (ex.: "aprendendo python").
.py
antes de executar, ou o IDLE mostrará um erro.
Crie um novo arquivo no IDLE, escreva o código abaixo, salve como conversor.py
e execute.
# Conversor de Celsius para Fahrenheit
celsius = float(input("Digite a temperatura em Celsius: "))
fahrenheit = (celsius * 9/5) + 32
print(f"{celsius}°C equivale a {fahrenheit}°F")
Saída (exemplo): Digite a temperatura em Celsius: 25
25°C equivale a 77°F
Explicação: O programa usa float
para aceitar decimais, aplica a fórmula F = (C * 9/5) + 32
, e formata a saída com f-string
.
Teste Você Mesmo! No IDLE, crie o arquivo e teste com valores como 0 ou 37.
Escreva este código no IDLE, salve e execute.
# Calcula a área de um círculo
import math
raio = float(input("Digite o raio (m): "))
area = math.pi * (raio ** 2)
print(f"A área do círculo é {area:.2f} m²")
Saída (exemplo): Digite o raio (m): 5
A área do círculo é 78.54 m²
Explicação: Importamos math
para usar math.pi
. O operador **
calcula o quadrado do raio, e .2f
limita a saída a duas casas decimais.
Teste Você Mesmo! Teste com raios como 2.5 ou 10.
Operadores seguem regras de precedência, como na matemática (PEMDAS: Parênteses, Exponenciação, Multiplicação/Divisão, Adição/Subtração). Por exemplo, em 2 + 3 * 4
, a multiplicação ocorre primeiro, resultando em 14, não 20. Use parênteses para clareza, como (2 + 3) * 4
para obter 20.
Operadores são úteis em cenários reais, como calcular descontos em compras ou converter unidades de tempo.
Operador | Descrição | Exemplo |
---|---|---|
+ |
Adição | 5 + 3 = 8 |
- |
Subtração | 5 - 3 = 2 |
* |
Multiplicação | 5 * 3 = 15 |
/ |
Divisão | 6 / 2 = 3.0 |
** |
Potenciação | 2 ** 3 = 8 |
Teste seus conhecimentos com estes desafios:
Variáveis são "caixas" para armazenar valores. Veja alguns exemplos:
# Atribuição de variáveis
lucky = 7
print(lucky) # Imprime: 7
mensagem = "E aí, velhinho?"
n = 17
pi = 3.14159
print(mensagem) # Imprime: E aí, velhinho?
print(n) # Imprime: 17
print(pi) # Imprime: 3.14159
Prática:
red = 5
blue = 10
print(red, blue) # Imprime: 5 10
yellow = red
print(yellow, red, blue) # Imprime: 5 5 10
Python trabalha com diferentes tipos de dados. Use a função type()
para identificar o tipo:
print(type("Alô, Mundo!")) #
print(type(17)) #
print(type(3.2)) #
print("I am a single quoted string")
print("So I said, \"You'll never understand me!\"")
print("bouncy, " * 8)
len("Hello, world!")
retorna 13Concatenando strings:
fruta = "banana"
assada = " com canela"
print(fruta + assada) # banana com canela
Fatiamento (slicing):
string = "Hello, world!"
print(string[0]) # 'H'
print(string[-6:-1]) # 'world'
Conversão de tipos:
number = 2
print(str(number)) # '2'
print(int("2")) # 2
.upper()
e .lower()
.Listas armazenam vários valores:
spam = ["bacon", "eggs", 42]
print(spam[0]) # 'bacon'
spam.append(10)
print(spam) # ['bacon', 'eggs', 42, 10]
spam.insert(1, 'and')
print(spam) # ['bacon', 'and', 'eggs', 42, 10]
del spam[1]
print(spam) # ['bacon', 'eggs', 42, 10]
Exemplo de programa para calcular a área e o perímetro de um retângulo:
# coding: utf-8
print("Insira as informações do retângulo.")
length = input("Comprimento: ")
width = input("Largura: ")
print("Área:", length * width)
print("Perímetro:", 2 * length + 2 * width)
Salve este código em um arquivo area.py
e execute com python area.py
.
imc = peso / (altura * altura)
.Exemplos de funções integradas:
print("max(80, 100, 1000):", max(80, 100, 1000))
pyList = ['e', 'a', 'u', 'o', 'i']
print(sorted(pyList))
Funções comuns: print()
, type()
, str()
, int()
, float()
, bool()
, max()
, sorted()
, etc.
O Google Colab é uma ferramenta gratuita que permite escrever e executar código Python diretamente no navegador. Ele é ideal para quem está começando, pois não requer instalação e oferece acesso a bibliotecas populares como NumPy, Pandas e Matplotlib.
# Exemplo de código no Google Colab
nome = input("Digite seu nome: ")
print("Olá,", nome, "! Bem-vindo ao Google Colab.")
Ctrl + Enter
.
# Cálculo de potências
base = 2
expoente = 10
resultado = base ** expoente
print(f"{base} elevado a {expoente} é {resultado}")
# Contar vogais em uma string
texto = "Google Colab é incrível!"
vogais = "aeiouAEIOU"
contador = sum(1 for letra in texto if letra in vogais)
print(f"O texto tem {contador} vogais.")
# Criar e percorrer uma lista
frutas = ["maçã", "banana", "laranja"]
for fruta in frutas:
print(f"Eu gosto de {fruta}!")
!pip install
. Exemplo:
!pip install seaborn
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]
plt.plot(x, y)
plt.title("Gráfico de Linha")
plt.xlabel("Eixo X")
plt.ylabel("Eixo Y")
plt.show()
2 + 3 * 4
?
*
) tem precedência sobre a adição (+
). Assim, 3 * 4 = 12
, e 2 + 12 = 14
.
5 ** 3
**
é usado para potenciação. 5 ** 3
calcula 5³, que é 125.
Run > Run Module
Run > Run Module
(ou pressione F5) para executá-lo.
Este slide apresentou os conceitos básicos de lógica de programação e introdução ao Python. Pratique esses conceitos e explore os recursos e exercícios sugeridos para aprimorar seu conhecimento. Experimente criar seus próprios programas e manipular variáveis, strings, listas e funções. Além disso, utilize o Google Colab para praticar e compartilhar seus projetos de forma colaborativa.
if
, elif
, else
.
Pense em condicionais como uma árvore de decisões: se você está com vontade de ação, escolhe um filme de super-heróis; se prefere comédia, vai de animação; senão, talvez um drama. O Python usa if
, elif
e else
para guiar o programa por essas escolhas.
Na vida real, tomamos decisões o tempo todo: "Se estiver chovendo, levo guarda-chuva; senão, vou sem." Em programação, usamos if
para expressar esse tipo de lógica.
if condição:
# código executado se a condição for verdadeira
elif outra_condição:
# código executado se a outra condição for verdadeira
else:
# código executado se nenhuma for verdadeira
Cuidados comuns: Esquecer os dois pontos (:
) ou a indentação causa erros. Além disso, use ==
para comparar valores, não =
(que atribui valores).
Exemplo de erro:
# Errado
if idade = 18 # Usa = em vez de ==
print("Maior")
# Correto
if idade == 18:
print("Maior")
Operadores Lógicos: Combine condições com and
, or
e not
.
Operador | Descrição | Exemplo |
---|---|---|
and |
Verdadeiro se ambas condições são verdadeiras | idade >= 18 and possui_carteira |
or |
Verdadeiro se pelo menos uma condição é verdadeira | idade < 13 or idade > 65 |
not |
Inverte o valor da condição | not esta_chovendo |
idade = int(input("Digite sua idade: "))
if idade >= 18:
print("Você é maior de idade.")
else:
print("Você é menor de idade.")
nota = float(input("Digite sua nota: "))
if nota >= 9:
print("Conceito A")
elif nota >= 7:
print("Conceito B")
elif nota >= 5:
print("Conceito C")
else:
print("Conceito D")
Verifica se um cliente recebe desconto com base no valor da compra e status de membro.
# Verifica elegibilidade para desconto
valor_compra = float(input("Digite o valor da compra (R$): "))
membro = input("É membro? (sim/não): ").lower()
if valor_compra >= 100 and membro == "sim":
print("Você tem direito a 10% de desconto!")
else:
print("Desconto não aplicável.")
Saída (exemplo): Digite o valor da compra (R$): 150
É membro? (sim/não): sim
Você tem direito a 10% de desconto!
Explicação: Usa and
para combinar condições. .lower()
converte a entrada para minúsculas, garantindo consistência.
Teste Você Mesmo! No Python Tutor, teste com valor 80 e “não” ou 200 e “sim”.
Simula ações baseadas na cor do semáforo.
# Simulador de semáforo
cor = input("Digite a cor do semáforo (vermelho, amarelo, verde): ").lower()
if cor == "vermelho":
print("Pare!")
elif cor == "amarelo":
print("Atenção, prepare-se.")
elif cor == "verde":
print("Siga em frente.")
else:
print("Cor inválida.")
Saída (exemplo): Digite a cor do semáforo (vermelho, amarelo, verde): verde
Siga em frente.
Explicação: Usa múltiplos elif
para verificar a cor. O else
lida com entradas inválidas.
Teste Você Mesmo! Teste com “AMARELO” ou “azul” no Python Tutor.
Crie um programa que:
nome = input("Digite seu nome: ")
temperatura = float(input("Digite sua temperatura corporal: "))
if temperatura >= 37.5:
print(nome, "você pode estar com febre.")
else:
print(nome, "sua temperatura está normal.")
:
no final de cada linha com if
, elif
ou else
.Tab
).int()
ou float()
para converter valores de input()
.if
, elif
e else
.
O Python Tutor é uma ferramenta online gratuita que permite visualizar como o Python executa seu código linha por linha. Isso é muito útil para entender melhor o funcionamento das variáveis, das estruturas de decisão (como o if
) e do fluxo de execução.
Você verá, em tempo real, como o Python cria e modifica as variáveis, toma decisões com if
, e executa cada linha do código. É uma ótima maneira de estudar e aprender com calma!
Copie e cole o código abaixo no site Python Tutor e clique em "Visualize Execution" para ver passo a passo como o Python interpreta cada linha.
idade = 16
if idade < 13:
print("Criança")
elif idade < 18:
print("Adolescente")
else:
print("Adulto")
idade < 13
e como é falsa, pula para o elif
.idade < 18
é verdadeira, ele executa print("Adolescente")
.else
é ignorado.Dica: Altere o valor de idade
para 10
, 18
ou 30
e veja como muda o resultado!
if
for falsa e não houver else
?if
elif
?if
:
após o if
?else
é executadox = 8
?if x > 5:
print("Maior que 5")
else:
print("Menor ou igual a 5")
Loops são como seguir uma receita: um for
é ideal para repetir um passo um número fixo de vezes, como cortar 5 cenouras; um while
repete até atingir um estado, como amassar a massa até ficar macia.
Os loops permitem repetir ações várias vezes. Em Python, os dois principais tipos são:
while
: repete enquanto uma condição for verdadeira.for
: percorre uma sequência ou intervalo de valores.
Cuidados: Em while
, evite loops infinitos esquecendo de atualizar a condição. Em for
, atenção ao intervalo do range
para evitar erros de contagem.
Exemplo de erro:
# Errado (loop infinito)
contador = 1
while contador <= 5:
print(contador) # Falta contador += 1
# Correto
contador = 1
while contador <= 5:
print(contador)
contador += 1
Loops Aninhados: Um loop dentro de outro, útil para tarefas como criar tabelas ou padrões. Exemplo: imprimir um grid 3x3.
while
contador = 1
while contador <= 5:
print("Contando:", contador)
contador += 1
Saída: Contando: 1, 2, 3, 4, 5
for
for i in range(1, 6):
print("Contando:", i)
Saída: Contando: 1, 2, 3, 4, 5
while
e for
O for
é ideal quando você sabe quantas vezes quer repetir algo.
O while
é melhor para repetições com condições dinâmicas, como esperar uma senha correta.
Copie o código abaixo e cole no Python Tutor para visualizar passo a passo.
# Soma de 1 até N
n = int(input("Digite um número: "))
soma = 0
for i in range(1, n + 1):
soma += i
print("A soma é:", soma)
Observe: como a variável i
percorre os valores e como soma
é atualizada em cada passo.
Pede uma senha até que tenha pelo menos 6 caracteres.
# Validador de senha
senha = input("Digite uma senha (mínimo 6 caracteres): ")
while len(senha) < 6:
print("Senha muito curta!")
senha = input("Digite novamente: ")
print("Senha válida!")
Saída (exemplo): Digite uma senha (mínimo 6 caracteres): abc
Senha muito curta!
Digite novamente: python123
Senha válida!
Explicação: O while
continua até len(senha) >= 6
. Usa input
para interação dinâmica.
Teste Você Mesmo! No Python Tutor, teste com senhas como “123” e “segura”.
Imprime uma tabela de multiplicação 5x5.
# Tabela de multiplicação 5x5
for i in range(1, 6):
for j in range(1, 6):
print(f"{i} x {j} = {i * j}")
print() # Linha em branco após cada linha
Saída (exemplo):
1 x 1 = 1
1 x 2 = 2
...
5 x 4 = 20
5 x 5 = 25
Explicação: Usa loops aninhados: o externo (i
) controla linhas, o interno (j
) controla colunas.
Teste Você Mesmo! Teste com range(1, 4)
para uma tabela 3x3.
while
.Desafio: Some todos os números pares entre 1 e 100.
soma = 0
for i in range(2, 101, 2):
soma += i
print("Soma dos pares:", soma)
Desafio: Conte quantos números entre 1 e 50 são divisíveis por 7.
contador = 0
for i in range(1, 51):
if i % 7 == 0:
contador += 1
print("Quantidade divisíveis por 7:", contador)
Implemente um jogo simples onde o usuário deve adivinhar um número entre 1 e 10.
import random
numero_secreto = random.randint(1, 10)
tentativa = 0
while True:
chute = int(input("Adivinhe o número entre 1 e 10: "))
tentativa += 1
if chute == numero_secreto:
print(f"Parabéns! Acertou em {tentativa} tentativas!")
break
else:
print("Tente novamente!")
Objetivo: Praticar o uso de while
com entrada de dados e condição de parada.
Recurso complementar: PensePy - Iteração
1. Qual a principal diferença entre os laços for
e while
?
2. O que o código for i in range(3):
faz?
3. Qual é o papel do i += 1
em um laço while
?
4. Qual saída é gerada por: for i in range(1, 4): print(i)
?
5. O que acontece se a condição do while
for sempre verdadeira e não houver break
?
Listas são como uma lista de compras: você pode adicionar itens (ex.: maçãs, leite), remover ou alterar, e ela cresce ou encolhe conforme necessário. Em Python, listas são flexíveis e podem conter números, textos ou até outras listas.
Listas em Python (também chamadas de vetores) são estruturas que armazenam coleções de valores. Elas podem crescer dinamicamente e armazenar qualquer tipo de dado.
notas = [7.5, 8.0, 9.2]
print(notas[0]) # exibe 7.5
notas[1] = 8.5 # altera a segunda nota
for nota in notas:
print("Nota:", nota)
Métodos Úteis:
Método | Descrição | Exemplo |
---|---|---|
append(x) |
Adiciona x ao final da lista | notas.append(8.0) |
pop(i) |
Remove e retorna o item no índice i | notas.pop(0) |
len(lista) |
Retorna o tamanho da lista | len(notas) |
Cuidados: Evite acessar índices inválidos (ex.: notas[10]
em uma lista de 3 itens) ou modificar uma lista enquanto itera, o que pode causar erros.
Exemplo de erro:
# Errado
notas = [1, 2, 3]
for n in notas:
notas.pop(0) # Modifica durante iteração
# Correto
notas = [1, 2, 3]
while len(notas) > 0:
print(notas.pop(0))
Vamos criar um programa que calcula a média das notas informadas pelo usuário.
notas = []
for i in range(3):
valor = float(input(f"Digite a nota {i+1}: "))
notas.append(valor)
media = sum(notas) / len(notas)
print("Média:", media)
Matrizes são como uma planilha: cada linha é uma lista, e cada célula é acessada por dois índices (linha, coluna). Por exemplo, em matriz[1][2]
, 1 é a linha e 2 é a coluna.
Cuidados: Verifique os limites da matriz para evitar erros de índice (ex.: matriz[3][0]
em uma matriz 3x3 causa erro).
Em Python, uma matriz pode ser representada por uma lista de listas. Exemplo: matriz 3x3.
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matriz[1][2]) # exibe 6
for linha in matriz:
for elemento in linha:
print(elemento, end=" ")
print()
Inverte uma lista usando pop
e append
.
# Inverter uma lista
numeros = [1, 2, 3, 4, 5]
invertida = []
while len(numeros) > 0:
invertida.append(numeros.pop())
print("Lista invertida:", invertida)
Saída: Lista invertida: [5, 4, 3, 2, 1]
Explicação: pop()
remove o último elemento, e append
adiciona à nova lista, invertendo a ordem.
Teste Você Mesmo! Teste com [10, 20, 30]
no Python Tutor.
Transpõe uma matriz 3x3 (troca linhas por colunas).
# Transpor matriz 3x3
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
transposta = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in range(3):
for j in range(3):
transposta[j][i] = matriz[i][j]
print("Matriz transposta:")
for linha in transposta:
print(linha)
Saída:
Matriz transposta:
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
Explicação: Usa loops aninhados para copiar matriz[i][j]
para transposta[j][i]
.
Teste Você Mesmo! Teste no Python Tutor e observe a troca de índices.
Cole esse código no Python Tutor para entender passo a passo:
# Soma dos elementos de uma matriz 3x3
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
soma = 0
for linha in matriz:
for valor in linha:
soma += valor
print("Soma total:", soma)
Observe: o valor da variável soma
sendo atualizado a cada passo no laço aninhado.
Escreva os programas abaixo no Python Tutor ou IDLE, execute e compartilhe o código com o professor.
Crie um programa que peça 5 notas e crie uma lista apenas com notas ≥ 7.0.
# Filtrar notas aprovadas
notas = []
aprovadas = []
for i in range(5):
nota = float(input(f"Digite a nota {i+1}: "))
notas.append(nota)
if nota >= 7.0:
aprovadas.append(nota)
print("Notas aprovadas:", aprovadas)
Explicação: Usa um loop para coletar notas e uma condição para adicionar apenas notas ≥ 7.0 à lista aprovadas
.
Teste Você Mesmo! Teste com notas como 6.5, 7.8, 9.0, 5.5, 8.2.
Escreva um programa que some os elementos da diagonal principal de uma matriz 3x3.
# Soma da diagonal principal
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
soma_diagonal = 0
for i in range(3):
soma_diagonal += matriz[i][i]
print("Soma da diagonal principal:", soma_diagonal)
Explicação: A diagonal principal tem índices [0][0]
, [1][1]
, [2][2]
. O loop usa i
para acessar ambos.
Teste Você Mesmo! Teste com uma matriz diferente no Python Tutor.
Crie um programa que remova duplicatas de uma lista, mantendo a ordem original.
# Remover duplicatas
numeros = [1, 2, 2, 3, 1, 4]
sem_duplicatas = []
for num in numeros:
if num not in sem_duplicatas:
sem_duplicatas.append(num)
print("Lista sem duplicatas:", sem_duplicatas)
Explicação: Verifica se cada número já está em sem_duplicatas
antes de adicioná-lo, preservando a ordem.
Teste Você Mesmo! Teste com [5, 5, 3, 3, 2]
.
Estude mais sobre listas no PensePy:
notas
?notas[2]
notas[3]
notas[1]
append
pop
len
matriz[1][2]
matriz[2][1]
matriz[0][2]
lista[5]
em uma lista com 3 elementos?numeros = [1, 2, 3]
numeros.append(4)
print(numeros)
Dicionários em Python são coleções que armazenam pares chave-valor. Cada chave é única e aponta para um valor.
Dicionários são como uma agenda telefônica: cada nome (chave) está ligado a um número (valor). As chaves devem ser imutáveis (ex.: strings, números, tuplas), mas os valores podem ser qualquer tipo, até outros dicionários.
Cuidados: Evite acessar chaves inexistentes (use .get()
) e modificar um dicionário durante iteração, o que pode causar erros.
Exemplo de erro:
# Errado
d = {"a": 1, "b": 2}
for k in d:
del d[k] # Modifica durante iteração
# Correto
d = {"a": 1, "b": 2}
for k in list(d.keys()):
del d[k]
Dicionários Aninhados: Um dicionário pode conter outros dicionários, útil para estruturas complexas como um banco de dados de alunos.
aluno = {"nome": "João", "idade": 20, "curso": "Computação"}
print(aluno["nome"]) # Saída: João
aluno["idade"] = 21
aluno["nota"] = 8.5
aluno.keys() # retorna todas as chaves
aluno.values() # retorna todos os valores
aluno.items() # retorna tuplas (chave, valor)
if "curso" in aluno:
print("Curso presente")
Ao copiar um dicionário, use copy()
para evitar referências:
novo = aluno.copy()
novo["nome"] = "Maria"
Dicionários são úteis para representar matrizes esparsas, onde a maioria dos valores é zero:
matriz = {}
matriz[(1, 2)] = 5
matriz[(3, 4)] = 7
print(matriz.get((1, 2), 0)) # retorna 5
print(matriz.get((0, 0), 0)) # retorna 0 (padrão)
Copie o código abaixo e cole no Python Tutor para entender como o Python manipula dicionários.
# Exemplo de uso de dicionários
aluno = {
"nome": "Ana",
"idade": 21,
"notas": [8.5, 9.0, 7.5]
}
# Acessando valores
print("Nome:", aluno["nome"])
print("Idade:", aluno["idade"])
# Alterando um valor
aluno["idade"] = 22
# Adicionando uma nova chave
aluno["curso"] = "Engenharia"
# Iterando sobre o dicionário
for chave in aluno:
print(chave, "->", aluno[chave])
aluno
armazena pares chave-valor.for
percorre cada chave e exibe o valor correspondente.Conta quantas vezes cada palavra aparece em uma frase.
# Contador de frequência
frase = input("Digite uma frase: ").lower()
palavras = frase.split()
frequencia = {}
for palavra in palavras:
frequencia[palavra] = frequencia.get(palavra, 0) + 1
print("Frequência:", frequencia)
Saída (exemplo): Digite uma frase: olá mundo olá
Frequência: {'olá': 2, 'mundo': 1}
Explicação: Usa .get()
para evitar erros com chaves novas e atualiza contagens dinamicamente.
Teste Você Mesmo! Teste com “a a b” no Python Tutor.
Gerencia um dicionário aninhado de alunos com notas.
# Banco de dados de alunos
alunos = {
"João": {"idade": 20, "notas": [8.0, 7.5]},
"Maria": {"idade": 19, "notas": [9.0, 8.5]}
}
print("Notas de João:", alunos["João"]["notas"])
alunos["Maria"]["notas"].append(9.5)
print("Notas atualizadas de Maria:", alunos["Maria"]["notas"])
Saída:
Notas de João: [8.0, 7.5]
Notas atualizadas de Maria: [9.0, 8.5, 9.5]
Explicação: Acessa e modifica dicionários aninhados usando múltiplos índices.
Teste Você Mesmo! Adicione um novo aluno no Python Tutor.
livro = {
"título": "Dom Casmurro",
"autor": "Machado de Assis",
"ano": 1899
}
print(livro)
Explicação: Um dicionário permite armazenar pares chave-valor. Neste exemplo, temos três informações associadas ao livro.
frase = input("Digite uma frase: ")
palavras = frase.split()
resultado = {}
for palavra in palavras:
resultado[palavra] = len(palavra)
print(resultado)
Explicação: O código divide a frase em palavras e cria um dicionário onde a chave é a palavra e o valor é seu comprimento.
matriz_esparsa = {
(0, 1): 5,
(1, 2): 8,
(2, 0): 3
}
print(matriz_esparsa)
Explicação: Em uma matriz esparsa, apenas as posições com valores diferentes de zero são armazenadas. As chaves são tuplas com as coordenadas (linha, coluna).
Crie um programa que peça o nome de um aluno e uma nova nota, atualizando seu dicionário de notas.
# Atualizar notas
alunos = {"João": [8.0, 7.5], "Maria": [9.0, 8.5]}
nome = input("Digite o nome do aluno: ")
nota = float(input("Digite a nova nota: "))
if nome in alunos:
alunos[nome].append(nota)
print(f"Notas de {nome}:", alunos[nome])
else:
print("Aluno não encontrado.")
Explicação: Verifica se o aluno existe com in
e usa append
para adicionar a nota.
Teste Você Mesmo! Teste com “João” e nota 9.0, ou um nome inválido.
Escreva um programa que inverta chaves e valores de um dicionário (assumindo valores únicos).
# Inverter dicionário
d = {"a": 1, "b": 2, "c": 3}
invertido = {}
for chave, valor in d.items():
invertido[valor] = chave
print("Dicionário invertido:", invertido)
Explicação: Usa .items()
para acessar pares chave-valor e cria um novo dicionário com chaves e valores trocados.
Teste Você Mesmo! Teste com {"x": 10, "y": 20}
.
Some os valores não-nulos de uma matriz esparsa representada por um dicionário.
# Soma de matriz esparsa
matriz = {(0, 1): 5, (1, 2): 8, (2, 0): 3}
soma = 0
for valor in matriz.values():
soma += valor
print("Soma dos valores:", soma)
Explicação: Usa .values()
para somar todos os valores do dicionário, ignorando as chaves (coordenadas).
Teste Você Mesmo! Teste com uma matriz diferente.
Clique em uma alternativa para verificar sua resposta. A correta será destacada em verde, e a incorreta em vermelho, com feedback detalhado.
"idade"
em um dicionário aluno
?aluno['idade']
aluno('idade')
aluno.idade
keys()
values()
items()
.get()
?d = {'a': 1, 'b': 2}
d['c'] = 3
print(d)
d
em um laço for
?for k, v in d.items():
for k in d:
for v in d.values():
Em Python, arquivos podem ser abertos, lidos e escritos facilmente usando a função open()
.
Arquivos em Python são como cadernos: você pode ler anotações (modo leitura), escrever novas (modo escrita) ou adicionar ao final (modo append). A função open()
gerencia essas operações.
Modos de Abertura:
Modo | Descrição | Exemplo |
---|---|---|
"r" |
Leitura (padrão, erro se o arquivo não existe) | open("dados.txt", "r") |
"w" |
Escrita (sobrescreve, cria se não existe) | open("saida.txt", "w") |
"a" |
Adicionar ao final (cria se não existe) | open("log.txt", "a") |
Cuidados: Evite abrir arquivos sem fechá-los (use with
) e verifique se o arquivo existe ao ler para evitar erros como FileNotFoundError
.
Exemplo de erro:
# Errado
arquivo = open("nao_existe.txt", "r") # Erro: arquivo não existe
print(arquivo.read())
# Correto
try:
with open("nao_existe.txt", "r") as arquivo:
print(arquivo.read())
except FileNotFoundError:
print("Arquivo não encontrado!")
Tipos de Arquivos: Esta aula foca em arquivos de texto (ex.: .txt), que armazenam strings. Arquivos binários (ex.: imagens) usam modos como "rb"
ou "wb"
.
# Abre um arquivo para leitura
arquivo = open("dados.txt", "r")
conteudo = arquivo.read()
print(conteudo)
arquivo.close()
Dica: Sempre feche o arquivo após usá-lo com close()
.
with
(forma recomendada)with open("dados.txt", "r") as arquivo:
for linha in arquivo:
print(linha.strip())
Vantagem: O arquivo é fechado automaticamente, mesmo se ocorrerem erros.
with open("saida.txt", "w") as arquivo:
arquivo.write("Linha 1\n")
arquivo.write("Linha 2\n")
Observação: O modo "w"
sobrescreve o conteúdo. Para adicionar ao final use "a"
.
Copie e cole o código abaixo em Python Tutor para entender como arquivos são manipulados:
with open("exemplo.txt", "w") as f:
f.write("Olá mundo\nAprendendo arquivos")
with open("exemplo.txt", "r") as f:
for linha in f:
print(linha)
Observe: O conteúdo é gravado e, depois, lido linha por linha.
Conta quantas linhas existem em um arquivo de texto.
with open("dados.txt", "r") as arquivo:
linhas = arquivo.readlines()
print("Número de linhas:", len(linhas))
Saída (exemplo): Número de linhas: 3
Explicação: readlines()
retorna uma lista de linhas, e len()
conta quantas são.
Teste Você Mesmo! Crie um arquivo com 5 linhas e teste no Python Tutor.
Adiciona uma entrada com data e hora a um arquivo de log.
from datetime import datetime
with open("log.txt", "a") as arquivo:
agora = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
arquivo.write(f"Entrada em: {agora}\n")
Saída (exemplo no arquivo): Entrada em: 05/05/2025 14:30:00
Explicação: Usa modo "a"
para adicionar sem sobrescrever e formata a data com strftime
.
Teste Você Mesmo! Execute várias vezes e verifique o arquivo.
Lê números de um arquivo e imprime os maiores que 10.
with open("numeros.txt", "r") as arquivo:
for linha in arquivo:
numero = float(linha.strip())
if numero > 10:
print("Número:", numero)
Saída (exemplo): Número: 15.5
Número: 20.0
Explicação: Lê cada linha, converte para float
, e filtra com uma condição.
Teste Você Mesmo! Crie um arquivo com números (ex.: 5, 12, 8, 15) e teste.
alunos.txt
e escreva o nome de 3 alunos nele.
with open("alunos.txt", "w") as f:
f.write("Ana\nBruno\nCarlos")
alunos.txt
e imprima cada nome com a mensagem "Presente: " antes do nome.
with open("alunos.txt", "r") as f:
for nome in f:
print("Presente:", nome.strip())
Crie um programa que copie o conteúdo de entrada.txt
para saida.txt
.
with open("entrada.txt", "r") as origem:
with open("saida.txt", "w") as destino:
destino.write(origem.read())
Explicação: Lê todo o conteúdo de entrada.txt
com read()
e escreve em saida.txt
com write()
.
Teste Você Mesmo! Crie entrada.txt
com algumas linhas e verifique saida.txt
.
Escreva um programa que conte o número total de palavras em um arquivo.
with open("texto.txt", "r") as arquivo:
palavras = 0
for linha in arquivo:
palavras += len(linha.split())
print("Total de palavras:", palavras)
Explicação: split()
divide cada linha em palavras, e len()
conta quantas há. Soma todas as linhas.
Teste Você Mesmo! Crie um arquivo com um parágrafo e teste.
Salve um dicionário de alunos e notas em um arquivo notas.txt
.
alunos = {"Ana": 8.5, "Bruno": 7.0, "Carlos": 9.0}
with open("notas.txt", "w") as arquivo:
for nome, nota in alunos.items():
arquivo.write(f"{nome}: {nota}\n")
Explicação: Itera sobre o dicionário com .items()
e escreve cada par nome-nota em uma linha.
Teste Você Mesmo! Verifique o arquivo notas.txt
após executar.
Clique em uma alternativa para verificar sua resposta. A correta será destacada em verde, e a incorreta em vermelho, com feedback detalhado.
open()
read()
write()
with
ao abrir um arquivo?'w'
'r'
'a'
'r'
?FileNotFoundError
texto.txt
contém duas linhas: “Linha 1” e “Linha 2”?with open("texto.txt", "r") as f:
print(f.readline().strip())
Bibliotecas em Python são coleções de funções e ferramentas que expandem as capacidades do idioma, permitindo realizar tarefas complexas de forma simples e eficiente. Elas são como caixas de ferramentas especializadas, oferecendo soluções prontas para cálculos, visualizações, manipulações de dados e mais. Nesta seção, exploraremos cinco bibliotecas essenciais para iniciantes: math
para cálculos matemáticos, matplotlib
para criação de gráficos, random
para geração de números e escolhas aleatórias, datetime
para manipulação de datas e horas, e numpy
para operações com arrays e dados numéricos.
math
e Visualização com matplotlib
Trabalhando com operações matemáticas e gráficos em Python
math
Bibliotecas em Python são como ferramentas especializadas: a math
é uma calculadora avançada para operações matemáticas, enquanto a matplotlib
é um caderno de esboços para visualizar dados em gráficos.
Biblioteca math
: Fornece funções para cálculos como arredondamentos, potências, raízes e trigonometria.
Função | Descrição | Exemplo |
---|---|---|
floor(x) |
Arredonda para baixo | math.floor(3.7) → 3 |
ceil(x) |
Arredonda para cima | math.ceil(3.2) → 4 |
sqrt(x) |
Raiz quadrada | math.sqrt(16) → 4.0 |
pow(x, y) |
x elevado a y | math.pow(2, 3) → 8.0 |
Para cálculos matemáticos, a biblioteca math
fornece várias funções úteis:
import math
n = 100.7
print(math.floor(n)) # arredonda para baixo
print(math.ceil(n)) # arredonda para cima
print(sum([0.9999999, 1, 2, 3]))
print(math.trunc(123.45)) # remove a parte decimal
print(math.pow(2, 3)) # 2 elevado a 3
print(2 ** 3) # mesmo resultado com operador
print(math.sqrt(9))
print(math.sqrt(16))
print(math.cos(math.radians(60)))
print(math.sin(math.radians(90)))
print(math.tan(math.radians(45)))
print(math.degrees(math.pi)) # converte radianos em graus
print(math.radians(180)) # converte graus em radianos
Documentação oficial da biblioteca math
matplotlib
Biblioteca matplotlib
: Permite criar gráficos como linhas, barras e dispersão para visualizar dados.
Cuidados:
math
: Use radians()
para funções trigonométricas, pois elas esperam ângulos em radianos, não graus.matplotlib
: Verifique que listas de dados (x, y) tenham o mesmo tamanho e use plt.savefig()
para salvar gráficos.Exemplo de erro:
# Errado: listas de tamanhos diferentes
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [10, 20] # Erro: tamanhos não correspondem
plt.plot(x, y)
plt.savefig("erro.png")
# Correto
x = [1, 2, 3]
y = [10, 20, 30]
plt.plot(x, y)
plt.savefig("correto.png")
Para criar gráficos em Python, usamos a biblioteca matplotlib.pyplot
:
import matplotlib.pyplot as plt
# Dados
year = [2000, 2001, 2002, 2003]
cs = [15.1, 16.3, 17.2, 18.5]
ps = [20.0, 21.5, 22.1, 22.8]
# Um gráfico simples
plt.plot(year, ps, color='blue', label='Ciências Físicas')
plt.plot(year, cs, color='red', label='Ciência da Computação')
plt.title('Comparativo entre áreas')
plt.xlabel('Ano')
plt.ylabel('% de diplomas')
plt.grid(True)
plt.legend()
plt.savefig("comparativo.png")
Saída: Um gráfico de linhas salvo como comparativo.png
com duas curvas (azul e vermelha) e legenda.
plt.subplot(1, 2, 1)
plt.plot(year, ps, color='blue')
plt.title('Ciências Físicas')
plt.xlabel('Ano')
plt.ylabel('% de diplomas')
plt.subplot(1, 2, 2)
plt.plot(year, cs, color='red')
plt.title('Ciência da Computação')
plt.xlabel('Ano')
plt.ylabel('% de diplomas')
plt.tight_layout()
plt.savefig("subplots.png")
Saída: Dois gráficos de linhas lado a lado salvos como subplots.png
.
math
)
Calcula a área de um círculo dado o raio.
import math
raio = float(input("Digite o raio do círculo: "))
area = math.pi * math.pow(raio, 2)
print(f"Área do círculo: {area:.2f}")
Saída (exemplo): Digite o raio do círculo: 5
Área do círculo: 78.54
Explicação: Usa math.pi
e math.pow
para calcular a área (πr²).
Teste Você Mesmo! Teste com raio 3 no Python Tutor.
matplotlib
)
Cria um gráfico de barras comparando notas de alunos.
import matplotlib.pyplot as plt
alunos = ["Ana", "Bruno", "Carlos"]
notas = [8.5, 7.0, 9.0]
plt.bar(alunos, notas, color='green')
plt.title('Notas dos Alunos')
plt.xlabel('Alunos')
plt.ylabel('Nota')
plt.savefig("barras.png")
Saída: Um gráfico de barras salvo como barras.png
com notas por aluno.
Explicação: Usa plt.bar
para criar barras, com rótulos para eixos e título.
Teste Você Mesmo! Adicione mais alunos e notas.
math
+ matplotlib
)
Plota uma onda senoidal combinando math
e matplotlib
.
import math
import matplotlib.pyplot as plt
x = [i * 0.1 for i in range(100)]
y = [math.sin(math.radians(i * 3.6)) for i in range(100)]
plt.plot(x, y, color='purple')
plt.title('Onda Senoidal')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.grid(True)
plt.savefig("seno.png")
Saída: Um gráfico de uma onda senoidal salvo como seno.png
.
Explicação: Gera pontos com math.sin
e plota com plt.plot
.
Teste Você Mesmo! Teste com math.cos
no Python Tutor.
math
)
Crie um programa que calcule a hipotenusa de um triângulo retângulo dados os catetos.
import math
a = float(input("Digite o cateto a: "))
b = float(input("Digite o cateto b: "))
hipotenusa = math.sqrt(math.pow(a, 2) + math.pow(b, 2))
print(f"Hipotenusa: {hipotenusa:.2f}")
Explicação: Usa o teorema de Pitágoras (√(a² + b²)) com math.sqrt
e math.pow
.
Teste Você Mesmo! Teste com catetos 3 e 4 (hipotenusa = 5).
matplotlib
)
Crie um gráfico de dispersão com 5 pontos de coordenadas fornecidas.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 5, 3]
plt.scatter(x, y, color='blue')
plt.title('Gráfico de Dispersão')
plt.xlabel('X')
plt.ylabel('Y')
plt.grid(True)
plt.savefig("dispersao.png")
Explicação: Usa plt.scatter
para plotar pontos individuais, com grade e rótulos.
Teste Você Mesmo! Altere os pontos e verifique o gráfico.
math
+ matplotlib
)
Crie e salve um gráfico da função cosseno para x de 0 a 360 graus.
import math
import matplotlib.pyplot as plt
x = [i for i in range(361)]
y = [math.cos(math.radians(i)) for i in range(361)]
plt.plot(x, y, color='orange')
plt.title('Função Cosseno')
plt.xlabel('Ângulo (graus)')
plt.ylabel('cos(x)')
plt.grid(True)
plt.savefig("cosseno.png")
Explicação: Converte graus para radianos com math.radians
e plota com plt.plot
.
Teste Você Mesmo! Verifique o arquivo cosseno.png
.
Clique em uma alternativa para verificar sua resposta. A correta será destacada em verde, e a incorreta em vermelho, com feedback detalhado.
math
arredonda um número para baixo?floor()
ceil()
trunc()
matplotlib
como uma imagem?plt.savefig('nome.png')
plt.show()
plt.plot()
math.radians(180)
?plt.plot(x, y)
tiverem tamanhos diferentes?math.sqrt(25)
?Mais sobre matplotlib: Tutorial USP
random
A biblioteca random
é como um dado ou urna: permite gerar números aleatórios, escolher itens ou embaralhar listas. É ideal para jogos e simulações.
Funções principais:
randint(a, b)
: Gera um inteiro aleatório entre a e b (inclusivo).choice(lista)
: Escolhe um item aleatório de uma lista.shuffle(lista)
: Embaralha os itens de uma lista.Exemplo 1: Simular um Dado
import random
dado = random.randint(1, 6)
print(f"Resultado do dado: {dado}")
Saída (exemplo): Resultado do dado: 4
Explicação: randint(1, 6)
simula um dado de 6 faces, retornando um número entre 1 e 6.
Teste Você Mesmo! Execute várias vezes no Python Tutor para ver resultados diferentes.
Exemplo 2: Escolher um Aluno
import random
alunos = ["Ana", "Bruno", "Carlos"]
escolhido = random.choice(alunos)
print(f"Aluno sorteado: {escolhido}")
Saída (exemplo): Aluno sorteado: Bruno
Explicação: choice
seleciona um item aleatório da lista alunos
.
Teste Você Mesmo! Adicione mais nomes e teste.
Cuidados: Sempre importe random
antes de usar suas funções.
Documentação: Documentação oficial da biblioteca random
datetime
A biblioteca datetime
é como um calendário e relógio: ajuda a trabalhar com datas e horas, úteis para logs ou cálculos temporais.
Funções principais:
datetime.now()
: Retorna a data e hora atuais.strftime(formato)
: Formata uma data/hora como string.Exemplo 1: Data e Hora Atuais
from datetime import datetime
agora = datetime.now()
print(f"Data e hora: {agora.strftime('%d/%m/%Y %H:%M:%S')}")
Saída (exemplo): Data e hora: 05/05/2025 14:30:00
Explicação: strftime
formata a data com dia/mês/ano e hora:minuto:segundo.
Teste Você Mesmo! Teste no Python Tutor e experimente outros formatos (ex.: '%Y-%m-%d'
).
Exemplo 2: Log com Timestamp
from datetime import datetime
with open("log.txt", "a") as arquivo:
agora = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
arquivo.write(f"Evento registrado em: {agora}\n")
Saída (exemplo no arquivo): Evento registrado em: 05/05/2025 14:30:00
Explicação: Adiciona uma linha com a data/hora atual ao arquivo, combinando com manipulação de arquivos (Slide 7).
Teste Você Mesmo! Execute várias vezes e verifique log.txt
.
Cuidados: Use formatos válidos em strftime
(ex.: %d
para dia, %Y
para ano).
Documentação: Documentação oficial da biblioteca datetime
numpy
A biblioteca numpy
é como uma calculadora para listas: simplifica operações com arrays (listas numéricas), ideal para dados e gráficos com matplotlib
.
Funções principais:
array(lista)
: Cria um array a partir de uma lista.linspace(início, fim, n)
: Gera n valores igualmente espaçados.mean(array)
: Calcula a média de um array.Exemplo 1: Média de Notas
import numpy as np
notas = np.array([8.5, 7.0, 9.0, 6.5])
media = np.mean(notas)
print(f"Média das notas: {media:.2f}")
Saída: Média das notas: 7.75
Explicação: Converte a lista em um array com np.array
e calcula a média com np.mean
.
Teste Você Mesmo! Adicione mais notas e teste no Python Tutor.
Exemplo 2: Pontos para Gráfico
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y = x ** 2
plt.plot(x, y, color='blue')
plt.title('Função Quadrática')
plt.xlabel('x')
plt.ylabel('y = x²')
plt.grid(True)
plt.savefig("quadratica.png")
Saída: Um gráfico de uma parábola salvo como quadratica.png
.
Explicação: np.linspace
gera 100 pontos entre 0 e 10, usados para plotar y = x² com matplotlib
.
Teste Você Mesmo! Altere a função (ex.: y = x ** 3) e verifique o gráfico.
Cuidados: Sempre importe numpy
como np
e use arrays para operações numéricas.
Documentação: Documentação oficial da biblioteca numpy
random
)
Crie um programa que gere 6 números aleatórios entre 1 e 60 para uma loteria.
import random
numeros = [random.randint(1, 60) for _ in range(6)]
print(f"Números da loteria: {sorted(numeros)}")
Explicação: Usa uma lista por compreensão com randint
para gerar 6 números, ordenados com sorted
.
Teste Você Mesmo! Execute várias vezes para ver diferentes combinações.
random
)
Escreva um programa que embaralhe uma lista de nomes fornecida.
import random
nomes = ["Ana", "Bruno", "Carlos", "Daniela"]
random.shuffle(nomes)
print(f"Lista embaralhada: {nomes}")
Explicação: shuffle
reordena a lista nomes
aleatoriamente.
Teste Você Mesmo! Teste com mais nomes no Python Tutor.
datetime
)
Crie um programa que peça uma data de aniversário (dia/mês/ano) e formate como “DD/MM/AAAA”.
from datetime import datetime
dia = int(input("Dia: "))
mes = int(input("Mês: "))
ano = int(input("Ano: "))
data = datetime(ano, mes, dia)
print(f"Aniversário: {data.strftime('%d/%m/%Y')}")
Explicação: Cria um objeto datetime
e usa strftime
para formatar a data.
Teste Você Mesmo! Teste com sua data de aniversário.
numpy
)
Calcule a média e o desvio padrão de uma lista de notas usando numpy
.
import numpy as np
notas = [8.5, 7.0, 9.0, 6.5, 8.0]
array_notas = np.array(notas)
media = np.mean(array_notas)
desvio = np.std(array_notas)
print(f"Média: {media:.2f}, Desvio padrão: {desvio:.2f}")
Explicação: Converte a lista em um array e usa np.mean
e np.std
para cálculos estatísticos.
Teste Você Mesmo! Altere as notas e verifique os resultados.
Clique em uma alternativa para verificar sua resposta. A correta será destacada em verde, e a incorreta em vermelho, com feedback detalhado.
random
escolhe um item aleatório de uma lista?choice()
randint()
shuffle()
datetime
?datetime.now()
strftime()
datetime.date()
np.linspace(0, 10, 5)
na biblioteca numpy
?math
calcula a raiz quadrada?sqrt()
pow()
floor()
matplotlib
como uma imagem?plt.savefig('nome.png')
plt.plot()
plt.grid()
A turtle
é uma biblioteca gráfica embutida no Python que permite desenhar na tela com comandos simples.
É ideal para introduzir lógica de programação de forma visual e divertida.
import turtle
wn = turtle.Screen()
wn.bgcolor("lightgreen") # define a cor de fundo da janela
tess = turtle.Turtle() # cria uma tartaruga chamada tess
tess.color("blue") # define a cor da caneta como azul
tess.pensize(3) # define a espessura da caneta
tess.forward(50) # anda 50 pixels para frente
tess.left(120) # gira 120 graus para a esquerda
tess.forward(50) # anda mais 50 pixels
wn.exitonclick() # fecha a janela ao clicar nela
Explicação: Este código cria uma tartaruga gráfica que desenha dois lados de um triângulo. O fundo da janela é verde e a caneta da tartaruga é azul e grossa.
Tente criar uma figura geométrica usando a tartaruga. Você pode usar comandos como forward()
, left()
, right()
e mudar cores com color()
.
Desafio: Acesse a atividade interativa proposta no Laboratório Turtle.
Crie desenhos combinando loops com a tartaruga, como estrelas ou polígonos regulares. Exemplo:
# Desenho de um triângulo com loop
import turtle
t = turtle.Turtle()
for i in range(3):
t.forward(100)
t.left(120)
turtle.done()
1. Faça um quadrado com a tartaruga.
import turtle
t = turtle.Turtle()
for i in range(4):
t.forward(100)
t.left(90)
turtle.done()
2. Desenhe uma estrela de 5 pontas.
import turtle
t = turtle.Turtle()
for i in range(5):
t.forward(100)
t.right(144)
turtle.done()
Explore mais no PensePy - Turtle
Vamos criar uma pequena animação onde a tartaruga desenha várias formas coloridas em sequência.
Desafio: Faça com que a tartaruga desenhe 6 triângulos girando em torno de um centro, como se fossem pétalas de uma flor.
import turtle
t = turtle.Turtle()
t.pensize(2)
colors = ["red", "blue", "green", "orange", "purple", "cyan"]
for i in range(6):
t.color(colors[i])
for _ in range(3): # desenha um triângulo
t.forward(100)
t.left(120)
t.right(60) # gira para fazer a próxima "pétala"
turtle.done()
Objetivo: Praticar o uso de for
aninhado, controle de ângulo e mudança de cor em cada repetição.
Você pode:
Compartilhe seu desenho final com a turma ou tire uma captura de tela como evidência de participação.
O CodeSkulptor é uma plataforma online para programar em Python com suporte a gráficos interativos, ideal para aprender programação visual.
Este exemplo cria uma janela com um botão e uma mensagem desenhada na tela:
# CodeSkulptor: https://py2.codeskulptor.org
import simplegui
message = "Welcome!"
def click():
global message
message = "Good job!"
def draw(canvas):
canvas.draw_text(message, [50,112], 48, "Red")
frame = simplegui.create_frame("Home", 300, 200)
frame.add_button("Click me", click)
frame.set_draw_handler(draw)
frame.start()
O que acontece: Quando o botão "Click me" é pressionado, a mensagem muda na tela.
Acesse o CodeSkulptor, cole o código acima e clique em ▶ Run para ver o resultado.
Desafio extra: Faça a tela mostrar um contador de cliques.
import simplegui
contador = 0
def incrementar():
global contador
contador += 1
def draw(canvas):
canvas.draw_text("Cliques: " + str(contador), [50,100], 36, "Blue")
frame = simplegui.create_frame("Contador", 300, 200)
frame.add_button("Clique aqui", incrementar)
frame.set_draw_handler(draw)
frame.start()
O Trinket é uma plataforma online que permite programar em Python (inclusive com interfaces visuais) sem precisar instalar nada. Você pode escrever código, executar e compartilhar com facilidade.
Abaixo está um exemplo simples de interface criada com PyScript, que pode ser testada no Trinket:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
</head>
<body>
<py-script>
from js import document
def alterar_texto(*args):
document.getElementById("output").innerText = "Você clicou!"
document.getElementById("botao").addEventListener("click", alterar_texto)
</py-script>
<button id="botao">Clique aqui</button>
<p id="output">Mensagem inicial</p>
</body>
</html>
O que observar: esse código mistura HTML com Python para criar uma pequena interface com botão interativo.
HTML + Python (PyScript)
.Modifique o exemplo acima para que, ao clicar no botão, o programa mostre uma saudação com o nome digitado pelo usuário.
Explore exemplos prontos e inspiradores:
Galeria do Trinket