Python Descomplicado
Python Descomplicado
1° edição
Iniciantes
Introdução
Neste livro, você aprenderá os conceitos fundamentais de Python e como aplicá-los na prática
para desenvolver programas eficientes e funcionais. A partir de exemplos simples e intuitivos,
você irá adquirir as habilidades necessárias para criar suas próprias soluções em Python e se
tornar um programador de sucesso.
Ao longo dos capítulos, você será guiado desde a instalação e configuração do ambiente de
desenvolvimento, passando por temas como tipos de dados, estruturas de controle de fluxo,
funções, classes e objetos, até chegar em assuntos mais avançados como manipulação de
arquivos, acesso a banco de dados, desenvolvimento web e introdução à inteligência artificial.
Este livro é voltado para iniciantes em programação, mas também pode ser uma referência útil
para programadores experientes que desejam aprimorar suas habilidades em Python.
Esperamos que você aproveite bem essa jornada e se divirta programando em Python!
Sumário
Classes e objetos
Funções
Sintaxe básica:
SQLite ou SQLAlchemy
• Contagem de letras
Vamos começa nossa aula de python!
python :
Python pode ser usada em diversas áreas, como desenvolvimento web, científico, análise de
dados, inteligência artificial e muitas outras. Ela possui uma grande comunidade de
desenvolvedores que contribuem para o seu crescimento e evolução constante, além de uma
vasta biblioteca de módulos e ferramentas que facilitam o desenvolvimento de programas em
Python.
Python é uma das linguagens de programação mais utilizadas no mundo por diversas razões.
Algumas delas são:
1. Simplicidade: Python tem uma sintaxe clara e intuitiva, o que a torna fácil de aprender
e usar. Isso faz com que seja uma das linguagens mais populares para iniciantes em
programação.
2. Versatilidade: Python pode ser usada em diversas áreas, como desenvolvimento web,
científico, análise de dados, inteligência artificial e muitas outras. Ela possui uma
grande variedade de bibliotecas e frameworks que permitem o desenvolvimento de
projetos de diferentes tipos e tamanhos.
3. Comunidade ativa: Python tem uma grande comunidade de desenvolvedores em todo
o mundo, que contribuem constantemente para o seu desenvolvimento e evolução.
Isso significa que há muitos recursos disponíveis online para ajudar programadores a
aprender e resolver problemas em Python.
Esses fatores contribuem para que Python seja uma das linguagens de programação mais
utilizadas no mundo atualmente.
Com :
PyCharm: https://www.jetbrains.com/pycharm/download/
Notepad++: https://notepad-plus-plus.org/downloads/
Esses são apenas alguns dos editores de código disponíveis para Python. Há muitos outros
disponíveis gratuitamente na internet, por isso, você pode experimentar vários e escolher o
que mais lhe agrada.
5. Abra o editor de código e crie um novo arquivo com a extensão “.py”. Este será o
arquivo onde você escreverá seu código Python.
6. Depois de baixar e instalar um editor de código, você pode criar um novo arquivo com
a extensão “.py” e começar a escrever seu código Python. Em seguida, você pode
salvar o arquivo no seu computador e executá-lo a partir do prompt de comando do
Windows digitando “python nome_do_arquivo.py”.
O editor de código não é uma parte integrante do Python, mas é uma ferramenta importante
para tornar a escrita e o gerenciamento de programas Python mais fáceis e eficientes.
Agora, você está pronto para começar a escrever código Python em seu ambiente de
desenvolvimento! Lembre-se de salvar seus arquivos com frequência e executá-los no prompt
de comando do Windows digitando “python nome_do_arquivo.py”.
A sintaxe básica em Python se refere às regras e convenções que devem ser seguidas ao
escrever um código em Python. É importante seguir as regras de sintaxe para que o código seja
legível e possa ser entendido por outras pessoas.
Algumas das principais regras de sintaxe em Python incluem:
1. Indentação:
Python usa a indentação para delimitar blocos de código. É importante manter a mesma
quantidade de espaço em branco no início de cada linha dentro do mesmo bloco.
Normalmente, é recomendável usar quatro espaços para cada nível de indentação.
Exemplo :
Resultado = a + b
Return resultado
Resultado = a + b
Return resultado
2. Comentários:
Os comentários são usados para explicar o código e torná-lo mais legível. Em Python, os
comentários começam com o símbolo “#” e vão até o final da linha.
Exemplo :
3. Variáveis:
As variáveis em Python devem começar com uma letra e podem conter letras, números e
underscores. Os nomes das variáveis são case-sensitive, ou seja, “nome” e “Nome” são duas
variáveis diferentes.
Exemplo :
Python
Nome = “Maria”
Idade = 25
Altura = 1.75
4. Funções:
As funções em Python são definidas usando a palavra-chave “def” seguida pelo nome da
função e pelos parâmetros entre parênteses. A função é finalizada com dois pontos e o bloco
de código correspondente é indentado.
Exemplo :
def dobrar(numero):
Resultado = numero * 2
Return resultado
5. Condicionais:
As condicionais em Python são criadas com as palavras-chave “if”, “elif” e “else”. O bloco de
código correspondente deve ser indentado corretamente.
Exemplo :
Idade = 18
Print(“Você é adulto.”)
Else:
Print(“Você é idoso.”)
6. Loops:
Python suporta dois tipos de loops: “for” e “while”. O bloco de código correspondente
também deve ser indentado corretamente.
Exemplo :
For i in range(10):
Print(i)
Python
I=0
Print(i)
I += 1
Esses são apenas alguns exemplos de código em Python que mostram algumas das regras de
sintaxe básica da linguagem.
Essas são apenas algumas das regras básicas de sintaxe em Python. É importante aprender e
seguir essas regras para escrever um código Python correto e legível.
Imprimir na tela:
Para imprimir algo na tela, use a função “print()”. Por exemplo, para imprimir a mensagem
“Olá, mundo!”, digite:
Variáveis:
As variáveis são usadas para armazenar dados em um programa Python. Para criar uma
variável, escolha um nome para ela e atribua um valor a ela usando o operador “=””. Por
exemplo:
Nome = “Maria”
Idade = 25
Tipos de dados:
Operadores aritméticos:
Python suporta vários operadores aritméticos para realizar operações matemáticas, como
adição (+), subtração (-), multiplicação (*), divisão (/) e exponenciação (**).
A = 10
B=5
Soma = a + b # soma = 15
Subtracao = a – b # subtracao = 5
Multiplicacao = a * b # multiplicacao = 50
Essas são apenas algumas das sintaxes básicas em Python. À medida que você progride no
aprendizado de Python, irá explorar muitos outros recursos e sintaxes que a linguagem
oferece.
Listas:
Python
Numeros = [1, 2, 3, 4, 5]
Python
Numeros = [1, 2, 3, 4, 5]
Primeiro_numero = numeros[0]
Ultimo_numero = numeros[-1]
Python
Numeros = [1, 2, 3, 4, 5]
Print(numero)
Dicionários:
Python
Python
Nome_da_pessoa = pessoa[“nome”]
Python
Print(chave, valor)
Strings:
Python
Python
# Concatenando strings
Nome = “Maria”
Python
# Formatando strings
Nome = “Maria”
Idade = 25
Funções lambda:
Python
Dobro = lambda x: x * 2
Importando módulos:
Python
Import math
Raiz_quadrada = math.sqrt(25)
Esses são apenas alguns exemplos adicionais de código Python que mostram diferentes
aspectos da sintaxe da linguagem
Exercício :
Operações aritméticas
A = 10
B=5
Soma = a + b
Subtracao = a – b
Multiplicacao = a * b
Divisao = a / b
Print(“Soma:”, soma)
Print(“Subtração:”, subtracao)
Print(“Multiplicação:”, multiplicacao)
Print(“Divisão:”, divisao)
Numero = 10
If numero > 0:
Print(“Número positivo”)
Print(“Número negativo”)
Else:
Print(“Zero”)
I=1
Print(i)
I += 1
Escreva um programa que calcule a soma dos números de 1 a 10 usando um loop for.
Soma = 0
Soma += i
Print(“Soma:”, soma)
Conversão de tipos
Escreva um programa que leia um número inteiro digitado pelo usuário e exiba uma
mensagem informando se o número é par ou ímpar.
Else:
Listas
Escreva um programa que crie uma lista com os números de 1 a 10 e exiba a lista na tela.
Print(numeros)
Escreva um programa que peça ao usuário para digitar uma senha. Se a senha digitada for
“abc123”, exiba uma mensagem de sucesso e encerre o programa. Se o usuário digitar a senha
incorreta três vezes, exiba uma mensagem de erro e encerre o programa.
Senha_correta = “abc123”
Tentativas = 0
While True:
If senha == senha_correta:
Print(“Senha correta!”)
Break
Else:
Tentativas += 1
If tentativas == 3:
Funções
Escreva uma função que receba dois números como argumentos e exiba o resultado da divisão
do primeiro pelo segundo. Se o segundo número for zero, a função deve exibir uma mensagem
de erro.
If num2 == 0:
Else:
Print(“Resultado:”, resultado)
Divisao(10, 2)
Divisao(10, 0)
List comprehension
Escreva um programa que crie uma lista com os quadrados dos números de 1 a 10.
Contagem de letras
Escreva um programa que receba uma string e conte quantas vezes cada letra aparece na
string. O resultado deve ser exibido em ordem alfabética.
Exemplo:
B: 2
C: 1
D: 1
R: 2
Números primos
Escreva uma função que receba um número inteiro e verifique se ele é primo ou não. O
resultado deve ser exibido na tela.
FizzBuzz
Análise de dados
Escreva um programa que receba uma lista de números e exiba a soma, média, valor mínimo e
valor máximo da lista.
Adivinhe o número
Escreva um programa que gere um número aleatório entre 1 e 100 e peça para o usuário
adivinhar o número. O programa deve informar se o número digitado é maior ou menor do
que o número gerado, até que o usuário acerte o número. O programa deve informar também
quantas tentativas foram necessárias para acertar o número.
Contagem de letras
Nesse exercício, você precisa receber uma string do usuário e contar quantas vezes cada letra
aparece nessa string. Para isso, você pode utilizar um dicionário para armazenar a contagem
de cada letra. Percorra cada letra da string e atualize o valor correspondente no dicionário.
Depois, basta percorrer o dicionário em ordem alfabética e exibir o resultado.
Números primos
Para verificar se um número é primo ou não, você pode percorrer os números de 2 até a raiz
quadrada do número em questão e verificar se há algum divisor inteiro. Se não houver, o
número é primo. Caso contrário, não é.
FizzBuzz
Esse exercício é bastante comum em processos seletivos de empresas que usam Python. Você
precisa percorrer os números de 1 a 100 e verificar se são múltiplos de 3, 5 ou ambos. Para
isso, você pode utilizar o operador %, que retorna o resto da divisão. Se o resto for zero, o
número é múltiplo. Basta então imprimir “Fizz”, “Buzz” ou “FizzBuzz” de acordo com as regras.
Análise de dados
Nesse exercício, você precisa receber uma lista de números e calcular a soma, média, valor
mínimo e valor máximo. Para calcular a soma, basta percorrer a lista e ir somando os valores.
Para calcular a média, divida a soma pelo tamanho da lista. Para encontrar o valor mínimo e
máximo, utilize as funções min e max do Python.
Adivinhe o número
Nesse exercício, você precisa gerar um número aleatório entre 1 e 100 e pedir para o usuário
adivinhar o número. Para gerar o número aleatório, você pode utilizar a função randint do
módulo random. Depois, basta pedir para o usuário digitar um número e verificar se é igual ao
número gerado. Se não for, informe se o número é maior ou menor e continue pedindo para o
usuário tentar novamente. Quando o usuário acertar o número, exiba quantas tentativas
foram necessárias.
Exemplo
Nesse código, a função “ count_letters “ “recebe uma string “ s “como parâmetro. Em
seguida, é criado um dicionário ” letter_count “ para armazenar a contagem de cada letra. O
laço “ for “ percorre cada letra da string e verifica se ela é uma letra do alfabeto. Se for,
converte a letra para minúsculo e atualiza o valor correspondente no dicionário.
Mais Exercícios :
Sintaxe básica
Cálculo de fatorial:
Crie uma função que receba um número inteiro e retorne o fatorial desse número. O fatorial
de um número é dado pela multiplicação de todos os números inteiros positivos menores ou
iguais a ele. Por exemplo, o fatorial de 5 é 5 x 4 x 3 x 2 x 1 = 120.
Verificação de palíndromo:
Crie uma função que receba uma string e verifique se ela é um palíndromo, ou seja, se pode
ser lida da mesma forma de trás para frente. Por exemplo, a string “arara” é um palíndromo.
Crie uma função que receba uma lista de números e retorne a média aritmética desses
números.
Ordenação de lista:
Crie uma função que receba uma lista de números e retorne uma nova lista com os mesmos
números ordenados em ordem crescente.
Crie uma função que receba o raio de um círculo e retorne a área desse círculo. A fórmula para
o cálculo da área de um círculo é A = pi x r^2, onde pi é uma constante aproximadamente igual
a 3.14159 e r é o raio do círculo.
Cálculo de fatorial:
Def fatorial(n):
If n == 0:
Return 1
Else:
Return n * fatorial(n-1)
Resultado = fatorial(numero)
Verificação de palíndromo:
Def palindromo(palavra):
Palavra = palavra.lower()
Inverso = palavra[::-1]
If palavra == inverso:
Return True
Else:
Return False
If palindromo(texto):
Print(f”{texto} é um palíndromo!”)
Else:
Def media(numeros):
Soma = sum(numeros)
N = len(numeros)
Media = soma / n
Return media
Resultado = media(lista)
Ordenação de lista:
Def ordena_lista(numeros):
Numeros_ordenados = sorted(numeros)
Return numeros_ordenados
Lista = [3, 7, 1, 9, 4]
Lista_ordenada = ordena_lista(lista)
Print(f”A lista {lista} ordenada fica assim: {lista_ordenada}”)
Def area_circulo(raio):
Pi = 3.14159
Area = pi * (raio ** 2)
Return area
Resultado = area_circulo(raio)
Tipos de dados:
Números:
# Números inteiros
Num_int = 10
Num_float = 3.14
# Números complexos
Num_complex = 2 + 3j
Strings:
# Strings simples
# Strings multilinhas
De uma string
Multilinha.”””
Booleanos:
# Valores booleanos
Verdadeiro = True
Falso = False
Listas:
Lista1 = [1, 2, 3, 4, 5]
# Lista de strings
Lista2 = [“maçã”, “banana”, “laranja”]
Tuplas:
semelhante a listas, mas são imutáveis, ou seja, não podem ser modificadas após a criação.
Tupla1 = (1, 2, 3, 4, 5)
# Tupla de strings
Conjuntos:
Conjunto1 = {1, 2, 3, 4, 5}
# Conjunto de strings
Dicionários:
coleções de pares chave-valor, onde cada valor é acessado por uma chave única.
# Dicionário com pares chave-valor de string
Bytes e bytearray:
são usados para representar sequências de bytes. Bytes são imutáveis, enquanto bytearray
pode ser modificado. Eles são criados usando a letra ‘b’ antes de aspas simples ou duplas. Por
exemplo, b’hello’, bytearray(b’world’).
# Bytes
Bytes1 = b’abc’
# bytearray
Bytearray1 = bytearray(b’abc’)
Range:
é uma sequência imutável de números usada para iterar em um loop for. É criado usando a
função range(), que pode receber um, dois ou três argumentos. Por exemplo, range(10) gera
uma sequência de números de 0 a 9.
Range1 = range(10)
None:
é usado para representar a ausência de valor. É comumente usado para inicializar variáveis ou
retornar valores de função que não retornam nenhum valor.
# Valor nulo
Nulo = None
Em Python, o tipo de dados de uma variável é determinado dinamicamente pelo valor que ela
contém. Isso significa que não é necessário declarar explicitamente o tipo de dados de uma
variável ao criá-la, como em algumas outras linguagens de programação. Em vez disso, o tipo
de dados é atribuído automaticamente quando um valor é atribuído à variável. Por exemplo,
se você atribuir um número inteiro a uma variável, o Python reconhecerá que o tipo de dados
é um número inteiro.
Conjuntos (set):
são coleções não ordenadas e sem elementos duplicados. Eles são criados usando chaves {} ou
a função set(). Por exemplo, {1, 2, 3} ou set([4, 5, 6]).
# criando um conjunto
Set1 = {1, 2, 3, 4, 5}
# imprimindo os conjuntos
Print(set1)
Print(set2)
Saída
{1, 2, 3, 4, 5}
{4, 5, 6, 7}
Frozensets:
são conjuntos imutáveis, criados usando a função frozenset(). Eles são úteis quando você
precisa de um conjunto como chave em um dicionário.
# criando um frozenset
# imprimindo o frozenset
Print(frozen_set)
Saída:
Frozenset({1, 2, 3, 4, 5})
são usados para representar números complexos, com uma parte real e uma parte imaginária.
Eles são criados usando a letra ‘j’ para representar a parte imaginária. Por exemplo, 3 + 2j.
Num_complexo = 3 + 2j
Print(num_complexo)
Saída
(3+2j)
Booleans estendidos (bool):
embora Python tenha apenas os valores True e False para o tipo bool, você pode usar esses
valores em operações aritméticas e de comparação. True é considerado como 1 e False é
considerado como 0.
Matriz
# Imprimindo a matriz
Print(linha)
Neste exemplo, criamos uma matriz 3x3 com valores inteiros. Cada linha da matriz é
representada por uma lista, e as três listas são agrupadas em outra lista, formando assim a
matriz. Depois, imprimimos a matriz percorrendo cada linha e imprimindo seus valores. O
resultado seria:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
são usados para representar números em notação hexadecimal. Eles são criados usando a
função hex(), que retorna uma string com o valor hexadecimal. Por exemplo, hex(10) retorna
‘0xa’.
Num_hex = hex(255)
Print(num_hex)
Saída:
0xff
Inteiro (int)
Flutuante (float)
Booleano (bool)
Complexo (complex)
String (str)
Lista (list)
Tupla (tuple)
Dicionário (dict)
Conjunto (set)
Nenhum (NoneType)
Objeto (object)
Função (function)
Gerador (generator)
Classe (class)
Módulo (module)
Arquivo (file)
Bytes (bytes)
ByteArray (bytearray)
Range (range)
Enum (enum)
Decimal (decimal)
Fração (fraction)
Data (date)
Hora (time)
Tempo (datetime)
Timestamp (timestamp)
Intervalo de tempo (timedelta)
Vetor (array)
Matriz (matrix)
Conjunto de bits (bitset)
Registro (record)
Ponteiro (pointer)
Endereço (address)
Tipagem dinâmica (dynamic typing)
Tipagem estática (static typing)
Tipos personalizados (user-defined types)
JSON (JavaScript Object Notation)
XML (Extensible Markup Language)
YAML (YAML Ain’t Markup Language)
BSON (Binary JSON)
Inteiro (int):
X = 10
Y = -5
Float:
X = 3.14
Y = -2.5
String (str):
X = “Olá, mundo!”
Y = ‘Python é incrível’
Boolean (bool):
X = True
Y = False
Lista (list):
X = [1, 2, 3, 4, 5]
Tupla (tuple):
X = (1, 2, 3, 4, 5)
Dicionário (dict):
Conjunto (set):
X = {1, 2, 3, 4, 5}
Frozenset:
X = frozenset([1, 2, 3, 4, 5])
X = 3 + 2j
Y = -1j
X = True + True
Y = False * 10
X = hex(10)
Y = hex(255)
Crie uma lista de números inteiros e use um loop para somar todos os números e
imprimir o resultado.
Crie um dicionário que represente um livro, com as chaves “título”, “autor” e “ano de
publicação”. Em seguida, imprima o título do livro.
Crie um conjunto de cores e adicione algumas cores diferentes. Em seguida, use a
função len() para imprimir quantas cores há no conjunto.
Crie uma string com o valor “1234” e converta-a em um número inteiro.
Crie um número complexo com a parte real igual a 3 e a parte imaginária igual a 4. Em
seguida, imprima o módulo do número complexo (ou seja, sua distância até a origem
do plano cartesiano).
Print(numeros_pares)
Conjunto1 = {1, 2, 3, 4, 5}
Conjunto2 = {4, 5, 6, 7, 8}
Intersecao = conjunto1.intersection(conjunto2)
Print(intersecao)
Crie uma tupla com 3 elementos e tente alterar o valor do primeiro elemento:
Tupla = (1, 2, 3)
Tupla[0] = 4
Crie uma variável do tipo booleano e use operadores lógicos para verificar se ela é
verdadeira ou falsa:
Var_booleana = True
Print(var_booleana or False)
Print(not var_booleana)
3. Crie uma matriz 4x4 e exiba todos os seus elementos que são divisíveis por 3.
4. Crie uma matriz 5x5 com valores aleatórios entre 0 e 9 e exiba a soma dos elementos
da diagonal principal.
5. Crie uma matriz 3x3 e verifique se ela é simétrica (ou seja, se a matriz transposta é
igual à matriz original).
1)
Soma = 0
Soma += elemento
Print(soma)
2)
For i in range(len(matriz1)):
For j in range(len(matriz2[0])):
For k in range(len(matriz2)):
Print(linha)
3)
Matriz = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
Divisiveis_por_3 = []
If elemento % 3 == 0:
Divisiveis_por_3.append(elemento)
Print(divisiveis_por_3)
4)
Import random
Soma_diagonal = 0
For i in range(len(matriz)):
Soma_diagonal += matriz[i][i]
Print(soma_diagonal)
5)
Simetrica = True
For i in range(len(matriz)):
For j in range(len(matriz)):
If matriz[i][j] != matriz[j][i]:
Simetrica = False
If simetrica:
Else:
Import datetime
Agora = datetime.date.today()
Print(agora.strftime(‘%Y-%m-%d’))
Import datetime
Agora = datetime.datetime.now()
Hora_atual = agora.time()
Print(hora_atual.strftime(‘%H:%M:%S’))
Import datetime
Agora = datetime.datetime.now()
Print(agora.strftime(‘%Y-%m-%d %H:%M:%S’))
Import datetime
Print(data_hora)
5. Crie um objeto de data e hora para representar a data e hora atual em UTC
(tempo universal coordenado).
Import datetime
Agora = datetime.datetime.utcnow()
Agora que você já visualizou e viu como aprende faze dados em seu python
Sobre :
Estruturas de controle de fluxo são instruções que permitem que um programa tome decisões
ou execute repetições com base em certas condições. Essas estruturas são importantes porque
permitem que o programa seja mais dinâmico e flexível, permitindo que ele ajuste seu
comportamento de acordo com diferentes cenários.
13. Context managers: uma técnica para garantir que um recurso seja alocado
e desalocado corretamente em um bloco de código, usando a sintaxe with.
Essas são apenas algumas das estruturas de controle de fluxo disponíveis em Python, mas elas
cobrem a maioria dos casos de uso comuns. Combinando essas estruturas com operadores
lógicos e comparativos, é possível criar fluxos de controle sofisticados e dinâmicos em seus
programas.
2. If/elif/else
A estrutura de controle if/elif/else é usada para executar diferentes blocos de código
dependendo das condições definidas.
O código abaixo é um exemplo simples que usa a estrutura if/else para imprimir uma
mensagem dependendo se a idade de uma pessoa é maior ou menor que 18 anos:
Idade = 20
Se a variável idade for maior ou igual a 18, a mensagem “Você é maior de idade” será
impressa. Caso contrário, a mensagem “Você é menor de idade” será impressa.
Podemos adicionar condições adicionais usando a estrutura elif (uma abreviação para
“else if”). O código abaixo adiciona uma condição para imprimir uma mensagem
personalizada para pessoas com idade entre 13 e 17 anos:
Idade = 15
Se a idade for maior ou igual a 18, a mensagem “Você é maior de idade” será
impressa. Se a idade for menor que 18, a próxima condição será testada. Se a idade for
maior ou igual a 13, a mensagem “Você é um adolescente” será impressa. Caso
contrário, a mensagem “Você é uma criança” será impressa.
A estrutura if/elif/else pode ser usada com qualquer tipo de condição, não apenas com
comparações numéricas. Por exemplo, o código abaixo usa a estrutura para verificar se
uma string contém uma determinada palavra:
If “gato” in frase:
Print(“A frase contém a palavra ‘gato’.”)
Else:
Print(“A frase não contém a palavra ‘gato’.”)
3. For/else:
Else:
Se o loop for concluído com êxito (ou seja, sem uma instrução break), o bloco de código na
cláusula else será executado.
Numeros = [1, 2, 3, 4, 5]
If numero == 3:
Continue
Print(numero)
Else:
Neste exemplo, o loop for itera sobre a lista numeros. Se o número atual for igual a 3, o loop
continua sem imprimir o número atual. Se o número atual não for igual a 3, o loop imprime o
número atual. Quando o loop for concluído com êxito, a mensagem “Cheguei ao fim da lista!”
será impressa. Se houver uma instrução break dentro do loop, o bloco else não será
executado.
Além disso, o for/else pode ser usado para verificar se um item está presente em uma lista:
Break
Else:
Neste exemplo, o loop for itera sobre a lista alunos e verifica se o item “Fernanda” está
presente. Se “Fernanda” estiver presente, o loop é interrompido e a mensagem “Fernanda
está na lista!” é impressa. Se “Fernanda” não estiver presente, o loop é concluído com êxito e
a mensagem “Fernanda não está na lista!” é impressa.
4. While/else
A estrutura de controle de fluxo while é usada para repetir um bloco de código enquanto uma
determinada condição for verdadeira. O bloco de código dentro do while será executado
repetidamente até que a condição se torne falsa.
O bloco de código dentro do while pode ser interrompido por uma instrução break se uma
determinada condição for atendida. Além disso, podemos usar a instrução continue para pular
uma iteração e continuar com a próxima.
A cláusula else pode ser usada juntamente com a estrutura while para executar um bloco de
código quando a condição se torna falsa. O bloco de código dentro do else só será executado
se a cláusula while terminar normalmente, sem ser interrompido por uma instrução break.
I=1
Print(i)
I += 1
Else:
5. Try/except/else/finally
A estrutura try/except/else/finally é usada para lidar com exceções em Python. Ela permite
que você execute um bloco de código e capture exceções que possam ocorrer durante a sua
execução. O bloco de código dentro do try é executado primeiro, e se não houver exceções, o
bloco dentro do else é executado. O bloco dentro do finally é executado sempre,
independentemente de haver exceções ou não.
A sintaxe é a seguinte:
Try:
Except Excecao1:
Except Excecao2:
Else:
Finally:
Aqui está um exemplo de código que mostra como usar essa estrutura:
Try:
Resultado = a / b
Except ZeroDivisionError:
Else:
Finally:
Print(“Operação concluída”)
Dividir(4, 2)
Dividir(4, 0)
Neste exemplo, a função dividir() recebe dois argumentos e tenta dividir o primeiro pelo
segundo. Se o segundo argumento for zero, uma exceção ZeroDivisionError será gerada. O
bloco except trata essa exceção e imprime uma mensagem de erro. Se não houver exceções, o
bloco else é executado e imprime o resultado da divisão. Em ambos os casos, o bloco finally é
executado e imprime a mensagem “Operação concluída”.
Output:
O resultado é: 2.0
Operação concluída
Operação concluída
6. Try/except/finally
A estrutura try/except/finally é usada para lidar com exceções em Python. É usada para tentar
executar um bloco de código e, se ocorrer uma exceção, lidar com ela de uma maneira
apropriada. Aqui está um exemplo de código:
Try:
X=5/0
Except ZeroDivisionError:
Finally:
Neste exemplo, estamos tentando dividir o número 5 por zero, o que resulta em uma exceção
ZeroDivisionError. Usamos a estrutura try/except para lidar com essa exceção e imprimir uma
mensagem de erro apropriada. Também usamos o bloco finally para garantir que uma
mensagem seja sempre exibida, independentemente de haver uma exceção ou não.
A estrutura try/except também pode ser usada com vários tipos de exceção. Por exemplo:
Try:
Y = 10 / x
Except ValueError:
Except ZeroDivisionError:
Else:
Finally:
Neste exemplo, estamos solicitando ao usuário que digite um número. Se o usuário inserir algo
que não seja um número, uma exceção ValueError será gerada e uma mensagem de erro será
exibida. Se o usuário inserir zero, uma exceção ZeroDivisionError será gerada e outra
mensagem de erro será exibida. Se o usuário inserir um número válido, a divisão será realizada
e o resultado será exibido. O bloco finally será sempre executado, independentemente de
haver uma exceção ou não.
Compreensão de lista (list comprehension) é uma forma concisa de criar listas em Python. Em
vez de escrever um loop for tradicional para adicionar elementos a uma lista, você pode usar a
sintaxe da compreensão de lista para criar a lista diretamente. A sintaxe básica é a seguinte:
Isso significa que para cada item em um iterável, a expressão é avaliada e o resultado é
adicionado à nova lista se a condição for verdadeira.
Print(even_numbers)
Neste exemplo, usamos a função range() para criar um iterável com os números de 0 a 10. Em
seguida, usamos a compreensão de lista para criar uma nova lista contendo apenas os
números pares.
Print(squares)
Neste exemplo, usamos a função range() novamente para criar um iterável com os números de
1 a 5. Em seguida, usamos a compreensão de lista para criar uma nova lista contendo os
quadrados de cada número.
Exemplo 3: criar uma lista de palavras que começam com a letra “a” de uma lista de palavras
Print(a_words)
Neste exemplo, usamos a compreensão de lista para criar uma nova lista contendo apenas as
palavras que começam com a letra “a” da lista original de palavras.
A compreensão de lista também pode incluir várias expressões e loops for aninhados,
permitindo a criação de listas mais complexas.
Onde chave e valor são as chaves e valores que você deseja inserir no dicionário, item é cada
elemento no iterável (como uma lista ou um conjunto), e iterável é a lista ou conjunto de
elementos.
Aqui está um exemplo de como usar a compreensão de dicionário para criar um dicionário a
partir de uma lista:
Lista = [1, 2, 3, 4, 5]
Print(dicionario)
Saída:
Neste exemplo, a compreensão de dicionário cria um novo dicionário, onde cada chave é um
número da lista e o valor é o quadrado desse número.
Também é possível adicionar uma condição para filtrar os elementos que são incluídos no
dicionário:
Lista = [1, 2, 3, 4, 5]
Print(dicionario)
Saída:
{2: 4, 4: 16}
Neste exemplo, apenas os números pares são incluídos no dicionário, pois a condição if
numero % 2 == 0 filtra os elementos ímpares.
Word = “hello”
Expressões lambda, também conhecidas como funções anônimas, são funções sem nome que
podem ser definidas em uma única linha de código. Elas são muito úteis em situações em que
você precisa de uma função simples que é usada apenas uma vez, e não quer criar uma função
completa para isso.
Double = lambda x: x * 2
Print(double(5)) # 10
Add = lambda x, y: x + y
Print(add(2, 3)) # 5
Criando uma função lambda que retorna a primeira letra de uma string:
Print(first_letter(“hello”)) # ‘h’
As expressões lambda também podem ser usadas em conjunto com outras funções de Python,
como “map”, “filter” e “reduce”, para realizar operações em listas de forma mais concisa. Veja
alguns exemplos:
Usando a função map com uma expressão lambda para criar uma nova lista com os quadrados
dos números de uma lista:
Numbers = [1, 2, 3, 4, 5]
Usando a função filter com uma expressão lambda para criar uma nova lista com os números
pares de uma lista:
Numbers = [1, 2, 3, 4, 5]
Print(even_numbers) # [2, 4]
Usando a função reduce com uma expressão lambda para calcular o produto dos números de
uma lista:
Numbers = [1, 2, 3, 4, 5]
Print(product) # 120
Note que as expressões lambda são úteis em situações em que você precisa de uma função
simples e concisa, mas para funções mais complexas, é geralmente melhor usar uma função
nomeada completa para tornar o código mais legível
11. Try/except/finally
“Try/except/finally” é uma construção em Python usada para manipular exceções. Ela permite
que você escreva um código que pode gerar exceções, mas também oferece uma maneira de
lidar com essas exceções e executar ações de limpeza mesmo que ocorra uma exceção. A
sintaxe básica é a seguinte:
Try:
Except TipoDeExcecao1:
Except TipoDeExcecao2:
...
Except:
Finally:
O bloco “try” contém o código que pode gerar exceções. Se uma exceção ocorrer, o Python
pula o restante do bloco “try” e tenta encontrar um bloco “except” que corresponda ao tipo
de exceção gerada. Se uma correspondência for encontrada, o bloco “except” correspondente
é executado. Se nenhum bloco “except” corresponder à exceção gerada, ela é propagada para
o código externo.
Manipulando uma exceção “ZeroDivisionError” gerada ao tentar dividir um número por zero:
Try:
Result = 5 / 0
Except ZeroDivisionError:
Finally:
Print(“Finalizando o programa...”)
Manipulando uma exceção “ValueError” gerada ao tentar converter uma string em um número
inteiro:
Try:
Number = int(“abc”)
Except ValueError:
Finally:
Print(“Finalizando o programa...”)
Try:
Except Exception as e:
Finally:
Print(“Finalizando o programa...”)
É importante lembrar que o uso excessivo de blocos “try/except” pode tornar o código confuso
e dificultar a depuração de erros. Portanto, é uma boa prática usar blocos “try/except”
somente quando necessário e lidar com exceções de maneira apropriada.
Um decorador é uma função que recebe outra função como argumento e retorna uma nova
função que acrescenta ou modifica o comportamento da função original. O decorador é
aplicado usando a sintaxe “@decorador” acima da definição da função a ser decorada.
Aqui está um exemplo simples de um decorador em Python:
Def meu_decorador(funcao):
Def funcao_decorada():
Funcao()
Return funcao_decorada
@meu_decorador
Def minha_funcao():
>>> minha_funcao()
Def decorador_com_argumento(nome):
Def meu_decorador(funcao):
Def funcao_decorada():
Funcao()
Print(“Depois de executar a função”, nome)
Return funcao_decorada
Return meu_decorador
@decorador_com_argumento(“minha função”)
Def minha_funcao():
>>> minha_funcao()
Decoradores podem ser usados para uma variedade de tarefas, como adicionar autenticação
ou log de chamadas de função. Eles são uma das ferramentas mais poderosas do Python para a
criação de códigos mais elegantes e reutilizáveis
Geradores (generators) são funções especiais em Python que podem gerar uma sequência de
valores sob demanda, em vez de gerá-los todos de uma vez e armazená-los em memória. Eles
são úteis para trabalhar com grandes quantidades de dados ou para gerar valores em um loop
infinito.
Um gerador é criado usando a palavra-chave yield em vez de return. Quando uma função com
yield é chamada, ela retorna um objeto de gerador, que pode ser iterado usando um loop for
ou chamado manualmente usando a função next().
Yield 1
Yield 2
Yield 3
Gerador = meu_gerador()
Print(next(gerador)) # imprime 1
Print(next(gerador)) # imprime 2
Print(next(gerador)) # imprime 3
Neste exemplo, a função meu_gerador é um gerador que gera uma sequência de valores 1, 2 e
3 usando yield. A função next() é usada para obter cada valor sequencialmente a partir do
objeto de gerador retornado pela função meu_gerador.
Geradores podem ser usados para gerar uma sequência de valores infinita, como neste
exemplo:
Def gerador_infinito():
I=0
While True:
Yield i
I += 1
Gerador = gerador_infinito()
Print(next(gerador)) # imprime 0
Print(next(gerador)) # imprime 1
Print(next(gerador)) # imprime 2
Neste exemplo, a função gerador_infinito é um gerador que gera uma sequência infinita de
números inteiros. O loop while True garante que a função continue gerando valores
indefinidamente, enquanto o yield gera cada valor sequencialmente.
Geradores também podem ser usados em conjunto com a sintaxe for para iterar sobre uma
sequência de valores. Aqui está um exemplo:
Def meu_gerador():
Yield “primeiro”
Yield “segundo”
Yield “terceiro”
Print(valor)
Neste exemplo, a função meu_gerador é um gerador que gera uma sequência de três strings.
A sintaxe for valor in meu_gerador(): é usada para iterar sobre cada valor gerado pela função,
imprimindo cada valor na tela.
Geradores são uma maneira poderosa de trabalhar com grandes quantidades de dados em
Python, especialmente quando a memória é limitada. Eles permitem a geração de valores sob
demanda, em vez de gerá-los todos de uma vez, economizando espaço e tempo de
processamento.
Context managers são objetos que definem ações a serem executadas antes e depois de um
bloco de código. Eles são usados para gerenciar recursos que precisam ser inicializados e
finalizados corretamente, como arquivos, conexões de banco de dados, sockets, entre outros.
Aqui está um exemplo de um contexto manager simples que abre e fecha um arquivo:
Class File:
Self.filename = filename
Self.mode = mode
Self.file = None
Def __enter__(self):
Return self.file
If self.file:
Self.file.close( )
Neste exemplo, a classe File é um contexto manager que abre e fecha um arquivo. O método
__enter__() abre o arquivo e retorna o objeto do arquivo para ser usado dentro do bloco with.
O método __exit__() fecha o arquivo no final do bloco, independentemente de ter ocorrido
uma exceção ou não.
Aqui está um exemplo de como usar o contexto manager File com a sintaxe with:
Print(f.read())
Neste exemplo, o arquivo “file.txt” é aberto para leitura e o objeto do arquivo é atribuído à
variável f. O conteúdo do arquivo é lido e impresso no console. Quando o bloco with é
encerrado, o contexto manager File fecha o arquivo.
Context managers são uma maneira elegante e eficiente de gerenciar recursos em Python,
garantindo que eles sejam inicializados e finalizados corretamente.
As Expressões Condicionais, também conhecidas como Ternary Expressions, são uma forma
compacta de escrever declarações condicionais em uma única linha.
Onde condicao é a expressão que será avaliada como verdadeira ou falsa, valor_se_verdadeiro
é o valor retornado caso a condição seja verdadeira e valor_se_falso é o valor retornado caso a
condição seja falsa.
Aqui está um exemplo simples que utiliza uma Expressão Condicional para determinar se um
número é par ou ímpar:
Numero = 5
Você também pode usar Expressões Condicionais para simplificar declarações if/else mais
longas. Por exemplo:
Idade = 25
Exercício 1:
Escreva um programa que solicita ao usuário que digite um número inteiro positivo e imprima
se esse número é par ou ímpar.
If numero % 2 == 0:
Else:
Exercício 2:
Escreva um programa que solicita ao usuário que digite uma string e imprima se essa string é
um palíndromo (ou seja, se pode ser lida da mesma forma da esquerda para a direita e da
direita para a esquerda).
If string == string[::-1]:
Else:
Escreva um programa que solicita ao usuário que digite dois números e imprima o maior
número.
Else:
Exercício 4:
Escreva um programa que solicita ao usuário que digite um número e imprima se esse número
é primo ou não.
Primo = True
If numero <= 1:
Primo = False
If numero % i == 0:
Primo = False
Break
If primo:
Else:
Escreva um programa que solicita ao usuário que digite uma lista de números e imprima a
soma desses números.
Numeros = numeros.split(“,”)
Soma = 0
Soma += float(numero)
Exercício 6:
Escreva um programa que solicita ao usuário que digite um número inteiro positivo e imprima
os primeiros n números da sequência de Fibonacci.
A, b = 0, 1
For i in range(n):
Print(a, end=” “)
A, b = b, a+b
Exercício 7:
Escreva um programa que solicita ao usuário que digite uma string e conte o número de vogais
nessa string.
String = input(“Digite uma string: “)
Vogais = “aeiouAEIOU”
Num_vogais = 0
If letra in vogais:
Num_vogais += 1
Exercício 8:
Escreva um programa que solicita ao usuário que digite uma lista de números e imprima
apenas os números pares.
Numeros = numeros.split(“,”)
If int(numero) % 2 == 0:
Print(numero, end=” “)
Exercício 9:
Escreva um programa que solicita ao usuário que digite um número inteiro e imprima uma
tabela de multiplicação para esse número até o 10.
Exercício 10:
Escreva um programa que solicita ao usuário que digite uma lista de números e encontre o
segundo maior número na lista.
Numeros = numeros.split(“,”)
Maior = max(numeros)
Numeros.remove(maior)
Segundo_maior = max(numeros)
Estes são apenas mais alguns exemplos de exercícios de estruturas de controle de fluxo em
Python. Espero que ajude a praticar suas habilidades em Python
Funções são blocos de código reutilizáveis que realizam uma tarefa específica. No Python, as
funções são definidas usando a palavra-chave “def”, seguida pelo nome da função e seus
parâmetros entre parênteses.
As funções em Python podem ter ou não um valor de retorno. Se a função tiver um valor de
retorno, você pode armazenar esse valor em uma variável ou usá-lo imediatamente em uma
expressão. Se a função não tiver um valor de retorno, ela pode simplesmente realizar uma
tarefa e não retornar nenhum valor.
Aqui está um exemplo simples de uma função em Python que adiciona dois números:
Return a + b
Neste exemplo, a função é definida com o nome “soma” e dois parâmetros, “a” e “b”. Dentro
da função, é realizado o cálculo da soma dos parâmetros e o resultado é retornado usando a
palavra-chave “return”.
Resultado = soma(2, 3)
Print(resultado)
Este código irá chamar a função “soma” com os argumentos 2 e 3 e armazenar o resultado
retornado na variável “resultado”. Em seguida, ele imprime o valor da variável “resultado”,
que deve ser 5.
1.Definindo funções:
Em Python, as funções são definidas com a palavra-chave def, seguida do nome da função,
parênteses contendo os parâmetros e dois-pontos. O código que será executado quando a
função é chamada é colocado em um bloco de código indentado abaixo da linha de definição
da função.
Aqui está um exemplo de uma função simples que calcula a área de um círculo:
Def calcular_area_circulo(raio):
Pi = 3.14
Area = pi * (raio ** 2)
Return area
2.Chamando funções:
Para chamar uma função, você simplesmente precisa digitar o nome da função, seguido dos
parênteses contendo os argumentos (se houver) que você deseja passar para a função.
Area_do_circulo = calcular_area_circulo(5)
3.Parâmetros de função:
Os parâmetros de função permitem que você passe informações para a função. Você pode
definir quantos parâmetros forem necessários e dar a eles nomes significativos. Quando a
função é chamada, você passa argumentos que correspondem aos parâmetros na ordem em
que eles foram definidos.
Exibir_nome_completo(“João”, “Silva”)
4. Valor de retorno:
Uma função pode ou não retornar um valor. Se uma função retornar um valor, você pode
armazená-lo em uma variável ou usá-lo imediatamente em uma expressão.
Return a + b
Resultado = calcular_soma(2, 3)
Neste exemplo, a função calcular_soma retorna a soma dos dois parâmetros. O resultado da
função é armazenado na variável resultado.
5.Argumentos padrão:
Os argumentos padrão permitem que você especifique um valor padrão para um parâmetro
de função. Se o argumento não for passado quando a função é chamada, o valor padrão será
usado.
Neste exemplo, o segundo parâmetro idade tem um valor padrão de 18. Se não for passado
nenhum valor para idade quando a função é chamada, ele usará o valor padrão. Se você
fornecer um valor para idade, ele
Def verificar_maioridade(idade):
“””
“””
Else:
Resultado = verificar_maioridade(20)
# Imprimindo o resultado
Print(resultado)
Neste exemplo, temos uma função chamada verificar_maioridade, que recebe um parâmetro
chamado idade. A função verifica se a idade é maior ou igual a 18 anos e retorna uma
mensagem correspondente ao resultado da verificação.
Ao chamar a função com um argumento de 20, por exemplo, a função retornará a mensagem
“Maior de idade”. O resultado é armazenado na variável resultado e, em seguida, é impresso
na tela.
Observe que a função também tem um comentário de documentação (docstring) que descreve
o que a função faz e como ela funciona. Esse tipo de comentário é útil para ajudar outros
programadores a entender como usar a função e qual é o seu propósito.
Def celsius_para_fahrenheit(celsius):
“””
“””
Return fahrenheit
Resultado = celsius_para_fahrenheit(25)
# Imprimindo o resultado
Print(resultado)
“””
“””
If numero % 2 == 0:
Return True
Else:
Return False
Resultado = verificar_par(7)
# Imprimindo o resultado
Print(resultado)
Def somar_lista(lista):
“””
“””
Soma = 0
Soma += valor
Return soma
Lista_de_valores = [1, 2, 3, 4, 5]
Resultado = somar_lista(lista_de_valores)
# Imprimindo o resultado
Print(resultado)
Def encontrar_maior_valor(lista):
“””
“””
Maior_valor = lista[0]
Maior_valor = valor
Return maior_valor
Resultado = encontrar_maior_valor(lista_de_valores)
# Imprimindo o resultado
Print(resultado)
“””
“””
Dicionario = {}
For i in range(len(chaves)):
Dicionario[chaves[i]] = valores[i]
Return dicionario
# Imprimindo o resultado
Print(resultado)
Exercício de funções :
Escreva uma função que calcule a área de um triângulo, a partir da base e altura
fornecidas pelo usuário:
“””
“””
Return area
Base = 6
Altura = 4
Escreva uma função que verifique se uma palavra é um palíndromo (ou seja, se pode
ser lida da mesma forma de trás para frente):
Def verificar_palindromo(palavra):
“””
“””
Palavra_invertida = palavra[::-1]
If palavra == palavra_invertida:
Return True
Else:
Return False
Palavra = “arara”
If verificar_palindromo(palavra):
Else:
Escreva uma função que converta uma lista de temperaturas em graus Celsius para
Fahrenheit:
Def converter_temperaturas(lista_celsius):
“””
Lista_fahrenheit = []
Lista_fahrenheit.append(fahrenheit)
Return lista_fahrenheit
Temperaturas_fahrenheit = converter_temperaturas(temperaturas_celsius)
Escreva uma função que encontre o valor médio de uma lista de números:
Def calcular_media(lista):
“””
“””
Soma = 0
Soma += valor
Return media
Media = calcular_media(numeros)
Def ordenar_lista(lista):
“””
“””
Lista_ordenada = sorted(lista)
Return lista_ordenada
Numeros_ordenados = ordenar_lista(numeros)
Print(“
Def calcular_fatorial(numero):
“””
“””
Fatorial = 1
Fatorial *= i
Return fatorial
Numero = 5
Fatorial = calcular_fatorial(numero)
Def verificar_primo(numero):
“””
“””
If numero <= 1:
Return False
If (numero % i) == 0:
Return False
Return True
Numero = 17
If verificar_primo(numero):
Else:
Escreva uma função que calcule a soma dos elementos de uma matriz:
Def somar_matriz(matriz):
“””
“””
Soma = 0
Soma += elemento
Return soma
Soma = somar_matriz(matriz)
Escreva uma função que verifique se uma lista contém apenas números pares:
Def verificar_pares(lista):
“””
“””
If (elemento % 2) != 0:
Return False
Return True
If verificar_pares(numeros):
Else:
Escreva uma função que receba uma lista de strings e retorne a lista ordenada em
ordem crescente de tamanho de string:
Def ordenar_por_tamanho(lista):
“””
“””
Return lista_ordenada
Palavras_ordenadas = ordenar_por_tamanho(palavras)
A função no python
Classes e objetos :
Uma classe é uma estrutura que define um tipo de dado, com um conjunto de atributos e
métodos que podem ser associados a esse tipo. A classe é como um modelo ou uma planta
para criar objetos.
Um objeto, por sua vez, é uma instância da classe, uma representação concreta desse tipo de
dado com seus atributos e métodos. O objeto é como um exemplar ou uma cópia criada a
partir da classe.
Em outras palavras, uma classe define uma estrutura e comportamentos que os objetos que a
representam podem ter. Quando criamos um objeto a partir de uma classe, estamos criando
uma variável que contém as informações e ações definidas na classe.
Para definir uma classe em Python, usamos a palavra-chave class, seguida do nome da classe e
os seus atributos e métodos:
Class Carro:
Self.marca = marca
Self.modelo = modelo
Self.ano = ano
Self.cor = cor
Def ligar(self):
Def desligar(self):
Nesse exemplo, criamos uma classe chamada Carro com os atributos marca, modelo, ano e
cor, e os métodos ligar e desligar. O método __init__ é um método especial chamado
construtor, que é executado quando um objeto é criado a partir da classe.
Para criar um objeto a partir dessa classe, usamos o nome da classe seguido de parênteses,
com os argumentos necessários para o construtor:
Nesse exemplo, criamos um objeto chamado meu_carro a partir da classe Carro, passando os
argumentos para o construtor. Agora, podemos acessar os atributos e métodos desse objeto
usando a sintaxe de ponto:
Print(meu_carro.marca)
# Output: Chevrolet
Meu_carro.ligar()
Classes
Uma classe é uma estrutura de dados que representa um tipo de objeto ou entidade em um
programa. Em Python, as classes podem ter atributos e métodos que permitem representar e
manipular dados de uma forma mais organizada e modular.
Os atributos são variáveis que pertencem à classe e são usados para armazenar dados
específicos de cada objeto criado a partir da classe. Os métodos, por outro lado, são funções
que pertencem à classe e podem ser chamados para executar ações específicas ou manipular
os atributos.
Class NomeDaClasse:
Self.atributo1 = arg1
Self.atributo2 = arg2
...
# código do método
...
...
Aqui, NomeDaClasse é o nome da classe que está sendo definida. __init__ é um método
especial chamado construtor que é executado quando um objeto é criado a partir da classe.
Arg1, arg2, etc. são os argumentos que são passados para o construtor. Self é uma referência
ao objeto atual que está sendo criado.
Por exemplo, suponha que queremos criar uma classe chamada Pessoa que tenha os atributos
nome, idade e altura, e os métodos falar e caminhar. Podemos definir a classe da seguinte
forma:
Class Pessoa:
Self.nome = nome
Self.idade = idade
Self.altura = altura
Aqui, Pessoa é o nome da classe, que tem três atributos (nome, idade e altura) e dois métodos
(falar e caminhar). O construtor __init__ é usado para inicializar os atributos da classe com os
valores passados como argumentos.
Isso criará dois objetos da classe Pessoa, com os nomes pessoa1 e pessoa2. Podemos chamar
os métodos desses objetos usando a sintaxe `nome_do_objeto.metodo(arg1, arg2,
Classe Retângulo
Class Retangulo:
Self.largura = largura
Self.altura = altura
Def area(self):
Def perimetro(self):
Return 2 * (self.largura + self.altura)
Nesse exemplo, temos uma classe Retangulo com dois atributos: largura e altura. O método
__init__ é o construtor da classe e é usado para inicializar os atributos. A classe também tem
dois métodos: area e perimetro, que calculam a área e o perímetro do retângulo,
respectivamente.
Classe Pessoa
Class Pessoa:
Self.nome = nome
Self.idade = idade
Print(f”{self.nome}: {mensagem}”)
Nesse exemplo, temos uma classe Pessoa com dois atributos: nome e idade. O método
__init__ é o construtor da classe e é usado para inicializar os atributos. A classe também tem
um método falar, que recebe uma mensagem e imprime na tela junto com o nome da pessoa.
Class ContaBancaria:
Self.saldo = saldo_inicial
Self.saldo += valor
Self.saldo -= valor
Else:
Print(“Saldo insuficiente”)
Def consultar_saldo(self):
Return self.saldo
Nesse exemplo, temos uma classe ContaBancaria com um atributo saldo e três métodos:
depositar, sacar e consultar_saldo. O método __init__ é o construtor da classe e é usado para
inicializar o atributo saldo. O método depositar adiciona um valor ao saldo da conta, o método
sacar retira um valor do saldo da conta, desde que haja saldo suficiente, e o método
consultar_saldo retorna o saldo atual da conta.
Classe Cachorro
Class Cachorro:
Self.nome = nome
Self.raca = raca
Def latir(self):
Print(“Au au!”)
Nesse exemplo, temos uma classe Cachorro com dois atributos: nome e raca. O método
__init__ é o construtor da classe e é usado para inicializar os atributos. A classe também tem
um método latir, que imprime na tela o som que um cachorro faz.
Classe Livro
Class Livro:
Self.titulo = titulo
Self.autor = autor
Self.ano = ano
Def mostrar_dados(self):
Classe Carro
Class Carro:
Self.marca = marca
Self.modelo = modelo
Self.ano = ano
Self.velocidade = 0
Self.velocidade += incremento
Self.velocidade -= decremento
Else:
Self.velocidade = 0
Def mostrar_velocidade(self):
Def mostrar_dados(self):
Class ContaCorrente:
Self.numero = numero
Self.titular = titular
Self.saldo = saldo
Self.saldo += valor
Self.saldo -= valor
Else:
Print(“Saldo insuficiente”)
Def mostrar_saldo(self):
Def mostrar_dados(self):
Nesse exemplo, temos uma classe ContaCorrente com três atributos: numero, titular e saldo.
O método __init__ é o construtor da classe e é usado para inicializar os atributos, incluindo o
atributo saldo, que começa com valor 0, a menos que seja especificado um valor diferente na
criação do objeto. A classe também tem três métodos: depositar, sacar e mostrar_saldo, que
adicionam dinheiro à conta, retiram dinheiro da conta e mostram o saldo atual da conta,
respectivamente. O método mostrar_dados mostra o número da conta e o nome do titular.
Classe Triângulo
Class Triangulo:
Self.lado1 = lado1
Self.lado2 = lado2
Self.lado3 = lado3
Def perimetro(self):
Def tipo(self):
Return “equilátero”
Exercício de classes :
1. Crie uma classe Pessoa que tenha os atributos nome e idade, e um método
dizer_nome que imprime o nome da pessoa. Crie uma instância dessa classe e chame
o método dizer_nome.
2. Crie uma classe ContaBancaria que tenha os atributos saldo e titular, e métodos
depositar e sacar que atualizam o saldo da conta. Crie uma instância dessa classe,
deposite algum dinheiro e faça um saque.
3. Crie uma classe Carro que tenha os atributos marca, modelo e ano, e um método
imprimir_info que imprime as informações do carro. Crie uma lista de instâncias dessa
classe e chame o método imprimir_info em cada uma delas.
4. Crie uma classe Retangulo que tenha os atributos largura e altura, e métodos area e
perimetro que calculam a área e o perímetro do retângulo. Crie uma instância dessa
classe com largura 5 e altura 10, e chame seus métodos para calcular a área e o
perímetro.
5. Crie uma classe Animal que tenha os atributos nome e especie, e um método
fazer_som que imprime um som característico do animal. Crie subclasses dessa classe
para diferentes tipos de animais, como Cachorro e Gato, que substituam o método
fazer_som para imprimir sons diferentes. Crie instâncias dessas classes e chame o
método fazer_som em cada uma delas.
Exemplo de como você irá faze esse exercício que lhe passe logo acima :
Classe Pessoa:
Class Pessoa:
Self.nome = nome
Self.idade = idade
Def dizer_nome(self):
P = Pessoa(“João”, 30)
p.dizer_nome()
Este código define uma classe Pessoa com dois atributos nome e idade. O método __init__ é
um método especial que é chamado quando uma nova instância da classe é criada. O método
dizer_nome imprime o nome da pessoa. Uma instância da classe é criada com o nome “João” e
idade 30, e o método dizer_nome é chamado para imprimir o nome.
Class ContaBancaria:
Self.titular = titular
Self.saldo = 0
Self.saldo += valor
Print(“Saldo insuficiente”)
Else:
Self.saldo -= valor
Conta = ContaBancaria(“João”)
Conta.depositar(1000)
Conta.sacar(500)
Este código define uma classe ContaBancaria com os atributos titular e saldo. O método
depositar adiciona um valor ao saldo e o método sacar subtrai um valor do saldo, mas verifica
se o saldo é suficiente antes de fazer a transação. Uma instância da classe é criada com o
titular “João”, e são feitas uma operação de depósito e uma de saque.
Classe Carro:
Class Carro:
Self.marca = marca
Self.modelo = modelo
Self.ano = ano
Def imprimir_info(self):
Carros = [
Carro(“Ford”, “Fiesta”, 2010),
Carro.imprimir_info()
Este código define uma classe Carro com os atributos marca, modelo e ano. O método
imprimir_info imprime as informações do carro. Uma lista de três instâncias da classe é criada
e o método imprimir_info é chamado para cada uma delas.
Classe Retângulo:
Class Retangulo:
Self.largura = largura
Self.altura = altura
Def area(self):
Def perimetro(self):
Print(“Área:”, ret.area())
Print(“Perímetro:”, ret.perimetro())
Este código define uma classe Retangulo com os atributos largura e altura. Os métodos
area e perimetro calculam a área e o perímetro
Crie uma classe chamada Pessoa que tenha os atributos nome, idade e profissao. A
classe deve ter um método chamado fazer_aniversario que incrementa a idade em 1
unidade.
Crie uma classe chamada Produto que tenha os atributos nome, preco e quantidade. A
classe deve ter um método chamado comprar que aumenta a quantidade em 1
unidade e um método chamado vender que diminui a quantidade em 1 unidade.
Crie uma classe chamada Circulo que tenha o atributo raio. A classe deve ter um
método chamado calcular_area que retorna a área do círculo e um método chamado
calcular_perimetro que retorna o perímetro do círculo.
Crie uma classe chamada Retangulo que tenha os atributos largura e altura. A classe
deve ter um método chamado calcular_area que retorna a área do retângulo e um
método chamado calcular_perimetro que retorna o perímetro do retângulo.
Crie uma classe chamada Contador que tenha o atributo valor. A classe deve ter um
método chamado incrementar que incrementa o valor em 1 unidade e um método
chamado zerar que zera o valor.
Classe Pessoa:
Class Pessoa:
Self.nome = nome
Self.idade = idade
Self.profissao = profissao
Def fazer_aniversario(self):
Self.idade += 1
Classe Produto:
Class Produto:
Self.nome = nome
Self.preco = preco
Self.quantidade = quantidade
Def comprar(self):
Self.quantidade += 1
Def vender(self):
If self.quantidade > 0:
Self.quantidade -= 1
Classe Circulo:
Import math
Class Circulo:
Self.raio = raio
Def calcular_area(self):
Def calcular_perimetro(self):
Classe Retangulo:
Python
Copy code
Class Retangulo:
Def __init__(self, largura, altura):
Self.largura = largura
Self.altura = altura
Def calcular_area(self):
Def calcular_perimetro(self):
Classe Contador:
Class Contador:
Self.valor = valor
Def incrementar(self):
Self.valor += 1
Def zerar(self):
Self.valor = 0
Objetos são instâncias de uma classe em Python. Uma classe define um tipo de objeto com
propriedades (atributos) e comportamentos (métodos) que são específicos para aquele tipo.
Quando você cria um objeto, está criando uma instância dessa classe, que tem seus próprios
valores para cada um dos atributos da classe. Além disso, cada objeto pode chamar os
métodos da classe, que podem manipular seus próprios atributos ou realizar outras operações.
Por exemplo, se tivermos uma classe Carro, podemos criar vários objetos dessa classe, cada
um representando um carro diferente, com seus próprios valores para as propriedades marca,
modelo, ano e velocidade, bem como a capacidade de acelerar, frear e mostrar sua velocidade
atual.
Class Carro:
Self.marca = marca
Self.modelo = modelo
Self.ano = ano
Self.velocidade = 0
Self.velocidade += incremento
Self.velocidade -= decremento
Else:
Self.velocidade = 0
Def mostrar_velocidade(self):
Def mostrar_dados(self):
Carro2.acelerar(30)
Nesse exemplo, carro1 e carro2 são objetos diferentes da classe Carro, cada um com sua
própria marca, modelo e ano. Cada objeto também pode ter sua própria velocidade, que pode
ser alterada com os métodos acelerar e frear, e mostrada com o método mostrar_velocidade.
Cada objeto é independente do outro, então alterar a velocidade de carro1 não afetará a
velocidade de carro2.
Em Python, tudo é um objeto, ou seja, cada valor que você trabalha em Python é um objeto
com seu próprio tipo e comportamento. Até mesmo os tipos básicos, como números, strings e
listas, são objetos em Python.
Quando você cria um objeto em Python, é criada uma instância desse objeto, que possui seus
próprios valores para seus atributos e métodos. Por exemplo, ao criar uma lista, você está
criando uma instância do tipo list em Python.
Aqui está um exemplo simples que cria uma lista, adiciona elementos a ela e chama alguns dos
seus métodos:
Minha_lista = [1, 2, 3, 4, 5]
Minha_lista.append(6)
Print(minha_lista) # [1, 2, 3, 4, 5, 6]
Print(len(minha_lista)) # 6
Neste exemplo, minha_lista é uma instância do objeto list em Python. A lista tem seu próprio
conjunto de valores, neste caso, [1, 2, 3, 4, 5]. Em seguida, o método append é chamado na
lista para adicionar o número 6. Finalmente, o método len é chamado para retornar o
comprimento da lista, que é 6.
Você também pode criar seus próprios objetos em Python, usando classes, e personalizar seus
próprios comportamentos. Aqui está um exemplo de uma classe simples Pessoa, que tem um
atributo nome e um método dizer_ola:
Class Pessoa:
Self.nome = nome
Def dizer_ola(self):
P1 = Pessoa(“João”)
Neste exemplo, p1 é uma instância da classe Pessoa, que tem um atributo nome com o valor
“João”. O método dizer_ola é chamado no objeto p1, que imprime uma mensagem de
saudação com o nome da pessoa.
Em resumo, em Python, um objeto é uma instância de uma classe, que tem seus próprios
atributos e métodos. Você pode criar seus próprios objetos personalizados usando classes em
Python.
Um objeto é uma instância de uma classe. Por exemplo, se você tiver uma classe
chamada Pessoa, uma instância dessa classe seria um objeto que representa uma
pessoa específica.
Um objeto tem atributos que armazenam informações sobre ele. Por exemplo, um
objeto Pessoa pode ter atributos como nome, idade, sexo, etc.
Um objeto pode ter métodos, que são funções que permitem que o objeto execute
ações ou operações específicas. Por exemplo, um objeto Pessoa pode ter um método
dizer_nome que imprime o nome da pessoa.
Os objetos são geralmente criados usando o construtor da classe, que é uma função
especial que é chamada quando uma nova instância da classe é criada. Por exemplo,
se você tiver uma classe Pessoa, poderá criar um objeto Pessoa com p =
Pessoa(“João”, 30).
Class Pessoa:
Self.nome = nome
Self.idade = idade
Self.sexo = sexo
Def dizer_nome(self):
Print(“Nome:”, p.nome)
Print(“Idade:”, p.idade)
Print(“Sexo:”, p.sexo)
p.dizer_nome()
# Adicionando um novo atributo em tempo de execução
p.profissao = “programador”
Print(“Profissão:”, p.profissao)
p.idade = 31
Neste exemplo, a classe Pessoa tem um construtor que aceita argumentos nome, idade e sexo,
e usa esses argumentos para inicializar os atributos correspondentes do objeto. A classe
também tem um método dizer_nome que imprime o nome da pessoa.
Em seguida, um objeto Pessoa é criado com o nome “João”, idade 30 e sexo masculino. Os
atributos do objeto são acessados usando a sintaxe de ponto, e o método dizer_nome é
chamado no objeto.
Exercício de objetos :
Crie uma classe Círculo com um construtor que aceite um raio como argumento. A
classe deve ter um método calcular_area que retorna a área do círculo.
Crie uma classe Retângulo com um construtor que aceite dois lados como argumentos.
A classe deve ter um método calcular_area que retorna a área do retângulo.
Crie uma classe Pessoa com um construtor que aceite um nome e uma idade como
argumentos. A classe deve ter um método dizer_nome que imprime o nome da
pessoa, e um método dizer_idade que imprime a idade da pessoa.
Crie uma classe ContaBancaria com um construtor que aceite um saldo inicial como
argumento. A classe deve ter métodos depositar e sacar que permitem que o usuário
adicione ou retire dinheiro da conta, respectivamente.
Crie uma classe Carro com um construtor que aceite uma marca, um modelo e um ano
como argumentos. A classe deve ter um método acelerar que aumenta a velocidade
do carro em 10 km/h, e um método frear que reduz a velocidade do carro em 10 km/h.
Esses exercícios podem ser adaptados e expandidos de diversas maneiras para desafiar ainda
mais seus conhecimentos em programação orientada a objetos em Python.
Class Circulo:
Self.raio = raio
Def calcular_area(self):
Circulo1 = Circulo(5)
Exemplo
Class Retangulo:
Self.lado1 = lado1
Self.lado2 = lado2
Def calcular_area(self):
Retangulo1 = Retangulo(3, 4)
Print(retangulo1.calcular_area()) # Saída: 12
Exemplo
Class Pessoa:
Self.nome = nome
Self.idade = idade
Def dizer_nome(self):
Def dizer_idade(self):
Exemplo
Class ContaBancaria:
Self.saldo = saldo
Def depositar(self, valor):
Self.saldo += valor
Print(“Saldo insuficiente.”)
Else:
Self.saldo -= valor
Conta1 = ContaBancaria(100)
Conta1.depositar(50)
Conta1.sacar(30)
Exemplo
Class Carro:
Self.marca = marca
Self.modelo = modelo
Self.ano = ano
Self.velocidade = 0
Def acelerar(self):
Self.velocidade += 10
Def frear(self):
Else:
Self.velocidade -= 10
Carro1.acelerar()
Print(carro1.velocidade) # Saída: 10
Carro1.frear()
Print(carro1.velocidade) # Saída: 0
Exercício :
Criar uma classe Livro que tenha os atributos titulo, autor e ano_publicacao. Criar um
objeto livro1 e imprimir seus atributos.
Criar uma classe Pessoa que tenha os atributos nome, idade e endereco. Criar um
método aniversario que adiciona 1 à idade da pessoa. Criar um objeto pessoa1,
imprimir seus atributos, chamar o método aniversario e imprimir novamente seus
atributos.
Criar uma classe Retangulo que tenha os atributos largura e altura. Criar um método
calcular_perimetro que retorna o perímetro do retângulo e um método calcular_area
que retorna a área do retângulo. Criar um objeto retangulo1, imprimir seu perímetro e
área.
Criar uma classe ContaCorrente que tenha os atributos numero, titular e saldo. Criar
um método depositar que adiciona um valor ao saldo e um método sacar que retira
um valor do saldo. Criar um objeto conta1 com saldo 100, depositar 50 e sacar 30.
Imprimir o saldo final.
Criar uma classe Banco que tenha os atributos nome e contas (uma lista de objetos
ContaCorrente). Criar um método adicionar_conta que adiciona uma conta à lista e um
método remover_conta que remove uma conta da lista. Criar um objeto banco1,
adicionar uma conta com saldo 200, imprimir a lista de contas, remover a conta e
imprimir novamente a lista de contas.
Class Livro:
Self.titulo = titulo
Self.autor = autor
Self.ano_publicacao = ano_publicacao
Exercício
Class Pessoa:
Self.nome = nome
Self.idade = idade
Self.endereco = endereco
Def aniversario(self):
Self.idade += 1
Pessoa1.aniversario()
Exercício
Class Retangulo:
Def __init__(self, largura, altura):
Self.largura = largura
Self.altura = altura
Def calcular_perimetro(self):
Def calcular_area(self):
Retangulo1 = Retangulo(5, 3)
Print(retangulo1.calcular_perimetro())
Print(retangulo1.calcular_area())
Exercício
Class ContaCorrente:
Self.numero = numero
Self.titular = titular
Self.saldo = saldo
Self.saldo += valor
Self.saldo -= valor
Else:
Print(“Saldo insuficiente”)
Conta1 = ContaCorrente(123, “João”, 100)
Conta1.depositar(50)
Conta1.sacar(30)
Print(conta1.saldo)
Exercício
Class Banco:
Self.nome = nome
Self.contas = []
Self.contas.append(conta)
Self.contas.remove(conta)
Banco1.adicionar_conta(conta1)
Print(banco1.contas[0].saldo)
Banco1.remover_conta(conta1)
Print(banco1.contas)
SQLite ou SQLAlchemy :
SQLite e SQLAlchemy são duas tecnologias diferentes que são usadas para trabalhar com
bancos de dados em Python.
SQLite é um banco de dados relacional embutido que não requer um servidor separado para
ser executado. Ele é bastante leve e é comumente usado em aplicativos de desktop e móveis,
bem como em pequenas aplicações web. SQLite é ideal para uso em aplicativos que não
exigem muita escalabilidade ou desempenho e não precisam de uma grande quantidade de
recursos.
SQLAlchemy, por outro lado, é uma biblioteca Python que fornece uma API para trabalhar com
bancos de dados relacionais. É uma solução mais avançada e poderosa para trabalhar com
bancos de dados em Python e é mais adequada para aplicativos complexos ou grandes, que
precisam de recursos mais avançados, como mapeamento objeto-relacional, gerenciamento
de transações, etc.
Em resumo, se você está trabalhando em uma aplicação simples que não requer muita
escalabilidade ou desempenho, SQLite pode ser uma boa escolha. Se, por outro lado, você está
trabalhando em um aplicativo mais complexo ou grande que exige recursos mais avançados,
como mapeamento objeto-relacional, gerenciamento de transações, etc., SQLAlchemy seria
uma opção mais adequada
Explicações em código :
Import sqlite3
Conn = sqlite3.connect(‘exemplo.db’)
Idade INTEGER);’’’)
# Inserir dados na tabela
Conn.execute(“INSERT INTO exemplo (nome, idade) VALUES (?, ?)”, (‘Maria’, 25))
Conn.execute(“INSERT INTO exemplo (nome, idade) VALUES (?, ?)”, (‘João’, 30))
Print(row)
Conn.close()
Neste exemplo, estamos usando o SQLite para criar uma tabela e inserir alguns dados nela.
Depois, selecionamos todos os dados da tabela e imprimimos no console. Observe que a
conexão com o banco de dados é fechada no final do código.
Engine = create_engine(‘sqlite:///exemplo.db’)
Session = sessionmaker(bind=engine)
Session = Session()
Base = declarative_base()
Class Exemplo(Base):
__tablename__ = ‘exemplo’
Id = Column(Integer, primary_key=True)
Nome = Column(String)
Idade = Column(Integer)
Base.metadata.create_all(engine)
Session.add(Exemplo(nome=’Maria’, idade=25))
Session.add(Exemplo(nome=’João’, idade=30))
Session.commit()
Resultados = session.query(Exemplo).all()
Print(resultado.nome, resultado.idade)
Session.close()
Neste exemplo, estamos usando o SQLAlchemy para criar uma tabela e inserir alguns dados
nela. Observe que, em vez de escrever SQL diretamente, estamos definindo uma classe que
representa a tabela e suas colunas. O SQLAlchemy mapeia automaticamente os objetos Python
para linhas no banco de dados. Além disso, estamos usando uma sessão para interagir com o
banco de dados. A sessão nos permite realizar várias operações de banco de dados em uma
única transação, o que é importante para garantir a integridade dos dados
Import sqlite3
# Conectar ao banco de dados
Conn = sqlite3.connect(‘exemplo.db’)
Print(row)
Conn.close()
Neste exemplo, estamos usando o SQLite para selecionar os dados da tabela onde a idade é
maior que 25. Observe que estamos escrevendo SQL diretamente para fazer a consulta.
Engine = create_engine(‘sqlite:///exemplo.db’)
Session = sessionmaker(bind=engine)
Session = Session()
Base = declarative_base()
Class Exemplo(Base):
__tablename__ = ‘exemplo’
Id = Column(Integer, primary_key=True)
Nome = Column(String)
Idade = Column(Integer)
Print(resultado.nome, resultado.idade)
Session.close()
Neste exemplo, estamos usando o SQLAlchemy para selecionar os dados da tabela onde a
idade é maior que 25. Observe que estamos usando um método do SQLAlchemy para filtrar os
dados, em vez de escrever SQL diretamente. Além disso, estamos usando uma sessão para
interagir com o banco de dados, o que nos permite realizar a consulta de forma mais segura e
eficiente.
Engine = create_engine(‘sqlite:///exemplo.db’)
Session = sessionmaker(bind=engine)
Session = Session()
Base = declarative_base()
Class Pessoa(Base):
__tablename__ = ‘pessoas’
Id = Column(Integer, primary_key=True)
Nome = Column(String)
Class Endereco(Base):
__tablename__ = ‘enderecos’
Id = Column(Integer, primary_key=True)
Rua = Column(String)
Cidade = Column(String)
Estado = Column(String)
Base.metadata.create_all(engine)
Pessoa1 = Pessoa(nome=’Maria’)
Conn = sqlite3.connect(‘exemplo.db’)
Print(row)
Conn.close()
Neste exemplo, estamos usando o SQLite para executar uma consulta na tabela exemplo e
imprimir os resultados.
Engine = create_engine(‘sqlite:///exemplo.db’)
Session = sessionmaker(bind=engine)
Session = Session()
Base = declarative_base()
Class Exemplo(Base):
__tablename__ = ‘exemplo’
Id = Column(Integer, primary_key=True)
Nome = Column(String)
Idade = Column(Integer)
Resultados = session.query(Exemplo).all()
Print(resultado.nome, resultado.idade)
Session.close()
Neste exemplo, estamos usando o SQLAlchemy para executar uma consulta na tabela exemplo
e imprimir os resultados. Observe que estamos usando uma classe do SQLAlchemy para
representar a tabela e executar a consulta, em vez de escrever SQL diretamente.
Import sqlite3
Conn = sqlite3.connect(‘exemplo.db’)
Conn.commit()
Conn.close()
Neste exemplo, estamos usando o SQLite para atualizar um registro na tabela exemplo.
Observe que estamos escrevendo SQL diretamente para atualizar o registro.
Engine = create_engine(‘sqlite:///exemplo.db’)
Session = sessionmaker(bind=engine)
Session = Session()
Base = declarative_base()
Class Exemplo(Base):
__tablename__ = ‘exemplo’
Id = Column(Integer, primary_key=True)
Nome = Column(String)
Idade = Column(Integer)
# Atualizar um registro na tabela exemplo
Exemplo = session.query(Exemplo).filter_by(nome=’João’).first()
Exemplo.idade = 40
Session.commit()
Session.close()
Neste exemplo, estamos usando o SQLAlchemy para atualizar um registro na tabela exemplo.
Observe que estamos usando uma classe do SQLAlchemy para representar a tabela e atualizar
o registro de forma segura e eficiente.
Import sqlite3
Exercício
Crie um banco de dados SQLite com uma tabela chamada “clientes”. A tabela deve ter
colunas para “id” (inteiro), “nome” (texto) e “idade” (inteiro).
Execute uma consulta na tabela “clientes” para encontrar todos os clientes com mais
de 30 anos de idade. Use SQL ou SQLAlchemy para executar a consulta.
Atualize o registro mais antigo na tabela “clientes” para ter 50 anos de idade. Use SQL
ou SQLAlchemy para executar a atualização.
Exclua o registro mais recente na tabela “clientes”. Use SQL ou SQLAlchemy para
executar a exclusão.
Import sqlite3
Conn = sqlite3.connect(‘clientes.db’)
Nome TEXT,
Idade INTEGER);’’’)
Conn.commit()
Print(row)
Row = cursor.fetchone()
Id = row[0]
Conn.execute(“UPDATE clientes SET idade = 50 WHERE id = ?”, (id,))
Conn.commit()
Row = cursor.fetchone()
Id = row[0]
Conn.commit()
Conn.close()
Neste exemplo, estamos criando um banco de dados SQLite com uma tabela “clientes”,
inserindo alguns registros, executando consultas para encontrar clientes com mais de 30 anos
de idade e atualizando/excluindo registros específicos. Este é apenas um exemplo simples,
mas espero que ajude a ilustrar como trabalhar com SQLite em Python.
Crie um banco de dados SQLite com uma tabela chamada “produtos”. A tabela deve
ter colunas para “id” (inteiro), “nome” (texto), “preco” (real) e “quantidade” (inteiro).
Execute uma consulta na tabela “produtos” para encontrar todos os produtos com um
preço superior a R$100. Use SQL ou SQLAlchemy para executar a consulta.
Atualize a quantidade do produto mais vendido na tabela “produtos” para 50. Use SQL
ou SQLAlchemy para executar a atualização.
Exclua todos os produtos com quantidade igual a zero da tabela “produtos”. Use SQL
ou SQLAlchemy para executar a exclusão.
Exemplo em código :
Import sqlite3
Conn = sqlite3.connect(‘produtos.db’)
Nome TEXT,
Preco REAL,
Quantidade INTEGER);’’’)
Conn.commit()
Print(row)
Row = cursor.fetchone()
Id = row[0]
Conn.commit()
Conn.close()
Neste exemplo, estamos criando um banco de dados SQLite com uma tabela “produtos”,
inserindo alguns registros, executando consultas para encontrar produtos com um preço
superior a R$100 e atualizando/excluindo registros específicos. Este é apenas um exemplo
simples, mas espero que ajude a ilustrar como trabalhar com SQLite em Python.
Outro exercício :
Crie uma tabela “clientes” com as seguintes colunas: “id” (inteiro), “nome” (texto),
“email” (texto), “telefone” (texto).
Execute uma consulta na tabela “clientes” para encontrar todos os clientes com um
email que termine em “@gmail.com”. Use SQL ou SQLAlchemy para executar a
consulta.
Atualize o telefone do cliente com o nome “João” para “(11) 98765-4321”. Use SQL ou
SQLAlchemy para executar a atualização.
Exemplo em código :
Conn = sqlite3.connect(‘clientes.db’)
Nome TEXT,
Email TEXT,
Telefone TEXT);’’’)
Conn.commit()
Print(row)
# Exercício 4: atualizar o telefone do cliente com o nome “João” para “(11) 98765-4321”
Conn.commit()
Conn.commit()
Neste exemplo, estamos criando uma tabela “clientes” e inserindo alguns registros,
executando consultas para encontrar clientes com um email que termina em “@gmail.com” e
atualizando/excluindo registros específicos. Espero que este exemplo ajude a ilustrar como
trabalhar com SQLite em Python!
Como criar interfaces gráficas de usuário em Python, usando bibliotecas como tkinter, PyQt ou
wxPython.
Tkinter é a biblioteca padrão para criar interfaces gráficas em Python. É fácil de aprender e
usar, e pode ser usado para criar interfaces simples e básicas. No entanto, se você precisa de
recursos mais avançados, pode precisar de uma biblioteca mais robusta.
PyQt é uma biblioteca Python que fornece uma interface para a biblioteca Qt de C++. Ele
oferece recursos avançados de interface do usuário, como widgets personalizados e
animações, e é uma boa escolha se você precisa de uma interface gráfica sofisticada.
wxPython é uma biblioteca Python que fornece uma interface para a biblioteca wxWidgets de
C++. Ele também oferece recursos avançados de interface do usuário, como gráficos 3D e
recursos de manipulação de imagens, e é outra boa opção se você precisa de recursos
avançados de interface gráfica.
Com essas bibliotecas, você pode criar janelas, botões, caixas de texto e outros widgets de
interface do usuário, que podem ser organizados em layouts para criar uma interface gráfica
completa. Você pode então adicionar lógica de negócios por trás da interface do usuário para
criar um aplicativo funcional.
Vou fornecer um exemplo básico usando a biblioteca Tkinter para criar uma interface gráfica
simples. O exemplo a seguir criará uma janela com um rótulo e um botão:
Import tkinter as tk
Def button_clicked():
Root = tk.Tk()
Root.title(“Minha janela”)
Label.pack()
Button.pack()
Root.mainloop()
Neste exemplo, estamos importando a biblioteca Tkinter e definindo uma função chamada
button_clicked() que será executada quando o botão for clicado. Em seguida, criamos a janela
principal usando a classe Tk e definimos seu título usando o método title(). Em seguida,
criamos um rótulo e um botão usando as classes Label e Button, respectivamente, e os
adicionamos à janela principal usando o método pack(). Finalmente, iniciamos o loop principal
da janela usando o método mainloop().
Esse é apenas um exemplo básico, mas com a biblioteca Tkinter, você pode criar janelas mais
complexas e adicionar muitos outros widgets de interface do usuário, como caixas de texto,
menus suspensos e gráficos. Combinando a interface gráfica com a lógica de negócios do seu
aplicativo, você pode criar aplicativos desktop Python completos e funcionais.
Aqui estão alguns exemplos adicionais usando a biblioteca Tkinter para criar interfaces gráficas
de usuário em Python:
Import tkinter as tk
Def confirm_exit():
If answer:
Root.quit()
Root = tk.Tk()
Root.title(“Minha janela”)
Button.pack()
Neste exemplo, criamos uma caixa de diálogo de confirmação que aparece quando o botão
“Sair” é clicado. Usamos a classe messagebox da biblioteca tkinter para criar a caixa de diálogo
e pedir ao usuário que confirme a ação. Se o usuário clicar em “Sim”, a função confirm_exit()
chama o método quit() da janela principal para encerrar o programa.
Import tkinter as tk
Def add_digit(digit):
Display.insert(tk.END, digit)
Def clear_display():
Display.delete(0, tk.END)
Def calculate():
Expression = display.get()
Try:
Result = eval(expression)
Display.delete(0, tk.END)
Display.insert(tk.END, result)
Except:
Display.delete(0, tk.END)
Display.insert(tk.END, “Erro”)
Root = tk.Tk()
Root.title(“Calculadora”)
# Cria um campo de entrada para a calculadora
Button_1.grid(row=1, column=0)
Button_2.grid(row=1, column=1)
Button_3.grid(row=1, column=2)
Button_4.grid(row=2, column=0)
Button_5.grid(row=2, column=1)
Button_6.grid(row=2, column=2)
Button_7.grid(row=3, column=0)
Button_8.grid(row=3, column=1)
Button_9.grid(row=3, column=2)
Button_0 = tk.Button(root, text=”0”, command=lambda: add_digit(0))
Button_0.grid(row=4, column=1
Import sys
Class TemperatureConverter(QWidget):
Def __init__(self):
Super().__init__()
Self.setWindowTitle(‘Conversor de temperaturas’)
Self.celsius_box = QDoubleSpinBox(self)
Self.celsius_box.setRange(-273.15, 10000)
Self.celsius_box.setSingleStep(0.1)
Self.celsius_box.setSuffix(‘ °C’)
Self.celsius_box.valueChanged.connect(self.convert_temperatures)
Self.fahrenheit_box = QDoubleSpinBox(self)
Self.fahrenheit_box.setRange(-459.67, 10000)
Self.fahrenheit_box.setSingleStep(0.1)
Self.fahrenheit_box.setSuffix(‘ °F’)
Self.fahrenheit_box.valueChanged.connect(self.convert_temperatures)
Self.quit_button.clicked.connect(self.close)
Layout = QVBoxLayout(self)
Layout.addWidget(self.celsius_box)
Layout.addWidget(self.fahrenheit_box)
Layout.addWidget(self.quit_button)
Def convert_temperatures(self):
Celsius = self.celsius_box.value()
Self.fahrenheit_box.setValue(fahrenheit)
Fahrenheit = self.fahrenheit_box.value()
Self.celsius_box.setValue(celsius)
App = QApplication(sys.argv)
Window = TemperatureConverter()
Window.show()
Neste exemplo, criamos uma janela com duas caixas de entrada para temperatura (uma para
Celsius e outra para Fahrenheit) e um botão para sair. Quando o usuário insere uma
temperatura em uma das caixas de entrada, a função convert_temperatures() é chamada para
converter a temperatura para a outra unidade. Usamos a biblioteca PyQt5 para criar a
interface gráfica de usuário e definimos as propriedades das caixas de entrada, como faixas de
valores e incrementos de etapa.
Import wx
Class SimpleTextEditor(wx.Frame):
Super().__init__(parent, title=title)
Self.quit_button.Bind(wx.EVT_BUTTON, self.OnQuit)
Sizer = wx.BoxSizer(wx.VERTICAL)
Sizer.Add(self.text_ctrl, 1, wx.EXPAND)
Sizer.Add(self.quit_button, 0, wx.ALIGN_RIGHT)
Self.SetSizer(sizer)
Self.SetMinSize(wx.Size(400, 300))
Def OnQuit(self,
Import sys
Class Calculator(QWidget):
Def __init__(self):
Super().__init__()
Self.setWindowTitle(‘Calculadora’)
Self.result_display = QLineEdit()
Self.result_display.setReadOnly(True)
Self.result_display.setAlignment(Qt.AlignRight)
Self.button_0 = QPushButton(‘0’)
Self.button_1 = QPushButton(‘1’)
Self.button_2 = QPushButton(‘2’)
Self.button_3 = QPushButton(‘3’)
Self.button_4 = QPushButton(‘4’)
Self.button_5 = QPushButton(‘5’)
Self.button_6 = QPushButton(‘6’)
Self.button_7 = QPushButton(‘7’)
Self.button_8 = QPushButton(‘8’)
Self.button_9 = QPushButton(‘9’)
Self.button_plus = QPushButton(‘+’)
Self.button_minus = QPushButton(‘-‘)
Self.button_multiply = QPushButton(‘*’)
Self.button_divide = QPushButton(‘/’)
Self.button_equals = QPushButton(‘=’)
Self.button_clear = QPushButton(‘C’)
Self.button_0.clicked.connect(lambda: self.add_digit(‘0’))
Self.button_1.clicked.connect(lambda: self.add_digit(‘1’))
Self.button_2.clicked.connect(lambda: self.add_digit(‘2’))
Self.button_3.clicked.connect(lambda: self.add_digit(‘3’))
Self.button_4.clicked.connect(lambda: self.add_digit(‘4’))
Self.button_5.clicked.connect(lambda: self.add_digit(‘5’))
Self.button_6.clicked.connect(lambda: self.add_digit(‘6’))
Self.button_7.clicked.connect(lambda: self.add_digit(‘7’))
Self.button_8.clicked.connect(lambda: self.add_digit(‘8’))
Self.button_9.clicked.connect(lambda: self.add_digit(‘9’))
Self.button_plus.clicked.connect(lambda: self.add_operator(‘+’))
Self.button_minus.clicked.connect(lambda: self.add_operator(‘-‘))
Self.button_multiply.clicked.connect(lambda: self.add_operator(‘*’))
Self.button_divide.clicked.connect(lambda: self.add_operator(‘/’))
Self.button_equals.clicked.connect(self.calculate)
Self.button_clear.clicked.connect(self.clear)
# Cria o layout da janela
Numeric_buttons_layout = QVBoxLayout()
Numeric_buttons_layout.addWidget(self.button_7)
Numeric_buttons_layout.addWidget(self.button_8)
Numeric_buttons_layout.addWidget(self.button_9)
Numeric_buttons_layout.addWidget(self.button_4)
Numeric_buttons_layout.addWidget(self.button_5)
Numeric_buttons_layout.addWidget(self.button_6)
Numeric_buttons_layout.addWidget(self.button_1)
Numeric_buttons_layout.addWidget(self.button_2)
Numeric_buttons_layout.addWidget(self.button_3)
Numeric_buttons_layout.addWidget(self.button_0)
Operation_buttons_layout = QVBoxLayout()
Operation_buttons_layout.addWidget(self.button_plus)
Operation_buttons_layout.addWidget(self.button_minus)
Operation_buttons_layout.addWidget(self.button_multiply)
Operation_buttons_layout.addWidget(self.button_divide)
Operation_buttons_layout.addWidget(self.button_equals)
Operation_buttons_layout.addWidget(self.button_clear)
Display_layout = QHBoxLayout()
Display_layout.addWidget(self.result_display)
Main_layout = QVBoxLayout()
Main_layout.addLayout(display_layout)
Main_layout.addLayout(numeric_buttons_layout)
Main_layout.addLayout(operation_buttons_layout)
Self.setLayout(main_layout)
# Define o tamanho da janela
Self.setFixedSize(
Import tkinter as tk
Class TemperatureConverter(tk.Frame):
Super().__init__(master)
Self.master = master
Self.master.title(‘Conversor de Temperatura’)
Self.input_entry = tk.Entry(self)
Self.pack()
Def convert_temperature(self):
Celsius = float(self.input_entry.get())
Self.output_entry.config(state=’normal’)
Self.output_entry.delete(0, tk.END)
Self.output_entry.insert(0, fahrenheit)
Self.output_entry.config(state=’readonly’)
Root = tk.Tk()
App = TemperatureConverter(master=root)
App.mainloop()
Import sys
Class TextEditor(QWidget):
Def __init__(self):
Super().__init__()
Self.setWindowTitle(‘Editor de Texto’)
# Cria a caixa de texto
Self.text_edit = QTextEdit()
Self.text_edit.setAcceptRichText(False)
# Cria os botões
Self.open_button = QPushButton(‘Abrir’)
Self.save_button = QPushButton(‘Salvar’)
Self.open_button.clicked.connect(self.open_file)
Self.save_button.clicked.connect(self.save_file)
Button_layout = QHBoxLayout()
Button_layout.addWidget(self.open_button)
Button_layout.addWidget(self.save_button)
Main_layout = QVBoxLayout()
Main_layout.addWidget(self.text_edit)
Main_layout.addLayout(button_layout)
Self.setLayout(main_layout)
Self.setFixedSize(400, 400)
Def open_file(self):
If file_name:
Def save_file(self):
If file_name:
f.write(self.text_edit.toPlainText())
if __name__ == ‘__main__’:
Exercício :
Crie uma janela simples usando a biblioteca Tkinter com um botão que, quando
clicado, imprime “Hello World” no console.
Crie uma interface gráfica de usuário usando a biblioteca PyQt que permita ao usuário
inserir um nome e uma idade em campos de entrada e, em seguida, pressionar um
botão para exibir essas informações em uma caixa de diálogo pop-up.
Crie uma janela usando a biblioteca wxPython que exibe uma imagem e um botão.
Quando o botão é clicado, a imagem é alterada para uma imagem diferente.
Crie uma interface gráfica de usuário usando a biblioteca Tkinter que permita ao
usuário selecionar um arquivo usando uma caixa de diálogo de seleção de arquivo e,
em seguida, exiba o conteúdo desse arquivo em um widget de texto.
Crie uma janela usando a biblioteca PyQt que tenha uma barra de menu com uma
opção “Arquivo” que, quando clicada, exibe um menu suspenso com opções “Abrir” e
“Sair”. A opção “Abrir” deve abrir uma caixa de diálogo de seleção de arquivo e exibir o
conteúdo do arquivo selecionado em um widget de texto.
Import tkinter as tk
Def say_hello():
Print(“Hello World”)
Root = tk.Tk()
Root.title(“Minha Janela Tkinter”)
Root.geometry(“300x200”)
Button.pack(pady=50)
Root.mainloop()
Neste exemplo, criamos uma janela usando tk.Tk() e configuramos o título e as dimensões da
janela. Em seguida, criamos um botão usando tk.Button(), que tem um rótulo “Clique aqui!” e
é vinculado à função say_hello() usando o parâmetro command. Quando o botão é clicado, a
função say_hello() é chamada e imprime “Hello World” no console. Finalmente, usamos
root.mainloop() para executar o loop principal da janela e exibir a interface gráfica de usuário.
Aqui está um exemplo adicional de um exercício que usa a biblioteca PyQt para criar uma
interface gráfica de usuário que permite ao usuário inserir um nome e uma idade em campos
de entrada e, em seguida, pressionar um botão para exibir essas informações em uma caixa de
diálogo pop-up:
Import sys
Class MyWindow(QWidget):
Def __init__(self):
Super().__init__()
Self.setupUI()
Def setupUI(self):
nameLabel.move(50, 50)
self.nameInput = QLineEdit(self)
self.nameInput.move(150, 50)
ageLabel.move(50, 100)
self.ageInput = QLineEdit(self)
self.ageInput.move(150, 100)
button.move(150, 150)
button.clicked.connect(self.showInfo)
def showInfo(self):
name = self.nameInput.text()
age = self.ageInput.text()
If __name__ == ‘__main__’:
App = QApplication(sys.argv)
Window = MyWindow()
Window.show()
Sys.exit(app.exec_())
Neste exemplo, criamos uma janela usando QApplication e QWidget, definimos o título e as
dimensões da janela usando setWindowTitle() e setGeometry(), e adicionamos campos de
entrada de texto usando QLineEdit e QLabel. Também adicionamos um botão usando
QPushButton e vinculamos a função showInfo() ao evento de clique do botão usando
clicked.connect(). Quando o botão é clicado, a função showInfo() é chamada, que coleta os
valores inseridos nos campos de entrada de texto usando text() e exibe essas informações em
uma caixa de diálogo pop-up usando QMessageBox. Finalmente, usamos QApplication.exec_()
para executar o loop principal da janela e exibir a interface gráfica de usuário.
Outro exercício
Crie uma interface gráfica de usuário usando a biblioteca tkinter que permita ao
usuário selecionar um arquivo de imagem em seu computador e exibi-lo em um rótulo
na interface gráfica de usuário.
Crie uma interface gráfica de usuário usando a biblioteca PyQt que permita ao usuário
inserir uma lista de nomes em uma caixa de texto e, em seguida, pressionar um botão
para classificar a lista em ordem alfabética e exibi-la em uma caixa de texto separada.
Crie uma interface gráfica de usuário usando a biblioteca wxPython que permita ao
usuário selecionar uma pasta no seu computador e exibir uma lista de todos os
arquivos nessa pasta em uma janela de lista na interface gráfica de usuário.
Crie uma interface gráfica de usuário usando a biblioteca tkinter que permita ao
usuário inserir uma lista de números em uma caixa de texto e, em seguida, pressionar
um botão para calcular a média e o desvio padrão desses números e exibi-los em
caixas de texto separadas.
Crie uma interface gráfica de usuário usando a biblioteca PyQt que permita ao usuário
selecionar um arquivo de texto em seu computador e exibir seu conteúdo em uma
caixa de texto na interface gráfica de usuário, permitindo que o usuário edite o texto e,
em seguida, salve as alterações no arquivo original.
Exemplo em código
Import tkinter as tk
Root = tk.Tk()
Def open_image():
Img = Image.open(filepath)
Img = ImageTk.PhotoImage(img)
Label.config(image=img)
Label.image = img
Button.pack()
Label = tk.Label(root)
Label.pack()
Root.mainloop()
Exemplo em PyQt:
Exemplo
Class MyWindow(QtWidgets.QWidget):
Def __init__(self):
Super().__init__()
Self.names = QtWidgets.QTextEdit()
Self.names.setPlainText(“John\nMary\nPeter\nAnne”)
Self.sorted_names = QtWidgets.QTextEdit()
Self.sort_button.clicked.connect(self.sort_names)
Layout = QtWidgets.QVBoxLayout()
Layout.addWidget(self.names)
Layout.addWidget(self.sort_button)
Layout.addWidget(self.sorted_names)
Self.setLayout(layout)
Def sort_names(self):
Names = self.names.toPlainText().split(“\n”)
Names.sort()
Self.sorted_names.setPlainText(“\n”.join(names))
App = QtWidgets.QApplication([])
Win = MyWindow()
Win.show()
App.exec_()
Exemplo em wxPython:
Exemplo
Import wx
Import os
Class MyFrame(wx.Frame):
Def __init__(self):
Panel = wx.Panel(self)
Vbox = wx.BoxSizer(wx.VERTICAL)
Hbox = wx.BoxSizer(wx.HORIZONTAL)
Self.file_list = wx.ListBox(panel)
Self.file_list.Bind(wx.EVT_LISTBOX_DCLICK, self.on_double_click)
Panel.SetSizer(vbox)
Self.Show()
Selected_file = self.file_list.GetStringSelection()
If selected_file:
If os.path.isfile(path):
Contents = f.read()
Dialog.ShowModal()
Def update_file_list(self):
Self.file_list.Clear()
Files = os.listdir(self.path)
Self.file_list.Append(file)
Self.path = event.GetPath()
Self.path_label.SetLabel(self.path)
Self.update_file_list()
App = wx.App()
Frame = MyFrame()
If dlg.ShowModal() == wx.ID_OK:
Frame.on_dir_changed(dlg)
Dlg.Destroy()
App.MainLoop()
Exemplo em tkinter:
Exemplo
Import tkinter as tk
Import statistics
Root = tk.Tk()
Def calculate_stats():
Mean = statistics.mean(numbers)
Stdev =
Outro exercício:
Crie uma interface gráfica de usuário usando tkinter que permita ao usuário inserir um
número e, ao clicar em um botão, exiba uma mensagem informando se o número é
par ou ímpar.
Crie uma interface gráfica de usuário usando PyQt que permita ao usuário inserir o
nome e a idade de uma pessoa e, ao clicar em um botão, exiba uma mensagem
informando se a pessoa é maior ou menor de idade.
Crie uma interface gráfica de usuário usando wxPython que permita ao usuário inserir
dois números e, ao clicar em um botão, exiba uma mensagem informando qual é o
maior número.
Crie uma interface gráfica de usuário usando tkinter que permita ao usuário inserir
uma palavra e, ao clicar em um botão, exiba uma mensagem informando se a palavra
é um palíndromo (ou seja, se é igual quando lida da esquerda para a direita ou da
direita para a esquerda).
Crie uma interface gráfica de usuário usando PyQt que permita ao usuário selecionar
uma imagem em seu computador e exibi-la na interface gráfica
Exemplo em código
Import tkinter as tk
Def verificar_paridade():
Numero = int(entrada_numero.get())
If numero % 2 == 0:
Else:
Janela = tk.Tk()
Janela.title(“Verificador de paridade”)
Label_numero.pack()
Entrada_numero = tk.Entry(janela)
Entrada_numero.pack()
Botao_verificar.pack()
Mensagem.pack()
Janela.mainloop()
Nesse código, criamos uma janela com um rótulo, uma caixa de entrada, um botão e uma
mensagem. Quando o usuário clica no botão “Verificar”, a função verificar_paridade é
chamada, que verifica se o número inserido na caixa de entrada é par ou ímpar e atualiza a
mensagem de acordo.
Def verificar_idade():
Nome = entrada_nome.text()
Idade = int(entrada_idade.text())
Else:
App = QApplication([])
Janela = QWidget()
Janela.setWindowTitle(“Verificador de idade”)
Label_nome.move(10, 10)
Entrada_nome = QLineEdit(janela)
Entrada_nome.move(70, 10)
Label_idade.move(10, 40)
Entrada_idade = QLineEdit(janela)
Entrada_idade.move(70, 40)
Botao_verificar.move(10, 80)
Botao_verificar.clicked.connect(verificar_idade)
Janela.show()
App.exec_()
Import wx
Class Janela(wx.Frame):
Panel = wx.Panel(self)
Vbox = wx.BoxSizer(wx.VERTICAL)
Hbox1 = wx.BoxSizer(wx.HORIZONTAL)
Self.entrada_numero1 = wx.TextCtrl(panel)
Hbox2 = wx.BoxSizer(wx.HORIZONTAL)
Label_numero2 = wx.StaticText(panel, label=”Digite o segundo número:”)
Self.entrada_numero2 = wx.TextCtrl(panel)
Hbox3 = wx.BoxSizer(wx.HORIZONTAL)
Botao_verificar.Bind(wx.EVT_BUTTON, self.verificar_maior_numero)
Panel.SetSizer(vbox)
Numero1 = int(self.entrada_numero1.GetValue())
Numero2 = int(self.entrada_numero2.GetValue())
Mensagem
XML (Extensible Markup Language) e JSON (JavaScript Object Notation) são formatos de dados
que são frequentemente usados para representar informações estruturadas em um formato
legível por máquina e por humanos. Em Python, existem bibliotecas nativas para lidar com
esses formatos de dados, a biblioteca xml para XML e a biblioteca json para JSON.
A biblioteca xml permite a leitura e escrita de dados XML em Python. Existem duas principais
classes na biblioteca xml: ElementTree e Element. O ElementTree é a classe de alto nível que
representa um documento XML inteiro, enquanto o Element representa um único nó dentro
do documento.
Aqui está um exemplo de como ler um arquivo XML usando a biblioteca xml em Python:
Import xml.etree.ElementTree as ET
Tree = ET.parse(‘exemplo.xml’)
Root = tree.getroot()
Print(child.tag, child.attrib)
Element = root.find(‘elemento’)
Print(element.tag, element.text)
A biblioteca json permite a leitura e escrita de dados JSON em Python. A biblioteca tem duas
principais funções: json.dumps() para codificar um objeto Python em uma string JSON e
json.loads() para decodificar uma string JSON em um objeto Python.
Aqui está um exemplo de como ler um arquivo JSON usando a biblioteca json em Python:
Import json
# Lê um arquivo JSON
With open(‘exemplo.json’, ‘r’) as f:
Data = json.load(f)
Print(obj[‘nome’], obj[‘valor’])
Json_string = json.dumps(objeto)
Print(json_string)
Suponha que você tenha um arquivo XML chamado exemplo.xml com o seguinte conteúdo:
<pessoa>
<nome>João</nome>
<idade>30</idade>
<endereco>
<rua>Rua A</rua>
<cidade>Curitiba</cidade>
</endereco>
</pessoa>
Você pode ler esse arquivo usando a biblioteca xml.etree.ElementTree da seguinte maneira:
Import xml.etree.ElementTree as ET
Tree = ET.parse(‘exemplo.xml’)
Root = tree.getroot()
Nome = root.find(‘nome’).text
Idade = root.find(‘idade’).text
Rua = root.find(‘endereco/rua’).text
Cidade = root.find(‘endereco/cidade’).text
Print(f’Nome: {nome}’)
Print(f’Idade: {idade}’)
Para escrever um arquivo XML em Python, você pode criar um objeto Element usando a
biblioteca xml.etree.ElementTree e, em seguida, usar o método ElementTree para salvar o
objeto em um arquivo. Aqui está um exemplo:
Import xml.etree.ElementTree as ET
Root = ET.Element(‘pessoas’)
Idade1.text = ‘30’
Rua1.text = ‘Rua A’
Cidade1.text = ‘Curitiba’
Nome2.text = ‘Maria’
Idade2.text = ‘25’
Rua2.text = ‘Rua B’
Tree = ET.ElementTree(root)
Tree.write(‘pessoas.xml’)
Este código cria um arquivo XML chamado pessoas.xml com o seguinte conteúdo:
<pessoas>
<pessoa>
<nome>João</nome>
<idade>30</idade>
<endereco>
<rua>Rua A</rua>
<cidade>Curitiba</cidade>
</endereco>
</pessoa>
<pessoa>
<nome>Maria</nome>
<idade>25</idade>
<endereco>
<rua>Rua B</rua>
<cidade>São Paulo</cidade>
</endereco>
</pessoa>
</pessoas>
Suponha que você tenha um arquivo JSON chamado exemplo.json com o seguinte conteúdo:
“pessoa”: {
“nome”: “João”,
“idade”: 30,
Aqui vai um exemplo simples de como ler e escrever dados em formato JSON em Python
usando a biblioteca json:
Import json
Dados = {
“nome”: “João”,
“sobrenome”: “Silva”,
“idade”: 30,
Json.dump(dados, arquivo)
Dados_lidos = json.load(arquivo)
Print(dados_lidos)
Nesse exemplo, criamos um dicionário com alguns dados pessoais e interesses de uma pessoa,
e depois escrevemos esses dados em um arquivo no formato JSON usando o método
json.dump(). Depois, lemos os dados desse arquivo usando o método json.load() e imprimimos
esses dados na tela.
Esse é apenas um exemplo simples de como a biblioteca json pode ser usada em Python para
trabalhar com dados em formato JSON.
Exemplo :
Import xml.etree.ElementTree as ET
Tree = ET.parse(‘dados.xml’)
Root = tree.getroot()
Print(child.tag, child.attrib)
Import xml.etree.ElementTree as ET
Dados = {
“nome”: “João”,
“sobrenome”: “Silva”,
“idade”: 30,
Root = ET.Element(“pessoa”)
If isinstance(value, list):
Subelement.text = str(item)
Else:
Subelement.text = str(value)
# Escrevendo os dados em um arquivo no formato XML
Tree = ET.ElementTree(root)
Tree.write(“dados.xml”)
Import json
With open(‘dados.json’) as f:
Dados = json.load(f)
Print(dados[‘nome’])
Print(dados[‘idade’])
Print(dados[‘interesses’])
Import json
Dados = {
“nome”: “João”,
“sobrenome”: “Silva”,
“idade”: 30,
Espero que esses exemplos possam ajudar a entender melhor como trabalhar com XML e JSON
em Python!
Exercício
Escreva um programa que leia um arquivo XML e imprima na tela todos os valores dos
elementos com a tag “nome”.
Escreva uma função que receba uma lista de dicionários e salve esses dicionários em
um arquivo JSON.
Escreva um programa que leia um arquivo JSON e imprima na tela o valor da chave
“idade” para cada objeto no arquivo.
Escreva uma função que receba um dicionário e retorne uma string com a
representação XML desse dicionário.
Escreva um programa que leia um arquivo XML e salve as informações em um arquivo
JSON.
Exercício – Ler um arquivo XML e imprimir na tela todos os valores dos elementos com a tag
“nome”:
Import xml.etree.ElementTree as ET
# Lê o arquivo XML
Tree = ET.parse(‘exemplo.xml’)
Root = tree.getroot()
Print(elem.text)
Exercício – Criar um arquivo JSON com informações sobre pessoas e salvá-lo em disco:
Import json
Pessoas = [
Json.dump(pessoas, f, indent=4)
Exercício – Ler um arquivo JSON e imprimir na tela todas as informações sobre as pessoas:
Import json
# Lê o arquivo JSON
Pessoas = json.load(f)
For p in pessoas:
Print(‘Nome:’, p[‘nome’])
Print(‘Idade:’, p[‘idade’])
Print(‘Cidade:’, p[‘cidade’])
Print()
Print(json_string)
Copy code
Import json
Pessoa = json.loads(json_string)
Print(pessoa)
Outro exercício :
Escreva uma função que receba uma lista de números inteiros como parâmetro e
retorne o menor valor da lista.
Escreva uma função que receba uma lista de palavras como parâmetro e retorne uma
nova lista contendo apenas as palavras que possuem mais de 5 caracteres.
Escreva um programa que leia um arquivo de texto e conte o número de ocorrências
de cada palavra no arquivo.
Escreva uma função que receba um número inteiro como parâmetro e retorne uma
lista contendo todos os divisores desse número.
Escreva um programa que receba um arquivo de texto contendo uma lista de números
inteiros separados por vírgula e calcule a média desses números.
Escreva uma função que receba uma lista de números inteiros como parâmetro e
retorne uma nova lista contendo apenas os números pares da lista original.
Escreva um programa que leia um arquivo de texto contendo uma lista de nomes e
sobrenomes e gere um novo arquivo contendo apenas os sobrenomes em ordem
alfabética.
Escreva uma função que receba uma lista de números inteiros como parâmetro e
retorne a soma de todos os números da lista.
Escreva um programa que leia um arquivo de texto contendo uma lista de nomes e
idades e exiba a média de idade dos nomes que começam com a letra ‘A’.
Escreva uma função que receba uma lista de números inteiros como parâmetro e
retorne uma nova lista contendo apenas os números ímpares da lista original.
Exercício : Faça um programa que leia um arquivo XML e imprima o conteúdo na tela.
Import xml.etree.ElementTree as ET
Root = tree.getroot()
Print(child.tag, child.attrib)
Exercício : Faça um programa que crie um arquivo XML a partir de dados fornecidos pelo
usuário.
Import xml.etree.ElementTree as ET
Root = ET.Element(‘root’)
Tree = ET.ElementTree(root)
Tree.write(‘arquivo.xml’)
Exercício : Faça um programa que leia um arquivo JSON e imprima o conteúdo na tela.
Print(key, value)
Exercício : Faça um programa que crie um arquivo JSON a partir de dados fornecidos pelo
usuário.
Json.dump(dados, f)
Exercício : Faça um programa que leia um arquivo XML e converta para JSON.
Import xml.etree.ElementTree as ET
Import json
Tree = ET.parse(‘arquivo.xml’)
Root = tree.getroot()
Data = {}
Data[child.tag] = child.text
Json_data = json.dumps(data)
Print(json_data)
Exercício : Faça um programa que leia um arquivo JSON e converta para XML.
Import xml.etree.ElementTree as ET
Data = json.load(f)
Root = ET.Element(‘root’)
Child.text = str(value)
Xml_data = ET.tostring(root)
f.write(xml_data)
Exercício : Faça um programa que leia um arquivo JSON e salve apenas os valores únicos em
um novo arquivo JSON.
Import json
Data = json.load(f)
Unique_values = []
# Iterando sobre cada item do arquivo JSON e adicionando apenas valores únicos na lista
Unique_values.append(item)
Json.dump(unique_values, f)
Exemplo
Def soma_lista(lista):
Soma = 0
Soma += num
Return soma
Lista_numeros = [1, 2, 3, 4, 5]
Print(soma_lista(lista_numeros)) # Saída: 15
Exemplo
Ana,20
Bruno,25
Arthur,18
Alice,23
Podemos utilizar o seguinte código para calcular a média de idade das pessoas cujos nomes
começam com a letra ‘A’:
Soma_idades = 0
Contagem = 0
If nome[0] == ‘A’:
Soma_idades += int(idade)
Contagem += 1
If contagem > 0:
Print(f”A média de idade das pessoas cujos nomes começam com ‘A’ é {media_idades:.2f}”)
Else:
Exemplo
Def numeros_impares(lista):
Impares = []
If num % 2 != 0:
Impares.append(num)
Return impares
Lista_numeros = [1, 2, 3, 4, 5]
Sobre
Testes de unidade:
Os testes de unidade são uma parte essencial da programação em Python, pois ajudam a
garantir que o código que você escreveu funcione corretamente e atenda aos requisitos
especificados. A biblioteca padrão do Python, unittest, é uma ótima ferramenta para escrever
e executar testes de unidade.
A seguir, descrevemos alguns conceitos importantes e como usar a biblioteca unittest para
escrever testes de unidade em Python.
Conceitos importantes
Explicações :
Teste de unidade é uma prática de programação que envolve escrever testes automatizados
para pequenas partes do código, geralmente funções ou métodos. O objetivo é garantir que
cada parte do código funcione corretamente isoladamente, antes de integrá-las em um
sistema completo.
Em Python, a biblioteca padrão unittest é comumente usada para escrever testes de unidade.
Os testes são escritos em uma classe que herda de unittest.TestCase e são definidos como
métodos que começam com test_. Cada método de teste executa uma ou mais asserções, que
verificam se a saída da função ou método testado é igual ao resultado esperado.
Além disso, os testes de unidade podem ser executados automaticamente a cada alteração de
código, permitindo que os desenvolvedores identifiquem e corrijam problemas rapidamente.
Eles também são úteis para documentar o comportamento esperado de uma função ou
método, tornando mais fácil para outros desenvolvedores entender como usar o código.
Exemplo em código
Aqui está um exemplo básico de como escrever testes de unidade usando a biblioteca unittest
do Python:
Suponha que temos uma função soma que recebe dois números como argumentos e retorna a
soma deles:
Return a + b
Para testar essa função, podemos escrever uma classe de teste com métodos que verificam se
a saída da função soma é o resultado esperado para diferentes entradas. Por exemplo:
Class TestSoma(unittest.TestCase):
Def test_soma_positivos(self):
Self.assertEqual(soma(2, 3), 5)
Def test_soma_negativos(self):
Def test_soma_positivo_negativo(self):
Neste exemplo, estamos testando a função soma com três cenários diferentes:
Teste de soma com números positivos: espera-se que a soma de 2 e 3 seja igual a 5.
Teste de soma com números negativos: espera-se que a soma de -2 e -3 seja igual a -5.
Teste de soma com um número positivo e outro negativo: espera-se que a soma de 2 e -3 seja
igual a -1.
Python
Copy code
If __name__ == ‘__main__’:
Unittest.main()
Quando executamos este arquivo, a saída deve ser algo como:
...
OK
Isso significa que todos os testes passaram com sucesso. Se algum teste falhar, o relatório de
teste indicará qual teste falhou e qual era o resultado esperado.
Caso de teste: um caso de teste é uma coleção de testes de unidade que testam uma
funcionalidade específica do seu programa.
Explicações
Um caso de teste é um conjunto de condições e/ou variáveis de entrada para testar uma
determinada funcionalidade do software. É uma etapa importante do processo de teste de
software, pois ajuda a garantir que o software esteja funcionando corretamente antes de ser
entregue aos usuários finais.
Um caso de teste consiste em uma descrição do que será testado, as condições de entrada e
saída esperadas e os passos necessários para executar o teste. Os casos de teste devem ser
criados de acordo com os requisitos do software e devem cobrir todas as funcionalidades e
cenários possíveis.
Em Python, a biblioteca unittest é frequentemente usada para escrever casos de teste. Com
ela, é possível criar testes de unidade para funções e classes, bem como testes de integração
para verificar se as diferentes partes do software funcionam corretamente juntas.
Exemplo em código :
Aqui está um exemplo simples de como criar um caso de teste usando a biblioteca unittest em
Python:
Class TestStringMethods(unittest.TestCase):
Def test_upper(self):
Self.assertEqual(‘hello’.upper(), ‘HELLO’)
Def test_isupper(self):
Self.assertTrue(‘HELLO’.isupper())
Self.assertFalse(‘Hello’.isupper())
Def test_split(self):
S = ‘hello world’
With self.assertRaises(TypeError):
s.split(2)
if __name__ == ‘__main__’:
unittest.main()
Neste exemplo, estamos criando uma classe TestStringMethods que herda da classe
unittest.TestCase. Dentro dessa classe, estamos definindo três métodos de teste diferentes:
test_upper(), test_isupper() e test_split().
Cada um desses métodos de teste contém um ou mais testes, que usam os métodos assert da
classe TestCase para verificar se uma determinada condição é verdadeira ou não. Por exemplo,
no método test_upper(), estamos verificando se a chamada de upper() no objeto string ‘hello’
retorna a string ‘HELLO’.
Para executar esses testes, chamamos o método unittest.main(), que descobre todos os casos
de teste na classe e os executa automaticamente. Se um teste falhar, o método assert lançará
uma exceção, o que fará com que o teste seja marcado como falho.
Esse é apenas um exemplo básico, mas a biblioteca unittest tem muitos recursos poderosos
que permitem criar casos de teste complexos e abrangentes para seus programas em Python.
Asserção: uma asserção é uma declaração que verifica se uma condição é verdadeira.
Se a condição for falsa, a asserção falhará.
Explicações :
Em Python, a biblioteca de testes unitários “unittest” fornece várias funções de asserção que
podem ser usadas em testes unitários. Essas funções testam diferentes condições e retornam
True ou False dependendo se a condição é verdadeira ou falsa.
Essas funções de asserção podem ser usadas para testar diferentes partes do código e garantir
que ele está funcionando corretamente.
Class TesteSoma(unittest.TestCase):
Def test_soma_positivos(self):
Self.assertEqual(somar(2, 3), 5)
Def test_soma_negativos(self):
Def test_soma_zero(self):
Self.assertEqual(somar(0, 0), 0)
Def test_soma_positivo_negativo(self):
If __name__ == ‘__main__’:
Unittest.main()
Nesse exemplo, temos uma função somar(a, b) que recebe dois números inteiros e retorna a
soma deles. Em seguida, temos uma classe TesteSoma que herda de unittest.TestCase e
contém quatro métodos que testam diferentes cenários da função somar(). Em cada um
desses métodos, utilizamos uma função de asserção (assertEqual()) para verificar se o
resultado da soma está correto.
Exemplo em código
Def test_addition():
Assert 2 + 2 == 4
Assert 1 + 1 == 3
Assert 0 + 1 == 1
Nesse exemplo, temos uma função de teste chamada test_addition, que contém três
asserções diferentes. Cada asserção verifica uma operação de adição diferente e verifica se o
resultado é igual ao valor esperado.
As asserções são uma parte importante dos testes de unidade em Python, pois permitem que
você verifique se o código está funcionando conforme o esperado e ajuda a garantir a
qualidade do software que você está desenvolvendo.
A biblioteca unittest fornece uma estrutura para escrever e executar testes de unidade em
Python. Aqui está um exemplo simples de como escrever e executar um teste de unidade
usando unittest:
Import unittest
Return a + b
Class TesteSoma(unittest.TestCase):
Def test_soma(self):
Self.assertEqual(soma(2, 3), 5)
Self.assertEqual(soma(0, 0), 0)
Self.assertEqual(soma(-2, 3), 1)
Neste exemplo, a função soma é definida e, em seguida, é criada uma classe de teste
TesteSoma que herda da classe unittest.TestCase. O método test_soma é definido dentro da
classe e contém três asserções que verificam se a função soma está funcionando
corretamente.
Unittest.main()
digo verifica se o módulo está sendo executado como um programa principal e, se sim, chama
a função unittest.main(), que procura por todas as classes de teste no módulo e executa todos
os métodos de teste dentro dessas classes.
Um caso de teste é uma classe que contém vários métodos de teste. Cada método de teste é
responsável por testar uma funcionalidade específica do seu programa. Aqui está um exemplo
de como estruturar um caso de teste:
Class MeuCasoDeTeste(unittest.TestCase):
Def setUp(self):
Pass
Def tearDown(self):
Pass
Def test_algo(self):
Pass
Def test_outra_coisa(self):
Pass
O método setUp é chamado antes de cada teste e é usado para configurar as condições iniciais
para o teste. O método tearDown é chamado após cada
Escreva um teste de unidade para a função soma(a, b) que deve receber dois
parâmetros e retornar a soma deles.
Exemplo em código
Import unittest
Def is_even(number):
Return number % 2 == 0
# Classe de teste
Class TestIsEven(unittest.TestCase):
Def test_even_number(self):
Self.assertTrue(is_even(2))
Def test_odd_number(self):
Self.assertFalse(is_even(3))
Def test_string_input(self):
Self.assertFalse(is_even(“string”))
Def test_list_input(self):
Self.assertFalse(is_even([1, 2, 3]))
If __name__ == ‘__main__’:
Unittest.main()
Neste exemplo, a função is_even é testada em quatro casos diferentes usando a classe
unittest.TestCase. Cada método começa com o prefixo test_ para indicar que é um teste de
unidade.
O método main() da classe unittest é usado para executar os testes. Se todos os testes
passarem, a saída deve ser:
Outro exercício :
Escreva um teste de unidade para uma função verifica_primo(n: int) -> bool que
verifica se um número inteiro é primo.
Escreva um teste de unidade para uma classe Pessoa com atributos nome e idade e
um método cumprimentar() que retorna uma saudação com o nome da pessoa.
Escreva um teste de unidade para uma função inverte_string(s: str) -> str que inverte
uma string.
Exemplo em código
Exercício – Escreva um teste de unidade para a função soma(x, y), que retorna a soma de dois
números:
Return x + y
Class TestSoma(unittest.TestCase):
Def test_soma_positivos(self):
Self.assertEqual(soma(2, 3), 5)
Def test_soma_negativos(self):
Def test_soma_positivo_negativo(self):
If __name__ == ‘__main__’:
Unittest.main()
Exercício – Escreva um teste de unidade para a função eh_par(x), que retorna True se um
número é par e False caso contrário:
Def eh_par(x):
If x % 2 == 0:
Return True
Else:
Return False
Class TestEhPar(unittest.TestCase):
Def test_par(self):
Self.assertTrue(eh_par(4))
Def test_impar(self):
Self.assertFalse(eh_par(5))
If __name__ == ‘__main__’:
Unittest.main()
Def remove_duplicados(lista):
Nova_lista = []
Nova_lista.append(elemento)
Return nova_lista
Class TestRemoveDuplicados(unittest.TestCase):
Def test_sem_duplicados(self):
Def test_com_duplicados(self):
If __name__ == ‘__main__’:
Unittest.main()
Exercício – Escreva um teste de unidade para a função media(lista), que retorna a média de
uma lista de números:
Def media(lista):
Soma = sum(lista)
Def test_media_inteiros(self):
Self.assertEqual(media([1, 2, 3]), 2)
Def test_media_floats(self):
If __name__ == ‘__main__’:
Unittest.main()
Exercício – Escreva um teste de unidade para a função inverte_string(s), que inverte uma
string:
Def inverte_string(s):
Return s[::-1]
Class TestInverteString(unittest.TestCase):
Def test_string_vazia(self):
Self.assertEqual(inverte_string(‘’), ‘’)
Def test_string_um_caractere(self):
Self.assertEqual(inverte_string(‘a’), ‘a’)
Def test_string_mais_caracteres(self):
Self.assertEqual(inverte_string(‘abcde’), ‘edcba’)
If __name__ == ‘__main__’:
Unittest.main()
Esperamos que este livro tenha sido útil em sua jornada de aprendizado em Python.
Lembre-se de que a programação é uma habilidade que se desenvolve com a prática, então
continue praticando e experimentando. Não tenha medo de cometer erros, pois é através
deles que você aprende e evolui. O Python é uma linguagem poderosa e versátil, utilizada em
diversas áreas, desde ciência de dados até desenvolvimento web. Continue explorando suas
possibilidades e desfrute do mundo da programação em Python.”