Algoritmos e Programacao Em Python (1)
Algoritmos e Programacao Em Python (1)
por
Versão 1.62
02-05-2018
Bibliografia re“omen”a”a:
1
Sumário
2
Lista de Exercícios do Prof. Dr. Ricardo Andrade Cava
DropBox:
https://www.”ropbox.“om/sh/kea9kr4j2qttnjg/AAAGkXES6sWvRKCJh8R7x9aia/ListaCava?”l=0
3
1. Linguagem ”e Programação Python
Win”ows: Ini“iar ... Programas ... Python 3.? (versão) ... IDLE
5. I”entifi“a”ores e variáveis
Comentário ”o programa”or:
5
# -------------------------- Type.py
a = 3
print(type(a))
b = 3.4
print(type(b))
“ = 'Python'
print(type(“))
” = 'A'
print(type(”))
Teste ”o Programa:
>>> a = 3
>>> b = 4
>>> print(i”(a)) # 32 bits / 8 bits = 4 bytes (inteiro)
4297624000
>>> print(i”(b))
4297624032
>>>
6. Opera”ores aritméti“os
6
6.1 Hierarquia ”os opera”ores (pre“e”ên“ia)
Exemplos:
Exemplos:
7
>>> print(a+b) <enter)
7
>>> A = 7 <enter>
>>> print(A+b) <enter>
11
>>> print( a = , a) <enter>
a = 3
>>>
>>> print(4%2) # resto inteiro ”a ”ivisão
0
>>>
>>> print(3**4) # Poten“iação
81
>>> número‘”entes = 32 <enter>
>>> print( Número ”e Dentes: , número‘”entes) <enter>
>>> Número ”e Dentes = 32
>>> a = 3
>>> b = 4
>>> print("a = ", a, "b = ", b)
a = 3 b = 4
>>> ”ia = 3 <enter>
>>> mês = 7 <enter>
>>> ano = 2017 <enter>
>>> print( Data: %02”/%02”/%” %(”ia, mês, ano)) <enter>
03/07/2017 # saí”a formata”a
>>>
Tabela 3: Opera”ores %
Opera”or % Signifi“a”o
%s Uma string
%“ Cara“tere
%” De“imal inteiro
%f Real (float)
%% Um '%'
8
”ata = ”atetime.now()
print(”ata)
print("Data: %02”/%02”/%”" %(”ata.”ay, ”ata.month, ”ata.year))
print("Tempo: %02”:%02”:%02”" %(”ata.hour, ”ata.minute, ”ata.se“on”))
Exemplos:
Entra”a ”e um Inteiro:
9
Em Python é possível ”eletar (apagar, remover, ”esalo“ar ”a memória
RAM) uma variável ”a memória, isto é feito através ”o “oman”o ”el.
Exemplo:
>>> a = 3 <enter>
>>> print(a) <enter>
3
>>> ”el a
>>> print(a)
Tra“eba“k (most re“ent “all last):
File "<st”in>", line 1, in <mo”ule>
NameError: name 'a' is not ”efine”
Para importar apenas uma função ”eseja”a: from mó”ulo import função
10
>>> help(math) <enter> # exibe funções ”o mó”ulo math
# i”ênti“o ao Linux
>>> print(math.mo”f(5.34))
(0.33999999999999986, 5.0)
>>>
>>> print(math.exp(1))
2.718281828459045
>>> print(math.exp(2))
7.38905609893065
>>> print(math.exp(3))
20.085536923187668
>>>
>>> print(math.log(2,10))
0.30102999566398114
>>> print(math.log(3,10))
0.47712125471966244
>>>
>>> print(math.log1p(1))
0.6931471805599453
>>> print(math.log1p(2))
1.0986122886681098
>>>
11
math.sqrt(x): Retorna a raiz qua”ra”a ”e x.
>>> x = 16
>>> print(math.sqrt(x))
4.0
>>> x = -16 # x ”eve ser positivo
>>> print(math.sqrt(x))
Tra“eba“k (most re“ent “all last):
File "<st”in>", line 1, in <mo”ule>
ValueError: math ”omain error
>>>
>>> x = math.sin(45)
>>> print(x)
0.8509035245341184
>>> x = math.sin(math.ra”ians(45))
>>> print(x)
0.7071067811865475
>>>
>>> x = math.“os(45)
>>> print(x)
0.5253219888177297
>>> x = math.“os(math.ra”ians(45)) # “onverte 45 para ra”ianos
>>> print(x)
0.7071067811865476
12
>>> print(hipotenusa)
5.0
>>>
ou
# ------------------------------------------- Split.py
13
for i in range(n):
print(partes[i])
print(partes)
Teste ”o Programa:
# -------------------------------- String.py
# -------------------------------------------- len
s = 'Paulo Roberto Gomes Luzzar”i'
n = len(s) # retorna o total ”e “ara“teres ”a string
print("Número ”e Cara“teres: ", n)
# -------------------------------------------- “ount
“ara“ter = 'a'
letras = s.“ount(“ara“ter) # retorna o número ”e vezes que o “ara“ter apare“e na
string
print('Número ”e letras "%“" é %”' %(“ara“ter,letras))
# -------------------------------------------- repla“e
s = s.repla“e('Roberto', 'R.') # tro“a parte ”a string
s = s.repla“e("Gomes", "G.")
print(s)
# -------------------------------------------- fin”
pos = s.fin”('z') # pro“ura a primeira aparição ”e uma letra
print(pos)
# -------------------------------------------- title
s = "paulo roberto gomes luzzar”i"
print(s.title())
# -------------------------------------------- swap“ase
s = 'Paulo Roberto Gomes Luzzar”i'
print(s.swap“ase()) # inverte as letras maiús“ulas e minús“ulas
14
# -------------------------------------------- isalpha
print('Contém apenas letras: ', s.isalpha()) # verifi“a se “ontém apenas letras
s = 'Fate“Sena“'
print('Contém apenas letras: ', s.isalpha())
# --------------------------------------------- is”igit
print('Contém apenas números: ', s.is”igit())
s = '123456'
print('Contém apenas números: ', s.is”igit())
Teste ”o Programa:
Coman”os ”e Sequên“ia:
# --------------------- Cir“ulo.py
import math
15
print("Área ”o Cír“ulo é: ", area)
Teste ”o Programa:
# ----------------------------------- Temperatura.py
f = 120
“ = (f - 32) * 5 / 9
print("Celsius: %”" %“, sep='', en”='') # imprime mesma linha
print(" - Fahrenheit: ", f)
Teste ”o Programa:
== RESTART: /Users/pluzzar”i/Desktop/Python/Python/Temperatura.py ==
Celsius: 48 - Fahrenheit: 120
>>>
# ---------------------------------- Ran”om.py
import ran”om
n = 10
print("Faixa ”e Sorteio: 0 ... %”" %(n-1))
numero = int (ran”om.ran”om() * n)
print("Número Sortea”o: ", numero)
# A função ran”om gera um número float aleatório entre 0.0 e 1.0
Teste ”o Programa:
# ----------------------------- Aleatorio.py
import ran”om
for i in range(6):
n = ran”om.ran”int(1, 10)
print("n = ", n)
Teste ”o Programa:
16
n = 6
n = 5
n = 7
>>>
Teste ”o Programa:
n1 + n2 x 2 + n3 x 3 + n4
Mé”ia = ---------------------------
7
Teste ”o Programa:
17
”iâmetro = 2 . raio
Teste ”o Programa:
18
Teste ”o Programa:
Teste ”o Programa:
Teste ”o Programa:
Teste ”o Programa:
a = 1 <enter>
19
b = 2 <enter>
“ = -3 <enter>
x1 = 1
x2 = -3
20
O “oman”o ”e seleção if permite o programa seguir ”ois “aminhos,
isto é feito através ”e uma “on”ição, utilizan”o um opera”or rela“ional
(Tabela 4), que po”e ser ver”a”eira (True) ou falsa (False).
ou
if “on”ição: # simples
“oman”o
ou
if “on”ição: # “omposto
“oman”o1
else:
“oman”o2
ou
if “on”ição1:
“oman”o1
elif “on”ição2:
“oman”o2
else:
“oman”o3
# -------------------------------------- If.py
Teste ”o Programa:
21
x = -5
>>>
======= RESTART: /Users/pluzzar”i/Do“uments/If.py ========
Digite um Número: 5
x = 5
>>>
# ---------------------------------------- Par.py
Teste ”o Programa:
# ------------------------- Bhaskara.py
import math
a = float(input("a = "))
b = float(input("b = "))
“ = float(input("“ = "))
”elta = b**2 - 4 * a * “
if ”elta >= 0:
x1 = (-b + math.sqrt(”elta)) / 2*a
x2 = (-b - math.sqrt(”elta)) / 2*a
print("x1 = ", x1)
print("x2 = ", x2)
else:
print("Erro: Raizes “omplexas")
Teste ”o Programa:
22
# ---------------------------------------- Elif.py
Teste ”o Programa:
Nota 1: 6 <enter>
Nota 2: 8 <enter>
Mé”ia: 7.0
PARABÉNS! Vo“ê foi aprova”o
Teste ”o Programa:
Valor: 3 <enter>
Valor: 4 <enter>
Maior: 4
Menor: 3
Mé”ia: 3.5
Teste ”o Programa:
”) As maçãs “ustam R$ 0,30 ser forem “ompra”as menos ”o que uma ”úzia,
e R$ 0,25 ser forem “ompra”as pelo menos ”oze. Es“reva um programa
em Python que leia o número ”e maçãs “ompra”as, “al“ule e es“reva o
23
valor total ”a “ompra.
Testes ”o Programa:
Maças: 20 <enter>
Valor ”a Compra: R$ 5.00
ou
Maças: 12 <enter>
Valor ”a Compra: R$ 3.00
Testes ”o Programa:
Sintaxe: x = x + 1 # x ß x + 1
24
Note que é soma”o o valor n a soma e atribuí”o este novo valor a
própria soma. Note ain”a que n é uma variável, que po”e ser qualquer
valor inteiro ou real (float).
Coman”o while:
i = 1
while i <= 10:
print("i = ", i)
i = i + 1
Teste ”o Programa:
# -------------------- In2.py
import ran”om
s = 's'
while s in ['S', 's']: # opera”or in
num = ran”om.ran”int(1, 10)
print("Número sortea”o: ", num)
s = input("Continua [S/N]")
Teste ”o Programa:
25
============= RESTART: /Users/pluzzar”i/Do“uments/In2.py =========
Número sortea”o: 2
Continua [S/N]s
Número sortea”o: 2
Continua [S/N]s
Número sortea”o: 7
Continua [S/N]s
Número sortea”o: 10
Continua [S/N]n
>>>
Coman”o for:
# --------------------------------- For.py
# ----------------------------------- ForDuplo.py
for i in range(3):
for j in range(4):
print(i, j)
26
0 0
0 1
0 2
0 3
1 0
1 1
1 2
1 3
2 0
2 1
2 2
2 3
>>>
# ----------------------------------- ForDuplo2.py
for i in range(3):
for j in range(4):
print(i+1, j+1)
Exemplos:
for i in range(10): # 0 1 2 3 4 5 6 7 8 9
print(i)
27
for i in range(0, 10, 2): # 0 2 4 6 8
print(i)
Teste ”o Programa:
Número: 6 <enter>
PAR
Número: 7 <enter>
IMPAR
Número: 0 <enter>
PAR
>>>
Teste ”o Programa:
Número: 6 <enter>
POSITIVO
Continua [S/N]? s
Número: -7 <enter>
NEGATIVO
Continua [S/N]? S
Número: 0 <enter>
ZERO
Continua [S/N]? N
>>>
28
Teste ”o Programa:
Teste ”o Programa:
Teste ”o Programa:
Exemplo: Lista1.py
# ------------------------------- Lista1.py
Teste ”o Programa:
29
======= RESTART: /Users/pluzzar”i/Do“uments/Lista1.py ==========
10
20
30
>>>
Exemplo: Lista2.py
# ------------------------------- Lista2.py
Teste ”o Programa:
Exemplo: Lista3.py
# ------------------------------ Lista3.py
Teste ”o Programa:
30
True
4380371208
4380371208
False
4320652552
Número ”e Elementos: 3
>>>
Exemplo: Lista4.py
# -------------------------------- Lista4.py
nome = []
nota = []
soma = 0.0
numeroAlunos = 4
for i in range(numeroAlunos):
nome.appen”(input("Nome ”o Aluno: "))
nota.appen”(float(input("Nota ”o " + nome[i] + ": ")))
soma = soma + nota[i]
me”ia = soma / numeroAlunos
print("Mé”ia ”a Turma:", me”ia)
Teste ”o Programa:
print("Lista Or”ena”a")
for i in sorte”(lista):
print(i)
lista = list(range(10))
31
for i in lista:
lista[i] = i + 5
print(lista[i])
print(lista)
Teste ”o Programa:
32
Debora
Eva
lista.appen”(elemento)
lista.remove(elemento)
lista.“lear()
lista.insert(ín”i“e, elemento)
ultimo = lista.pop()
lista.reverse()
temp = lista.“opy()
n = len(lista)
vezes = lista.“ount(elemento)
33
Retorna o ín”i“e ”e um elemento em uma lista: in”ex
posição = lista.in”ex(elemento)
# --------------------------------------- Lista.py
# insert(posição, valor)
lista.insert(1, 15) # insere o elemento antes ”a posição
print(lista)
temp = lista.“opy()
print("Lista Nova: ", temp)
Teste ”o programa:
# ---------------------------- MegaSena.py
import ran”om
34
# ---------------------------- repeti”o
”ef repeti”o(num, n, t):
for i in range(n):
if num[i] == t:
return(True)
return(False)
# ---------------------------- imprime
”ef imprime(num):
for i in range(len(num)):
t = num[i]
print("%2” " %t, sep='', en”='')
print()
“h = 's'
while “h in ['S', 's']:
palpites = int(input("Número ”e palpites: "))
for i in range(palpites):
num = []
n = 1
num.appen”(ran”om.ran”int(1, 60))
while n != 6:
t = ran”om.ran”int(1, 60)
if not(repeti”o(num, n, t)):
num.appen”(t)
n = n + 1
num.sort() # or”ena a lista
imprime(num)
“h = input("Continua [s/n]?")
Teste ”o Programa:
35
a) Es“reva um programa em Python que re“ebe via te“la”o um “onjunto
”e letras. Armazene to”as as letras em um vetor ou lista (letras)
até que o usuário ”igite apenas <enter>. Logo após “opie to”as as
letras (em or”em inversa) para outro vetor (inverso). Ao final
imprima os ”ois vetores (“onforme exemplo abaixo).
Teste ”o programa:
Letra: L <enter>
Letra: I <enter>
Letra: M <enter>
Letra: A <enter>
Letra: <enter>
[‘L’, ‘I’, ‘M’, ‘A’]
[‘A’, ‘M’, ‘I’, ‘L’]
Teste ”o programa:
Exemplo:
Número: 50 <enter>
Número: 30 <enter>
36
Número: 20 <enter>
Número: 10 <enter>
Número: 40 <enter>
Número: 0 <enter>
Valor: 20 <enter>
Posição no vetor: 2
Valor: 40 <enter>
Posição no vetor: 4
Valor: 60 <enter>
ERRO: Número não encontrado
Valor: 0 <enter>
Teste ”o programa:
Conceito: B <enter>
Conceito: A <enter>
Conceito: E <enter>
Conceito: B <enter>
Conceito: D <enter>
Conceito: C <enter>
Conceito: A <enter>
Conceito: E <enter>
Conceito: f <enter>
5 Aprovado(s)
1 Reprovado(s)
2 Infrequente (s)
Teste ”o programa:
37
Nome: Renato
Letra: P <enter>
Nome: Paulo
Nome: Pedro
Letra: T <enter>
Letra: <enter>
Teste ”o programa:
38
2. Escreva um programa em Python que lê nomes via teclado.
Para cada nome digitado pelo usuário, armazene em uma Lista
[f] para feminino, [m] para masculino ou [i] para
indeterminado, conforme exemplo abaixo. Ao final imprima a
Lista, o total de homens, o total de mulheres e o total de
indeterminados.
Teste do programa:
Teste do programa:
Teste do programa:
39
Teste do programa:
Teste do programa:
Valor: 10 <enter>
Valor: 20 <enter>
Valor: 30 <enter>
Valor: 40 <enter>
Valor: 50 <enter>
Valor: 0 <enter>
Lista: [10, 20, 30, 40, 50]
Valor a consultar: 30 <enter>
Antecessor: 20
Sucessor: 40
Valor a consultar: 10 <enter>
Antecessor não existe
Sucessor: 20
Valor a consultar: 60 <enter>
Antecessor não existe
Erro: Elemento não encontrado
Sucessor não existe
Valor a consultar: 0 <enter>
40
8. Escreva um programa em Python que lê um vetor R de 5
elementos contendo o gabarito da LOTO. A seguir, ler um vetor
A de 10 elementos contendo uma aposta. A seguir imprima
quantos pontos fez o apostador.
Teste do programa:
[Entrada]
R: 4 12 34 25 17 (gabarito)
A: 3 17 55 21 34 4 27 29 20 11 (aposta)
[Saída]
3 (pontos)
Número: 4 <enter>
Inverso: 0.25
Quadrado: 16
Raiz Quadrada: 2
Cubo: 64
a = 1 <enter> a = 1 <enter>
b = -4 <enter> b = 2 <enter>
c = 2 <enter> c = 3 <enter>
41
Escreva um programa em Python que recebe via teclado:
os coeficientes a, b e c de uma equação do segundo grau. O
programa deve calcular e imprimir na tela: as raízes x1 e
x2.
delta = b2 – 4ac
+------
-b +- \/ delta
Raízes Reais: x1,2 = ------------------ “delta maior ou igual a zero”
2.a
+---------
-b \/ | delta |
Raízes Complexas: x1,2 = ----- +- ------------- i “delta menor que zero”
2.a 2.a
Teste do programa:
[Entrada]
1.80 (altura) 1 (masculino)
1.60 (altura) 2 (feminino)
1.62 (altura) 1 (masculino)
1.70 (altura) 2 (feminino)
1.72 (altura) 1 (masculino)
1.80 (altura) 2 (feminino)
1.92 (altura) 1 (masculino)
1.40 (altura) 1 (masculino)
1.42 (altura) 1 (masculino)
1.64 (altura) 1 (masculino)
[Saída]
1.92 (maior altura da turma)
1.40 (menor altura da turma)
1.70 (média de altura das mulheres
1.65 (média de altura dos homens
7 Homens
3 Mulheres
42
programa ”eve imprimir na tela to”os os nomes e i”a”es em or”em
alfabéti“a (“onforme exemplo abaixo).
Teste do programa:
Teste do programa:
Valor: 10 <enter>
Quantidade: 3 <enter>
Valor: 20 <enter>
Quantidade: 4 <enter>
Valor: 30 <enter>
Quantidade: 2 <enter>
Valor: 0 <enter>
Lista: [10, 3, 20, 4, 30, 2]
Lista por Extenso: [10, 10, 10, 20, 20, 20, 20, 30, 30]
Total ”e valores por extenso: 9
# --------------------------------- Teste.py
43
a, b = 10, 20
print(a, b)
x = 10
y = 20
print("x = %” - y = %”\n" %(x, y)) # print formata”o
print(maior(3,4))
# ============================== if simples
”ata = ”atetime.now()
44
print(”ata)
print("Data: %02”/%02”/%”" %(”ata.”ay, ”ata.month, ”ata.year))
print("Tempo: %02”:%02”:%02”" %(”ata.hour, ”ata.minute, ”ata.se“on”))
Teste ”o Programa:
10 20
5
x = 10 - y = 20
4
Digite um Número: -5
Valor Negativo
Número Digita”o: -5
p
y
t
h
o
n
Digite um Número: 0
Zero
2017-03-08 14:47:17.866354
Data: 08/03/2017
Tempo: 15:01:59
>>>
# ----------------------------------- str.py
s = ""
for i in range(10):
s = s + str(i) + ", " # forma uma string “om números
print(s)
Teste ”o Programa:
45
Para es“rever uma função usa-se a palavra reserva”a ”ef. A
prin“ípio a função ”eve estar lo“aliza”a antes ”a “hama”a ”a função. A
sintaxe é:
“hama”a‘função(argumentos)
Exemplo:
# -------------------------------- Fun“oes.py
import math
Teste ”o Programa:
46
”ef Raiz(x):
r = x ** 0.5
return(r)
Teste ”o Programa:
Uma função é ”ita re“ursiva quan”o faz “hama”a a si própria, “a”a “hama”a é
“olo“a”a na pilha ”e exe“ução ”o sistema e serve para retornar as “hama”as anteriores.
# ---------------------------------------------- Fatorial.py
# Exemplo ”e função re“ursiva, função que “hama a si própria
# É “omplexo o ponto ”e para”a
# ----------------------------------------------------------
”ef Fatorial(n):
if n <= 1:
return(1)
fat = n * Fatorial(n-1)
return(fat)
Teste ”o Programa:
# ...................... Fibonacci.py
def Fibonacci(n):
if n == 0:
47
return(0)
if n == 1 or n == 2:
return(1)
else:
return(Fibonacci(n-1) + Fibonacci(n-2))
Teste ”o Programa:
# ..................... Imprime.py
n = int(input("Número: "))
Imprime(n)
def Imprime(n):
if n == 0:
return
else:
print(n)
Imprime(n-1)
Teste ”o Programa:
Número: 5 <enter>
5
4
3
2
1
# ---------------------------------------------------------- Float.py
# O programa testa a “onversão ”e string para float ou inteiro
# sem erro na entre”a ”e ”a”os “om input
# -------------------------------------------------------------------
”ef REAL(s):
n = len(s)
temLetras = False
48
for i in range(n):
if s[i] == ',':
s = s.repla“e(',','.') # tro“ar vírgula por ponto
if s[i] == '-' an” i != 0: # verifi“a o sinal negativo
temLetras = True;
break
if s[i] not in ['.', ',', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8','9']:
temLetras = True
break
if not temLetras:
numero = float(s)
return(numero)
else:
print("ERRO: Conversão Inváli”a")
return(-1)
”ef INTEIRO(s):
n = len(s)
temLetras = False
for i in range(n):
if s[i] == '-' an” i != 0:
temLetras = True;
break
if s[i] not in ['-', '0', '1', '2', '3', '4', '5', '6', '7', '8','9']:
temLetras = True
break
if not temLetras:
numero = int(s)
return(numero)
else:
print("ERRO: Conversão Inváli”a")
return(-1)
Teste ”o Programa:
49
Digite um Real: 1234Paulo
ERRO: Conversão Inváli”a
Digite um Real: 123,45
Número ”igita”o: 123.45
Digite um Inteiro: paulo123
ERRO: Conversão Inváli”a
Digite um Inteiro: 123
Número ”igita”o: 123
>>>
# ..................... Calc.py
50
x = float(input("Digite um Valor: "))
y = float(input("Digite outro Valor: "))
operador = input("Operação [+ - * / **]: ")
valor = calculadora(x, y, operador)
print(valor)
Teste ”o Programa:
Digite um Valor: 3
Digite outro Valor: 4
Operação [+ - * / **]: /
0.75
Teste ”o Programa:
Digite um Valor: 3
Digite outro Valor: 0
Operação [+ - * / **]: /
Erro: Divisão por Zero
Teste ”o Programa:
Digite um Valor: 3
Digite outro Valor: 4
Operação [+ - * / **]: &
ERRO: Opera”or Inváli”o
# ..................... Troca.py
x = 3
y = 4
print("x = ", x)
print("y = ", y)
x, y = troca(x, y)
print("x = ", x)
print("y = ", y)
Teste ”o Programa:
x = 3
51
y = 4
a = 4
b = 3
a = float(input("a = "))
b = float(input("b = "))
h = Hipotenusa(a, b)
print("Hipotenusa é: %.2f" %h)
Teste ”o Programa:
a = 3 <enter>
b = 4 <enter>
Hipotenusa é: 5.00
delta = b2 – 4.a.c
Se delta >= 0:
Raízes_reais
Existe x1 e x2
Senão:
Raizes_complexas
a = float(input("a = "))
b = float(input("b = "))
52
c = float(input("c = "))
x1, x2 = Bhaskara(a, b, c)
if x1 != -1 and x2 != -1:
print("Raizes Reais")
print("x1 = ", x1)
print("x2 = ", x2)
else:
print("Raizes Complexas")
Teste ”o Programa:
a = 1 <enter>
b = 2 <enter>
“ = -3 <enter>
Raizes Reais
x1 = 1.0
x2 = -3.0
Teste ”o Programa:
a = 1 <enter>
b = 2 <enter>
“ = 3 <enter>
Erro: Raizes Complexas
s = input("Nome: ")
n = Palavras(s)
print("Seu nome tem %d palavra(s)" %n)
Teste ”o Programa:
53
Teste ”o Programa:
Teste ”o Programa:
Teste ”o Programa:
x = int(input("x = "))
y = int(input('y = '))
n = Verifica_Quadrante(x, y)
print("Quadrante: %d" %n)
Teste ”o Programa:
x = 2
y = -2
Qua”rante: 4
Teste ”o Programa:
Teste ”o Programa:
54
23. Criação e utilização ”e mó”ulos em Python
import Luzzardi
x = 3
y = 4
print("x = ", x)
print("y = ", y)
x, y = Luzzardi.troca(x, y)
print("x = ", x)
print("y = ", y)
Teste ”o Programa:
x = 3
y = 4
x = 4
y = 3
55
def menor(x, y):
if x <= y:
return(x)
else:
return(y)
# .................... Modulos.py
import Luzzardi
x = 3
y = 4
print("x = ", x)
print("y = ", y)
x, y = Luzzardi.troca(x, y)
print("x = ", x)
print("y = ", y)
print("Maior: ", Luzzardi.maior(x, y))
print("Menor: ", Luzzardi.menor(x,y))
Teste ”o Programa:
x = 3
y = 4
x = 4
y = 3
Maior: 4
Menor: 3
56
# ....................... Modulos.py
import Luzzardi
x = 3
y = 4
Luzzardi.mensagem("x = ", x)
Luzzardi.mensagem("y = ", y)
x, y = Luzzardi.troca(x, y)
Luzzardi.mensagem("x = ", x)
Luzzardi.mensagem("y = ", y)
Luzzardi.mensagem("Maior: ", Luzzardi.maior(x, y))
Luzzardi.mensagem("Menor: ", Luzzardi.menor(x, y))
Teste ”o Programa:
x = 3
y = 4
x = 4
y = 3
Maior: 4
Menor: 3
#--------------------------------------------------------- Luzzar”i.py
# O programa testa a “onversão ”e string para float ou inteiro
# sem erro na entra”a ”e ”a”os “om input
# -------------------------------------------------------------------
”ef REAL(s):
n = len(s)
temLetras = False
for i in range(n):
if s[i] == ',':
s = s.repla“e(',', '.') # “onverte vírgula em ponto
if s[i] == '-' an” i != 0: # verifi“a sinal negativo
temLetras = True;
break
if s[i] not in ['.', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8','9']:
# verifi“a “ara“teres não numéri“os
temLetras = True
break
if not temLetras:
numero = float(s)
return(numero)
else:
print("ERRO: Conversão Inváli”a")
return(-1) # retorna um valor inváli”o
57
”ef INTEIRO(s):
n = len(s)
temLetras = False
for i in range(n):
if s[i] == '-' an” i != 0:
temLetras = True;
break
if s[i] not in ['-', '0', '1', '2', '3', '4', '5', '6', '7', '8','9']:
temLetras = True
break
if not temLetras:
numero = int(s)
return(numero)
else:
print("ERRO: Conversão Inváli”a")
return(-1)
# ---------------------------------------- Mo”ulo.py
58
Na execução de um programa em Python, podem ocorrer
erros não previstos que podem interromper a execução normal
do programa. Tais erros podem ser:
# -------------------------- ValueError.py
import math
try:
num = int(input("Digite um Número: "))
try:
raiz = math.sqrt(num)
print("Raiz Qua”ra”a: ", raiz)
ex“ept ValueError as error:
print("Erro: ", error)
ex“ept ValueError as error:
print("Erro: ", error)
Teste ”o Programa:
59
========== RESTART: /Users/pluzzardi/Documents/ValueError.py =======
Digite um Número: paulo
Erro: invalid literal for int() with base 10: 'paulo'
>>>
========= RESTART: /Users/pluzzardi/Documents/ValueError.py ========
Digite um Número: -16
Erro: math domain error
>>>
======= RESTART: /Users/pluzzardi/Documents/ValueError.py =========
Digite um Número: 16
Raiz Quadrada: 4.0
>>>
try:
comando
comando
except erro:
comando
comando
try:
x = float(input("Digite um Valor: "))
y = float(input("Digite outro Valor: "))
try:
divisão = x / y
print("Divisão é: ", divisão)
except ZeroDivisionError as error:
print("Erro: ", error)
except ValueError as error:
print('Erro: ', error)
Teste ”o Programa:
60
Erro: float division by zero
>>>
try:
num = int(input("Valor: "))
print("Soma: ", soma + num) # soma não está definido
except NameError as error: # erro por nome
print("ERRO: ", error)
try:
a = 5
soma = 'a' + a # tipos diferentes
print("Soma: ", soma)
except TypeError as error: # erro por tipo
print("ERRO: ", error)
Teste ”o Programa:
Teste ”o Programa:
61
file = open(nomeArquivo, 'r')
except IOError as error:
print("Erro: ", error)
else:
print("Nome do Arquivo: ", nomeArquivo)
file.close()
Teste ”o Programa:
# ------------------------ SQLiteCriaBD.py
import sqlite3
62
“ursor.exe“ute('''
insert into agen”a (i”, nome, fone)
values(?, ?, ?)
''', (i”, nome, fone))
“one“tor.“ommit()
i” = i” + 1
“ursor.“lose()
“one“tor.“lose()
print("Ban“o ”e Da”os foi CRIADO: ", nomeBD)
Teste ”o Programa:
# -------------------------- SQLiteLeBD.py
63
Teste ”o Programa:
# ------------------------ SQLiteConsultaBD.py
import sqlite3, os
Teste ”o Programa:
64
Digite o ín”i“e [0 - Sair]: 1
i”: 1
Nome: Paulo Roberto
Fone: 99164-8037
Digite o ín”i“e [0 - Sair]: 2
i”: 2
Nome: A”riane Maria
Fone: 99156-4567
Digite o ín”i“e [0 - Sair]: 3
i”: 3
Nome: Paola Maria
Fone: 98434-1234
Digite o ín”i“e [0 - Sair]: 0
>>>
# ------------------------ SQLiteRemoveBD.py
import sqlite3, os
Teste ”o Programa:
65
Fone: 99164-8037
i”: 2
Nome: A”riane Maria
Fone: 99156-4567
>>>
# ------------------------ SQLiteAppen”BD.py
import sqlite3, os
i” = 1
“ursor.exe“ute("SELECT * FROM agen”a")
result = “ursor.fet“hall()
for “ontato in result:
i” += 1
nome = "Pessoa"
while nome != "":
print("i”: ", i”)
nome = input("Nome: ")
if nome != "":
fone = input("Fone: ")
“ursor.exe“ute('''
INSERT INTO agen”a (i”, nome, fone)
values(?, ?, ?)
''', (i”, nome, fone))
“one“tor.“ommit()
i” = i” + 1
“ursor.“lose()
“one“tor.“lose()
ex“ept sqlite3.Error as error:
print("Erro: BD não en“ontra”o")
print("Erro: ", error)
os.remove(nomeBD)
Teste ”o Programa:
66
Exe“ução ”o programa SQLiteLeBD.py
67
1;Paulo Roberto;99164-8037;
2;Adriane Maria;99156-2345;
3;Paola Freitas;98678-1234;
# -------------------------------------- FileLeTexto.py
Teste ”o Programa:
# ------------------------------- FileLeDadosTexto.py
Teste ”o Programa:
68
# -------------------------------------- FileAnexaTexto.py
Teste ”o Programa:
# ------------------------------- FileCriaTexto.py
69
fone = input("Fone: ")
linha = str(id) + ";" + nome + ";" + fone + ";" + "\n"
file.write(linha)
id = id + 1
file.close()
except IOError as error:
print("ERRO: ", error)
Teste ”o Programa:
1;Paulo Roberto;99164-8037;
2;Renato Luis; 98778-3456;
3;Francisco Carlos; 98178-5678;
# ------------------------------- FileProcuraDadosTexto.py
Teste ”o Programa:
RESTART:
/Users/pluzzardi/Desktop/Python/Python/File/FileProcuraDadosTexto.py
Nome do Arquivo: Dados.txt
Posição [0 - Sair]: 1
70
id: 1
Nome: Paulo Roberto
Fone: 99164-8037
Posição [0 - Sair]: 2
id: 2
Nome: Adriane Maria
Fone: 99156-2345
Posição [0 - Sair]: 3
id: 3
Nome: Paola Freitas
Fone: 98678-1234
Posição [0 - Sair]: 4
id: 4
Nome: Renato Luis
Fone: 98778-3456
Posição [0 - Sair]: 5
id: 5
Nome: Francisco Carlos
Fone: 98178-5678
Posição [0 - Sair]: 6
Erro: Registro não encontrado
Posição [0 - Sair]: 7
Erro: Registro não encontrado
Posição [0 - Sair]: 8
Erro: Registro não encontrado
Posição [0 - Sair]: 9
Erro: Registro não encontrado
Posição [0 - Sair]: 0
Erro: Registro não encontrado
>>>
# ------------------------------------ FileBuscaDadosTexto.py
Teste ”o Programa:
RESTART:
/Users/pluzzardi/Desktop/Python/Python/File/FileBuscaDadosTexto.py
Nome do Arquivo: Dados.txt
Nome: Paulo
Erro: Nome não encontrado
71
Nome: Paulo Roberto
id: 1
Nome: Paulo Roberto
Fone: 99164-8037
Nome: Renato Luis
id: 4
Nome: Renato Luis
Fone: 98778-3456
Nome:
Erro: Nome não encontrado
>>>
# ........................ GravaBin.py
import pickle
72
print("Atenção: Arquivo não existe")
try:
file = open(nomeArquivo, "wb")
except IOError as error:
print("Erro: Impossível criar o arquivo: %s" %nomeArquivo)
n = int(input("Número de Elementos: "))
pickle.dump(n, file)
for i in range(n):
nome = input("Nome: ")
pickle.dump(nome, file)
telefone = input("Telefone: ")
pickle.dump(telefone, file)
idade = int(input("Idade: "))
pickle.dump(idade, file)
file.close()
Observação: Note que o número ”e elementos também é salvo no arquivo binário, para
”epois ser li”o no programa que “arrega o arquivo binário.
Teste ”o Programa:
# ........................ LeBin.py
import pickle
Teste ”o Programa:
73
Número ”e Elementos: 3 <enter>
Nome: Paulo Roberto <enter>
Telefone: 99164-8037 <enter>
I”a”e: 56 <enter>
Nome: A”riane Maria <enter>
Telefone: 99156-3334 <enter>
I”a”e: 48 <enter>
Nome: Paola Freitas <enter>
Telefone: 99167-4567 <enter>
I”a”e: 19 <enter>
# ........................... GravaBinario
import pickle
try:
file = open(nomeArquivo, "wb")
except IOError as error:
print("Atenção: Impossível criar o arquivo")
pickle.dump(lista, file)
file.close()
print("Okay, Arquivo %s criado" %nomeArquivo)
Teste ”o Programa:
# ............................. LeBinario
import pickle
lista = []
nomeArquivo = input("Nome do Arquivo Binário: ")
try:
file = open(nomeArquivo, "rb")
except IOError as errror:
print("Atenção: Arquivo Inexistente")
lista = pickle.load(file)
print("Lista: ", lista)
file.close()
Teste ”o Programa:
74
Lista: ['Paulo Roberto', '99164-8037', 56, 'A”riane Maria', '99156-3334', 48, 'Paola
Freitas', '99181-3456', 19]
Aba“ate
Ameixa
Banana
Bergamota
Anana
Morango
Caqui
Uva
Laranja
Lima
Goiaba
Damas“o
Tangerina
# ........................... Letexto.py
Teste ”o Programa:
# .............................. ConverteTextoBinario.py
import pickle
75
try:
fileTexto = open(nomeArquivoTexto, "r")
try:
fileBinario = open(nomeArquivoBinario, "wb") # cuidado:
apaga arquivo se já existir
except IOError as error:
print("Atenção Impossível CRIAR Arquivo Binário")
for linha in fileTexto:
linha = fileTexto.read()
pickle.dump(linha, fileBinario)
print(linha)
fileTexto.close()
fileBinario.close()
except IOError as error:
print("Atenção: Arquivo texto inexistente")
Teste ”o Programa:
Ameixa
Banana
Bergamota
Anana
Morango
Caqui
Uva
Laranja
Lima
Goiaba
Damas“o
Tangerina
# ........................ LeTextoConvertidoBinario.py
import pickle
76
print(linha)
file.close()
except EOFError as error:
print("Atenção: Final do Arquivo")
except IOError as error:
print('Atenção: Arquivo não Existe', nomeArquivo)
print(error)
Teste ”o Programa:
Banana
Anana
Caqui
Laranja
Goiaba
Tangerina
def ArquivoExiste(nomeArquivo):
try:
file = open(nomeArquivo, "r")
except IOError: # se não precisar da variável error não precisa
return False # definir
file.close()
return True
# .............................. GravaDados.py
import pickle
def ArquivoExiste(nomeArquivo):
try:
file = open(nomeArquivo, "r")
except IOError:
return False
file.close()
return True
77
file = open(nomeArquivo, "wb")
ch = "S"
while ch == "S" or ch == "s":
nome = input("Nome: ")
pickle.dump(nome, file)
idade = int(input("Idade: "))
pickle.dump(idade, file)
ch = input("Continua [s/n]? ")
file.close()
except IOError as error:
print("Atenção: Impossível CRIAR o Arquivo")
Teste ”o Programa:
78
accept( ): aceita uma nova conexão e retorna os valores: o
novo objeto socket e o endereço que o socket está se
comunicando.
serverSocket=socket.socket(socket.AF_INET,socket.SOCK_STREA
M): para definir o protocolo a ser utilizado.
clientSocket.socket(socket.AF_INET,socket.SOCK_STREAM):
para definir o protocolo a ser utilizado.
79
clientSocket.connect((servidor,porta)): para criar o objeto
de conexão que irá conectar em um servidor.
# ...................... Cliente.py
import socket
# define o protocolo
cliente = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# envia mensagem
cliente.send("Olá!! Boa Noite!".encode("utf-8"))
print("Mensagem Enviada")
# fecha a conexão
cliente.close()
# ..................... Servidor.py
import socket
# define protocolo
servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
80
# recebe os dados enviados pelo cliente
dados = conexao.recv(1024)
# fecha a conexão
conexao.close()
Teste do Programa:
81
82
31. Threa”s em Python
83
Exemplo de como criar uma janela gráfica na aplicação
utilizando o módulo tkinter:
# ........................ Tk_1.py
janela = tk.Tk()
janela.mainloop()
Resultado do programa:
# .............................. Tk_2.py
import tkinter as tk
janela = tk.Tk()
janela.title("Calculadora")
janela.mainloop()
Resultado do programa:
84
No programa abaixo é possível trocar a cor do
background (fundo) através da instrução janela[“bg”] =
“blue) ou janela[“background”] = “blue”.
# .......................... Tk_3.py
import tkinter as tk
janela = tk.Tk()
janela.title("Chat")
janela.mainloop()
Resultado do programa:
85
No programa abaixo é possível especificar o tamanho
e a posição da janela gráfica, isto é feito através da
instrução janela.geometry(“LxA+E+T”), onde “L” é a
largura, “A” é a altura, “E” é a distância da origem
até a esquerda da janela e “T” é a distância da origem
até o topo da janela. Alias a origem é na esquerda x
topo da janela.
# .............................. Tk_4.py
import tkinter as tk
janela = tk.Tk()
janela.title("Chat")
janela.geometry("300x300+200+100")
#LarguraxAltura+distânciaEsquerda+distância_Topo, alguns são opcionais
janela.mainloop()
Resultado do programa:
86
No programa abaixo é possível inserir texto na
janela gráfica, isto é feito através das instruções lb
= Label(janela, text=mensagem[i]) e lb.place(x=10,
y=yc).
# ............................ Tk_5.py
janela = Tk()
janela.title("Chat")
xMax = 300
yMax = 300
left = 100
top = 200
s = str(xMax) + "x" + str(yMax) + "+" + str(left) + "+" + str(top)
janela.geometry(s)
mensagem = ["Olá, tudo bem", "Quando vais vir?", "Não demora",
"Abraços"]
n = len(mensagem)
yc = 10
for i in range(n):
lb = Label(janela, text=mensagem[i])
lb.place(x=10, y=yc)
yc = yc + 20
janela.mainloop()
Resultado do programa:
87
No programa abaixo é possível inserir um botão na
janela gráfica, isto é feito através das instruções
botao = tk.Button(janela, text=" Aperte ", command=
Mensagem) [insere o botão na janela da aplicação] e
botao.pack() [exibe o botão].
# ........................... Tk_6.py
import tkinter as tk
def Mensagem():
print("Olá, tudo bem?")
janela = tk.Tk()
janela.title("Tkinter")
janela.geometry("300x300+200+100")
botao.pack()
janela.mainloop()
Resultado do programa:
88
O programa a seguir contém um botão (chamado “aperte”)
que quando pressionado imprime a mensagem “Olá, tudo
bem?” na janela gráfica.
# ........................... Tk_7.py
import tkinter as tk
from tkinter import *
def Mensagem():
mensagem = "Olá, tudo bem?"
lb = Label(janela, text=mensagem)
lb.place(x=100, y=200)
janela = tk.Tk()
janela.title("Tkinter")
janela.geometry("300x300+200+100")
botao.pack()
janela.mainloop()
89
# ........................ Tk_8.py
import tkinter as tk
from tkinter import *
def Soma(x):
somador.set(somador.get() + valor.get())
def Mensagem():
mensagem = "Digite um valor e pressione <Enter>"
lb = Label(janela, text=mensagem)
lb.place(x=25, y=200)
janela = tk.Tk()
janela.title("Acumulador")
janela["background"] = "lightblue"
janela.geometry("300x300+200+100")
Mensagem()
somador = DoubleVar(janela)
valor = DoubleVar(janela)
lSomador = Label(textvar=somador)
eValor = Entry(textvar=valor)
eValor.bind("<Return>", Soma)
lSomador.pack()
eValor.pack()
janela.mainloop()
90
No programa acima, a caixa de diálogo foi
realizada através da instrução: eValor =
Entry(textvar=valor).
# .............................. Tk_9.py
janela = tk.Tk()
janela.title("Tkinter")
janela["background"] = "lightblue"
janela.geometry("300x300+200+100")
janela.mainloop()
91
# ............................. Tk_10.py
janela = Tk()
janela.title("Rótulo")
janela.geometry("400x100")
frame = Frame() ; frame.pack()
rotulo = Label(frame, text=" Configurando um Rótulo ",
foreground="blue")
rotulo.pack()
rotulo.configure(relief="ridge", font="Arial 24 bold", border=5,
background="yellow")
janela.mainloop()
# ........................ Tk_11.py
def clique(e):
txt = "Mouse: %d x %d" %(e.x,e.y)
r.configure(text=txt)
janela = Tk()
janela.title("Mouse")
r = Label()
r.pack(expand=True, fill="both")
r.master.geometry("200x200")
r.bind("<Button-1>", clique)
mainloop()
92
O programa a seguir exibe uma listbox.
# ............................ Tk_12.py
root = Tk()
listbox = Listbox(root)
listbox.pack()
for i in range(10):
listbox.insert(END, " -> "+str(i))
mainloop()
# ............................ Tk_13.py
janela = Tk()
janela.title("Cores")
janela.geometry("300x300+200+100")
rot = Label(janela, text="Red", bg="red", fg="white")
rot.pack(fill=X)
rot = Label(janela, text="Green", bg="green", fg="black")
rot.pack(fill=X)
rot = Label(janela, text="Blue", bg="blue", fg="white")
rot.pack(fill=X)
janela.mainloop()
93
94