Chegamos ao capítulo final, e é hora de colocar em prática tudo o que aprendemos ao longo deste supercurso de Python! Neste capítulo, vamos trabalhar em projetos empolgantes para aplicar e consolidar nossos conhecimentos de programação em Python.
Os projetos práticos são a oportunidade perfeita para você explorar sua criatividade, resolver problemas reais e criar algo tangível com suas habilidades recém-adquiridas.
Neste capítulo, iremos desenvolver alguns projetos desafiadores, como:
Cada projeto será uma oportunidade para desafiar suas habilidades e colocar em prática tudo o que aprendemos em cada capítulo anterior. Não se preocupe se encontrar obstáculos pelo caminho, pois a resolução de problemas é uma parte crucial do processo de aprendizado.
Você pode adaptar e expandir esses projetos com suas próprias ideias e criatividade. A programação é uma jornada de aprendizado contínuo, e a prática é a chave para aprimorar suas habilidades.
Lembre-se de que a comunidade de desenvolvedores é um recurso valioso. Compartilhe seus projetos com outras pessoas, busque feedback e colabore em projetos open source. Isso ajudará você a crescer como programador(a) e a se manter atualizado(a) com as melhores práticas da indústria.
Estamos empolgados para ver as maravilhas que você criará em seus projetos práticos! Continue aperfeiçoando suas habilidades em Python e lembre-se de que a programação é uma jornada fascinante e gratificante. Parabéns por chegar até aqui, e boa sorte em todos os seus projetos futuros! Vamos codificar e fazer grandes coisas juntos!
Vamos começar com o projeto prático de criar um programa de lista de tarefas (To-Do List) em Python. Neste projeto, você criará um aplicativo de linha de comando para gerenciar suas tarefas diárias.
class ToDoList:
def __init__(self):
self.tasks = []
def adicionar_tarefa(self, tarefa):
self.tasks.append(tarefa)
print(f"Tarefa '{tarefa}' adicionada à lista.")
def remover_tarefa(self, tarefa):
if tarefa in self.tasks:
self.tasks.remove(tarefa)
print(f"Tarefa '{tarefa}' removida da lista.")
else:
print(f"Tarefa '{tarefa}' não encontrada na lista.")
def listar_tarefas(self):
if self.tasks:
print("Lista de Tarefas:")
for i, tarefa in enumerate(self.tasks, start=1):
print(f"{i}. {tarefa}")
else:
print("A lista de tarefas está vazia.")
def main():
lista_tarefas = ToDoList()
while True:
print("\n==== To-Do List ====")
print("1. Adicionar Tarefa")
print("2. Remover Tarefa")
print("3. Listar Tarefas")
print("4. Sair")
escolha = input("Escolha uma opção (1/2/3/4): ")
if escolha == "1":
tarefa = input("Digite a tarefa que deseja adicionar: ")
lista_tarefas.adicionar_tarefa(tarefa)
elif escolha == "2":
tarefa = input("Digite a tarefa que deseja remover: ")
lista_tarefas.remover_tarefa(tarefa)
elif escolha == "3":
lista_tarefas.listar_tarefas()
elif escolha == "4":
print("Saindo...")
break
else:
print("Opção inválida. Por favor, escolha uma opção válida.")
if __name__ == "__main__":
main()
Neste projeto, criamos uma classe ToDoList que possui métodos para adicionar, remover e listar tarefas. O programa principal utiliza um loop para apresentar um menu ao usuário com as opções de adicionar, remover e listar tarefas, além da opção para sair do programa.
Para executar o programa, basta salvar o código acima em um arquivo Python (por exemplo, "todo_list.py") e executá-lo no terminal ou prompt de comando. O programa irá apresentar o menu, e você poderá escolher as opções conforme desejar.
Sinta-se à vontade para adicionar mais recursos ou funcionalidades ao projeto, como salvar as tarefas em um arquivo, permitir a marcação de tarefas concluídas, entre outras melhorias. Este é apenas um exemplo básico para dar início ao seu projeto de To-Do List em Python. Divirta-se programando!
Vamos construir um aplicativo de busca de informações em APIs. Neste projeto prático, criaremos um programa que permite ao usuário fazer pesquisas em uma API pública para obter informações sobre um determinado tópico.
Para este exemplo, usaremos a API do GitHub para buscar informações sobre repositórios relacionados a um usuário específico.
import requests
def buscar_repositorios(usuario):
url = f"https://api.github.com/users/{usuario}/repos"
try:
resposta = requests.get(url)
resposta.raise_for_status()
dados = resposta.json()
if dados:
print(f"Repositórios do usuário {usuario}:")
for repositorio in dados:
print(repositorio["name"])
else:
print(f"Nenhum repositório encontrado para o usuário {usuario}.")
except requests.exceptions.RequestException as e:
print("Erro ao fazer a requisição:", e)
def main():
print("=== Aplicativo de busca de informações em APIs ===")
usuario = input("Digite o nome de usuário do GitHub: ")
buscar_repositorios(usuario)
if __name__ == "__main__":
main()
Neste projeto, criamos uma função buscar_repositorios que recebe o nome de usuário do GitHub como entrada. A função faz uma requisição GET à API do GitHub para obter informações sobre os repositórios do usuário especificado. Em seguida, a função imprime os nomes dos repositórios encontrados ou uma mensagem caso nenhum repositório seja encontrado.
Para executar o programa, basta salvar o código acima em um arquivo Python (por exemplo, "github_api_search.py") e executá-lo no terminal ou prompt de comando. O programa irá solicitar que você digite o nome de usuário do GitHub que deseja pesquisar, e em seguida, exibirá os nomes dos repositórios relacionados a esse usuário.
Lembre-se de que você pode aplicar esse conceito para buscar informações em outras APIs públicas, seja para obter dados de previsão do tempo, informações sobre filmes, notícias ou qualquer outro tipo de informação que a API ofereça. A chave para desenvolver um aplicativo de busca de informações em APIs é entender a estrutura dos dados retornados pela API e como fazer as requisições corretas para obter as informações desejadas. Divirta-se explorando e aprendendo com diferentes APIs!
Execute o código e digite um nome de usuário. Por exemplo "robertoplacidoteixeira".
Digite o nome de usuário do GitHub: robertoplacidoteixeira
Serão apresentados os seguinte resultados:
Repositórios do usuário robertoplacidoteixeira:
mqml
OA3D
Roberto-Placido-Teixeira
robertoplacidoteixeira
Implementar um web scraper envolve extrair informações de um site específico usando técnicas de parsing de HTML.
Neste exemplo, vamos criar um web scraper para extrair títulos e links das notícias mais recentes do site de notícias BBC News (https://www.bbc.com/news).
Para este projeto, usaremos a biblioteca requests para fazer a requisição HTTP e a biblioteca BeautifulSoup para analisar o HTML.
Para executar o web scraper, certifique-se de ter as bibliotecas requests e beautifulsoup4 instaladas em seu ambiente.
Caso ainda não tenha, instale-as usando o gerenciador de pacotes pip:
pip install requests beautifulsoup4
Importamos as bibliotecas, declaramos função que faz a requisição HTTP, processa o web scraper e inicia o programa chamando a função:
import requests
from bs4 import BeautifulSoup
def extrair_noticias_bbc():
url = "https://www.bbc.com/news"
try:
resposta = requests.get(url)
resposta.raise_for_status()
soup = BeautifulSoup(resposta.text, "html.parser")
noticias = soup.find_all("div", class_="gs-c-promo")
print("Últimas notícias do site BBC News:\n")
for noticia in noticias:
titulo = noticia.find("h3").get_text().strip()
link = noticia.find("a")["href"]
print(f"{titulo}\nLink: {link}\n")
except requests.exceptions.RequestException as e:
print("Erro ao fazer a requisição:", e)
if __name__ == "__main__":
extrair_noticias_bbc()
Neste projeto, a função extrair_noticias_bbc faz uma requisição GET à página inicial do BBC News e, em seguida, usa o BeautifulSoup para analisar o HTML da página e encontrar as divs com a classe "gs-c-promo", que contêm informações sobre as notícias.
Dentro do loop, extraímos os títulos e os links de cada notícia e os imprimimos na saída.
Salve o código acima em um arquivo Python (por exemplo, "bbc_news_scraper.py") e execute-o no terminal ou prompt de comando. O programa irá buscar as últimas notícias do site BBC News e exibirá os títulos e os links das notícias na saída.
Lembre-se de que o scraping de um site deve ser feito com responsabilidade e respeitando os termos de uso do site. Alguns sites podem proibir o scraping ou restringir o acesso ao conteúdo. Sempre verifique os termos de uso do site e limite suas requisições para evitar sobrecarregar os servidores do site.
Para executar o web scraper, basta salvar o código acima em um arquivo Python (por exemplo, "bbc_news_scraper.py") e executá-lo no terminal ou prompt de comando,.
python bbc_news_scraper.py
O programa irá buscar as últimas notícias do site BBC News e exibirá os títulos e os links das notícias na saída.
O texto retornado pelo web scraper com as últimas notícias do site BBC News (https://www.bbc.com/news) fica como abaixo:
Últimas notícias do site BBC News:
Outrage after women paraded naked by mob in India
Link: /news/world-asia-india-66253389
N Korea 'not returning US calls' on missing soldier
Link: /news/world-asia-66253401
Tree row turns up heat on Hollywood strike
Link: /news/entertainment-arts-66255244
'We have no more room,' NYC mayor tells migrants
Link: /news/world-us-canada-66259075
Wheat prices soar after Russia threatens ships
Link: /news/world-europe-66253143
Xi meets Kissinger as US seeks to defrost China ties
Link: /news/world-asia-china-66106076
What charges could Trump face in January 6 probe?
Link: /news/world-us-canada-64034782
World will miss 1.5C warming limit, climate expert warns
Link: /news/science-environment-66256101
Police search for suspected lioness in Berlin area
Link: /news/world-europe-66254908
Canada wants US workers - and they are interested
Link: /news/world-us-canada-66249400
Iranian female prisoners filmed during strip searches
Link: /news/world-middle-east-66258415
Canada wants US workers - and they are interested
Link: /news/world-us-canada-66249400
Iranian female prisoners filmed during strip searches
Link: /news/world-middle-east-66258415
Wagner chief says activities to continue in Africa
Link: /news/world-africa-66256301
One winning ticket sold for $1bn US jackpot
Link: /news/world-us-canada-66256051
Apple slams UK surveillance-bill proposals
Link: /news/technology-66256081
Co-hosts New Zealand stun Norway in opening game
Link: /sport/football/66241739
A visual guide to the Women's World Cup
Link: https://www.bbc.co.uk/sport/extra/lrfY3Yfkt8/visual-guide-to-the-womens-world-cup
Women's World Cup quiz: Test your knowledge
Link: /news/world-66157149
Separated by a border, united by football
Link: /news/newsbeat-66225225
Who will win the 2023 Women's World Cup?
Link: /sport/football/65974710
Reported gas explosion cracks open Johannesburg street
Link: /news/world-africa-66251833
BBC World News TV
Link: /news/world_radio_and_tv
BBC World Service Radio
Link: /sounds/play/live:bbc_world_service
Oppenheimer is a 'flat-out masterpiece' ★★★★★
Link: https://www.bbc.com/culture/article/20230719-a-magnificent-story-of-a-tragic-american-genius
Could the Universe be twice as old?
Link: https://www.bbc.com/reel/video/p0g1v4pq/how-old-is-the-universe-
Watch the moment divers free trapped whale sharks
Link: /news/world-asia-66254335
Americast: Barbie's Hot Right Now
Link: https://www.bbc.co.uk/sounds/play/m001nw2j
Peek inside life-size Barbie Dreamhouse
Link: /news/uk-66242977
India video shows how rape is weaponised in conflict
Link: /news/world-asia-india-66254008
Mark Ronson breaks down the Barbie soundtrack
Link: /news/entertainment-arts-66220885
Inside London's Met police: Ex-officers on misogyny
Link: /news/uk-england-london-65930938
Auckland shooting renews debate on rising crime rate
Link: /news/world-asia-66253479
What was the Ukraine grain deal?
Link: /news/world-61759692
Singapore rocked by rare political scandals
Link: /news/world-asia-66230766
Spain's snap election revives issue of national unity
Link: /news/world-europe-66246030
AI: Experts propose guidelines for safe development
Link: /news/technology-66225855
A simple guide to help you understand AI
Link: https://www.bbc.co.uk/news/resources/idt-74697280-e684-43c5-a782-29e9d11fecf3
The film that captured actors' AI fears
Link: https://www.bbc.com/culture/article/20230717-how-2013-film-the-congress-predicted-hollywoods-current-ai-crisis
How AI will affect your wallet
Link: https://www.bbc.com/worklife/article/20230718-ai-artificial-intelligence-worker-wages-salaries
DeepMind co-founder: 'UK needs to take more AI risks'
Link: /news/technology-66166236
How a careless slip killed a physicist
Link: https://www.bbc.com/future/article/20230719-the-blue-flash-louis-slotin-accident-manhattan-project-oppenheimer-atomic-bomb
How will extreme heat change work?
Link: https://www.bbc.com/worklife/article/20230719-how-will-extreme-temperatures-and-heat-waves-change-how-we-work
Where Oppenheimer escaped his legacy
Link: https://www.bbc.com/travel/article/20230719-st-john-the-tiny-island-where-robert-oppenheimer-escaped-his-legacy
Oppenheimer is a flat-out masterpiece
Link: https://www.bbc.com/culture/article/20230719-a-magnificent-story-of-a-tragic-american-genius
How AI is resurrecting dead actors
Link: https://www.bbc.com/future/article/20230718-how-ai-is-bringing-film-stars-back-from-the-dead
How automation could affect your salary
Link: https://www.bbc.com/worklife/article/20230718-ai-artificial-intelligence-worker-wages-salaries
Peter Gordon's food guide to Auckland
Link: https://www.bbc.com/travel/article/20230719-best-places-to-eat-in-auckland-according-to-chef-peter-gordon
The Ashes: England v Australia, fourth Test, day two
Link: /sport/live/cricket/64959408
The Open round one: Fleetwood shares lead, McIlroy under way
Link: /sport/live/golf/66239237
'Goosebumps' - New Zealand and Australia's night of emotion
Link: /sport/football/66257810
Fleetwood sets early pace at Hoylake Open
Link: /sport/golf/66254702
Tour de France stage 18 - sprint likely as Vingegaard closes on title
Link: /sport/live/cycling/66255827
Bounty hunting and cheat chasing - the battle for Kenya’s conscience
Link: /sport/athletics/66223437
Catley penalty gives Australia win over Republic
Link: /sport/football/66241420
Vamos desenvolver um sistema simples de cadastro e consulta em um banco de dados usando Python e SQLite. Neste exemplo, criaremos um sistema para cadastrar e consultar informações de clientes.
Certifique-se de ter o SQLite e a biblioteca sqlite3 instalados em seu ambiente Python antes de prosseguir.
import sqlite3
# Função para criar a tabela (caso ainda não exista)
def criar_tabela():
conexao = sqlite3.connect("clientes.db")
cursor = conexao.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS clientes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
idade INTEGER,
email TEXT
)
""")
conexao.commit()
conexao.close()
# Função para cadastrar um cliente
def cadastrar_cliente(nome, idade, email):
conexao = sqlite3.connect("clientes.db")
cursor = conexao.cursor()
cursor.execute("""
INSERT INTO clientes (nome, idade, email) VALUES (?, ?, ?)
""", (nome, idade, email))
conexao.commit()
conexao.close()
# Função para listar todos os clientes
def listar_clientes():
conexao = sqlite3.connect("clientes.db")
cursor = conexao.cursor()
cursor.execute("""
SELECT * FROM clientes
""")
clientes = cursor.fetchall()
if clientes:
print("Lista de clientes:")
for cliente in clientes:
print(f"ID: {cliente[0]}, Nome: {cliente[1]}, Idade: {cliente[2]}, Email: {cliente[3]}")
else:
print("Nenhum cliente cadastrado.")
conexao.close()
if __name__ == "__main__":
criar_tabela()
while True:
print("\n==== Sistema de Cadastro e Consulta ====")
print("1. Cadastrar Cliente")
print("2. Listar Clientes")
print("3. Sair")
escolha = input("Escolha uma opção (1/2/3): ")
if escolha == "1":
nome = input("Digite o nome do cliente: ")
idade = int(input("Digite a idade do cliente: "))
email = input("Digite o email do cliente: ")
cadastrar_cliente(nome, idade, email)
elif escolha == "2":
listar_clientes()
elif escolha == "3":
print("Saindo...")
break
else:
print("Opção inválida. Por favor, escolha uma opção válida.")
Neste projeto, criamos uma tabela chamada "clientes" no banco de dados "clientes.db" para armazenar as informações dos clientes. O programa permite cadastrar clientes fornecendo nome, idade e email, bem como listar todos os clientes cadastrados.
Para executar o programa, basta salvar o código acima em um arquivo Python (por exemplo, "cadastro_consulta_clientes.py") e executá-lo no terminal ou prompt de comando. O programa apresentará um menu com as opções para cadastrar clientes, listar clientes ou sair do sistema.
As informações dos clientes cadastrados serão armazenadas no banco de dados "clientes.db". Caso ainda não exista, o programa criará automaticamente a tabela "clientes" na primeira execução.
Lembre-se de que este é um exemplo básico para dar início ao seu sistema de cadastro e consulta em um banco de dados. Você pode adicionar mais funcionalidades, como atualizar clientes, excluir clientes e fazer consultas mais específicas, conforme necessário para o seu projeto. Divirta-se desenvolvendo o seu sistema!