Python - Básico
Python - Básico
Instalação ...................................................................................................................................... 3
Linguagem Python ..................................................................................................................... 3
Primeiro programa .................................................................................................................... 5
Instalando a IDE PyCharm ......................................................................................................... 6
Fundamentos .............................................................................................................................. 11
Comentários ............................................................................................................................ 11
Variáveis .................................................................................................................................. 11
Comandos de Entrada e Saída................................................................................................. 12
Operadores.............................................................................................................................. 13
Lista de exercícios A ................................................................................................................ 15
Estruturas condicionais ........................................................................................................... 18
Lista de exercícios B ................................................................................................................ 20
Estruturas de repetição ........................................................................................................... 22
Lista de Exercícios C ................................................................................................................ 23
Arrays .......................................................................................................................................... 26
Principais funções do array ..................................................................................................... 27
Alguns exemplos práticos........................................................................................................ 30
Arrays multidimensionais........................................................................................................ 31
Lista de exercícios D ................................................................................................................ 34
Funções ....................................................................................................................................... 36
Características ......................................................................................................................... 38
Exemplo 01 .............................................................................................................................. 39
Exemplo 02 .............................................................................................................................. 39
Exemplo 03 .............................................................................................................................. 40
Exemplo 04 .............................................................................................................................. 41
Exemplo 05 .............................................................................................................................. 41
Lista de exercícios E................................................................................................................. 42
Estrutura de Dados...................................................................................................................... 44
Dicionário de dados................................................................................................................. 45
Exemplo: Relacionando meta-dados com dados .................................................................... 49
Lista de exercícios F ................................................................................................................. 50
Python e SQLite ........................................................................................................................... 52
Manipulando o banco de dados .............................................................................................. 53
1
Comando INSERT ..................................................................................................................... 53
Comando UPDATE ................................................................................................................... 57
Comando DELETE .................................................................................................................... 58
Comando SELECT ..................................................................................................................... 59
Comando WHERE .................................................................................................................... 60
Trabalhando com mais de uma tabela .................................................................................... 61
Lista de exercício G.................................................................................................................. 63
Tratamento de Exceção............................................................................................................... 64
Hierarquia de exceções ........................................................................................................... 65
Ação de limpeza ...................................................................................................................... 67
Comando raise ........................................................................................................................ 67
Lista de exercício H.................................................................................................................. 68
Arquivos ...................................................................................................................................... 70
Python e Arduino ........................................................................................................................ 71
Referência Bibliográfica .............................................................................................................. 72
2
Instalação
Linguagem Python
3
Cada opção marcada possui o seguinte significado:
Documentation: instala a documentação da linguagem;
pip: instala o pip que é usado para baixar bibliotecas desenvolvidas em Python;
tcl/tk and IDLE: instala a biblioteca Python criação de interface gráfica;
Python test suite: instala a biblioteca Python responsável pelo tratamento de
teste de software;
py launcher: instala o launcher para aplicativos com a extensão py.
4
Primeiro programa
python –V
python
Utilize o comando print para imprimir algo na tela. Teste a seguinte linha de comando:
print(“Olá mundo”)
O comando apresentado trata-se de função. Por definição, toda função deve possuir
parênteses. No caso apresentado a função print recebeu um conteúdo do tipo texto. A
seguir entre com os seguintes comandos:
A função print permite a impressão de diversos valores. Repare que cada valor
deve ser separado por vírgula. É permitido apresentar valores de outros tipos que não
seja texto. O último termo: sep=” “, define qual o caractere que irá ser utilizado como
separador dos valores apresentados.
5
Agora digite os seguintes comandos:
www.jetbrains.com/pycharm/download
6
Execute o arquivo, na tela que define o Destination Folder instale a aplicação
no seguinte endereço:
7
Após ter sua instalação concluída, abra o programa. Escolha a opção Create
New Project.
Será disponibilizado uma tela para definir o caminho do projeto e qual a máquina virtual
a ser utilizada pelo projeto.
8
Em Location crie o seguinte caminho:
c:\desenvolvimento\workspace\python\curso\primeiro
Com o projeto criado clique com o botão direito no nome do projeto e escolha a opção
New Python File. Nomeie o arquivo como hello.py.
9
Digite o seguinte código:
Para executar clique no menu Run Run ou pressione as teclas Alt + Shift + F10. O
resultado será exibido no canto inferior da tela do aplicativo.
10
Fundamentos
Desenvolvida por Guido van Rossum, a linguagem Python surgiu em 1991. Esta
linguagem possui as seguintes características:
Interpretada: não utiliza os recursos diretamente da máquina;
Alto nível: baseada em outras linguagens;
Script: suporta criação de scripts;
Paradigma orientado a objetos: utiliza os conceitos de classe e objetos;
Tipagem dinâmica: variáveis não possuem tipos definidos.
A estrutura da linguagem de programação determina que todo código esteja
devidamente identado. As estruturas e blocos não são limitados com um início e fim.
Comentários
Ou de múltiplas linhas:
´´´
Fui a feira e digitei
os dados dos produtos
que adquiri
´´´
O comentário de múltiplas linhas deve estar envolvido por três aspas simples no início
e encerramento.
Variáveis
11
Sendo assim uma variável ser um número ou um texto. Caso seja um número,
esta poderá conter valores:
int armazena valores do inteiros;
float armazena valores reais;
complex armazena valores que possuem uma parte real e outra imaginária.
Normalmente esses tipos são empregados em áreas como Engenharia Elétrica
e Estatística.
Um número também pode ser gerado por meio das funções: int(); float();
e complex(). Exemplo:
Variáveis que possuem valores do tipo texto ser envolvidos por aspas simples
ou duplas. Exemplo:
Para nomear uma variável, e permitido utilizar qualquer caractere que não seja
símbolo chave da linguagem. Uma variável pode possuir qualquer nome, com exceção
das palavras reservadas da linguagem.
12
O desenvolvedor poderá imprimir uma saída através do comando print. Este
comando pode ser utilizado da seguinte forma:
print(“Olá”, nome)
Operadores
Operador de atribuição
Este operador tem como objetivo definir o conteúdo e o tipo de uma variável. Ele
é representado pelo símbolo igual (=).
Operadores Aritméticos
13
Descrição Símbolo
Adição +
Subtração -
Divisão /
Multiplicação *
Resto %
Operadores Relacionais
Descrição Símbolo
Maior >
Menor <
Maior ou igual >=
Menor ou igual <=
Igualdade ==
Diferente !=
Operadores Lógicos
Descrição Símbolo
E lógico and
OU lógico or
NÃO lógico not
and
P Q P and Q
True True True
14
True False False
False True False
False False False
or
P Q P and Q
True True True
True False True
False True True
False False False
not
P not P
True False
False True
Lista de exercícios A
Cálculo da hipotenusa:
h² = ca² + co²
co ca co
seno cos seno tan gente
h h ca
, onde:
h = hipotenusa;
ca = cateto adjacente;
co = cateto oposto.
15
2) Desenvolva um programa em Python que gere um número aleatório de quatro algarismos (M
– Milhar, C – Centena, D – Dezena, U - Unidade) variando entre 1000 e 9999. O programa deverá
calcular e imprimir a seguinte expressão matemática:
U randi ( M * 10)
x
C 2D
4) O IF Goiano – Campus Trindade deseja verificar qual foi a pontuação obtida por um
determinado candidato inscrito no processo eleitoral para coordenador de curso. A equipe de
desenvolvedores decidiu ajudar nesta tarefa por meio da criação de um programa Python. Neste
algoritmo é necessário que o usuário entre com: o número de votos válidos do segmento
docente ao candidato; o total de votos válidos dos docentes; o número de votos válidos do
segmento discente ao candidato; e o número de votos válidos dos discentes. O programa deverá
realizar o seguinte cálculo:
2 VDo 1 VDi
Vt , sendo:
3 Do 3 Di
16
5) Desenvolva um programa em Python no qual o usuário digitará um ângulo. O programa
deverá calcular e imprimir o seno, o cosseno e a tangente deste ângulo.
6) Desenvolva um programa em Python que gere um número aleatório variando entre 0 e 100.
Imprima o valor gerado.
9) Desenvolva um programa em Python no qual o usuário digitará dois números (n1 e n2). O
programa deverá calcular e imprimir a seguinte fórmula:
resultado n1 n 2
3
Dicas:
Calcular a potência de um número. Exemplo:
2 ** 5 = 32
4 ** (1/2) = 2
import random
random.randint(1, 9)
Gerar PI
import math
math.pi
import math
17
x = math.radians(85) #converte o ângulo de grau para radiano
math.sin(x) #seno
math.cos(x) #cosseno
z = math.tan(x) #tangente
y =math.degrees(z) #converte o ângulo de radiano para grau.
Estruturas condicionais
Uma estrutura condicional visa verificar uma sentença relacional e a partir desta
verificação ocorre a tomada de decisão. Essa ação ocorrer quando a sentença relacional
for verdadeira (True). Também é possível realizar ações o resultado da sentença
relacional seja falso (False).
A estrutura IF
if condicao:
comandos
onde:
if corresponde ao nome da estrutura de condição;
condicao sentença relacional a ser testada;
comandos todos os comandos a serem executados pela
estrutura.
A estrutura ELIF
18
comandoB
elif condicaoC:
comandoC
onde:
if corresponde ao nome da estrutura de condição;
elif utilizado para testar outra condição além da
principal;
condicaoA; condicaoB; condicaoC sentenças relacionais a
serem testadas;
comandoA; comandoB; comandoC todos os comandos a serem
executados nos diferentes blocos.
A estrutura ELSE
if condicao:
comandoA
else:
comandoB
onde:
if corresponde ao nome da estrutura de condição;
else utilizado para executar um comando quando a condição
contida no if for falsa;
condicao sentença relacional a ser testada;
comandoA; comandoB todos os comandos a serem executados
nos diferentes blocos.
19
Lista de exercícios B
1) Desenvolva um programa em Python no qual o usuário digitará uma letra (A até E) referente
a um conceito de nota. O programa deverá converter a letra digitada em uma nota de acordo
com a tabela abaixo:
CONCEITO NOTA
A 95
B 85
C 75
D 65
E 30
Qualquer letra digitada diferente do que foi proposto na tabela acima, será impresso a seguinte
mensagem “Conceito inválido”. Imprima a nota convertida.
1 se x 1
2 se 1 x 2
f ( x)
x ² se 2 x 3
x ³ se x 3
VALOR SAÍDA
1 DOMINGO
2 SEGUNDA-FEIRA
3 TERÇA-FEIRA
4 QUARTA-FEIRA
5 QUINTA-FEIRA
6 SEXTA-FEIRA
7 SÁBADO
20
# GRAVIDADE RELATIVA PLANETA
1 0,37 MERCÚRIO
2 0,88 VÊNUS
3 0,38 MARTE
4 2,64 JÚPITER
5 1,15 SATURNO
6 1,17 URANO
p m g , sendo que:
p: peso;
m: massa;
g: gravidade.
5) A escola “APRENDER” faz o pagamento de seus professores por hora/aula. Faça um programa
em Python que calcule e exiba o salário de um professor. Sabe-se que o valor da hora/aula segue
a tabela abaixo:
6) Uma empresa concederá um aumento de salário aos seus funcionários, variável de acordo
com o cargo, conforme a tabela abaixo. Faça um programa em Python que leia o salário e o
cargo de um funcionário e calcule o novo salário. Se o cargo do funcionário não estiver na tabela,
ele deverá, então, receber 40% de aumento. Mostre o salário antigo, o novo salário e a diferença
salarial.
21
Condição Situação
Frequência até 75% REPROVADO
Frequência entre 75% e 100% e Nota até 3.0 REPROVADO
Frequência entre 75% e 100% e Nota de 3.0 até 7.0 EXAME
Frequência entre 75% e 100% e Nota entre 7.0 e 10.0 APROVADO
Estruturas de repetição
A estrutura WHILE
O WHILE executa um bloco de comando N vezes até que sua condição seja satisfeita.
Essa estrutura possui a seguinte sintaxe:
while condicao:
comandos
onde:
while palavra-chave que define a estrutura;
condicao sentença relacional que define a quantidade de
vezes que os comandos serão repetidos;
comandos conjunto de instruções a serem executadas.
Exemplo:
lifeRock = 5000;
iron = 0;
batida = 200;
while lifeRock >= 0:
iron += 5
lifeRock -= batida
print('Pegou {0} iron'.format(iron))
A estrutura FOR
22
for variavel in lista:
comandos
onde:
for palavra-chave da estrutura;
variavel variável que receberá cada elemento da lista;
lista lista de elementos;
comandos conjunto de instruções.
Exemplo:
Lista de Exercícios C
01) Desenvolva um programa em Python no qual o usuário digitará dois valores inteiros (A e B).
O programa deverá gerar 100 números aleatórios. Cada valor gerado deverá estar dentro do
intervalo digitado pelo usuário (A e B). Imprima o maior valor gerado pelo programa.
23
Qual categoria que possui maior valor calórico;
Qual o nome do alimento de maior valor calórico.
05) Desenvolva um programa em Python que calcule a velocidade média de 100 veículos. O
programa deverá calcular e imprimir a porcentagem de veículos cuja velocidade média
ultrapassou a 80 km/h. Segue a fórmula da velocidade média:
d
Vm , sendo que:
t
Vm velocidade média;
d distância;
t tempo.
06) Desenvolva um programa em Python que simule a jogada de um dado de seis lados 2500
vezes. O programa deverá calcular e imprimir a porcentagens de números: uns; dois; três;
quatros; cincos e seis que foram tirados durante as 2500 jogadas.
kWh Bandeira
Até 172 kWh Verde
Entre 173 e 280 kWh Amarela
Mais que 281 kWh Vermelha
08) Um náufrago encontra-se preso em uma ilha. Ele possui uma quantidade X de comida e Y de
bebida. Sabe-se que por dia ele consome 5% da comida total e 3% da bebida total. Desenvolva
um programa em Python no qual o usuário digitará o número de comida (X) e bebida (Y) que o
náufrago possui inicialmente. O programa deverá apresentar em quantos dias ele demorou para
consumir toda comida e bebida.
24
09) Um cadeado possui 10 fechaduras. Deseja-se criar um
programa que verifique quantas tentativas uma pessoa gastará
até que abra o cadeado. Desenvolva um programa em Python
que gere aleatoriamente a fechadura correta. O usuário deverá
escolher a fechadura que deseja abrir até que tenha êxito.
Imprima quantas vezes o usuário tentou abrir o cadeado.
25
Arrays
Um array corresponde a uma estrutura de dados do tipo lista que tem como objetivo
armazenar uma coleção de dados. O array pode armazenar qualquer tipo de valor:
caracteres; inteiros; reais. Ela também pode armazenar inclusive outra array.
Para definir uma lista, declare uma variável e faça com que ela receba colchetes.
Exemplo:
x = []
Neste momento a variável x armazena um array sem elementos. Caso seja necessário
inicializar a lista com elementos, adicione os valores separados por vírgula. Exemplo:
x = [5, 6, 7, 2, 4]
5 6 7 2 4
↑ ↑ ↑ ↑ ↑
0 1 2 3 4
Cada elemento possui um índice (index) dentro da lista, sendo que o primeiro índice é
o zero (0).
Para acessar um elemento da lista, utilize o nome da variável e entre colchetes o índice
desejado.
x[3]
# Será obtido o valor 2
Para substituir um valor, faça com que a variável no índice desejado receba o novo
valor.
x[2] = 35
26
5 6 35 2 4
↑ ↑ ↑ ↑ ↑
0 1 2 3 4
Caso seja necessário descobrir quantos elementos existem na lista, utilize a função
len().
len(x)
Além dos recursos apresentados, a lista (array) contém um conjunto de funções que
permite o desenvolvedor manipular seus elementos. Neste tópico será apresentado as
principais funções de um array.
x.append(69)
5 6 35 2 4 69
↑ ↑ ↑ ↑ ↑ ↑
0 1 2 3 4 5
x.insert(2, 24)
27
5 6 24 35 2 4 69
↑ ↑ ↑ ↑ ↑ ↑ ↑
0 1 2 3 4 5 6
x.remove(4)
5 6 24 35 2 69
↑ ↑ ↑ ↑ ↑ ↑
0 1 2 3 4 5
x.pop(1)
# O valor 6 será retornado. O mesmo será excluído da lista.
5 24 35 2 69
↑ ↑ ↑ ↑ ↑
0 1 2 3 4
x.index(35)
# O valor retornado será 2
x.count(69)
# O valor retornado será 1
28
list.reverse() Inverte os valores da lista. Exemplo:
x.reverse()
69 2 35 24 5
↑ ↑ ↑ ↑ ↑
0 1 2 3 4
x.sort()
2 5 24 35 69
↑ ↑ ↑ ↑ ↑
0 1 2 3 4
x.sort(reverse=True)
69 35 24 5 2
↑ ↑ ↑ ↑ ↑
0 1 2 3 4
x.clear()
https://docs.python.org/3/tutorial/datastructures.html
29
Alguns exemplos práticos
Exemplo 01) Faça um programa em Python que carregue uma lista de 15 elementos
com valores aleatórios variando entre 100 e 1000. O programa deverá calcular e
mostrar:
import random
x = []
i = 0
while i <= 14:
x.append(random.randint(100, 1000))
i += 1
x.sort()
print(x)
print(x[0])
print(x[14])
corredor = []
i = 0
while i <= 2:
inscricao = input('Digite a inscrição: ')
tempo = int(input('Digite se tempo na corrida: '))
dados = [inscricao, tempo]
corredor.append(dados)
i += 1
corredor.sort(key = lambda corredor:corredor[1])
count = 1
for i in corredor:
30
print(count, 'º lugar: ', i[0], ' -> Tempo: ', i[1], sep='')
count += 1
Arrays multidimensionais
Arrays multidimensionais, também conhecida como matriz, corresponde a uma lista que
recebe uma coleção de dados. Essa coleção de dados é representada por outro array.
Exemplo:
Linha
0 1 4
1 3 6
2 2 4
↑ ↑
0 1
Coluna
Para acessar um dado desta estrutura utilize dois colchetes adicionando o endereço da
linha e coluna.
31
x[1][0]
'''
O valor retornado será 3 que está presente na linha 1 e coluna 0
'''
Considere que na imagem exibida, a lista tabela deverá possuir quatro colunas por
dado. Cada coluna possui uma definição e um tipo de dado:
id receberá um inteiro correspondendo ao código de um usuário;
usuário receberá um texto correspondendo ao nome da conta de um usuário;
senha receberá um texto correspondendo a senha da conta do usuário;
ativo receberá um boolean correspondendo se a conta do usuário vigente
encontra-se ativa.
Para o caso citado, pode-se criar um array multidimensional da seguinte forma:
tabela = [
[69, '[email protected]', '******', True],
[124, '[email protected]', 'pepylegal', True],
[548, '[email protected]', '123321', False],
[96, '[email protected]', 'primim2018', True],
[56, '[email protected]', 'alunos2019', False]
]
32
Linha
0 69 [email protected] ****** True
1 124 [email protected] pepylegal True
2 548 [email protected] 123321 False
3 96 [email protected] primim2018 True
4 56 [email protected] alunos2019 False
↑ ↑ ↑ ↑
0 1 2 3
Coluna
ou
O comando list converte uma série de dados em uma lista, array. O comando filter retira
todos os dados de uma lista a partir de um critério de filtro. Para utilizar o filtro use a
sintaxe:
onde:
lambda palavra-chave utilizada para criar uma variável de
filtro;
valor nome da variável de filtro. Essa variável receberá
cada valor da lista;
condicao critério de seleção.
33
Agora, como podemos capturar todas as contas do gmail?
Lista de exercícios D
1) Crie um programa em Python que leia uma lista de 40 posições. Contar e escrever quantos
valores pares ele possui.
2) Crie um programa em Python que leia duas listas de 20 posições e calcule uma outra lista
contendo, nas posições pares os valores do primeiro e nas posições impares os valores do
segundo.
3) Faça um programa em Python que determine quantos números maior que 100 há em uma
lista de inteiros com 20 elementos. Preencha a lista com números aleatórios variando entre 1 a
200.
5) Crie um programa em Python que leia quinze números do usuário e armazene em uma lista a
raiz quadrada de cada número. Caso o valor digitado seja menor que zero o número –1 deve ser
atribuído ao elemento da lista. Após isso, o programa deve imprimir todos os valores
armazenados.
6) Crie um programa em Python que que receba a altura de 10 atletas. Armazene a altura de
todos os atletas em uma lista. Esse programa deve imprimir a altura daqueles atletas que tem
altura maior que a média.
7) Escrever um programa em Python que contenha uma lista G(13) que é o gabarito de um teste
de loteria esportiva, contendo os valores: A, B ou C para cada posição de G. Ler, a seguir, o
número do cartão de um apostador e outra lista resposta R (13). Verificar o número de acertos
e escrever o número do apostador e seu número de acertos. Se tiver 13 acertos, acrescentar a
mensagem: "GANHADOR, PARABENS".
https://docs.python.org/2/library/string.html
34
uma lista resultado o valor da operação realizada. Por exemplo, suponha que A[1] = 10, B[1] = 3
e C[1] = '*', então D[1] = 30.
10) Faça um programa em Python que leia uma lista de 3 elementos e uma lista
multidimensional de 3 x 3 elementos. Em seguida o programa deve fazer a multiplicação da lista
simples pelas colunas da lista multidimensional. Exiba a nova lista.
11) Crie um programa em Python no qual o usuário digitará uma matriz com dimensões M × N.
Para a matriz digitada, imprima na tela os números pares contidos na matriz, considerando
separá-los por linha. Veja o exemplo para uma matriz 4× 4:
Entrada:
1 2 3 4
5 6 7 8
10 11 23 21
1 2 3 1
Saída:
2 4 6 8 10 2
12) Crie um programa em Python que leia uma matriz quadrada 10x10, de números inteiros.
Verificar quantos números da diagonal principal são ímpares, escrever também, a soma e a
média desses elementos.
13) Implemente um programa, utilizando a Linguagem Python, que leia 30 nomes e sobrenomes
de pessoas. A cada nome e sobrenome lido, verifique se as palavras possuem o mesmo tamanho.
14) Fazer um programa em Python que leia ao final da manhã o fechamento do caixa de uma
loja, ou seja, o seu rendimento ao final da manhã. O mesmo deverá ser feito ao final da tarde.
Este levantamento deve ser feito todos os dias da semana (de segunda-feira a sexta-feira). Ao
final da semana, após feitas todas as leituras, descobrir e escrever o dia e o turno que teve maior
rendimento. Obs.: Utilizar o conceito de matriz para resolver este exercício.
35
Funções
i = 0
while i < 3:
print('Escolha três números')
n1 = int(input('Número 1: '))
j = 1
fat = 1
while j <= n1:
fat *= j
j += 1
print('Fatorial: {0}'.format(fat))
n2 = int(input('Número 2: '))
j = 1
fat = 1
while j <= n2:
fat *= j
j += 1
print('Fatorial: {0}'.format(fat))
n3 = int(input('Número 3: '))
j = 1
fat = 1
while j <= n3:
fat *= j
j += 1
print('Fatorial: {0}'.format(fat))
i += 1
Neste exemplo o desenvolvedor pede ao usuário que digite três números três vezes.
Para cada número é calculado seu fatorial (exemplo: 4! = 4 x 3 x 2 x 1) e impresso na
tela. Repare que este código possui uma repetição das seguintes instruções:
36
j = 1
fat = 1
while j <= n1:
fat *= j
j += 1
print('Fatorial: {0}'.format(fat))
A função corresponde a um bloco de código que poderá ser invocado quantas vezes
forem necessárias. Ela define um problema. O uso de funções tem como objetivo:
Minimizar a quantidade de código escrito;
Facilitar a compreensão do código-fonte;
Distribuir a resolução do problema em pequenos módulos.
def fatorial(n):
j = 1
fat = 1
while j <= n:
fat *= j
j += 1
print('Fatorial: {0}'.format(fat))
i = 0
while i < 3:
print('Escolha três números')
n1 = int(input('Número 1: '))
fatorial(n1)
n2 = int(input('Número 2: '))
fatorial(n2)
37
n3 = int(input('Número 3: '))
fatorial(n3)
i += 1
No primeiro cenário o código escrito possuía 25 linhas, com a aplicação de função houve
a redução para 17 linhas, havendo uma economia de 32%. Repare também que o
trecho:
j = 1
fat = 1
while j <= n1:
fat *= j
j += 1
print('Fatorial: {0}'.format(fat))
foi escrito apenas uma vez, dentro da função fatorial. No código principal a função foi
chamada pelo seu nome e o valor de entrada entre parênteses.
fatorial(n1)
fatorial(n2)
fatorial(n3)
Características
def nomeFuncao(parametros):
comandos
return valor
onde:
38
def comando utilizado para definir uma função;
nomeFuncao o nome da função. Evite caracteres especiais e
espaço;
parametros define a entrada de valores externos. Se a
função não tiver, basta abrir e fechar parênteses. Caso tenha
mais de um, será necessário separá-los por vírgula;
comandos conjunto de instruções de visam resolver o
problema;
return comando utilizado para retornar um valor. O return
permite retornar um único valor;
valor valor a ser retornado.
Exemplo 01
*
**
***
****
*****
Resolução:
def impressao(linhas):
for i in range(1, linhas+1):
print('*' * i)
Exemplo 02
39
Desenvolva uma função em Python que receba uma lista contendo o nome e
sobrenome. Esta função deverá retornar outra lista contendo o nome completo das
pessoas que iniciam com ‘A’.
Resolução:
def filtro(lista):
f = list(filter(lambda item : item[0][:1] == 'A', lista))
r = []
for i in f:
r.append(i[0] + ' ' + i[1])
return r
Exemplo 03
Desenvolva uma função em Python que recebe uma lista de pedidos. Cada elemento
possui um dos seguintes valores:
Resolução:
def pedido(lista):
itens = ['CREME', 'CHOCOLATE', 'FLOCOS', 'NAPOLITANO']
maior = 0
sabor = ''
for item in itens:
q = len(list(filter(lambda i : i == item, lista)))
if q >= maior:
maior = q
sabor = item
return sabor
40
Exemplo 04
Resolução:
def dPrincipal(matriz):
index = 0
diagonal = []
for linha in matriz:
diagonal.append(linha[index])
index += 1
return diagonal
Exemplo 05
Resolução:
def cartelas(quantidade):
saida = []
for i in range(1, quantidade + 1):
jogo = []
count = 0
while True:
num = random.randint(1, 60)
if num not in jogo:
jogo.append(num)
count += 1
if count == 6:
break
jogo.sort()
41
saida.append(jogo)
return saida
Lista de exercícios E
1) Desenvolva uma função em Python que receba um número inteiro. A função deverá retornar
um boolean indicando: true se o número for primo; e false se o número não for primo. Utilize a
seguinte assinatura.
def isPrimo(numero)
2) Desenvolva uma função em Python que receba uma matriz de texto e mais um atributo
também do tipo texto. A função deverá retornar uma lista contendo todos os textos que
contenha o valor de entrada. Segue assinatura do método:
Exemplo:
valores:
entrada: “rio”
Retorno:
3) Desenvolva uma função em Python que receba quatro inteiros: o primeiro indica a quantidade
de linhas; o segundo indica a quantidade de colunas; o terceiro o intervalo inicial; e o quarto o
intervalo final. A função deverá retornar uma matriz de acordo com o tamanho especificado e
preenchida com o valores aleatórios de acordo com o intervalo estipulado. Segue assinatura da
função:
42
Exemplo:
Entrada:
Saída:
45 32 56
31 50 41
43
Estrutura de Dados
44
Matriz A tabela Matriz é responsável por relacional cada disciplina com seu
devido professor.
Criaremos uma estrutura de dados que permitirá ao desenvolvedor acessar o modelo
relacional apresentado. Os arquivos que contém o modelo e os dados estão separados
em duas categorias: data para arquivos csv que armazenam os dados; e meta-data
para os arquivos txt que armazenam a lógica estrutural de como os dados são
organizados.
Id bigint.
NomeCurso varchar.
Instituicao varchar.
Cada dado é separado por ponto-e-vírgula (;), o que corresponde a uma coluna da
tabela construída.
Dicionário de dados
Também conhecido como mapa ou array associativo, o dicionário de dados tem como
função receber uma estrutura de dados abstrata e relacioná-lo nas diversas entradas de
dados.
45
dicionario = {
'Curso': []
}
Onde:
dicionario nome do dicionário de dados;
curso nome da estrutura da tabela a ser buscada.
ou
dicionario = dict()
dicionario['Curso'] = []
dicionario = {
'Curso': [
('Id', 'bigint'),
('NomeCurso', 'varchar'),
('Instituicao', 'varchar')
]
}
A chave (key) será composta pelos nomes das entidades (Curso.txt, Matriz.txt,
Servidor.txt, Disciplina.txt) e seu conteúdo pelos campos que definem cada entidade.
import os
46
for file in os.listdir('data/meta-data'):
print(file)
Curso.txt
Disciplina.txt
Matriz.txt
Servidor.txt
Embora tenhamos os nomes dos arquivos contidos em meta-data, repare que estes
possuem o nome com sua extensão. Precisamos retirar a extensão .txt. Podemos retirar
através da seguinte função:
def retirarExtensao(arquivo):
return arquivo.split('.')[0]
Tendo o caminho e nome dos arquivos, precisamos agora criar uma função que permita
carregar todo conteúdo. Criaremos então a seguinte função:
def lerMetaData(arquivo):
dados = open('data/meta-data/' + arquivo, 'rt')
metaData = []
for linha in dados:
i = linha.split('\t')
metaData.append((i[0], i[1].split('.')[0]))
dados.close()
return metaData
A função open abre o arquivo, nela deve ser encaminhado o caminho do arquivo e o
tipo de abertura, no caso é aberto apenas para leitura rt. Um arquivo pode ser aberto
de acordo com os caracteres:
47
'w' abre para escrita;
'x' abre para criação. Se já existir um arquivo com mesmo nome, ocorrerá um
erro;
'a' abre para escrita, adicionando o conteúdo para o fim do arquivo se existir;
'b' modo binário;
't' modo texto (padrão);
'+' abre o arquivo de disco atualizando (lendo e escrevendo);
'U' modo nova linha (desatualizado).
import os
def retirarExtensao(arquivo):
return arquivo.split('.')[0]
def lerMetaData(arquivo):
dados = open('data/meta-data/' + arquivo, 'rt')
metaData = []
for linha in dados:
i = linha.split('\t')
metaData.append((i[0], i[1].split('.')[0]))
dados.close()
return metaData
dicionario = {}
for file in os.listdir('data/meta-data'):
tabela = retirarExtensao(file)
dicionario[tabela] = lerMetaData(file)
48
As informações contidas nesta entidade é definida pelo nome de tupla. Uma tupla é
criada com parênteses e ao contrário da lista (colchetes), a tupla é imutável, isso
significa que uma vez que o conteúdo do definido, não será possível alterá-lo.
Entidade: Curso
Atributos: [
('Id', 'bigint'),
('NomeCurso', 'varchar'),
('Instituicao', 'varchar')
]
No caso de Curso temos três tuplas. No nosso exemplo, uma tupla é constituída de dois
dados: nome do campo; e tipo do campo.
49
# Cria o dicionário e extrai as informações
# em uma tupla
dicionario = {}
dicionario['Curso'] = lerMetaData('Curso.txt')
tupla = []
for t in dicionario['Curso']:
tupla.append(t[0])
d.close()
Lista de exercícios F
1) Desenvolva um código Python que crie as tuplas da entidade Servidor. Relacione cada tupla
com seus dados.
2) Desenvolva um código Python que crie as tuplas da entidade Disciplina. Relacione cada tupla
com seus dados.
3) Com base no exercício 2, desenvolva um código Python que visualize apenas as disciplinas do
1º e 3º período.
50
Neste exercício será necessário relacionar as entidades Curso e Disciplina.
51
Python e SQLite
Neste capítulo aprenderemos como conectar a linguagem Python com banco de dados
SQLite. Veremos como realizar as principais rotinas de manipulação em banco de
dados: consulta; inserção; atualização; e remoção.
Para testarmos a conexão com banco de dados, crie um projeto chamado BancoDados.
No projeto criado construa um Python File e nomeie como conexao.py.
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute('SELECT * FROM produto')
05 print(cursor.fetchall())
06 conn.close()
Linha 01: Importa o recurso responsável por conectar a linguagem com banco de
dados;
Linha 02: O comando connect realiza a conexão com o banco de dados selecionado.
Esta função recebe apenas o nome do banco de dados, caso o arquivo esteja junto com
o .py. Se o banco de dados estiver em outra pasta, será necessário passar todo
caminho. Exemplo: c:\pasta\subpasta\banco.db;
Linhas 03 a 05: Veremos o significado desses comandos nos próximos tópicos;
Linha 06: O comando close finaliza a conexão. Necessário para fechar o banco de
dados.
52
Manipulando o banco de dados
Neste tópico aprenderemos como manipular dados dentro do banco. Para isso
considere o modelo a seguir.
Comando INSERT
Onde:
INSERT INTO: comando da instrução;
tabela: nome da tabela que receberá o dado;
campos: nome dos campos separados por vírgula (,);
VALUES: comando da instrução;
53
dados: dados relativo a cada campo. Cada dado deverá ser separado por vírgula
(,). Dados do tipo texto devem estar entre aspas simples.
Os comandos seriam:
Para cada conjunto de dados foi realizado um INSERT. No entanto também é possível
inserir da seguinte forma:
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute(
05 'INSERT INTO produto (descricao, precounit) VALUES (?, ?), (?, ?)',
06 ('Cupim Bovino', 12.89, 'Costelinha Suína Sadia ou Perdigão', 10.99))
07 conn.commit()
08 conn.close()
54
Linha 03: A função cursor é responsável por realizar qualquer manipulação com o
banco de dados. Sempre que houver a necessidade de trabalhar com uma tabela, será
necessário chamar esta função;
Linhas 04, 05 e 06: O comando execute recebe qual comando deverá ser executado.
Neste caso executaremos o seguinte comando:
'INSERT INTO produto (descricao, precounit) VALUES (?, ?), (?, ?)'
O símbolo de interrogação (?) denota que será necessário passar um parâmetro como
referência. No caso será necessário passar quatro parâmetros:
Linha 07: O comando commit grava a instrução passada em execute. Este comando
é necessário para efetuar a operação no banco.
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute(
05 'INSERT INTO produto (descricao, precounit) VALUES (?, ?)',
06 ('Filé de Tilápia Geneseas', 7.79))
07 conn.commit()
08 conn.close()
55
https://sqliteonline.com/
56
Comando UPDATE
O comando UPDATE é responsável por editar um dado que já existe na tabela. Ele
possui a seguinte sintaxe:
Onde:
UPDATE SET: comando da instrução;
tabela: nome da tabela a ser utilizada;
campo: nome do campo a ser editado. Se houver mais campos a serem
alterados utilize vírgula (,) para separá-los;
novoValor: novo valor do campo;
WHERE: condição de atualização;
campoChave: código da tabela;
valor: valor do código.
para R$ 21.99.
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute(
05 'UPDATE produto SET precounit = ? WHERE id = ?', (21.99, 21))
06 conn.commit()
07 conn.close()
57
Exemplo 04: Mude a descrição e o preço unitário do produto:
para
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute(
05 'UPDATE produto SET descricao = ?, precounit = ? WHERE id = ?',
06 ('Camarão DellMare', 8.99, 23))
07 conn.commit()
08 conn.close()
Comando DELETE
Onde:
DELETE FROM: comando da instrução;
tabela: nome da tabela a ser manipulada;
WHERE: condição de remoção;
campoChave: código da tabela;
valor: valor do código.
58
DELETE FROM produto WHERE id = 23
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute('DELETE FROM produto WHERE id = ?', (23,))
05 conn.commit()
06 conn.close()
Comando SELECT
Onde:
SELECT: seleciona os campos a serem exibidos;
campos: campos escolhidos para exibição;
FROM: seleciona as tabelas utilizadas;
tabelas: tabelas escolhidas.
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute('SELECT descricao FROM produto')
05 for linha in cursor.fetchall():
06 print(linha[0])
07 conn.commit()
08 conn.close()
59
SELECT * FROM produto
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute('SELECT * FROM produto')
05 for linha in cursor.fetchall():
06 print('{0} - R$ {1}'.format(linha[1], linha[2]))
07 conn.commit()
08 conn.close()
Para visualizar todos os campos de um tabela utilize o símbolo asterisco (*). No caso
será emitido uma lista contendo: (id, descricao, precounit).
Posição 0 id
Posição 1 drescricao
Posição 2 precounit
Comando WHERE
O comando WHERE é utilizado para testar uma determinada condição. Ele pode ser
construído dentro dos comandos: INSERT; UPDATE; ou WHERE.
Exemplo 07: Exiba todos os produtos cujo o preço unitário é maior que R$ 500,00.
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute('SELECT * FROM produto WHERE precounit > 500')
05 for linha in cursor.fetchall():
06 print('{0} - R$ {1}'.format(linha[1], linha[2]))
07 conn.commit()
08 conn.close()
Exemplo 08: Exiba todos os produtos cuja descrição inicia com a letra ‘F’.
60
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute("SELECT * FROM produto WHERE descricao LIKE ?", ('F%',))
05 for linha in cursor.fetchall():
06 print('{0} - R$ {1}'.format(linha[1], linha[2]))
07 conn.commit()
08 conn.close()
Vamos supor que deseja-se exibir todos os produtos realizados em uma determinada
compra. Neste caso precisaríamos:
da tabela compra para identificar qual a compra realizada;
da tabela compra_produto para identificar quais são os produtos daquela
compra; e
da tabela produto para exibir a descrição.
SELECT
descricao
FROM
produto, compra, compra_produto
WHERE
compra.id = compra_produto.idcompra AND
produto.id = compra_produto.id AND
compra.id = 1
61
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute(
05 'SELECT descricao FROM produto, compra, compra_produto ' +
06 'WHERE compra.id = compra_produto.idcompra AND ' +
07 'produto.id = compra_produto.id AND compra.id = 1')
08 for linha in cursor.fetchall():
09 print('{0}'.format(linha[0]))
10 conn.commit()
11 conn.close()
Exemplo 09: Apresente o valor total a ser pago da compra cujo id é igual a 1.
SELECT
Descricao, precounit, quantidade
FROM
produto, compra, compra_produto
WHERE
compra.id = compra_produto.idcompra AND
produto.id = compra_produto.id AND
compra.id = 1
01 import sqlite3
02 conn = sqlite3.connect('database.db')
03 cursor = conn.cursor()
04 cursor.execute(
05 'SELECT descricao, precounit, quantidade FROM produto, compra,
06 compra_produto WHERE compra.id = compra_produto.idcompra AND ' +
07 'produto.id = compra_produto.id AND compra.id = 1')
08 total = 0
09 for linha in cursor.fetchall():
10 print('{0} (R$ {1}) QUANT: {2}'.format(linha[0], linha[1], linha[2]))
11 total += linha[1] * linha[2]
12 print('Total a pagar: R$ {0}'.format(total))
62
13 conn.commit()
14 conn.close()
Lista de exercício G
63
Tratamento de Exceção
Ao escrever um código, o desenvolvedor poderá cometer três tipos de erro: erro lógico;
erro de sintaxe; erro de execução.
O erro de sintaxe ocorre no momento que o código está sendo escrito. Esse tipo de erro
é o mais simples de ser detectado tendo em vista que ocorre durante a criação do
projeto.
O erro de execução ocorre quando o usuário solicitação a chamada de uma ação e esta
por sua vez não consegue ser completada devido a um erro em alguma instrução do
código. A seguinte instrução é um exemplo clássico de um erro de execução:
x = 1/0
Nessa instrução o sistema não acusa erro e permite que o código seja executado. No
entanto ao executá-lo, será exibida a seguinte mensagem:
try:
x = 1/0
except BaseException:
print('Erro de divisão por zero')
print('Continuação...')
64
Embora ocorra o erro, a execução não é interrompida.
É possível declarar mais de um except para tratar diferentes tipos de erro. Exemplo:
import zipfile
try:
banco_zip = zipfile.ZipFile("saida.zip")
banco_zip.extractall(path="banco")
banco_zip.close()
except FileNotFoundError:
print("Arquivo inexistente")
except PermissionError:
print("Erro de permissao")
Neste caso o código trata dois tipos de exceção: primeiro caso não encontre o arquivo
(FileNotFoundError); e em segundo, caso não tenha permissão para extração do
arquivo (PermissionError).
Hierarquia de exceções
Para cada erro é possível especificar seu tipo, por exemplo, quando um número é divido
por zero o erro invocado será ZeroDivisionError. Em Python existe uma hierarquia
de erros.
BaseException
o SystemExit
o KeyboardInterrupt
o GeneratorExit
o Exception
StopIteration
ArithmeticError
FloatingPointError
OverflowError
ZeroDivisionError
AssertionError
AttributeError
BufferError
EOFError
ImportError
LookupError
65
IndexError
KeyError
MemoryError
NameError
UnboundLocalError
OSError
BlockingIOError
ChildProcessError
ConnectionError
o BrokenPipeError
o ConnectionAbortedError
o ConnectionRefusedError
o ConnectionResetError
FileExistsError
FileNotFoundError
InterruptedError
IsADirectoryError
NotADirectoryError
PermissionError
ProcessLookupError
TimeoutError
ReferenceError
RuntimeError
NotImplementedError
SyntaxError
IndentationError
o TabError
SystemError
TypeError
ValueError
UnicodeError
o UnicodeDecodeError
o UnicodeEncodeError
o UnicodeTranslateError
Warning
DeprecationWarning
PendingDeprecationWarning
RuntimeWarning
SyntaxWarning
UserWarning
FutureWarning
ImportWarning
UnicodeWarning
BytesWarning
ResourceWarning
Caso haja dúvida que qual exceção utilizar, é possível invocar o tratamento de erro
primário BaseException. Cada classe de exceção possui sua particularidades.
66
Ação de limpeza
def lerMetaData(arquivo):
try:
dados = open('data/meta-data/' + arquivo, 'rt')
metaData = []
for linha in dados:
i = linha.split('\t')
metaData.append((i[0], i[1].split('.')[0]))
except FileNotFoundError:
print('Arquivo não encontrado.')
finally:
dados.close()
return metaData
Comando raise
raise Erro
onde:
raise palavra-chave utilizada para provocar o erro;
Erro erro a ser invocado.
Exemplo:
def verificar(sabor):
67
if sabor not in ('CREME', 'CHOCOLATE', 'NAPOLITANO'):
raise BaseException
try:
sabor = input('Escolha o sabor de picolé: ')
verificar(sabor)
print('Boa escolha')
except BaseException:
print('Não trabalhamos com esse sabor.')
Lista de exercício H
x = [1, 3, 5, 6, 7, 8]
i = 0
while i <= len(x):
print(x[i])
i += 1
2) Crie um programa em Python que receba n números e some esses números enquanto a soma
não for superior a 100. O programa deverá imprimir o valor somado (antes de atingir o número
maior que 100) e deverá informar quantos números foram somados e qual a média. Refaça seu
programa utilizando as seguintes regras:
a. Utilize tratamento de exceção para lidar com a entrada de dados;
b. Quando a soma for superior a 100, o programa deverá gerar uma exceção.
68
4) Suponha que o usuário realize transações em sua conta corrente. Desenvolva um código no
qual o usuário digitará seu saldo inicial. Ele poderá realizar um Débito ou Crédito. Lance uma
exceção caso o saldo do cliente fique negativo. O valor do saldo não deverá ficar negativo.
69
Arquivos
CRUZ
70
Python e Arduino
71
Referência Bibliográfica
CRUZ, F. Python: Escreva seus primeiros programas. 1º ed. Casa do Código: São
Paulo. 1998.
72