Semanas 03 e 04 Fundamentos Do Python
Semanas 03 e 04 Fundamentos Do Python
Python
Neste conteúdo, você aprenderá sobre os princípios fundamentais da
linguagem Python, incluindo boas práticas de programação, operadores
matemáticos, tipos de dados, variáveis, operadores lógicos, manipulação
de strings, documentação com comentários e a criação de funções. Além
disso, explorará como Python pode ser utilizado como uma calculadora e
como definir e utilizar funções para estruturar seu código de forma mais
eficiente.
Considerações Iniciais
Algumas premissas importantes sobre estética em linguagens de programação em geral
são:
SEJA CONSISTENTE.
A Linguagem Python
Python é uma linguagem de programação para propósitos diversos e pode ser usada
para um enorme leque de aplicações em diferentes áreas, desde o desenvolvimento web
até o aprendizado de máquina. Além de versátil, esta linguagem é amigável para
iniciantes. Por esses e outros fatores, trata-se de uma das linguagens de programação
mais populares do mundo.
Honrando sua distinção como uma das linguagens mais fáceis de se aprender, o Python
tem sintaxe muito simples, com muitas palavras-chave em inglês. Ele foi projetado desde
o início para ser uma linguagem concisa, de alta legibilidade e fácil compreensão. Por
isso, o Python é muito mais amigável para iniciantes quando comparado à outras
linguagens.
Tutorial
Este (mini) tutorial o guiará pela compreensão da linguagem de programação Python,
ajudará você a aprender profundamente os conceitos e mostrará como aplicar (algumas)
técnicas práticas de programação aos nossos futuros desafios.
Vamos lá!
Calculadora
Você pode utilizar o Python como uma grande calculadora:
In [ ]: 6 + 3
In [ ]: 6 - 3
In [ ]: 6 * 3
In [ ]: 6 / 3
3 × {12 + [(3 + 2) − 5 × 3] × 5} :
In [ ]: 3 * (12 + ((3 + 2) - 5 * 3) * 5)
[(3 + 2) − 5 × 3] = [5 − 5 × 3]
= [5 − 15]
= −10,
* Multiplicação 3 * 4
/ Divisão 10 / 5
// Divisão inteira 10 // 6
% Módulo 4 % 2
** Exponenciação 4 ** 2
Objetos
Podemos salvar as contas que fazemos em objetos que serão chamados de variáveis:
In [ ]: a = 6 + 3
In [ ]: b = 6 - 3
In [ ]: c = 6 * 3
In [ ]: d = 6 / 3
In [ ]: print(a)
In [ ]: print(b)
Podemos ainda realizar operações quando os objetos (ou as variáveis) são do mesmo
tipo. Ou seja, aqui ainda estamos tratando somente de números. Então, podemos fazer
contas diretamente:
In [ ]: print(a + b)
print(3 * b)
print(3 * a + 2 * b + 5 * c + 4 * d)
Tipos
Numéricos
Quando tratamos de números no Python, internamente a máquina pode entendê-los de
duas formas:
int : Formato numérico sem casas decimais (inteiros). Ex.: 3.145 é entendido
pelo computador como 3 .
In [ ]: a = float(22/5)
b = int(4.5)
c = int(3.9)
print(a)
print(b)
print(c)
In [ ]: print(a + b)
In [ ]: type(a + b)
Alfanuméricos
O Python é muito poderoso e consegue lidar com outros tipos de dados além dos
números. Temos disponíveis operadores booleanos. Os valores do tipo bool podem
representar dois valores completamente distintos: True (igual ao int 1) e False
(igual ao int 0) para, respectivamente, verdadeiro e falso :
In [ ]: operador_bool_verdadeiro = True
operador_bool_falso = False
Note que a primeira letra é maiúscula! Ortografias distintas não são permitidas.
Além disso, podemos utilizar os operadores lógicos que resultam em resultados do tipo
bool :
== Igual 5 == (10 / 2)
!= Diferente 1 != 0
In [ ]: a = 3
b = 5
print(a > b)
print(a == (b - 2))
print((a * 5) != (b * 3))
Não confunda:
= (símbolo de atribuição);
== (símbolo de igualdade).
Por fim, temos o tipo string e é com ele que tratamos texto delimitando por aspas
simples ou duplas (mas as aspas devem corresponder):
print(string_aspas_simples)
print(string_aspas_duplas)
In [ ]: nome = 'Dino'
sobrenome = "da Silva Sauro"
idade = 43
Quando os tipos não são os mesmo, devemos usar o seguinte comando para correta
impressão:
Documentação
Fazemos a documentação diretamente no código utilizando comentários. Assim, nosso
código fica mais legível para outros humanos. Além disso, os comentários também são
úteis para fazer com que o computador não leia determinado bloco durante um teste,
por exemplo. Em Python, os comentários são simbolizados pelo símbolo # e se estende
até o fim de cada linha. Vamos documentar os blocos anteriores:
In [ ]: # Nome do cliente
nome = 'Dino'
# Sobrenome do cliente
sobrenome = "da Silva Sauro"
# Idade do cliente
idade = 43 # valor numerico
Funções
Uma função é uma regra que recebe entradas (que são chamadas de argumentos) e
retorna uma saída correspondente. Embora não tenhamos mencionado, mas já
utilizamos duas funções, são elas print e type . Mas podemos definir novas funções
em Python usando def :
In [ ]: # Teste
salario_anual(2500)
In [ ]: # Testes
print(nome_completo('Dino', 'da Silva Sauro')) # 'Dino da Silva Sauro'
Estrutura condicional
Você pode executar ações de forma condicional utilizando if e else
return print(resultado)
In [ ]: # Teste
salario_anual(-2500)
salario_anual(2500)
Podemos também criar loops (ou laços) utilizando for e in para \textit{iterar} valores:
for x in range(10):
print(x + " e menor do que 10")
Listas
Provavelmente, a estrutura de dados mais fundamental do Python é a lista, que é
simplesmente uma coleção ordenada (é semelhante ao que em outras linguagens pode
ser chamado de array , mas com algumas funcionalidades adicionais):
Você pode obter ou definir o n-ésimo elemento de uma lista com colchetes:
In [ ]: x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Você também pode usar colchetes para fatiar listas. A fatia i:j significa todos os
elementos de i (inclusivo) a j (exclusivo).
Uma fatia pode receber um terceiro argumento para indicar seu passo, que pode ser
negativo:
Retornando a parte de nossa base de dados de clientes, podemos iterar sobre a lista de
nome dos clientes:
In [ ]: # Lista de clientes
clientes = ["Nero", "Atum", "Bois", "Alvares"]
In [ ]: # String
info_cliente = "Dino da Silva Sauro gosta de ler livros de ficcao cientifica"
Esses são somente alguns métodos para strings . Existem vários outros.
In [ ]: # Lista de clientes
clientes = ["Nero", "Atum", "Bois", "Alvares"]
In [ ]: numeros.sort()
print(numeros) # Para numeros, a ordem e crescente
In [ ]: numeros.sort(reverse = True)
print(numeros) # Ou decrescente
In [ ]: # Lista de interesses
interesses = ["Python", "Matematica", "IA", "IA", "Python", "Dados", "IA"]
Por fim e não menos importante, usualmente, não modificamos a lista original. Em geral,
fazemos cópias do mesmo objeto para trabalhar separadamente com cada um deles.
Pode ser tentador programar lista1 = lista2 . No entanto, isso NÃO deve ser feito
pois o Python continua referenciando a lista1 . Ou seja, tudo que você faz em
lista2 é espalhado em lista1 . Como solução, basta utilizar o seguinte método:
# Comparando
print(clientes)
print(clientes_novo)
Módulos
Certas funcionalidades do Python não são carregadas por padrão. Isso inclui
funcionalidades que já vem inclusas como parte da linguagem, bem como
funcionalidades de terceiros que você mesmo faz o download. Para usar esses recursos,
você precisará importar os módulos que os contêm. Uma abordagem é simplesmente
importar o próprio módulo:
In [ ]: # Importando modulo
# (ou carregando biblioteca)
# (ou carregando pacote)
import statistics
print(statistics.mean([1, 2, 3, 4, 5]))
Por exemplo, se você já tem um statistics em seu código, você pode `apelidar' o
módulo da seguinte forma:
In [ ]: import pandas as pd
import matplotlib.pyplot as plt
# Exemplos de uso
# pd.read_excel(...)
# plt.plot(...)
# Exemplos de uso
# (sem necessidade de escrever 'math' antes da funcao 'ceil')
ceil(5.8)
In [ ]: prod = 10
from math import * # opa, 'math' tem uma funcao que se chama 'prod'
print(prod) # "<built-in function prod>"
Referências Adicionais
Há muitos tutoriais de Python disponíveis na internet, inclusive em vídeo. Embora
em inglês, este tutorial da W3 School é dinâmico e de simples aprendizado;
O tutorial do Google Colab também é bem útil e está disponível em português.