Python
Python
Desenvolvimento Web
A área de Desenvolvimento web engloba todas as atividades usadas para criar
websites e aplicativos web-based. Existem duas subcategorias quando falamos em
desenvolvimento web: O Front-end e o Back-end.
>>>
print(*args, sep=' ', end='\n', file=None, flush=False)
2
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Para criar uma variável, basta apenas citar entre aspas:
>>> nome = “Yuri”
Type (nome) = class str (stream)
>>> idade = 19
Type(idade)= class int (inteiro)
>>> media = 9.8
Class= (float)
Estrutura:
-Tudo que é necessário ser digitado e imprimido no python, é necessário
estar entre aspas, antecedido do comando o print.
Para realizar o comando print, é necessário saltar quatro espaços.
É essencial a utilização de parênteses para realizar o complemento de
alguma função, como: print(), if(), else();
Tudo que for digitado entre aspas, é considerado como str.
Para criar uma variável, basta apenas, digitar a igualdade , sem ser entre
aspas.
JOGO DE ADVINHAÇÃO:
No jogo de adivinhação, desenvolvido por mim, é notório que, ao inserir
( um número secreto= 42 e colocar um input ( tag que pede ao usuário
3
para digitar algo) = chute e associar os dois, chute = número secreto, é
sempre reconhecido como false.
Isso se dá pelas duas funções apresentarem classes diferentes, sendo:
-- chute= str.
-- número secreto= int.
Isso acontece pois a tag input, sempre classifica uma fução como str, pois
o que será colocado, pode ser universal, tanto um número quanto uma
letra. (também se dá pelo uso de aspas)
--enquanto a tag int, sempre classifica um número inteiro.
Então ao associar, str= int, é impossível o resultado ser true.
4
No pyhton 2 a função input era muito primitiva, então os programadores da
época utilizavam a função raw_input, a qual viria futuramente se tornar o
input do python 3.
JS VS PYTHON
https://cursos.alura.com.br/course/python-introducao-a-
linguagem/task/24459
No python, tudo que está entre “aspas”, é convertido para a classe
str, e isso pode prejudicar na conversão de diversas contas como:
numero1 = 10
numero2 = 20
produto = numero1 * numero2
print(produto)
200
numero1 = 10
5
numero2 = "20"
produto = numero1 * numero2
print(produto)
2020202020202020202020202020
numero_secreto = 42
chute = int(chute_str)
if(numero_secreto== chute):
print("Você acertou!")
else:
if(chute > numero_secreto):
print("Você errou! Seu chute foi maior do que o número secreto")
if(chute < numero_secreto):
print("Você errou! Seu chute foi menor do que o número secreto")
estrutura correta (print sempre mais afastado da margem, dois
pontos sempre após alguma tag ).
print( "*************************")
print ("Bem vindo no jogo de adivinhação!")
print ("*************************")
numero_secreto = 42
chute = int(chute_str)
if(numero_secreto== chute):
print("Você acertou!")
else:
if(chute > numero_secreto):
print("Você errou! Seu chute foi maior do que o número secreto")
if(chute < numero_secreto):
print("Você errou! Seu chute foi menor do que o número secreto")
6
Estrutura incorreta, if alinhado com os prints, o código não irá
funcionar.
DEFINIÇÃO DE VARIÁVEIS:
else:
if(chute > numero_secreto):
print("Você errou! Seu chute foi maior do que o número secreto")
elif(chute < numero_secreto):
print("Você errou! Seu chute foi menor do que o número secreto")
print("Fim do jogo")
if(acertou):
print("Você acertou!")
else:
if(maior):
print("Você errou! Seu chute foi maior do que o número secreto")
elif(menor):
print("Você errou! Seu chute foi menor do que o número secreto")
print("Fim do jogo")
No caso o resultado será o mesmo, porém foi facilitado a escrita
definindo as variáveis:
Maior =Chute> numero secreto
Menor =Chute < numero secreto
Acertou =Chute = numero secreto
7
print("Você é uma criança.")
elif (idade > 12):
print("Você é um adolescente.")
Quando o usuário digitar 12, nenhuma condição será satisfeita! Repare que:
12 não é maior que 18 (idade > 18).
12 não é menor que 12 (idade < 12).
12 não é maior que 12 (idade > 12).
É preciso testar a igualdade através do ==.
Saiba também, que além do == (igualdade), > (maior) e < (menor), também
temos >= (maior ou igual), <= (menor ou igual) e != (diferente).
BOOL:
acertou = (chute == numero_secreto)
passou = True
errou = False
8
No curso sempre seguimos a forma que usa parênteses, pois deixa
mais claro qual é a condição, principalmente quando há várias
condições a avaliar através das operações lógicas AND ou OR. Veremos
mais para frente um exemplo concreto com as operações lógicas!
-String Interpolation:
Dentro da string, devemos utilizar as chaves ({}) para definir onde o valor da
variável deve ser inserido. E logo após a definição da string, chamamos a
função format, que recebe as variáveis/parâmetros na ordem de inserção:
Função For:
A função range possui os seguintes parâmetros:
range(start, stop, [step]
1,4,7,10
Break e continue:
9
Para controlar melhor os laços, existem os comandos break e continue, que são
utilizados dentro de um laço (for ou while). Ambos fazem parte do controle de
fluxo (control flow).
A diferença é que o break, quando for executado, sai do bloco do laço
abruptamente, enquanto continue apenas pula para próxima iteração.
i = 1
while(i <= 7):
print(i)
i = i + 1
if(i == 5):
break
A saída será:
1
2
3
4
Se você achou que o 5 seria impresso, errou. Isso porque a condição if, que
executa o break (que rompe o laço da iteração), é executada após o incremento da
variável i, sendo assim, quando o valor dela for 5, paramos a repetição antes que o
programa tenha chance de imprimir o valor 5.
O for é uma alternativa interessante ao while, muito utilizado para iterar por uma
sequência de valores. Lembrando que break e continue também podem ser
utilizados com while.
10
Quero que o número tenha no máximo sete caracteres. E que sejam
dois depois da vírgula.
EXERICIO:
Um desenvolvedor Python está tendo que adaptar um sistema americano de
cadastro de clientes americanos para os clientes brasileiros. Ele está esbarrando em
um problema, pois lá as pessoas têm o costume de se referir pelo sobrenome antes
do primeiro nome, por exemplo: Smith, John .
Ele deseja adaptar as mensagens do sistema para o padrão brasileiro, mas sem
alterar a estrutura de dados que ele recebe do banco de dados.
Digamos que ele queira exibir a seguinte mensagem: "Ola Sr. Leonardo Cordeiro",
como ele pode formatar a string para obter o resultado desejado?
Round e int(random)
Random, é uma tag que gera um número aleatório, na casa dos decimais de 0 a
1.
Para sofisticar esse código um pouco mais, você deve definir alguns
parâmetros.
Tais parâmetros como: int --- definir um numero inteiro
*100 – definir um valor entre 0 e 100
Ao definir tais parâmetros:
11
Número_random = random.random() *100
Int(numero_random)
*A função random, não é uma função built-in, ou seja, ela não está
automaticamente disponível no código python, tendo que importá-la, (import
random)
E se vc quiser definir uma intercessão, o comando é, random.randrange( **,
**)
import random
sorteado = random.randrange(0,4)
print(sorteado)
if sorteado == 1:
print( "Paulo")
elif sorteado == 2:
print("Juliana")
else:
print("Tamires")
/= DIV FLOAT
//= DIV INT
12
O operador // também é chamado integer division e sempre devolve o valor
inteiro (sem arredondar).
Para realmente concluir o tópico, saiba que o Python 2 só tem integer division,
mesmo tendo os dois operadores / e // ! No Python 2 não existe diferença entre os
dois operadores, veja o exemplo:
Repare que uma função pode chamar uma outra função. print também é uma
função e usamos ela dentro da nossa própria função.
Executando funções
Para chamar a nossa própria função, usamos o nome dela seguido pelos parênteses,
por exemplo:
nome_da_funcao()COPIAR CÓDIGO
nome_da_funcao()
nome_da_funcao()
nome_da_funcao()COPIAR CÓDIGO
Parâmetros e retorno
Uma função também pode receber parâmetros e retornar algum valor, por exemplo:
13
A função soma recebe dois parâmetros (a e b) e retorna a soma. Ao chamar a
função, podemos capturar o retorno:
s = soma(3, 4)
Definir uma função é muito relevante, pois com ela é possível, definir uma
função e ao importar, não será executada automaticamente.
# arquivo a.py
print('executando a')
# arquivo b.py
print('executando b')
# principal.py
import a
import b
Nesse caso, a execução é automática, pois a importação não veio de uma
função
Com isso vc cria uma função: def principal no seu arquivo principal
PYTHON VS C
14
A primeira diferença que vemos é que no C precisamos importar mais bibliotecas,
isso porque algumas funções no C não são built-in, como a de imprimir (printf)
e a de capturar entrada do usuário (scanf), por isso para utilizá-las é necessário
importar algumas bibliotecas.
Outra diferença é que no C somos obrigados a definir a função main, que é
considerada o início de qualquer programa, sem ela nada vai funcionar. Ao
contrário do Python, já que nós só criamos a função jogar() quando precisamos
importar o arquivo em outro, mas antes nós conseguíamos executar diretamente o
jogo sem problemas.
15
arquivos referentes aos módulos importados no jogos.py, ou seja, um arquivo
referente à adivinhacao e outro à forca. Mas o que são esses arquivos?
True or false
Devemos utilizar o tipo bool para representar verdadeiro (True) e falso.
>>> existe = True
>>> type(existe)
<class 'bool'>
16
return contador
texto= input(“”)
numero_de_vogais=contador_de_vogais(texto)
print(f”O numero de vogais na string é: {numero_de_vogais}
("Encontrei a letra {} na posição{}".format(letra,index))
palavra.find("b") # resultado é -1
Correto! Quando a busca nada encontra, o resultado é sempre -1.
palavra = "Alura"
for letra in palavra:
if(letra == "l"):
print("Achou!")
17
Errado! Repare que a instrução print não está indentada, logo, não faz parte do bloco if. É um
erro muito comum para quem está começando com Python.
palavra = "Alura"
for letra in palavra:
if(letra == "l"):
print("Achou!")
Correto! Respeita a indentação do Python.
PRINT ESTÁ DESLOCADO CORRETAMENTE.
FORMATAÇÃO DE STRINGS
a = "Cavalo"
b = "Calopsita"
print("{} e {}".format(b, a))
'Calopsita e Cavalo'
Correto! Nossa string possui duas lacunas definidas com {}. Os parâmetros passados para a
função format são passados na mesma ordem para preencherem a lacuna.
Listas:
Romeu fez quase tudo corretamente, errando apenas na linha:
campeao = colocacao[1]Apesar dele querer o primeiro colocado de seu torneio, ele
deve pedir o primeiro elemento da lista, que é o elemento de índice 0** e não de
índice **1.
A FUNÇAO LISTAS, ASSIM COMO STRINGS, TUPLAS E RANGE, SÃO SEQUENCIAS
Entre essas sequências, list é a única que é mutável. tuple, str e range são
imutáveis.
Algumas funções
A função min nos retorna o menor item de uma lista.
18
Importante saber que existem algumas funções que funcionam com todos os tipos
de sequências como os built-ins: len, min e max.
O del também é uma função built-in, mas só funciona para sequências mutáveis
como listas. Como o tuple é imutável, não podemos remover seus elementos, e
logo o código dá erro.
TUPLAS
As tuplas, são uma função parecida com a lista, porém dentro delas contém
dados dos quais não podem ser alterados, são imutáveis
Diferente das listas que usam []
As tuplas utilizam ()
Lembrando que para transformar um tuple em uma lista, temos a função list(..).
Se queremos transformar de list para tuple devemos usar tuple(..) Ambas são
funções built-in.
19
Marque todas as alternativas abaixo que são modificadores de acesso da
função open():
r
Correto! Utilizamos o modificador r para o modo de leitura
a
Correto! Utilizamos o modificador a para modo de append, adicionando conteúdo a um arquivo
pré existente
w
Correto! Utilizamos o modificador w para modo de escrita.
#arquivo copia.py
logo = open('python-logo.png', 'rb')
data = logo.read()
logo.close()
20
leitura seja feita de modo mais controlado. Também existe a função read() que
por sua vez lê o arquivo inteiro.
arquivo = open('frutas.txt','r')
conteudo = arquivo.read()
print(conteudo)
conteudo = arquivo.read()
print(conteudo)
COPIAR CÓDIGO
A primeira vez é exibida corretamente o conteudo, porém na segunda não é
exibido nada. Por quê?
JORNADA PYTHON
AULA 1- AUTOMATIZAÇÃO DE TAREFAS
Criar bots de automatização
BANCO DE DADOS
SQL, que significa Structured Query Language, é uma linguagem de programação usada para
gerenciar e manipular bancos de dados relacionais. Existem duas principais categorias de
comandos SQL: DDL (Data Definition Language) e DML (Data Manipulation Language).
Cada uma dessas categorias tem um propósito específico dentro do gerenciamento de bancos
de dados.
21
DDL (Data Definition Language): DDL é usada para definir a estrutura do banco de dados,
ou seja, para criar, alterar e excluir objetos de banco de dados. Alguns dos comandos DDL
mais comuns incluem:
CREATE: Usado para criar novos objetos de banco de dados, como tabelas, índices, visões,
procedimentos armazenados, etc. ALTER: Utilizado para modificar a estrutura de objetos
existentes, como adicionar, renomear ou excluir colunas de uma tabela. DROP: Usado para
excluir objetos de banco de dados, como tabelas, índices, visões, etc. TRUNCATE: Remove
todos os dados de uma tabela, mas mantém a estrutura da tabela. RENAME: Usado para
renomear objetos de banco de dados.
Exemplo de comando DDL para criar uma tabela:
DML (Data Manipulation Language): DML é usada para manipular os dados armazenados no
banco de dados. Os comandos DML permitem que você insira, atualize, consulte e exclua
dados de tabelas. Alguns dos comandos DML mais comuns incluem:
SELECT: Usado para recuperar dados de uma ou mais tabelas. INSERT: Utilizado para
adicionar novos registros a uma tabela.
UPDATE: Usado para modificar registros existentes em uma tabela.
DELETE: Usado para excluir registros de uma tabela. Exemplo de comando DML para
inserir dados em uma tabela:
22
SQLITE3
import sqlite3
23
preco REAL)''')
24
# Exibe o conteúdo atualizado da tabela
cursor.execute("SELECT * FROM produtos")
linhas = cursor.fetchall()
print("\nConteúdo atualizado da tabela:")
for linha in linhas:
print(linha)
# Fecha a conexão com o banco de dados
conn.close()
Orientação a objetos
Antes de criar um objeto devemos criar uma class (através de um novo arquivo)
Ao criar uma class, é necessário que o nome da classe seja em letra maiúscula,
seguido por outro substantivo se necessário, também com letra maiúscula
(pass: A instrução pass diz ao programa para desconsiderar essa condição e continuar
executando o programa como sempre. A instrução pass pode criar classes mínimas, ou agir
25
como um espaço reservado enquanto estamos trabalhando em novos códigos e pensando em
um nível algorítmico antes de construir detalhes.)
Objeto:
conta.Conta = (novo objeto criado)
conta= Conta(...)
conta2= Conta(...)
2 objetos criados
vc cria objetos baseados em classes, assim como fazemos bolos baseados em receitas
class Livro:
pass
livro1 = Livro()
1. Nádia declarou uma classe chamada Livro e instanciou essa classe criando um
objeto chamado livro1.
2. No código desenvolvido, ela declarou uma classe chamada Livro e criou um objeto
chamado livro1 a partir dessa classe.
26
Criamos uma função, mas a ideia é definir os atributos e as características. Para
isso, precisaremos da variável self, que está dentro da função __init__().
def __init__(self):
print("Construindo objeto...{}".format(self))
self.numero = 123
self.titular = "Nico"
self.saldo = 55.0
self.limite = 1000.0
class Conta:
27
self.saldo = saldo
self.limite = limite
class Video:
def __init__(self, titulo, duracao, views):
self.titulo = titulo
self.duracao = duracao
self.views = views
Esse código define a classe Video com um método construtor __init__, que faz a criação dos
atributos de título, duração e views da maneira correta.
Vinicius precisa criar um objeto da classe Mesa para uma nova cliente chamada
"Lais", que possui o número da mesa 1234, com a capacidade de 6 pessoas e
encontra-se vazia. Como ele deve fazer isso usando o código que ele escreveu?
Alternativa correta
Lais = Mesa(numero=1234, capacidade=6, ocupada=False)
Ela cria um objeto da classe Mesa chamado Lais, passando os valores 1234, 6 e False
como argumentos para os parâmetros número, capacidade, e ocupada,
respectivamente. Dessa forma, o objeto Lais será inicializado com esses valores.
28
O parâmetro self é uma convenção usada nas definições de métodos de uma classe, que
representa a própria instância da classe. No entanto, ao criar um objeto da classe Mesa, não é
necessário passar o parâmetro self. O parâmetro self é automaticamente preenchido pelo Python
quando o método é chamado em um objeto.
Class Conta(nome,saldo,limite)
conta= Conta(“Pedro”,55,2000)
conta.saldo
55
Conta.nome
Pedro
29
Depois, criamos a classe Conta, usamos parâmetros, dentro da referência conta —
como vemos na segunda parte do diagrama. O resultado é o objeto Conta criado
em memória, com os parâmetros passados para a função construtora, como é
ilustrado na parte verde do diagrama.
30
Nós continuamos a ter acesso aos atributos, ainda que eles tenham mudado de
nome — o Python adicionou a classe antecedido por _. Ao
escrevermos conta._Conta__limite, o Python informará ao desenvolvedor que
o atributo __saldo não deve ser acessado.
O Python avisa que o atributo foi criado para ser usado dentro da classe, por meio
dos métodos. Porém, continuaremos a ter acesso aos valores. Mas se o
desenvolvedor decidir acessar o atributo igualmente, ele será alertado de que está
fazendo algo inapropriado, ou seja, está "brincando com fogo".
O prefixo __ indica que o atributo foi criado para ser usado dentro da classe, por meio
dos métodos, o tornando privado.
O encapsulamento refere-se ao ato de tornar os atributos privados e permitir seu acesso apenas
por meio dos métodos da classe, usando o prefixo __.
Atributos:
Com o uso do return, sempre nos será retornado o valor de um atributo.
Escrevemos métodos específicos que nos devolvem os dados solicitados. É comum
utilizarmos funcionalidades como estas para gerar relatórios, que nos mostre os
dados principais da conta. Por serem recorrentes, existe uma nomenclatura padrão
para esses métodos: getters (que nos dão um dado). Ou seja, a forma mais
apropriada de nomear os métodos seria usando o nome get.
def get_saldo(self):
return self.__saldo
def get_titular(self):
31
return self.__titular
Método sacar
32
def pode_sacar(self, valor_a_sacar):
valor_disponivel_a_sacar = self.__saldo + self.__limite
return valor_a_sacar <= valor_disponivel_a_sacar
class Conta:
@staticmethod
def codigos_bancos():
return {'BB': '001', 'Caixa': '104', 'Bradesco':'237'}
Isto significa que se você tem uma boa base de OO vista no curso de Python,
também já terá aprendido sobre Java, PHP, C++, além de outras linguagens que
seguem o mesmo paradigma.
33
Podemos perceber isso, comparando o arquivo conta.py e o Conta.java. A
diferença entre os dois são os detalhes da sintaxe, mas o paradigma é o mesmo. Por
exemplo, os dois terão uma classe Conta, que em Java está assim:
class Conta {
//atributos
private int numero;
private String titular;
private double saldo;
private double limite;
//construtor
Conta(int numero, String titular, double saldo, double limite) {
this.numero = numero;
this.titular = titular;
this.saldo = saldo;
this.limite = limite;
}
}
class Conta:
34
Perceba que quando aprendemos sobre o paradigma Orientado a Objetos, podemos
aplicar o conceito em diversas linguagens, porque ele é seguido da mesma forma,
mudando apenas as sintaxes específicas de cada linguagem.
35
Conta contaDoNico = new Conta(123, "Nico", 55.5, 1000.0);
contaDoNico.deposita(100.0);
REVISAO
A classe é a menor unidade de organização no mundo OO. Colocamos os
elementos dentro, com os referentes de atributos e os diferentes métodos.
Colocamos dentro da classe, tudo o que está relacionado a ela. No caso,
os atributos relacionados com a classe Conta são:
numero
titular
saldo
limite
Os métodos relacionados são:
extrato(self)
deposita(self, valor)
saca(self, valor)
Isto significa que evitaremos colocar na Conta o código relacionado com impostos
da nota fiscal, porque as duas coisas não estão relacionadas. Seria mais apropriado
criar a classe notaFiscal e adicionar o código relacionado.
Vimos como escrever uma classe no mundo Python, adicionamos um construtor e,
além disso, mostramos como ele é executado. Usamos o nome da classe, depois,
passamos os parâmetros como vemos no conteúdo do quadro azul do diagrama:
conta = Conta(123, "Nico", 55.5, 1000.0)
conta.extrato()
conta.deposita(100.0)
conta.saldo
36
E o resultado será um objeto:
objeto Conta
numero = 123
titular = "Nico"
saldo = 55.5
limite = 1000.0
Essa referência sabe onde está guardado o objeto. Tendo esse endereço, podemos
interagir com a classe, trabalhando com o objeto. Ou seja, quando
escrevemos conta.extrato() vai executar o elemento do extrato. Com ele,
acessaremos o objeto por meio do self.
o self é uma referência que sempre assume o valor da referência que fez a
chamada. Por exemplo, se a referência é conta, o self será um equivalente na linha
em que for utilizado: deposita(self, valor).
Os métodos podem crescer e ficar ainda maiores e mais complexos, mas para quem
faz as chamadas do deposita(), a quantidade de linhas de um método é irrelevante.
def deposita(self, valor):
self._saldo += valor
Isto ocorre, porque o código está encapsulado
37
Uma classe pode ter diversos objetos. Usando a analogia da receita, ela pode ter
diversos elementos. Basta repetir a linha que constrói o objeto, passando os novos
valores.
Se temos um novo objeto de memória, teremos uma nova referência que guardará o
valor do endereço do objeto.
print('''
░██████╗░█████╗░██████╗░░█████╗░██████╗░
███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗
██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗
██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
╚█████╗░███████║██████╦╝██║░░██║██████╔╝
█████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░
░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗
██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗
██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║
███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝
╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝
╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░
''')
print(f ...{})
você colocar um f dentro do print permita que vc coloque uma variável
dentro de uma string através das chaves
38
print('''Camiseta Unissex
Tamanho: P, M, G, GG
Material: 100% algodão
Cores disponíveis: Preto, Branco, Vermelho''')
As aspas triplas (''' ou """) são usadas para criar strings que abrangem várias linhas. Elas são úteis
quando você precisa incluir quebras de linha e manter o formato do texto.
DICIONARIOS
restaurantes = [{'nome':'Praça', 'categoria':'Japonesa', 'ativo':False},
{'nome':'Pizza Superma', 'categoria':'Pizza',
'ativo':True}]
39