Ebookpython
Ebookpython
EM PYTHON
O que é o Python?
Uma linguagem de programação.
1
No replit.com crie um arquivo python do zero.
Digite o código:
a = 10
b=3
soma = a + b
subtracao = a - b
multiplicacao = a * b
divisao = a / b
divisao_inteira = a // b
resto_divisao = a % b
potencia = a ** b
● Número
● String
● Lista
● Tupla
● Dicionário
● Booleano
Concatenando e printando
nome = "Ana"
sobrenome = "Garcia"
2
Variáveis, entrada e saida de texto, comentários
Função len
len(objeto)
Onde objeto é o objeto do qual queremos encontrar o comprimento.
A função len() é uma função integrada do Python. Você pode usar a função len() para obter o
comprimento da string, array, lista, tupla, dicionário, etc.
Funções de conversão
str() (String)
A função str() é usada para converter outros tipos de dados em strings.
int() (Integer)
A função int() é usada para converter strings ou números de ponto flutuante em números inteiros.
float() (Floating-Point)
A função float() é usada para converter strings ou números inteiros em números de ponto flutuante.
3
Crie um arquivo novo na ide, salve e execute no terminal. Segue o script abaixo:
As instruções de controle de fluxo podem decidir quais instruções Python devem ser executadas de
acordo com determinadas condições.
Operadores de comparação
4
Tipo de dado booleano: True, False.
As instruções de controle de fluxo geralmente começam com uma parte chamada condição, e todas
as condições são seguidas de um bloco de código chamado cláusula.
As expressões booleanas que vimos até agora poderiam ser todas consideradas condições, que é o
mesmo que expressões; uma condição é somente um nome mais específico no contexto das
instruções de controle de fluxo. As condições sempre são avaliadas como um valor booleano, ou
seja, True ou False. Uma instrução de controle de fluxo decide o que fazer conforme
sua condição seja True ou False, e quase toda instrução de controle de fluxo utiliza uma condição.
5
Usando if, else e elif no Python
Para a prática vamos criar um novo arquivo no editor e digitar o seguinte código. Logo depois rodar
no terminal.
idade = 18
contador = 0
print("Loop concluído!")
A função range() cria uma sequência de números que pode ser útil para loops:
6
Usando break e continue
Ao utilizar o continue dentro de uma condição if, no caso a palavra tatu, quando esse item é
encontrado na lista ele passa para o próximo item sem executar as instruções após o continue, no
nosso caso a impressão deste item, imprimindo apenas os outros animais da lista.
7
LISTAS
Uma lista em Python é uma coleção de itens ou elementos que você pode armazenar juntos. Pense
nela como uma lista de compras onde você coloca vários itens que deseja comprar. No caso das
listas em Python, esses "itens" podem ser números, palavras, ou até mesmo outras listas. As listas
são úteis porque permitem que você organize e trabalhe com vários dados de uma vez, seja para
fazer cálculos, exibir informações ou manipular informações de maneira mais conveniente.
Cada item em uma lista possui uma posição específica chamada de "índice", que começa em 0 para
o primeiro item, 1 para o segundo e assim por diante. Isso permite que você acesse e manipule os
itens individualmente ou em grupo.
8
numeros.remove(7)
numeros.pop()
# Ordenando a lista
numeros.sort()
print("\nEstatísticas:")
print("Soma:", soma)
print("Média:", media)
print("Maior número:", maior_numero)
print("Menor número:", menor_numero)
TUPLAS
Uma tupla em Python é como uma lista, mas com uma diferença importante: as tuplas são
imutáveis, o que significa que depois de criadas, você não pode alterar seus elementos. Imagine que
uma lista é como uma sacola onde você pode adicionar, remover e alterar coisas, enquanto uma
tupla é como uma caixa selada onde os itens não podem ser mudados.
9
minha_tupla = (10, 20, 30)
É uma abordagem na programação onde organizamos os dados e o código em "objetos" que podem
conter informações (atributos) e ações (métodos). Isso ajuda a modelar o mundo real de maneira
mais próxima no software, tornando-o mais modular e reutilizável.
Encapsulamento
Subprogramas
Paradigma funcional
Paradigma lógico
O paradigma lógico é uma abordagem onde você descreve as relações entre diferentes fatos e regras
em um sistema. É como um conjunto de enigmas e pistas: você fornece as pistas (fatos e regras) ao
sistema, e ele deduz as respostas (soluções) baseadas nas pistas dadas.
DICIONÁRIOS
Um dicionário em Python é uma coleção de pares chave-valor. Cada chave é conectada a um valor,
e você pode usar uma chave para acessar o valor associado a ela. O valor de uma chave pode ser um
número, uma string, uma lista ou até mesmo outro dicionário. De fato, podemos usar qualquer
10
objeto que possa ser criado em Python como valor de um dicionário.
Em Python, um dicionário é representado entre chaves, {}, com uma série de pares chave-valor
entre elas, como mostramos a seguir:
alien_0 = {'color': 'green', 'points': 5}
Para printar o valor associado a uma chave, especifique o nome do dicionário e coloque a chave
entre colchetes, como vemos a seguir:
Vamos praticar:
Vamos praticar:
# criar um dicionário
d = {"nome": "Ana", "idade": 26, "profissão": "médica"}
11
# saída:
# nome Ana
# idade 26
# profissão médica
Para criar uma função em Python, você precisa usar a palavra-chave def, seguida do nome da
função e dos parâmetros entre parênteses. O corpo da função deve estar indentado e pode conter um
return para devolver um valor. Vamos praticar:
z = soma(3, 5)
print(z)
Se você quiser criar uma função sem parâmetros, você pode deixar os parênteses vazios. Vamos
praticar:
def hello():
print("Olá, mundo!")
hello()
Declarando constantes
A regra de nomeação das constantes no Python segue um padrão parecido com o de variáveis, com
a diferença de que todas as letras são maiúsculas e separadas por underline “_”. Porém, por possuir
tipagem dinâmica, os valores atribuídos à constantes podem ser alterados sem problemas:
MINHA_CONSTANTE = 10
print(MINHA_CONSTANTE) # 10
- Objeto
- Classe
- Atributos
- Métodos
Exemplo 1:
12
class Dog():
#Uma tentativa simples de modelar um cachorro
def sit(self):
#Simula um cahorro sentado em resposta a um comando
print(self.name.title() + " is now sitting.")
def roll_over(self):
#Simula um cachorro rolando em resposta a um comando
print(self.name.title() + " rolled over!")
my_dog = Dog('willie', 6)
your_dog = Dog('lucy', 3)
my_dog.sit()
my_dog.roll_over()
your_dog.sit()
your_dog.roll_over()
O parâmetro self é obrigatório na definição dos métodos e deve estar antes dos demais parâmetros.
Ele dá acesso aos atributos e métodos da classe à instância criada.
Qualquer variável prefixada com self está disponível a todos os métodos da classe; além
disso, podemos acessar essas variáveis por meio de qualquer instância criada a partir da classe.
Acessando atributos
Para acessar os atributos de uma instância utilize a notação de ponto. Neste exemplo
acessamos o valor do atributo name de my_dog escrevendo:
my_dog.name
.title()
13
Faz com que o valor do atributo comece com letra maiúscula.
Você pode criar tantas instâncias de uma classe quantas forem necessárias.
my_dog = Dog('willie', 6)
your_dog = Dog('lucy', 3)
my_dog = Dog('willie', 6)
your_dog = Dog('lucy', 3)
Herança
Exemplo:
14
self.nome = nome
self.idade = idade
# Método da superclasse
def fazer_som(self):
print(f"Eu sou um {self.nome} e eu faço som!")
O f foi usado no início do print para que o valor da variável fosse interpolado com uso das chaves.
15
"modelo": "DeskJet 2720"
}
}
alfabeto = {
'a': ['Alice', 'Adam', 'Amanda'],
'b': ['Bob', 'Bill', 'Beth'],
'c': ['Charlie', 'Cathy', 'Chris']
}
print(alfabeto['a'][0])
Flag
Uma flag é um mecanismo que serve para controlar (interrompendo ou permitindo a execução de
alguns comandos) a "lógica" de um programa. Geralmente, atua como uma variável booleana
indicando que uma condição é verdadeira ou falsa.
flag = True
while flag:
entrada = input("Digite algo: ")
if entrada == "sair":
flag = False
else:
print("Você digitou:", entrada)
print("Fim do programa!")
No exemplo, a flag é a variável flag. Ela é inicializada como True e o laço while é executado
enquanto a flag for True. Quando o usuário digita “sair”, a flag é definida como False e o laço while
é interrompido.
16
Criando gráficos com o Python parte 1
As pessoas usam Python para tarefas que trabalham intensamente com dados, como genética,
pesquisas sobre o clima, análises políticas e econômicas e muito mais.
Criar gráficos com Python é uma habilidade importante na área de ciência de dados. O Python
possui várias ferramentas para esta área de conhecimento.
A ciência de dados é uma área multidisciplinar que envolve a coleta, limpeza, análise e
interpretação de dados para obter insights (compreensão sobre algo) e tomar decisões.
Entre no site do replit.com. Crie um novo Repl e escolha a Linguagem Python. Dê um título ao
Repl e clique OK.
Abra o arquivo.
Na aba direita do Shell digite o seguinte comando: pip install --user matplotlib
Pressione enter para instalação da biblioteca.
Matplotlib
input_values = [1, 2, 3, 4, 5]
plt.xlabel("Value", fontsize=14)
17
plt.tick_params(axis='both', labelsize=14)
plt.savefig("grafico1.pdf")
Inicialmente importamos o módulo pyplot usando o alias plt para que não seja necessário digitar
pyplot repetidamente.
A função plot() é uma das funções mais utilizadas da biblioteca matplotlib em Python. Ela é usada
para criar gráficos de linhas.
Criamos duas listas acima, uma com inteiros e outra com o quadrado destes inteiros e passamos
para função plot. O parâmetro linewidth controla a espessura da linha gerada por plot().
A função title() define um título para o gráfico. Os parâmetros fontsize, que aparecem
repetidamente pelo código, controlam o tamanho do texto no gráfico.
As funções xlabel() e ylabel() permitem definir um título para cada um dos eixos.
O parâmetro fontsize é usado para definir o tamanho da fonte do título que aparece nos eixos do
gráfico.
A função tick_params() estiliza os rótulos dos eixos x e y. Os argumentos mostrados aqui afetam o
eixo x quanto o eixo y (axes='both') e definem o tamanho da fonte dos rótulos das marcações com
14 (labelsize=14).
A função plt.savefig() é usada para salvar um gráfico gerado pela biblioteca matplotlib.
Execute o código.
x_values = [1, 2, 3, 4, 5]
plt.scatter(x_values, y_values)
plt.xlabel("Value", fontsize=14)
18
plt.tick_params(axis='both', labelsize=14)
plt.savefig("grafico2.pdf")
Entendendo o código.
Para imprimir pontos individuais, utilize a função scatter(). Passe o único par (x, y) do ponto em
que você estiver interessado para scatter(), e esse valor deverá ser plotado. Observe que o par de
valores em x e y define a posição dos pontos: (2-> posição do ponto no eixo x, 4-> posição do ponto
no eixo y).
Execute o código.
Pygal
O Pygal é uma biblioteca que gera gráficos em formato SVG (Scalable Vector Graphics), que são
vetoriais e escaláveis, o que significa que eles podem ser redimensionados sem perder qualidade.
Abra o Shell ao lado e instale a biblioteca Pygal com o comando: pip install --user pygal
import pygal
bar_chart = pygal.Bar()
bar_chart.x_labels = [
'Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out',
'Nov', 'Dez'
bar_chart.add('Vendas', [5, 7, 8, 12, 15, 20, 22, 23, 18, 12, 6, 4])
bar_chart.render_to_file('grafico_colunas.svg')
Este código cria um gráfico de colunas que mostra as vendas por mês.
19
Vamos entender o código.
bar_chart = pygal.Bar()
Esta linha de código cria um objeto de gráfico de colunas. O objeto é armazenado na variável.
Esta linha de código define o título do gráfico como “Vendas por mês – Ano 2023”.
bar_chart.x_labels = [
'Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out',
'Nov', 'Dez'
Esta linha de código define os rótulos do eixo X do gráfico como os nomes dos meses.
bar_chart.add('Vendas', [5, 7, 8, 12, 15, 20, 22, 23, 18, 12, 6, 4])
Esta linha de código adiciona uma série de dados ao gráfico. A série é rotulada como “Vendas”.
bar_chart.render_to_file('grafico_colunas.svg')
Execute o código.
import pygal
bar_chart = pygal.Bar()
20
bar_chart.title = 'Vendas em (R$) do Primeiro Trimestre de 2024 - Mouse, Teclado, Monitor'
bar_chart.render_to_file('grafico_colunas.svg')
Definimos os dados das colunas do gráfico, rótulos, legenda e geramos um arquivo de imagem com
o resultado. Execute o arquivo Python e visualize o resultado.
Data,Temperatura Máxima em °F
01/07/2014,64
02/07/2014,71
03/07/2014,64
04/07/2014,59
05/07/2014,69
06/07/2014,62
07/07/2014,61
08/07/2014,55
09/07/2014,57
10/07/2014,61
11/07/2014,57
12/07/2014,59
13/07/2014,57
14/07/2014,61
15/07/2014,64
16/07/2014,61
17/07/2014,59
21
18/07/2014,63
19/07/2014,60
20/07/2014,57
21/07/2014,69
22/07/2014,63
23/07/2014,62
24/07/2014,59
25/07/2014,57
26/07/2014,57
27/07/2014,61
28/07/2014,59
29/07/2014,61
30/07/2014,61
31/07/2014,66
Dica importante: ao criar o arquivo csv acima, evite linhas em branco no meio ou final do arquivo,
espaços em branco e caracteres especiais.
import csv
filename = 'climajulho2014.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
print(header_row)
O módulo csv permite extrair rapidamente os valores em que estivermos interessados de uma
planilha.
with open(filename) as f: Abre o arquivo CSV e armazena seu conteúdo em um objeto de arquivo
chamado `f`.
22
reader = csv.reader(f): Cria um objeto reader que permite ler dados de um arquivo csv.
O objeto reader permite que você percorra sobre as linhas do arquivo CSV, retornando uma lista de
valores para cada linha.
O csv.reader em Python é uma função que permite ler dados de um arquivo csv.
Quando você chama a função next(reader), ela retorna a próxima linha do arquivo CSV.
Chamamos next() apenas uma vez para obter a primeira linha do arquivo, que contém os
cabeçalhos.
header_row = next(reader): Armazena a primeira linha do arquivo, que contém os cabeçalhos das
colunas.
import csv
filename = 'climajulho2014.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
highs = []
try:
highs.append(row[1])
except IndexError as e:
23
print(highs)
Criamos uma lista vazia e adicionamos em um laço os valores da segunda coluna da planilha. Salve
o arquivo e depois execute o comando para rodar o código.
No código fornecido, o loop for row in reader percorre cada linha do arquivo CSV que foi lido
usando a função reader do módulo csv.
A cada repetição do laço a variável row contém uma lista de valores para cada linha do arquivo
CSV.
O erro list index out of range ocorre quando você tenta acessar um índice inválido em uma
lista. Isso geralmente acontece quando você está tentando acessar um índice que não existe na
lista.
Um erro pode ocorrer na linha highs.append(row[1]). Isso pode acontecer se a linha atual não tiver
um valor na segunda coluna (índice 1). Por exemplo, se a linha (do arquivo csv) tiver apenas um
valor ou estiver vazia, você receberá esse erro.
O bloco try e except é uma construção em Python usada para lidar com exceções. Ele permite que
você tente executar um bloco de código e capture qualquer exceção que possa ocorrer durante a
execução desse bloco. O bloco try contém o código que pode gerar uma exceção, enquanto o bloco
except especifica o código a ser executado caso uma exceção seja lançada.
O erro IndexError é uma exceção em Python que ocorre quando você tenta acessar um índice
inválido em uma lista. IndexError é uma classe.
A linha except IndexError as e: captura essa exceção e atribui o objeto de exceção a uma variável
chamada e. Isso permite que você acesse informações adicionais sobre o erro, como a mensagem de
erro específica.
A linha print(f"Erro: {e} na linha {reader.line_num}") é responsável por imprimir uma mensagem
de erro caso ocorra um IndexError durante a leitura do arquivo CSV.
24
Gerando Relatórios
import csv
filename = 'climajulho2014.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
highs = []
try:
highs.append(row[1])
except IndexError as e:
plt.plot(highs, c='red')
plt.xlabel('', fontsize=16)
plt.tick_params(axis='both', labelsize=10)
25
plt.savefig("relatorioclima.pdf")
import pygal.maps.world
mapa_mundi = pygal.maps.world.World()
# Renderize o mapa
26
mapa_mundi.render_to_file('populacao_mundial.svg')
Baixe o arquivo svg, abra ele no navegador, e aponte para os países para ver os dados impressos
quando você aponta.
O método add adiciona um rótulo para cada continente, e os dados (vindo de um dicionário)
inserindo o número de população ao país específico.
"venda": 1000,
"vendedor": "João"
},
"venda": 2000,
"vendedor": "Maria"
},
"venda": 3000,
"vendedor": "Pedro"
27
Crie o arquivo grafico7.py e digite o seguinte conteúdo:
import json
with open('dados.json') as f:
dados = json.load(f)
# Exibe o gráfico
plt.savefig("relatoriovendas.pdf")
A opção autopct='%.2f%%' exibe a porcentagem de venda de cada vendedor com duas casas
decimais.
28
Tratamento de exceções em Python
Exceções são erros que ocorrem em um programa. Tratamento de exceções é o mecanismo que
permite ao programa lidar com as exceções de forma controlada e evitar que o programa termine
abruptamente.
try:
except ValueError:
print("Valor inválido")
finally:
print("Fim do programa")
Execute o mesmo no Shell. Se você digitar um número não há erro, se inserir um texto, o erro
ocorre.
A exceção “ValueError” acontece quando uma função recebe um argumento que está com um
valor inadequado.
29
Trabalhando com arquivos
Existem recursos no Python para abertura de arquivos em modo de gravação e modo de leitura.
Para trabalhar com arquivos em Python, você precisa usar a função open(), que recebe o nome do
arquivo e o modo de abertura (leitura, escrita, etc.).
conteudo = arquivo.read()
print(conteudo)
# fechar o arquivo
arquivo.close()
Execute o arquivo acima e veja que a saída será o conteúdo do arquivo txt.
arquivo.write("Olá, mundo!")
# fechar o arquivo
arquivo.close()
30
conteudo = arquivo.read()
print(conteudo)
# fechar o arquivo
arquivo.close()
Execute o arquivo acima e observe que o conteúdo dele foi modificado, pois gravamos algo nele.
Uma API web é uma parte de um sistema projetada para interagir com programas que usam URLs
bem específicos a fim de requisitar determinadas informações.
A maioria das aplicações que depende de fontes de dados externas, como aquelas que se integram a
sites de mídias sociais, contam com chamadas de API.
O pacote requests permite que um programa Python solicite facilmente informações a um site e
analise a resposta devolvida. Vamos acessar o replit e instalar esse pacote. No Shell execute o
comando como:
import requests
latitude = -8.0522404
longitude = -34.9286096
url = f"https://api.open-meteo.com/v1/forecast?
latitude={latitude}&longitude={longitude}&hourly=temperature_2m"
31
response = requests.get(url)
if response.status_code == 200:
data = response.json()
print(f"Latitude: {latitude}")
print(f"Longitude: {longitude}")
print(f"Temperatura: {data['hourly']['temperature_2m'][0]}°C")
else:
Este script usa a biblioteca requests do Python para fazer uma requisição GET para a API de clima
do Open-Meteo. Ele usa a latitude e longitude especificadas para construir a URL da API e, em
seguida, faz uma requisição GET para essa URL.
Se a requisição for bem sucedida, ele converte a resposta em um objeto Python usando o
método .json() e, em seguida, exibe algumas informações sobre o clima na localização especificada.
import requests
url = 'https://datausa.io/api/data?drilldowns=Nation&measures=Population'
response = requests.get(url)
data = response.json()['data']
32
pop_data = {}
year = str(item['Year'])
population = item['Population']
pop_data[year] = population
plt.bar(pop_data.keys(), pop_data.values())
plt.xlabel('Ano')
plt.ylabel('População em milhões')
# rótulos do eixo y
text = float(label.get_text())/1000000
label.set_text(text)
for y in plt.gca().get_yticks():
plt.savefig("populacao.pdf")
`import requests`
url = 'https://datausa.io/api/data?drilldowns=Nation&measures=Population'
Esta linha está definindo uma variável chamada url que contém a URL da API do DataUSA. Esta
33
URL é usada para acessar dados sobre a população dos Estados Unidos.
response = requests.get(url)
Esta linha está usando a função get() da biblioteca requests para fazer uma solicitação GET para a
URL especificada. A resposta da solicitação é armazenada na variável response.
data = response.json()['data']
Esta linha está convertendo a resposta da solicitação em um objeto JSON usando o método json().
Em seguida, ela está acessando o valor da chave 'data' desse objeto JSON e armazenando-o na
variável data. O valor da chave 'data' é uma lista de dicionários, onde cada dicionário contém dados
sobre a população dos Estados Unidos em um determinado ano.
pop_data = {}
Esta linha está criando um novo dicionário vazio chamado pop_data. Um dicionário é uma estrutura
de dados em Python que armazena pares de chave-valor.
Esta linha está iniciando um loop for que itera sobre cada item na lista data. Cada item é um
dicionário que contém dados sobre a população dos Estados Unidos em um determinado ano.
year = str(item['Year'])
Esta linha está acessando o valor da chave 'Year' no dicionário item e convertendo-o em uma string.
O resultado é armazenado na variável year.
population = item['Population']
Esta linha está acessando o valor da chave 'Population' no dicionário item e armazenando-o na
variável population.
pop_data[year] = population
Esta linha está adicionando um novo par de chave-valor ao dicionário pop_data. A chave é o ano e
o valor é a população correspondente.
`plt.bar(pop_data.keys(), pop_data.values())`
`plt.xlabel('Ano')`
`plt.ylabel('População em milhões')`
Essas linhas estão criando um gráfico de barras da população ao longo do tempo. O título do gráfico
e os rótulos dos eixos x e y também são definidos.
34
pop_data.keys(): Este método retorna as chaves do dicionário pop_data.
pop_data.values(): Este método retorna os valores do dicionário pop_data.
Este é um loop `for` que itera sobre cada rótulo do eixo y do gráfico atual. A variável `label` em
cada iteração do loop é um objeto de texto que representa um rótulo do eixo y.
`label.get_text()`
Este método retorna o texto do rótulo atual como uma string. Ele é usado para obter o valor
numérico do rótulo do eixo y como uma string.
`label.set_text(text)`
Este método define o texto do rótulo atual para a string fornecida como argumento. Ele é usado para
atualizar o texto do rótulo do eixo y com a string formatada.
for y in plt.gca().get_yticks():
Esta linha está iniciando um loop for que itera sobre cada valor no eixo y do gráfico atual. Portanto,
a variável y em cada iteração do loop é um valor no eixo y.
Esta linha está desenhando uma linha horizontal no gráfico para cada valor no eixo y. A função
axhline() do matplotlib é usada para desenhar uma linha horizontal. O primeiro argumento é a
posição y da linha horizontal, que neste caso é o valor atual do eixo y. Os argumentos subsequentes
especificam a cor, o estilo da linha e a largura da linha.
`plt.savefig("populacao.pdf")`
Esta linha está salvando o gráfico como um arquivo PDF chamado "populacao.pdf".
35