#Vamos fazer essa soma!
= 2 + 2 # soma bem facil...
soma =2+2
soma2
print(soma, soma2)
4 4
Nesta aula, vamos aprender desde o básico, sintaxe, tomada de decisões, repetição de ações, e estruturar melhor nossos programas, para que eles possam lidar com diferentes situações de forma dinâmica.
Python é uma linguagem de programação fácil de aprender, com uma sintaxe clara e intuitiva, ideal para iniciantes. É amplamente utilizada em diversas áreas, como ciência de dados, desenvolvimento web e automação, tornando-se uma ferramenta versátil e prática.
Um script é um arquivo de texto com instruções a serem executadas por um computador que antes traduzirá o arquivo para linguagem de máquina.
Um script é um texto instrucional como qualquer outro, escrito em um tipo de linguagem especial, “de programação”, ou “código”, mas é um texto, quase como uma receita de bolo de cenoura.
Como em qualquer linguagem, temos um vocabulário à disposição, um conjunto de palavras (ou tokens) existentes, organizadas em categorias como substantivos, adjetivos, etc. Nós combinamos as palavras em frases (ou statements) para descrever as instruções. Por fim, organizamos o texto em parágrafos (ou blocks), conjuntos de frases que devem ser lidas juntas, para definir a estrutura e facilitar o entendimento do texto.
A sintaxe dentro do Python é muito semelhante com a linguagem humana. O programa “lê” de cima para baixo, da esqueda para a direita de forma sequencial!
Note ao longo dos programas: espaços, quebras de linha, tabs, comentários…
#Vamos fazer essa soma!
= 2 + 2 # soma bem facil...
soma =2+2
soma2
print(soma, soma2)
4 4
As variáveis no python são bem parecidas com as variáveis da matemática. Serve como caixinhas que carregam algo dentro e, sempre que o programa ler ela, entenderá o seu conteúdo.
x = "julia" #toda vez que o programa ler x, lerá a string julia
y = 5 #toda vez que o programa ler y, lerá o número inteiro 5
z = 2.5 #toda vez que o programa ler z, lerá o número float 2,5
Variáveis são um nome, associado à um valor, que mora na memória do computador.
Tenha em mente ao nomear uma variável que: - Não se pode usar os termos reservados;
Nomes de variáveis podem conter apenas letras, números e underscores(_). Podem começar com uma letra ou um underscore, mas não com um número;
Espaços não são permitidos em nomes de variáveis (usa-se underscores para separa as palavras);
Dicas: nomes de variáveis devem ser concisos, porém descritivos.
Na prática, quando escrevemos essas varíaveis, números e strings em células de código, observamos diferentes cores que indicam o que o python está enxergando.
Termos reservados são termos que já possuem um “significado” para o Python, então não podemos usa-los como variáveis.
Tipos de dados são os “tijolinhos” básicos que formam nossos programas. Eles representam os diferentes tipos de informações que podemos armazenar e manipular, como textos, números e valores lógicos. Cada tipo de dado é salvo de uma forma específica na memória, permitindo que realizemos operações adequadas para cada tipo.
Nesta aula, vamos explorar os principais tipos de dados em Python. Para se aprofundar mais: https://docs.python.org/3/library/datatypes.html
Uma string é um “desenho”, onde o programa não enxerga nenhum valor numérico mas consegue diferir os “desenhos” entre si. Seu símbolo é ’ ’ ou ” “, indicando ao programa que é uma string. Um número pode ter valor numérico (int ou float por exemplo) ou não (str).
Obs: o python é uma linguagem extremamente sensível, então a string “julia” e a string “Julia” não são iguais para ele.
"Julia"
"luana"
"123456"
Uma ferramenta que vocês usarão e que “respiram” strings é o len().
“Len” é a breviação para a palavra Length, ou seja, comprimento, e é exatamente o que ele mede: essa função retorna o número de caractéres de uma string.
Obs: os ESPAÇOS contam como caracteres.
len("julia cruz") --> retorna o número 10 (um inteiro)
Os inteiros são números que não são strings e não possuem valor depois da vígula, ou seja, são números inteiros :D. Usados em expressões matemáticas para contas.
5
6
12
1000
São semelhantes aos números inteiros porém considera e demanda valores depois da vírgula, mesmo que seja 0. Se misturam com os inteiros em equações matemáticas.
1.0
2.3
45.002
1000.0
Um valor booleano é um tipo de dado que pode representar apenas dois estados distintos: verdadeiro ou falso. É fundamental em muitos aspectos da programação e da lógica, pois permite tomar decisões com base em condições.
verdadeiro = True
falso = False
São símbolos que nos permitem realizar operações sobre variáveis e valores. Eles são fundamentais para a construção de expressões em Python, ajudando a manipular dados, fazer cálculos e tomar decisões.
Material base e aprofundamento: https://docs.python.org/3/library/operator.html
Os operadores aritméticos são usados para realizar operações matemáticas entre operandos.
print(2+2)
4
print(2*5 - 7)
3
print(4%2)
0
print(3%2)
1
= 10 // 6
divisao_inteira print(divisao_inteira, 10/6)
1 1.6666666666666667
# Parenteses
= ((2 + 5) * 3)
expressao_1 print(expressao_1)
= (2 + 5 * 3)
expressao_2 print(expressao_2)
= (1 + 5 ** 2)
expressao_3 print(expressao_3)
21
17
26
print(((2*3)**3)/7)
30.857142857142858
Os operadores lógicos são usados alguma relação entre operandos. Quando utilizados, eles retornam valores booleanos (True ou False).
Os operadores de atribuição são usados para atibuir valores a variáveis
= 5
numero += 1
numero print(numero)
6
= 3
numero -= 1
numero print(numero)
2
= 7
numero *= 5
numero print(numero)
35
= 9
numero /= 5
numero print(numero)
1.8
= 5
numero %= 2
numero print(numero)
1
Basicamente, control flow é sobre como o programa decide qual parte do código executar e quando. Essas ferramentas permitem que o código se adapte a diferentes situações, tome decisões e realize ações repetitivas, dependendo dos valores e condições presentes no programa.
Para se aprofundar: https://docs.python.org/3/tutorial/controlflow.html
Condicionais são estruturas usadas para tomar decisões dentro de um programa. Elas permitem que o código execute diferentes blocos de instruções dependendo de condições específicas. Assim, com condicionais, é possível direcionar o fluxo do programa com base em critérios, como valores de variáveis, facilitando a criação de comportamentos dinâmicos e adaptativos.
A estrutura if
é usada para verificar se uma condição é verdadeira e, caso seja, executar um bloco de código específico. Ela é a base das decisões em um programa, permitindo que diferentes ações aconteçamm dependendo do valor de uma condição. Se a condição for verdadeira, o código dentro do if
será executado; caso contrário, será ignorado.
A estrutura if else
é usada quando há a necessidade de definir duas ações diferentes: uma a ser executada se a condição for verdadeira (if
) e outra se essa condição for falsa (else
). Dessa forma, ela garante que um dos dois blocos de código será executado, cobrindo todas as possibilidades de resultado da condição.
A estrutura if elif else
é usada quando há mais de duas possibilidades para a condição. Primeiro, o if
verifica a condição inicial. Caso ela seja falsa, o elif
(abreviação de “else if”) verifica uma nova condição, e isso pode se repetir quantas vezes for necessário. Por fim, o else
cobre o caso em que nenhuma das condições anteriores é satisfeita. Essa estrutura permite criar múltiplos caminhos de decisão dentro do código.
Loops são estruturas usadas para repetir um bloco de código várias vezes, facilitando a automação de tarefas repetitivas. Eles são úteis quando se deseja realizar uma mesma operação várias vezes, seja sobre uma coleção de itens ou até que uma determinada condição seja atendida. Com loops, é possível escrever um código de forma mais concisa e eficiente, evitando a repetição manual de instruções.
A estrutura while
repete um bloco de código enquanto uma condição for verdadeira. Ela é útil quando não se sabe exatamente quantas vezes o bloco do código precisará ser executado, mas sim até que uma determinada condição seja atendida. Assim que a condição se tornar falsa, o loop é interrompido.
A estrutura for
é usada para repetir um bloco de código um número específico de vezes. Geralmente, é usada quando já se sabe quantas vezes o bloco de código deve ser executado. No contexto inicial, sem listas, o for
pode ser usado para repetir ações com base em um intervalo definido, permitindo automatizar processos repetitivos de maneira simples.
A instrução break
é usada para interromper um loop antes de ele ser concluído. Quando o break
é executado, o loop é finalizado imediatamente, e o programa segue para a próxima instrução. Essa instrução é útil quando se deseja parar a repetição ao atender a uma condição específica, mesmo que o loop ainda não tenha terminado seu ciclo completo.
A instrução continue
é usada para pular a iteração atual de um loop e avançar para a próxima iteração. Quando continue
é executado, o loop não finaliza, mas simplesmente ignora o restante do bloco de código daquela iteração e volta para o início, verificando a condição novamente ou avançando para o próximo item. Isso é útil para evitar executar parte do código do loop em condições específicas.
= 7
hora
if hora >= 6:
print("Hora de acordar!")
if hora < 6:
print("Pode dormir mais um pouco.")
Hora de acordar!
= 30
dinheiro = 25
preço
if dinheiro >= preço:
print("Você pode comprar o produto!")
if dinheiro < preço:
print("Você não tem dinheiro suficiente para comprar o produto.")
Você pode comprar o produto!
= 80
temperatura
if temperatura >= 100:
print("A água está fervendo!")
if temperatura < 100:
print("A água não está fervendo ainda.")
A água não está fervendo ainda.
Exemplos que vou mostrar (vou tirar essa seção depois, está nos comentários)
Argumentos são valores fornecidos a funções para que elas possam trabalhar com dados específicos. Existem três tipos principais:
Argumentos Posicionais: São passados para a função na ordem em que são definidos, e essa ordem determina qual parâmetro será preenchido.
Argumentos Padrão: São valores definidos como padrão (default) na função. Se um valor não for passado ao chamar a função, o valor padrão será usado.
def mostrar_dados(idade, nome):
print(f"Nome: {nome}, Idade: {idade}")
# Posicional
20, "Aldo") mostrar_dados(
Nome: Aldo, Idade: 20
def funcao_exemplo(função):
função()
def dizer_ola():
print("Olá!")
# Posicional
funcao_exemplo(dizer_ola)
Olá!
def saudar(nome, saudacao):
print(f"{saudacao}, {nome}!")
# Usando argumentos nomeados
="Vitor", saudacao="Bom dia")
saudar(nome="Boa tarde", nome="Ana") # Aqui a ordem foi invertida, mas podemos identificar os argumentos pelo nome saudar(saudacao
Bom dia, Vitor!
Boa tarde, Ana!
def mostrar_dados_2(nome, idade=30):
print(f"Nome: {nome}, Idade: {idade}")
# Chamando a função sem passar o valor para o argumento 'idade', o valor padrão será utilizado
"Mariana") # Nome: Mariana, Idade: 30
mostrar_dados_2(
# Chamando a função passando todos os argumentos
"João", 40) # Nome: João, Idade: 40
mostrar_dados_2(
# O default deve ser o último parâmetro a ser definido.
Nome: Mariana, Idade: 30
Nome: João, Idade: 40
def calcular_quadrados(numeros):
for numero in numeros:
= numero ** 2
quadrado print(f"O quadrado de {numero} é {quadrado}")
= [1, 2, 3, 4, 5]
valores calcular_quadrados(valores)
O quadrado de 1 é 1
O quadrado de 2 é 4
O quadrado de 3 é 9
O quadrado de 4 é 16
O quadrado de 5 é 25
Funções anônimas são apenas uma forma mais curta de escrever funções normais. Elas também são conhecidas como funções lambda. Ao invés de usar def
para definir uma função, as funções anônimas são escritas em uma linha, ideal para tarefas simples. Elas são muito úteis quando você precisa de uma pequena função que será usada apenas uma vez e não quer se preocupar em dar um nome para ela.
https://www.w3schools.com/python/python_lambda.asp
#Estrutura básica:
#lambda argumentos: expressão
#onde:
#lambda: A palavra-chave que indica o início de uma função lambda.
#argumentos: Lista de argumentos separados por vírgulas, semelhante aos argumentos das funções normais. Pode ser um único argumento, múltiplos argumentos, ou nenhum.
#expressão: Uma expressão que é executada e cujo valor é retornado pela função lambda. Diferentemente das funções definidas com def, uma função lambda pode ter apenas uma expressão.
# Função normal:
= int(input('\nDigite o preço para o calculo do imposto: '))
preco
def calcular_imposto(preco):
return preco * 0.3
print(calcular_imposto(preco))
# Função Lambda:
= int(input('\nDigite o preço para o calculo do imposto: '))
preco
= lambda preco: preco * 0.3
calcular_imposto
print(calcular_imposto(preco))
Digamos que temos uma série temporal de vendas diárias, e queremos calcular o total acumulado até um determinado dia. Uma forma que podemos fazer isso é montar uma função recurssiva. De forma simples, nós definimos uma função que vai se usar novamente dentro de si mesma.
def acumulado(vendas, n):
# Caso base: se o índice for 0, só existe um valor a ser somado
if n == 0:
return vendas[0]
# Caso recursivo: soma o valor atual com o acumulado até o ponto anterior
else:
return vendas[n] + acumulado(vendas, n - 1)
# Exemplo de uso
= [100, 150, 200, 250, 300]
vendas = acumulado(vendas, 4)
total_acumulado print(f"Total acumulado até o quinto dia: {total_acumulado}")
Total acumulado até o quinto dia: 1000
Já vimos que podemos usar muitas coisas como argumentos para funções, isso incluindo até mesmo outras funções. A utilidade disso depende de sua criatividade, mas é uma ferramenta muito útil!
def aplicar_operação(lista, operação):
return [operação(item) for item in lista]
# Funções específicas que podemos aplicar
def dobrar(x):
return x * 2
def triplicar(x):
return x * 3
# Exemplo de uso
= [1, 2, 3, 4, 5]
numeros
= aplicar_operação(numeros, dobrar)
resultado_dobrar print(f"Dobrando: {resultado_dobrar}")
= aplicar_operação(numeros, triplicar)
resultado_triplicar print(f"Triplicando: {resultado_triplicar}")
Dobrando: [2, 4, 6, 8, 10]
Triplicando: [3, 6, 9, 12, 15]
Nesta aula, começamos aprendendo a sintaxe básica do Python, que define como organizar o código de forma que o Python possa compreendê-lo. Exploramos conceitos como variáveis e tipos de dados, os quais são os “tijolinhos” essenciais para armazenar informações e construir um programa.
Em seguida, discutimos como podemos brincar com esses tijolinhos usando os operadores aritméticos e lógicos. Eles nos permitem manipular esses dados, realizando cálculos e criando expressões lógicas. Entendemos também a ordem de precedência entre esses operadores, que determina a sequência em que as operações são executadas.
Depois, avançamos para o control flow. Aprendemos a tomar decisões no código usando estruturas condicionais (if
, elif
, else
) e a repetir ações automaticamente com os loops (for
e while
). Também vimos como controlar a execução dos loops com break
e continue
.
Por fim, abordamos o conceito de funções. Vimos como criar funções utilizando def
e como utilizar funções anônimas (lambda
). Entendendo como são, essencialmente, o mesmo, mas igualmente importantes.
Esses conceitos, desde a sintaxe básica até a criação de funções e controle de fluxo, formam a base do Python e são fundamentais para que possamos prosseguir e escrever programas organizados.
Referência: https://docs.python.org/3/library/warnings.html, https://www.tutorialsteacher.com/python/error-types-in-python
Existem vários motivos diferentes para um script não rodar, é importante saber os mais comuns para ajudar na hora de investigar o que está de errado com um código.
Referência: https://www.w3schools.com/python/python_try_except.asp
Avisar ao utilizador do código que houve algum erro específico:
try:
= int(input("Qual a taxa de juros desejada? "))
juros print("A taxa escolhida foi {0}%.".format(juros))
except:
print("A taxa de juros deve ser um número")
A taxa de juros deve ser um número
Em um loop, indicar que um dos itens não funcionou, mas realizar a operação para o resto dos itens:
import requests
= []
paginas = ['https://finance.yahoo.com/quote/PETR4.SA', 'urlquebrado.com', 'https://finance.yahoo.com/quote/VALE3.SA']
urlList
for url in urlList:
try:
= requests.get(url)
request = f"result - {url}" #algo com os dados da página
result
paginas.append(result)except:
"NA")
paginas.append(print(f"A página {url} não pode ser lida")
paginas
A página urlquebrado.com não pode ser lida
['result - https://finance.yahoo.com/quote/PETR4.SA',
'NA',
'result - https://finance.yahoo.com/quote/VALE3.SA']