Algoritmos e Programação em Python
por
Prof. Dr. Paulo Roberto Gomes Luzzardi
facebook: Paulo Roberto Gomes Luzzardi
WhatsApp: 99164-8037
e-mail: pluzzardi@[Link] (principal) e pluzzardi@[Link]
e-mail (Senac): prgomesluzzardi@[Link]
DropBox: [Link]
Hostinger: [Link] e [Link] (Home Page)
Versão 1.62
02-05-2018
Bibliografia re“omen”a”a:
MENEZES, Nilo Ney Coutinho. Intro”ução à Programação “om Python:
Algoritmos e Lógi“a ”e Programação para Ini“iantes. São Paulo: E”itora
Novate“, 2010 (ISBN 978-85-7522-250-8).
Pelotas, quarta-feira, 2 ”e maio ”e 2018 (09:48 am)
1
Sumário
1. Linguagem ”e Programação Python .................................................................... 4
2. Como exe“utar “oman”os em Python .................................................................. 4
3. Entrar na IDLE ”o Python ................................................................................. 4
4. Primeiros “oman”os ou instruções .................................................................. 4
5. I”entifi“a”ores e variáveis............................................................................ 5
6. Opera”ores aritméti“os ..................................................................................... 6
6.1 Hierarquia ”os opera”ores (pre“e”ên“ia)................................................... 7
7. Coman”o print (imprimir ”a”os na tela) ...................................................... 7
8. Coman”o input (ler ”a”os ”o te“la”o) .......................................................... 9
9. Deletar uma variável (”el) ............................................................................. 9
10. Mó”ulos (import) ............................................................................................. 10
11. Funções ”e matemáti“as (math) .................................................................... 11
12. Strings (“a”eia ”e “ara“teres) .................................................................. 13
12.1 Funções para Strings ................................................................................... 13
13. Coman”os: Sequên“ia, Seleção e Repetição............................................... 15
13.1 Coman”os ”e Sequên“ia ................................................................................. 15
13.2 Lista ”e Exer“í“ios (Coman”os ”e sequên“ia) ....................................... 17
14. Opera”ores rela“ionais ................................................................................. 20
15. Opera”ores lógi“os ......................................................................................... 20
16. Coman”o ”e Seleção (if) ............................................................................... 20
16.1 Lista ”e Exer“í“ios (Coman”o ”e Seleção if) ....................................... 23
17. Conta”or e a“umula”or ................................................................................... 24
18. Coman”os ”e Repetição (while e for) ........................................................ 25
18.1 range (faixa)................................................................................................. 27
18.2 Lista ”e Exer“í“ios (Coman”o ”e Repetição while e for) .................. 28
19. Listas em Python (vetores).......................................................................... 29
19.1 Lista ”e Exer“í“ios ”e Vetores (listas)............................................... 35
20. Questões ”e prova ........................................................................................... 38
21. Curiosi”a”es e testes no Python ................................................................ 43
22. Funções es“ritas pelo programa”or em Python ......................................... 45
22.1 Exer“í“ios sobre funções em Python ........................................................ 52
23. Criação e utilização ”e mó”ulos em Python ............................................. 55
24. Tratamento ”e erros (ex“eções) .................................................................. 58
25. Ban“o ”e Da”os em Python (SQLite) ............................................................ 62
26. Sistema ”e Arquivos em Python .................................................................... 67
29. Arquivos Binários em Python........................................................................ 72
30. So“kets em Python ........................................................................................... 78
31. Threa”s em Python ........................................................................................... 83
32. Mó”ulo tkinter para GUI em Python ............................................................ 83
2
Lista de Exercícios do Prof. Dr. Ricardo Andrade Cava
DropBox:
[Link]
3
1. Linguagem ”e Programação Python
Python é uma linguagem ”e programação interpreta”a (on”e “a”a linha
é “ompila”a e exe“uta”a, uma por vez), ou seja, não é “ompila”a (on”e
to”o o programa é tra”uzi”o para linguagem ”e máquina e posteriormente
exe“uta”o). Em Python, “a”a “oman”o tem sua sintaxe verifi“a”a, sen”o
exe“uta”o a seguir.
Python é uma linguagem ”e alto nível e um software livre, ou seja,
não se paga por sua utilização. É utiliza”o em muitas apli“ações,
in“lusive em Re”es ”e Computa”ores para “riação ”e s“ripts utiliza”os
em servi”ores e outras apli“ações ”a área, além ”e ser uma linguagem ”e
uso geral.
2. Como exe“utar “oman”os em Python
Win”ows: Ini“iar ... Programas ... Python 3.? (versão)
Linux: $ python3.? (versão – ”igite TAB para ”es“obrir)
Ma“OsX: $ python3.? (TAB para ”es“obrir as versões instala”as)
3. Entrar na IDLE ”o Python
IDLE é a Interfa“e Gráfi“a ”a Linguagem ”e Programação Python que
permite a e”ição e exe“ução ”os programas es“ritos em Python.
Win”ows: Ini“iar ... Programas ... Python 3.? (versão) ... IDLE
Linux: $ i”le-python3.6 & <enter>
Ma“OsX: $ i”le3.6 <enter>
Observação: To”o programa fonte em Python possui a extensão .py .
Instalação e ”ownloa” ”o Python: [Link]
4. Primeiros “oman”os ou instruções
Python permite exe“utar “oman”os ou instruções, tais “omo:
Imprimir na tela: >>> print( Hello ) <enter>
Hello
Realizar operações matemáti“as: >>> 3 + 4 <enter>
7
>>> 2 ** 3 <enter>
8
>>>
Operações mais “omplexas: >>> a = 3 <enter>
>>> b = 4 <enter>
>>> “ = a + b <enter>
>>> print(a, b, “) <enter>
3 4 7
>>> print( “ = , “) <enter>
“ = 7
>>> print(3>4) <enter>
False # valor lógi“o
>>>
5. I”entifi“a”ores e variáveis
I”entifi“a”ores são os nomes “ria”os pelo programa”or para fazer
referên“ia a variáveis, “onstantes, funções e mó”ulos.
Regras para a “riação ”e i”entifi“a”ores:
ü O primeiro “ara“ter ”eve ser uma letra ou sublinha (‘);
ü Os “ara“teres seguintes ”evem ser letras, números ou sublinhas;
ü Não há limite ”e “ara“teres;
ü Não é permiti”o a utilização ”e “ara“teres em bran“o (“ara“ter espaço);
ü Po”em ser letras maiús“ulas e minús“ulas, pois são ”iferen“ia”os.
Comentário ”o programa”or:
# não é interpreta”o - “omentário ”e uma linha
“omentário em mais ”e uma linha
Não é interpreta”o
“omentário em mais ”e uma linha
Não é interpreta”o
Variáveis em Python existem em três tipos: int, float e string.
Na ”e“laração ”e “a”a variável, Python espe“ifi“a o tipo, por exemplo:
a = 3, a é ”e“lara”o “omo int, b = 3.4 é ”e“lara”o “omo float, s =
Python ou s = Python são string s.
Função type: Exibe o Tipo ”o Da”o.
5
# -------------------------- [Link]
a = 3
print(type(a))
b = 3.4
print(type(b))
“ = 'Python'
print(type(“))
” = 'A'
print(type(”))
Teste ”o Programa:
========= RESTART: /Users/pluzzar”i/Do“uments/[Link] =========
<“lass 'int'>
<“lass 'float'>
<“lass 'str'>
<“lass 'str'>
>>>
Coman”o i”: Retorna o i”entifi“a”or ”o objeto, número inteiro que
i”entifi“a “a”a objeto ”o Python.
>>> 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
Os opera”ores aritméti“os permitem ao programa”or realizar várias
operações matemáti“as, tais “omo: a”ição, subtração, ”ivisão,
multipli“ação e poten“iação. A seguir, a Tabela 1 exibe os opera”ores
aritméti“os utiliza”os em Python.
Tabela 1: Opera”ores Aritméti“os
Matemáti“a Opera”or aritméti“o
A”ição +
Subtração -
Multipli“ação *
Divisão /
Poten“iação **
6
6.1 Hierarquia ”os opera”ores (pre“e”ên“ia)
A Tabela 2, a seguir, exibe a pre“e”ên“ia ”os opera”ores ”o Python,
ou seja, a or”em ”e exe“ução ”as operações matemáti“as.
Tabela 2: Hierarquia ”os Opera”ores Aritméti“os
Or”em ”e Tipo ”e Opera”or
pre“e”ên“ia
Parênteses ()
** Poten“iação
- (unário) Unário
Multipli“ação, ”ivisão, mo”ulo (resto inteiro ”a ”ivisão)
* / % //
e ”ivisão inteira
+ - A”ição e subtração
Exemplos:
>>> 7 / 2 # ”ivisão real
3.5
>>> 7 % 2 # resto inteiro ”a ”ivisão (mó”ulo)
1
>>> 7 // 2 # ”ivisão inteira
3
>>>
7. Coman”o print (imprimir ”a”os na tela)
O “oman”o print permite enviar (imprimir) para a tela qualquer
informação ”o python, “omo números, “onstantes, resulta”os ”e operações,
strings, et“.
Sintaxe simples: print(string, lista‘”e‘variáveis)
Exemplos:
>>> print(4) <enter>
4
>>> print(3+4) <enter>
7
>>> print(3>4) enter>
False # tipo lógi“o (True ou False)
>>> a = 3 <enter>
>>> print(a) <enter>
3
>>> b = 4 <enter>
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 '%'
Note que o Python permite formatar os ”a”os que serão exibi”os na
tela através ”o print, para tanto usa os opera”ores ”a Tabela 3, a“ima.
Repare novamente nos exemplos abaixo:
>>> ”ia = 3 <enter>
>>> mês = 7 <enter>
>>> ano = 2017 <enter>
>>> print( Data: %02”/%02”/%” %(”ia, mês, ano)) <enter>
03/07/2017
>>>
# ================================== ”ata e hora
from ”atetime import ”atetime
8
”ata = ”[Link]()
print(”ata)
print("Data: %02”/%02”/%”" %(”ata.”ay, ”[Link], ”[Link]))
print("Tempo: %02”:%02”:%02”" %(”[Link], ”[Link], ”[Link]“on”))
8. Coman”o input (ler ”a”os ”o te“la”o)
O “oman”o input permite ler informações via te“la”o, o valor
”igita”o pelo usuário é li”o “omo uma string, po”en”o ser “onverti”o
para inteiro (int) ou real (float).
Sintaxe: string input(string mensagem)
Exemplos:
Entra”a ”e uma String:
>>> s = input( Digite um Nome: ) <enter>
>>> Digite um Nome: Luzzar”i <enter>
>>> print(len(s)) # número ”e “ara“teres ”a string
8
>>>
Entra”a ”e um Inteiro:
>>> i = int(input( Digite um Valor: )) <enter>
>>> Digite um Nome: 34 <enter>
>>> print(i)
34
>>>
Entra”a ”e um Real (float):
>>> i = float(input( Digite um Valor: )) <enter>
>>> Digite um Nome: 34 <enter>
>>> print(i)
34.0
>>>
Outra forma, em ”uas etapas:
>>> s = input("Digite um Valor: ") <enter>
Digite um Valor: 34 <enter>
>>> x = int(s) <enter> # “onversão para inteiro
>>> print(x) <enter>
34
>>>
9. Deletar uma variável (”el)
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.
Sintaxe: >>> ”el variável
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”
Erro: i”entifi“a”or a não ”efini”o
Observação: É possível também reini“ializar o terminal (shell), vá na
opção Shell .. Restart Shell, to”as as variáveis são ”estruí”as, ou
seja, ”esalo“a”as ”a memória RAM (Ran”om A“ess Memory).
10. Mó”ulos (import)
Python possui um “onjunto ”e funções pré-”efini”as agrupa”as em
estruturas “hama”as ”e mó”ulos, tais “omo: math (mathemati“s), os
(sistema opera“ional), ”atetime (”ata e hora), et“.
Forma ”e importar: import mó”ulo
Para utilizar a função ”e um mó”ulo: mó”[Link]ção(argumento)
Para importar apenas uma função ”eseja”a: from mó”ulo import função
Exemplos: >>> import math <enter>
>>> print([Link]) <enter>
3.141592653589793
>>> import os <enter>
>>> [Link]( “lear ) <enter>
>>> from math import sqrt <enter>
>>> print([Link](16))
16
>>>
Aju”a (help) ”os mó”ulos:
>>> import math <enter>
10
>>> help(math) <enter> # exibe funções ”o mó”ulo math
# i”ênti“o ao Linux
11. Funções ”e matemáti“as (math)
Python possui ”iversas funções matemáti“as oriun”as ”o mó”ulo
math . São elas:
[Link]“torial(x): Retorna o valor fatorial ”e x, on”e x ”eve ser sempre
positivo.
>>> fat = [Link]“torial(5) # 5x4x3x2x1 = 120
>>> print(fat)
120
>>>
[Link]”f(x): Retorna o valor inteiro e o valor fra“ionário ”a variável
x.
>>> print([Link]”f(5.34))
(0.33999999999999986, 5.0)
>>>
[Link](x): Retorna o exponen“ial ”e x, ou seja, ex.
>>> print([Link](1))
2.718281828459045
>>> print([Link](2))
7.38905609893065
>>> print([Link](3))
20.085536923187668
>>>
[Link](x, base): Retorna o log ”e x na base pe”i”a.
>>> print([Link](2,10))
0.30102999566398114
>>> print([Link](3,10))
0.47712125471966244
>>>
math.log1p(x): Retorna o logaritmo natural ”e x.
>>> print(math.log1p(1))
0.6931471805599453
>>> print(math.log1p(2))
1.0986122886681098
>>>
11
[Link](x): Retorna a raiz qua”ra”a ”e x.
>>> x = 16
>>> print([Link](x))
4.0
>>> x = -16 # x ”eve ser positivo
>>> print([Link](x))
Tra“eba“k (most re“ent “all last):
File "<st”in>", line 1, in <mo”ule>
ValueError: math ”omain error
>>>
math.”egrees(x): Converte o ângulo x ”e ra”ianos para graus.
pi ra”ianos à 180 graus
[Link]”ians(x): Converte o ângulo x ”e graus para ra”ianos.
[Link](x): Retorna o seno ”e x, on”e x ”eve estar em ra”ianos.
>>> x = [Link](45)
>>> print(x)
0.8509035245341184
>>> x = [Link]([Link]”ians(45))
>>> print(x)
0.7071067811865475
>>>
math.“os(x): Retorna o “osseno ”e x, on”e x ”eve estar em ra”ianos.
>>> x = math.“os(45)
>>> print(x)
0.5253219888177297
>>> x = math.“os([Link]”ians(45)) # “onverte 45 para ra”ianos
>>> print(x)
0.7071067811865476
math(tan(x): Retorna a tangente ”e x, on”e x ”eve estar em ra”ianos.
>>> tangente = [Link]([Link]”ians(45))
>>> print(tangente)
0.9999999999999999
>>>
[Link](x, y): Retorna a hipotenusa ”o triângulo retângulo, on”e x e
y são os “atetos oposto e a”ja“ente.
>>> hipotenusa = [Link](3 ,4)
12
>>> print(hipotenusa)
5.0
>>>
12. Strings (“a”eia ”e “ara“teres)
String é uma sequên“ia ”e “ara“teres, letras, números e “ara“teres
espe“iais, que permite trabalhar “om textos.
>>> s = "Python" <enter>
>>> print(s) <enter>
Python
>>> print("Número ”e “ara“teres ”a string: %”" %(len(s))) <enter>
6
>>>
ou
>>> s = Python <enter> # po”e ser utiliza”o aspas simples
>>> l = len(s) <enter> # retorna o número ”e “ara“teres
>>> print("Número ”e “ara“teres ”a String: %”" %l)
<enter>
6
>>>
outra forma ”e ini“ialização:
>>> s = 'P' 'y' 't' 'h' 'o' 'n' <enter)
>>> print(s) <enter>
Python
>>>
Vetor ”e Strings: (será visto em outro “apítulo)
>>> s = ('Paulo', 'Roberto', 'Gomes', 'Luzzar”i') <enter>
>>> print(s[0]) <enter>
Paulo
>>> print(s[3]) <enter>
Luzzar”i
>>>
12.1 Funções para Strings
# ------------------------------------------- [Link]
s = "Paulo Roberto Gomes Luzzar”i"
print("Número ”e letras: ", len(s))
partes = [Link](' ')
n = len(partes)
print("Número ”e nomes: ", n)
13
for i in range(n):
print(partes[i])
print(partes)
Teste ”o Programa:
===== RESTART: /Users/pluzzar”i/Desktop/Python/Python/[Link] ====
Número ”e letras: 28
Número ”e nomes: 4
Paulo
Roberto
Gomes
Luzzar”i
['Paulo', 'Roberto', 'Gomes', 'Luzzar”i']
>>>
Exemplo ”e funções ”e Strings:
# -------------------------------- [Link]
# -------------------------------------------- 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 = [Link]“e('Roberto', 'R.') # tro“a parte ”a string
s = [Link]“e("Gomes", "G.")
print(s)
# -------------------------------------------- fin”
pos = [Link]”('z') # pro“ura a primeira aparição ”e uma letra
print(pos)
# -------------------------------------------- upper e lower
print("STRING: ", [Link]()) # exibe “omo maiús“ula
print(s)
print("string: ", [Link]()) # exibe “omo minús“ula
print(s)
# -------------------------------------------- title
s = "paulo roberto gomes luzzar”i"
print([Link]())
# -------------------------------------------- swap“ase
s = 'Paulo Roberto Gomes Luzzar”i'
print([Link]“ase()) # inverte as letras maiús“ulas e minús“ulas
14
# -------------------------------------------- isalpha
print('Contém apenas letras: ', [Link]()) # verifi“a se “ontém apenas letras
s = 'Fate“Sena“'
print('Contém apenas letras: ', [Link]())
# --------------------------------------------- is”igit
print('Contém apenas números: ', [Link]”igit())
s = '123456'
print('Contém apenas números: ', [Link]”igit())
Teste ”o Programa:
=========== RESTART: /Users/pluzzar”i/Do“uments/[Link] ==========
Número ”e Cara“teres: 28
Número ”e letras "a" é 2
Paulo R. G. Luzzar”i
14
STRING: PAULO R. G. LUZZARDI
Paulo R. G. Luzzar”i
string: paulo r. g. luzzar”i
Paulo R. G. Luzzar”i
Paulo Roberto Gomes Luzzar”i
pAULO rOBERTO gOMES lUZZARDI
Contém apenas letras: False
Contém apenas letras: True
Contém apenas números: False
Contém apenas números: True
>>>
13. Coman”os: Sequên“ia, Seleção e Repetição
Python possui três tipos prin“ipais ”e “oman”os, sequên“ia, on”e
to”os são exe“uta”os, seleção, on”e alguns são e outros não são
exe“uta”os e repetição, “oman”os são exe“uta”os ”iversas vezes.
13.1 Coman”os ”e Sequên“ia
Coman”os ”e Sequên“ia:
To”os os “oman”os (ou instruções) em sequên“ia são sempre
exe“uta”os no fluxo ”o programa.
# --------------------- Cir“[Link]
import math
”iametro = float(input("Digite o valor ”o Diâmetro: "))
raio = ”iametro / 2
area = [Link] * raio ** 2
15
print("Área ”o Cír“ulo é: ", area)
Teste ”o Programa:
Digite o valor ”o Diâmetro: 6 <enter>
Área ”o Cír“ulo é: 28.274334
>>>
# ----------------------------------- [Link]
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/[Link] ==
Celsius: 48 - Fahrenheit: 120
>>>
# ---------------------------------- Ran”[Link]
import ran”om
n = 10
print("Faixa ”e Sorteio: 0 ... %”" %(n-1))
numero = int (ran”[Link]”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:
========== RESTART: /Users/pluzzar”i/Do“uments/Ran”[Link] =======
Faixa ”e Sorteio: 0 ... 9
Número Sortea”o: 8
>>>
# ----------------------------- [Link]
import ran”om
for i in range(6):
n = ran”[Link]”int(1, 10)
print("n = ", n)
Teste ”o Programa:
======= RESTART: /Users/pluzzar”i/Do“uments/[Link] =======
n = 2
n = 9
n = 7
16
n = 6
n = 5
n = 7
>>>
13.2 Lista ”e Exer“í“ios (Coman”os ”e sequên“ia)
a) Es“reva um programa em Python que re“ebe ”ois valores via te“la”o:
“ateto a”ja“ente (b) e “ateto oposto (a) e “al“ula o valor ”a
hipotenusa ”a”o pela seguinte fórmula:
Teste ”o Programa:
Cateto A”ja“ente (b): 3 <enter>
Cateto Oposto (a): 4 <enter>
Hipotenusa: 5.0
b) Es“reva um programa em Python que lê 4 notas via te“la”o: n1, n2,
n3 e n4 obti”as por um aluno em 4 avaliações. Cal“ule a mé”ia
utilizan”o a seguinte fórmula:
n1 + n2 x 2 + n3 x 3 + n4
Mé”ia = ---------------------------
7
“) Es“reva um programa em Python que re“ebe via te“la”o: “omprimento
”a “ir“unferên“ia. O programa ”eve “al“ular e imprimir na tela o
”iâmetro e o raio ”a “ir“unferên“ia (veja exemplo abaixo):
Teste ”o Programa:
Comprimento ”a “ir“unferên“ia: 36 <enter>
Diâmetro: 11.46
Raio: 5.73
“omprimento ”a “ir“unferên“ia = 2 . Pi . raio
17
”iâmetro = 2 . raio
”) Desenvolva um programa em Python que re“ebe via te“la”o: peso ”a
“arne que será ven”i”a e preço por quilo. O programa ”eve “al“ular
e imprimir na tela o total a pagar, o valor pago ao ICMS (17%) e
o lu“ro líqui”o ”o açougue.
Teste ”o Programa (1):
Peso: 3.5 <enter>
Preço por Kg (R$): 4.90 <enter>
Total a pagar: 17.15
ICMS (17%): 2.91
Lu“ro líqui”o ”o açougue (R$): 14.24
Teste ”o Programa (2):
Peso: 1.5 <enter>
Preço por Kg (R$): 9.00 <enter>
Total a pagar: 13.5
ICMS (17%): 2.29
Lu“ro líqui”o ”o açougue (R$): 11.21
e) Es“reva um programa em Python que re“ebe via te“la”o: a ”ata ”e
hoje ”a seguinte forma: ”ia, mês, ano e a sua i”a”e, ”a seguinte
forma: anos, meses e ”ias vivi”os. Cal“ule e imprima a ”ata ”e
nas“imento no seguinte formato: ””/mm/aaaa.
Teste ”o Programa:
Qual a ”ata ”e hoje:
Dia: 16 <enter>
Mês: 3 <enter>
Ano: 2017 <enter>
Qual a sua i”a”e:
Anos: 55 <enter>
Meses: 1 <enter>
Dias: 6 <enter>
Data ”e Nas“imento: 10/02/1962
f) Es“reva um programa em Python que re“ebe via te“la”o: salário
mensal e per“entual ”e reajuste. Cal“ular e es“rever o valor ”o
novo salário.
18
Teste ”o Programa:
Salário: 500 <enter>
Per“entual ”e reajuste: 15 <enter>
Novo salário: 575
g) Es“reva um programa em Python que lê via te“la”o as ”imensões ”e
uma “ozinha retangular (“omprimento, largura e altura), “al“ular
e es“rever a quanti”a”e ”e “aixas ”e azulejos para se “olo“ar em
to”as as suas pare”es (“onsi”ere que não será ”es“onta”o a área
o“upa”a por portas e janelas). Ca”a “aixa ”e azulejos possui 1,5
m2.
Teste ”o Programa:
Comprimento: 4.5 <enter>
Largura: 3 <enter>
Altura: 2.8 <enter>
Quanti”a”e ”e “aixas: 28
h) A turma C é “omposta ”e 60 alunos, e a turma D ”e 20 alunos.
Es“reva um programa em Python que leia o per“entual ”e alunos
reprova”os na turma C, o per“entual ”e aprova”os na turma D,
“al“ule e es“reva:
a) O número ”e alunos reprova”os na turma C.
b) O número ”e alunos reprova”os na turma D.
“) A per“entagem ”e alunos reprova”os em relação ao total ”e alunos
”as ”uas turmas.
Teste ”o Programa:
Per“entual ”e alunos reprova”os na turma C: 10 <enter>
Per“entual ”e alunos aprova”os na turma D: 85 <enter>
Quanti”a”e ”e alunos reprova”os na turma C: 6
Quanti”a”e ”e alunos reprova”os na turma D: 3
Per“entual ”e alunos reprova”os em relação ao total ”e alunos ”as ”uas turmas: 11.25
i) Es“reva um programa em Python que re“ebe três valores via te“la”o:
a, b e “. O programa ”eve “al“ular e imprimir na tela os valores
”as raízes x1 e x2 ”a”os pela fórmula ”a bhaskara, ou seja, uma
equação ”e segun”o grau: a.x2 + b.x + “ = 0
Teste ”o Programa:
a = 1 <enter>
19
b = 2 <enter>
“ = -3 <enter>
x1 = 1
x2 = -3
14. Opera”ores rela“ionais
Os opera”ores rela“ionais permitem ao programa”or realizar
“omparações. A seguir, a Tabela 4 exibe os opera”ores rela“ionais
utiliza”os em Python.
Tabela 4: Opera”ores Rela“ionais
Opera”or rela“ional Função
== Igual
!= Diferente
> Maior
< Menor
Maior ou
>=
igual
Menor ou
<=
igual
15. Opera”ores lógi“os
Os opera”ores lógi“os permitem ao programa”or realizar várias
“omparações em uma mesma “on”ição. A seguir, a Tabela 5 exibe os
opera”ores lógi“os utiliza”os em Python.
Tabela 5: Opera”ores Lógi“os
Opera”or lógi“o
an”
or
not
an” é ver”a”eiro quan”o ambas “on”ições forem ver”a”eiras
or é ver”a”eiro quan”o uma ou ambas “on”ições forem ver”a”eiras.
not é o inverso ”a “on”ição, ou seja, inverte o True ou False.
16. Coman”o ”e Seleção (if)
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).
Sintaxe: if “on”ição: “oman”o # simples
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
Programa Exemplo: if simples
# -------------------------------------- [Link]
1: x = int(input("Digite um Número: "))
2: if x < 0:
3: print("Número é negativo")
4: print("x = ", x)
Observação: Note a en”entação no “oman”o if (linha 3), Python utiliza a
en”entação “omo forma ”e formar blo“os ”e “oman”os, ou seja, ”elimitar
instruções liga”as a um úni“o “oman”o.
Teste ”o Programa:
======= RESTART: /Users/pluzzar”i/Do“uments/[Link] ========
Digite um Número: -5
Número é negativo
21
x = -5
>>>
======= RESTART: /Users/pluzzar”i/Do“uments/[Link] ========
Digite um Número: 5
x = 5
>>>
Programa exemplo: If “ompleto, ou seja, “om ”uas partes
# ---------------------------------------- [Link]
x = int(input("Digite um Número: "))
if x % 2 == 0:
print("Par")
else:
print("Ímpar")
Teste ”o Programa:
================= RESTART: /Users/pluzzar”i/Do“uments/[Link] =======
Digite um Número: 4
Par
>>>
# ------------------------- [Link]
import math
a = float(input("a = "))
b = float(input("b = "))
“ = float(input("“ = "))
”elta = b**2 - 4 * a * “
if ”elta >= 0:
x1 = (-b + [Link](”elta)) / 2*a
x2 = (-b - [Link](”elta)) / 2*a
print("x1 = ", x1)
print("x2 = ", x2)
else:
print("Erro: Raizes “omplexas")
Teste ”o Programa:
===== RESTART: /Users/pluzzar”i/Do“uments/[Link] ======
a = 1
b = 2
“ = -3
x1 = 1.0
x2 = -3.0
>>>
Programa exemplo: if “om elif
22
# ---------------------------------------- [Link]
numero = int(input("Digite um Número: "))
if numero > 0:
print("Positivo")
elif numero < 0:
print("Negativo")
else:
print("Zero")
16.1 Lista ”e Exer“í“ios (Coman”o ”e Seleção if)
a)Es“reva um programa em Python que lê as notas ”e ”uas avaliações
”e um aluno no semestre. Cal“ular e es“rever a mé”ia semestral e a
seguinte mensagem: PARABÉNS! Vo“ê foi aprova”o somente se o aluno
foi aprova”o (“onsi”ere 7.0 a nota mínima para aprovação) ou Vo“ê
foi reprova”o! Estu”e mais .
Teste ”o Programa:
Nota 1: 6 <enter>
Nota 2: 8 <enter>
Mé”ia: 7.0
PARABÉNS! Vo“ê foi aprova”o
b)Es“reva um programa em Python que lê ”ois valores. Es“reva o valor
”o maior, o menor e a mé”ia ”os ”ois valores.
Teste ”o Programa:
Valor: 3 <enter>
Valor: 4 <enter>
Maior: 4
Menor: 3
Mé”ia: 3.5
“)Es“reva um programa em Python que lê o ano ”e nas“imento ”e uma
pessoa. Es“rever: PODE VOTAR ou NÃO PODE VOTAR e a i”a”e, “onforme
exemplo abaixo.
Teste ”o Programa:
Ano ”e Nas“imento: 1999 <enter>
Status: PODE VOTAR
I”a”e: 18 anos
”) 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
e) Es“reva um programa em Python que re“ebe via te“la”o a altura e o
sexo (“o”ifi“a”o ”a seguinte forma: [f] feminino - [m] mas“ulino) ”e
uma pessoa. Cal“ule e imprima na tela o peso i”eal, utilizan”o as
seguintes fórmulas:
Homens: 72.7 * h - 58
Mulheres: 62.1 * h - 44.7
Testes ”o Programa:
Altura: 1.80 <enter>
Sexo [M] ou [F]: m <enter>
Peso I”eal: 72.86
ou
Altura: 1.65 <enter>
Sexo [M] ou [F]: F <enter>
Peso I”eal: 57.765
17. Conta”or e a“umula”or
Um “onta”or é uma variável que possui uma expressão matemáti“a,
”entro ”e um “oman”o ”e atribuição, que realiza uma “ontagem ”e uma
“erta quanti”a”e ”e vezes que um “oman”o ”e repetição é exe“uta”o, ou
seja, ela mantém a quanti”a”e ”e vezes que um laço foi exe“uta”o. Po”e-
se “ontar ”e um em um, ”ois em ”ois e assim su“essivamente, servin”o,
normalmente, para “ontar o número ”e elementos.
Sintaxe: x = x + 1 # x ß x + 1
Note que é soma”o um (1) ao x e então atribuí”o este novo valor ao
próprio x. Note ain”a que um (1) é uma “onstante, que po”e ser 1, 2, 3,
...
Um a“umula”or ou soma”or é uma variável que “ontém uma expressão
matemáti“a que serve para a“umular valores a “a”a vez que o “ó”igo é
exe“uta”o.
Sintaxe: soma = soma + n # soma ß soma + n
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).
18. Coman”os ”e Repetição (while e for)
Os “oman”os ”e repetição while e for permitem repetir ”iversas
vezes um blo“o ”e “oman”os ou instruções. While repete enquanto a
“on”ição é ver”a”eira.
Coman”o while:
Sintaxe: while “on”ição:
“oman”o1
“oman”o2
...
# --------------------------- [Link]
i = 1
while i <= 10:
print("i = ", i)
i = i + 1
Teste ”o Programa:
========= RESTART: /Users/pluzzar”i/Do“uments/[Link] =========
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
>>>
# -------------------- [Link]
import ran”om
s = 's'
while s in ['S', 's']: # opera”or in
num = ran”[Link]”int(1, 10)
print("Número sortea”o: ", num)
s = input("Continua [S/N]")
Teste ”o Programa:
25
============= RESTART: /Users/pluzzar”i/Do“uments/[Link] =========
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:
Permite exe“utar várias vezes um blo“o ”e “oman”os.
Sintaxe: for variável in faixa:
“oman”o1
“oman”o2
...
Observação: A es“olha entre o “oman”o while e for se ”á sempre que sabe-
se a quanti”a”e ”e vezes que um blo“o é exe“uta”o. Sempre que se sabe o
número ”e vezes, ”eve-se usar o “oman”o for, “aso “ontrário, ”eve-se
utilizar o “oman”o while, que po”e ser “ontrola”o ”e várias formas,
basea”os em sua “on”ição.
Para utilizar o “oman”o for ”eve-se saber o iní“io (start), o
ponto ”e para”a (stop) e a variação (step).
# --------------------------------- [Link]
for i in range(6): # faixa: 0 à 5, on”e 6 é o ponto ”e para”a
print(i)
====== RESTART: /Users/pluzzar”i/Desktop/Python/Python/[Link] =====
0
1
2
3
4
5
>>>
# ----------------------------------- [Link]
for i in range(3):
for j in range(4):
print(i, j)
====== RESTART: /Users/pluzzar”i/Do“uments/[Link] ==========
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
>>>
Observação: Note que “omeça sempre em zero.
# ----------------------------------- [Link]
for i in range(3):
for j in range(4):
print(i+1, j+1)
=== RESTART: /Users/pluzzar”i/Desktop/Python/Python/[Link] ===
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
>>>
18.1 range (faixa)
Range permite ”eterminar o ponto ”e parti”a (start), ponto ”e
para”a (stop) e a variação (step) usa”o no “oman”o for.
Sintaxe: range(start, stop, step)
On”e: Start: parti”a
Stop: para”a (stop - 1)
Step: passo (in“remento [+] ou ”e“remento [-])
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)
for i in range(0, 11, 2): # 0 2 4 6 8 10
print(i)
for i in range(10, -1, -1): # 10 9 8 7 6 5 4 3 2 1 0
print(i)
for i in range(10, 0, -1): # 10 9 8 7 6 5 4 3 2 1
print(i)
Observação: Nun“a “hega no ponto ”e para”a.
18.2 Lista ”e Exer“í“ios (Coman”o ”e Repetição while e for)
a)Es“reva um programa em Python que lê um número via te“la”o. O
programa ”eve exibir se o número é PAR ou ÍMPAR. O programa é en“erra”o
quan”o o número ”igita”o for ZERO.
Teste ”o Programa:
Número: 6 <enter>
PAR
Número: 7 <enter>
IMPAR
Número: 0 <enter>
PAR
>>>
b)Es“reva um programa em Python que lê um número via te“la”o. O
programa ”eve exibir: POSITIVO, NEGATIVO ou ZERO. O programa é
en“erra”o quan”o o usuário ”igitar N ou n na pergunta
Continua [S/N]? .
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
>>>
“)Es“reva um programa em Python que lê um nome via te“la”o. O programa
”eve exibir o número ”e palavras ”o nome e a abreviatura ”o nome.
28
Teste ”o Programa:
Nome: Paulo Roberto Gomes Luzzar”i <enter>
Número ”e palavras: 4
Abreviatura: P. R. G. L.
>>>
”)Es“reva um programa em Python que lê um nome via te“la”o. O programa
”eve exibir o nome ”o autor, “onforme exemplo abaixo:
Teste ”o Programa:
Nome: Paulo Roberto Gomes Luzzar”i <enter>
Autor: Luzzar”i, Paulo R. G.
>>>
e) Es“reva um programa em Python que lê um nome qualquer via te“la”o.
Logo após a entra”a exiba na tela: (a) to”as as vogais ”o nome; (b)
to”as as “onsoantes ”o nome e o (“) total ”e letras, “onforme e
exatamente igual ao teste abaixo:
Teste ”o Programa:
Nome: paulo roberto gomes luzzardi <enter>
Vogais: auooeooeuai (11)
Consoantes: plrbrtgmslzzrd (14)
Total de letras: 25
>>>
19. Listas em Python (vetores)
Em Python vetores são representa”os em forma ”e listas. Vetores
são estruturas que permitem armazenar valores homogêneos, ou seja, ”e
mesmo tipo. Listas por outro la”o, são “lasses que permitem armazenar
qualquer tipo ”e informação. A seguir são vistos ”iversos exemplos ”a
utilização ”e listas.
Exemplo: [Link]
# ------------------------------- [Link]
x = [10, 20, 30]
n = len(x) # retorna o número ”e elementos ”a lista
for i in range(n):
print(x[i]) # imprime elemento por elemento
Teste ”o Programa:
29
======= RESTART: /Users/pluzzar”i/Do“uments/[Link] ==========
10
20
30
>>>
Exemplo: [Link]
# ------------------------------- [Link]
x = [] # ”e“lara uma lista vazia
n = int(input("Número ”e Elementos: "))
for i in range(n):
num = int(input("Digite um Número: "))
[Link]”(num) # insere um elemento no fim ”a lista
for i in range(n):
print('x[',i,'] = ', x[i], sep='') # elimina o espaço
print("Lista: ", x)
Teste ”o Programa:
==== RESTART: /Users/pluzzar”i/Desktop/Python/Python/[Link] ====
Número ”e Elementos: 4
Digite um Número: 10
Digite um Número: 20
Digite um Número: 30
Digite um Número: 40
x[0] = 10
x[1] = 20
x[2] = 30
x[3] = 40
Lista: [10, 20, 30, 40]
>>>
Exemplo: [Link]
# ------------------------------ [Link]
x = [10, 20, 30]
y = x
print("x = ", x, "y = ", y)
print(x is y)
print(i”(x))
print(i”(y))
t = x[:] # “ria uma “ópia ”a lista x ... t = x.“opy()
print(t is x)
print(i”(t))
print("Número ”e Elementos: ", len(x))
Teste ”o Programa:
======== RESTART: /Users/pluzzar”i/Do“uments/[Link] ==========
x = [10, 20, 30] y = [10, 20, 30]
30
True
4380371208
4380371208
False
4320652552
Número ”e Elementos: 3
>>>
Exemplo: [Link]
# -------------------------------- [Link]
nome = []
nota = []
soma = 0.0
numeroAlunos = 4
for i in range(numeroAlunos):
[Link]”(input("Nome ”o Aluno: "))
[Link]”(float(input("Nota ”o " + nome[i] + ": ")))
soma = soma + nota[i]
me”ia = soma / numeroAlunos
print("Mé”ia ”a Turma:", me”ia)
Teste ”o Programa:
======== RESTART: /Users/pluzzar”i/Do“uments/[Link] =============
Nome ”o Aluno: Paulo
Nota ”o Paulo: 7
Nome ”o Aluno: Roberto
Nota ”o Roberto: 8
Nome ”o Aluno: Gomes
Nota ”o Gomes: 9
Nome ”o Aluno: Luzzar”i
Nota ”o Luzzar”i: 10
Mé”ia ”a Turma: 8.5
>>>
Imprimir Listas utilizan”o o “oman”o for:
lista = {10, 20, 30, 40, 50} # lista ”e números inteiros
print("Lista sem Or”enação")
for i in lista:
print(i)
print("Lista Or”ena”a")
for i in sorte”(lista):
print(i)
for i, valor in enumerate(lista): # “om numeração
print("%” - %”" %(i, valor))
lista = list(range(10))
31
for i in lista:
lista[i] = i + 5
print(lista[i])
print(lista)
nomes = {"Carla", "Ana", "Debora", "Eva", "Beatriz"}
for i in sorte”(nomes):
print(i)
# for <variável> in <lista>:
# <blo“o ”e “ó”igo en”enta”o>
Teste ”o Programa:
===== RESTART: /Users/pluzzar”i/Desktop/Python/Python/[Link] =====
0
1
2
3
4
5
Lista sem Or”enação
40
10
50
20
30
Lista Or”ena”a
10
20
30
40
50
0 - 40
1 - 10
2 - 50
3 - 20
4 - 30
5
6
7
8
9
10
11
12
13
14
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
Ana
Beatriz
Carla
32
Debora
Eva
Funções para operar listas:
Anexar o elemento no final ”a lista: appen”
[Link]”(elemento)
Remove o elemento ”a lista: remove
[Link](elemento)
Limpa to”a a lista, ou seja, apaga to”os os elementos ”a lista: “lear
lista.“lear()
Insere o elemento antes ”o ín”i“e: insert
[Link](ín”i“e, elemento)
Remove o último elemento e retorna o valor: pop
ultimo = [Link]()
Reverte os elementos ”a lista (mu”a a or”em): reverse
[Link]()
Cria uma “ópia ”a lista: “opy
temp = lista.“opy()
Or”ena uma lista: sort
[Link]() ou [Link](reverse = True)
Número ”e elementos ”e uma lista: len
n = len(lista)
Retorna o número ”e vezes ”e um elemento ”entro ”e uma lista: “ount
vezes = lista.“ount(elemento)
33
Retorna o ín”i“e ”e um elemento em uma lista: in”ex
posição = [Link]”ex(elemento)
# --------------------------------------- [Link]
lista = [40, 30, 50, 10, 20]
[Link]() # or”ena em or”em “res“ente
print(lista)
[Link](reverse=True) # or”ena em or”em ”e“res“ente
print(lista)
# insert(posição, valor)
[Link](1, 15) # insere o elemento antes ”a posição
print(lista)
print(lista.“ount(20)) # exibe o número ”e vezes ”o elemento
print([Link]”ex(20)) # exibe o ín”i“e ”o elemento
ultimo = [Link]() # remove o último elemento
print("Último elemento: ", ultimo)
print(lista)
[Link]() # inverte a lista (or”em ”os elementos)
print(lista)
temp = lista.“opy()
print("Lista Nova: ", temp)
Teste ”o programa:
=============== RESTART: /Users/pluzzar”i/Desktop/[Link] =========
[10, 20, 30, 40, 50]
[50, 40, 30, 20, 10]
[50, 15, 40, 30, 20, 10]
1
4
Último elemento: 10
[50, 15, 40, 30, 20]
[20, 30, 40, 15, 50]
Lista Nova: [20, 30, 40, 15, 50]
>>>
O programa a seguir mostra a “riação aleatória ”e palpites para a
MegaSena.
# ---------------------------- [Link]
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
[Link]”(ran”[Link]”int(1, 60))
while n != 6:
t = ran”[Link]”int(1, 60)
if not(repeti”o(num, n, t)):
[Link]”(t)
n = n + 1
[Link]() # or”ena a lista
imprime(num)
“h = input("Continua [s/n]?")
Teste ”o Programa:
======== RESTART: /Users/pluzzar”i/Desktop/[Link] =============
Número ”e palpites: 5
3 9 14 17 26 40
2 7 10 12 28 54
9 13 16 30 36 39
2 26 29 43 47 54
5 12 23 31 37 55
Continua [s/n]?s
Número ”e palpites: 6
9 11 23 26 33 34
8 28 31 40 43 50
9 17 22 24 28 47
22 31 33 36 39 45
16 27 39 40 43 46
15 31 36 42 48 60
Continua [s/n]?n
>>>
19.1 Lista ”e Exer“í“ios ”e Vetores (listas)
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’]
b) Es“reva um programa em Python que re“ebe via te“la”o: número ”e
i”a”es e as respe“tivas i”a”es. Armazene to”as as i”a”es em um
vetor (i”a”e). Logo após a entra”a ”e to”as as i”a”es, o programa
”eve re“eber via te“la”o: i”a”e para “onsulta. O programa ”eve
imprimir na tela, o número ”e i”a”es antes ”a i”a”e ”e “onsulta e
o número ”e i”a”es ”epois ”a i”a”e ”e “onsulta (“onforme exemplo
abaixo). Exibir I”a”e não en“ontra”a se a i”a”e ”e “onsulta não
existir.
Teste ”o programa:
Número de idades: 6 <enter>
Idade: 30 <enter>
Idade: 60 <enter>
Idade: 10 <enter>
Idade: 50 <enter>
Idade: 20 <enter>
Idade: 40 <enter>
Idade para consulta: 50 <enter>
Antes: 3
Depois: 2
Continua [S/N]? n <enter>
“) Es“reva um programa em Python que re“ebe via te“la”o um “onjunto
”e números inteiros. Armazene to”os os números inteiros em um vetor
até que o usuário ”igite 0 (zero). Logo após permita ao usuário
“onsultar um número informan”o o seu valor. O programa ”eve
imprimir na tela a posição ”o número no vetor ou ERRO: Número não
en“ontra”o (veja exemplos abaixo):
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>
Observação: O programa termina quan”o o usuário ”igitar 0 (zero).
”) Es“reva um programa em Python que re“ebe via te“la”o "n" “on“eitos
(A, B, C, D e E) até que o usuário ”igite F ou f. Armazene to”os
os “on“eitos em um vetor (“on“eito). Imprima na tela o número ”e
alunos: aprova”os (A, B e C), reprova”os (D) e os infrequentes
(E).
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)
e) Es“reva um programa em Python que re“ebe via te“la”o n nomes.
A entra”a ”os nomes termina quan”o o usuário ”igitar apenas
<enter>. Logo após a entra”a ”e to”os os nomes o programa ”eve
permitir a entra”a via te“la”o ”e uma letra. O programa ”eve
imprimir na tela to”os os nomes que “omeçam “om a letra
espe“ifi“a”a pelo usuário. O programa termina quanto o usuário
”igitar (na”a) na entra”a ”a letra (“onforme exemplos abaixo):
Teste ”o programa:
Nome: Paulo <enter>
Nome: Roberto <enter>
Nome: Renato <enter>
Nome: Pedro <enter>
Nome: Fabio <enter>
Nome: <enter>
Letra: R <enter>
Nome: Roberto
37
Nome: Renato
Letra: P <enter>
Nome: Paulo
Nome: Pedro
Letra: T <enter>
Letra: <enter>
f) Es“reva um programa em Python que re“ebe via te“la”o n nomes
e i”a”es. A entra”a ”os ”a”os termina quan”o o usuário ”igitar 'N'
ou 'n' na pergunta "Continua [S/N]?". Logo após a entra”a ”e to”os
os ”a”os o programa ”eve imprimir na tela to”os os nomes e i”a”es
”es”e o mais velho até o mais novo.
Teste ”o programa:
Nome: Ana <enter>
Idade: 12 <enter>
Continua [S/N]? s <enter>
Nome: Beatriz <enter>
Idade: 13 <enter>
Continua [S/N]? s <enter>
Nome: Carla <enter>
Idade: 14 <enter>
Continua [S/N]? N <enter>
Carla 14
Beatriz 13
Ana 12
20. Questões ”e prova
A seguir são apresenta”as ”iversas questões ”e provas. Resolva-
as, pois elas servirão “omo um simula”o para treino ”a linguagem ”e
programação Python.
1. Escreva um programa em Python que lê um nome qualquer via
teclado. Logo após a entrada, imprima na tela o nome
abreviado e a quantidade de palavras abreviadas, conforme e
exatamente igual aos testes abaixo:
Teste do programa (1):
Nome: Paulo Roberto Gomes Luzzardi <enter>
Abreviatura: Paulo R. G. Luzzardi
Palavras abreviadas: 2
Teste do programa (2):
Nome: adriane maria machado freitas luzzardi <enter>
Abreviatura: adriane m. m. f. luzzardi
Palavras abreviadas: 3
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:
Nome: Debora <enter>
Nome: Carla <enter>
Nome: Beatriz <enter>
Nome: Paulo <enter>
Nome: Renato <enter>
Nome: <enter>
Lista: [‘f’, ‘f’, ‘i’, ‘m’, ‘m’]
2 homens
2 mulheres
1 indeterminados
3. Escreva um programa em Python que recebe “n” nomes via
teclado (até que o usuário digite apenas <enter>). Insira
todos os nomes ORDENADOS em uma Lista de Strings (conforme
exemplo abaixo). Ao final, o programa deve exibir a Lista
contendo os nomes em ordem alfabética.
Teste do programa:
Nome: Debora <enter>
Nome: Carla <enter>
Nome: Eva <enter>
Nome: Beatriz <enter>
Nome: Ana <enter>
Nome: <enter>
Lista: [‘Ana’, ‘Beatriz’, ‘Carla’, ‘Debora’, ‘Eva’]
4. Escreva um programa em Python que lê um nome via teclado.
Logo após a entrada crie uma outra string (invertido) para
inverter e exibir este nome na tela e ainda o número de
letras do nome (sem contar os espaços) e o total de espaços
do nome, conforme exemplo abaixo.
Teste do programa:
Nome: paulo roberto gomes luzzardi <enter>
Invertido: idrazzul semog otrebor oluap
Total de Letras: 25
Total de Espaços: 3
5. Escreva um programa em Python que recebe via teclado:
valor inicial, valor final e intervalo. O programa deve
inserir “n” valores em uma Lista (desde o valor inicial até
o valor final levando em consideração o intervalo entre eles,
conforme exemplos abaixo. Ao final, o programa deve exibir
a Lista criada com estes valores.
39
Teste do programa:
Valor Inicial: 10 <enter>
Valor Final: 70 <enter>
Intervalo: 10 <enter>
Lista: [10, 20, 30, 40, 50, 60, 70]
Valor Inicial: 60 <enter>
Valor Final: 20 <enter>
Intervalo: 5 <enter>
Lista: [60, 55, 50, 45, 40, 35, 30, 25, 20]
6. Escreva um programa em Python que insere “n” números
inteiros em uma Lista (até que o usuário digite zero). Logo
após permita a consulta de um valor e então exiba: (a) o
antecessor e (b) o sucessor ou Antecessor não existe,
Sucessor não existe ou Elemento não Encontrado (exatamente
igual aos exemplos abaixo).
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>
7. Escreva um programa em Python que recebe via teclado:
número de idades e as referidas idades. O programa deve então
imprimir na tela: (a) as idades em ordem crescente; (b) maior
idade; (c) menor idade e (d) a média de idades.
Teste do programa:
Número de Idades: 4 <enter>
Idade: 49 <enter>
Idade: 51 <enter>
Idade: 48 <enter>
Idade: 50 <enter>
Idades Ordenadas: [48, 49, 50, 51]
Maior Idade: 51
Menor Idade: 48
Média de Idades: 49.5
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)
9. Dada a seguinte tela:
Salário Mensal (R$): 900 <enter>
Férias (R$): 450 <enter>
13 Salário (R$): 780 <enter>
Salário Anual (R$): 12030.00
Alíquota do Imposto de Renda: ISENTO
Escreva um programa em Python que recebe via teclado:
Salário mensal, valor das férias e 13o salário. O programa
deve calcular e imprimir na tela: Salário Anual e a Alíquota
do imposto de renda (dada pela tabela abaixo):
Salário Mensal Alíquota do Imposto de Renda
Menor ou igual a 1.058,00 Isento
Maior que 1.058,00 15%
Maior que 2.700,00 27,5%
10. Escreva um programa em Python que lê via teclado, um
número inteiro qualquer (positivo ou negativo). O programa
deve calcular e imprimir na tela: (a) inverso; (b) quadrado;
(c) raiz quadrada e (d) cubo deste número.
Teste do programa:
Número: 4 <enter>
Inverso: 0.25
Quadrado: 16
Raiz Quadrada: 2
Cubo: 64
11. Dado os seguintes exemplos de entrada de dados:
a = 1 <enter> a = 1 <enter>
b = -4 <enter> b = 2 <enter>
c = 2 <enter> c = 3 <enter>
Raízes Reais Raízes Complexas
x1 = 3.41 x1 = -1.00 + 1.41 i
x2 = 0.59 x2 = -1.00 - 1.41 i
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.
a . x2 + b . x + c = 0 # equação de segundo grau
Atenção: Note que as raízes podem ser Reais ou Complexas.
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
12. Escreva um programa em Python que lê um conjunto de 10
pares de dados contendo, cada um, a altura e um código para
masculino (1) e outro para feminino (2) de uma turma de
alunos. Calcular e imprimir na tela: (a) maior e a menor
altura da turma e (b) média de altura das mulheres e dos
homens e (c) total de homens e total de mulheres.
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
13. Es“reva um programa em Python que re“ebe via te“la”o n nomes e
i”a”es. A entra”a ”os ”a”os termina quan”o o usuário ”igitar 'N' ou 'n'
na pergunta "Continua [S/N]?". Logo após a entra”a ”e to”os os ”a”os o
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:
Nome: Beatriz <enter>
I”a”e: 12 <enter>
Continua [S/N]? s <enter>
Nome: Carla <enter>
I”a”e: 13 <enter>
Continua [S/N]? s <enter>
Nome: Debora <enter>
I”a”e: 15 <enter>
Continua [S/N]? s <enter>
Nome: Ana <enter>
I”a”e: 14 <enter>
Continua [S/N]? N <enter>
Ana 14
Beatriz12
Carla 13
Debora 15
14. Escreva um programa em Python que recebe via teclado:
valor e quantidade até que o usuário tecle zero (0) no valor.
O programa deve inserir ambos valores em uma Lista (conforme
exemplo abaixo). Ao final, o programa deve criar e exibir
outra Lista (Lista por extenso) contendo todos os valores
por extenso (conforme exemplo abaixo) e ainda o total de
valores da lista por extenso.
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
21. Curiosi”a”es e testes no Python
A seguir são vistos algumas “uriosi”a”es e testes feitos no
Python:
# --------------------------------- [Link]
# ==================== ini“ialização ”e várias variáveis
43
a, b = 10, 20
print(a, b)
# ==================== None (nulo ou null
x = None # None é nulo ou null
x = 5
print(x)
# ===================== imprimir várias variáveis
x = 10
y = 20
print("x = %” - y = %”\n" %(x, y)) # print formata”o
# ===================== ”efinição ”e uma função em Python
”ef maior(x, y):
if x > y:
return(x)
else:
return(y)
print(maior(3,4))
# ============================== if simples
x = int(input("Digite um Número: "))
if x < 0:
print('Valor Negativo')
print("Número Digita”o: ", x)
# ============================== imprimir uma string
for letter in "python":
print(letter)
# ============================== if ... elif ... else ...
numero = int(input("Digite um Número: "))
if numero > 0:
print("Positivo")
elif numero < 0:
print("Negativo")
else:
print("Zero")
# ================================== ”ata e hora
from ”atetime import ”atetime
”ata = ”[Link]()
44
print(”ata)
print("Data: %02”/%02”/%”" %(”ata.”ay, ”[Link], ”[Link]))
print("Tempo: %02”:%02”:%02”" %(”[Link], ”[Link], ”[Link]“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 [Link].866354
Data: 08/03/2017
Tempo: [Link]
>>>
# ----------------------------------- [Link]
s = ""
for i in range(10):
s = s + str(i) + ", " # forma uma string “om números
print(s)
Teste ”o Programa:
========== RESTART: /Users/pluzzar”i/Do“uments/[Link] ===========
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
>>>
22. Funções es“ritas pelo programa”or em Python
Em Python é possível o programa”or es“rever suas próprias funções,
ou seja, ”ivi”ir os programas em mó”ulos menores (programação mo”ular
ou estrutura”a ou ”ivi”ir para “onquistar). Uma função ”eve ser uma
“aixa preta, que ”epois ”e fun“ionar não pre“isa mais manutenção. Uma
função po”e ou não re“eber argumentos (parâmetros) e retornar ou não um
valor.
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 é:
”ef nome‘função(lista ”e argumentos):
“oman”o1
“oman”o2
return(valor)
“hama”a‘função(argumentos)
Exemplo:
# -------------------------------- Fun“[Link]
import math
”ef Hipotenusa(a, b):
h = [Link](a**2 + b**2)
return(h)
”ef Maior(a, b):
if a >= b:
return(a)
else:
return(b)
”ef Menor(a, b):
if a <= b:
return(a)
else:
return(b)
a = float(input("Digite um valor (a): "))
b = float(input("Digite outro valor (b): "))
print("Hipotenusa: ", Hipotenusa(a,b))
print("Maior: ", Maior(a, b))
print("Menor: ", Menor(a, b))
Teste ”o Programa:
===== RESTART: /Users/pluzzar”i/Do“uments/Fun“[Link] ====
Digite um valor (a): 3 <enter>
Digite outro valor (b): 4 <enter>
Hipotenusa: 5.0
Maior: 4.0
Menor: 3.0
>>>
Exemplo usan”o uma função Raiz, usan”o um “on“eito ”a matemáti“a:
46
”ef Raiz(x):
r = x ** 0.5
return(r)
”ef Hipotenusa(a, b):
h = Raiz(a*a + b*b)
return(h)
a = float(input("Digite um valor (a): "))
b = float(input("Digite outro valor (b): "))
print("Hipotenusa: ", Hipotenusa(a,b))
Teste ”o Programa:
===== RESTART: /Users/pluzzar”i/Do“uments/[Link] ====
Digite um valor (a): 3 <enter>
Digite outro valor (b): 4 <enter>
Hipotenusa: 5.0
Funções re“ursivas em Python:
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.
# ---------------------------------------------- [Link]
# 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)
x = int(input("Digite um valor: "))
fat = Fatorial(x)
print("Fatorial: ", fat)
Teste ”o Programa:
=== RESTART: /Users/pluzzar”i/Do“uments/[Link] =====
Digite um valor: 20 <enter>
Fatorial: 2432902008176640000
>>>
O programa a seguir, “al“ula o valor ”a série ”e Fibona““i:
# ...................... [Link]
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))
n = int(input("Fibonacci de: "))
print("A sequência de Fibonacci é: ", sep='', end='')
for i in range(n):
print(Fibonacci(i), ", ", end='', sep='')
Teste ”o Programa:
Fibona““i ”e: 15 <enter>
A sequên“ia ”e Fibona““i é: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377,
O programa a seguir, imprime na tela números em sequên“ia em or”em
reversa re“ursivamente:
# ..................... [Link]
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
A seguir é visto um exemplo que mostra ”uas funções que permitem
entra”a ”e ”a”os ”e números reais (REAL) ou números inteiros (INTEIRO)
via te“la”o sem erro, ou seja, o usuário po”e “ometer erros ”e ”igitação
que o programa não é aborta”o.
# ---------------------------------------------------------- [Link]
# 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 = [Link]“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)
s = input("Digite um Real: ")
numero = REAL(s)
if numero != -1:
print("Real ”igita”o foi: ", numero)
while numero == -1:
s = input("Digite um Real: ")
numero = REAL(s)
print("Número ”igita”o: ", numero)
s = input("Digite um Inteiro: ")
numero = INTEIRO(s)
if numero != -1:
print("Inteiro ”igita”o foi: ", numero)
while numero == -1:
s = input("Digite um Inteiro: ")
numero = INTEIRO(s)
print("Número ”igita”o: ", numero)
Teste ”o Programa:
===== RESTART: /Users/pluzzar”i/Desktop/Python/Python/[Link] =====
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
>>>
Python permite que o programador defina suas próprias
funções, ou seja, permite que o programador defina pequenos
módulos. Este processo permite “dividir para conquistar”, ou
seja, dividir o programa em problemas menores.
Sintaxe: def nome_módulo(lista de parâmetros):
Return
Existem dois tipos de passagem de parâmetros: por valor
(não altera o valor dos parâmetros) ou por referência (altera
o valor dos parâmetros).
Exemplo de passagem por valor:
# ..................... [Link]
def add(x, y):
return(x+y)
def sub(x, y):
return(x-y)
def mult(x, y):
return(x*y)
def div(x, y):
if y == 0:
return("Erro: Divisão por Zero")
return(x/y)
def calculadora(x, y, operador):
if operador == '+':
valor = add(x,y)
else:
if operador == '-':
valor = sub(x,y)
else:
if operador == '*':
valor = mult(x,y)
else:
if operador == '/':
valor = div(x,y)
else:
return("ERRO: Operador Inválido")
return(valor)
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
Exemplo de passagem por referência:
Passagem de parâmetros por referência, ou seja, quando
os parâmetros são modificados.
Note que interessante o comando return, pois ele contém
duas variáveis.
# ..................... [Link]
def troca(x, y):
temp = x
x = y
y = temp
return(x, y)
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
22.1 Exer“í“ios sobre funções em Python
a) A seguir, implemente a função Hipotenusa que recebe
cateto adjacente (a) e o cateto oposto (b) e retorna o
valor da hipotenusa dado pela seguinte fórmula:
Trecho do programa principal:
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
b) No exercício a seguir, implemente a função Bhaskara,
que recebe três (3) parâmetros: a, b e c e retorna as
duas (2) variáveis: x1 e x2 se existirem, para que o
programa funcione conforme exemplos a seguir:
x1, x2 = -b +- raiz(b2 – 4.a.c) dividido por 2 . a
delta = b2 – 4.a.c
Se delta >= 0:
Raízes_reais
Existe x1 e x2
Senão:
Raizes_complexas
Trecho do programa principal:
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
c)Implemente a função Palavras que recebe uma string e
retorna o número de palavras desta string, conforme
exemplo a seguir:
Trecho do programa principal:
s = input("Nome: ")
n = Palavras(s)
print("Seu nome tem %d palavra(s)" %n)
Teste ”o Programa:
Nome: Paulo Roberto Gomes Luzzar”i <enter>
Seu nome tem 4 palavra(s)
d)Implemente a função Verifica_Data que recebe uma string
no formato “dd/mm/aaaa” e retorna o dia, mês e ano (como
inteiros) contidos na string de entrada, conforme exemplo
a seguir:
Trecho do programa principal:
data = input("Data [dd/mm/aaaa]: ")
dia, mes, ano = Verifica_Data(data)
if dia != -1:
print("Dia: %d" %dia)
if mes != -1:
print("Mês: %d" %mes)
if ano != -1:
print("Ano: %d" %ano)
53
Teste ”o Programa:
Data [””/mm/aaaa]: 25/03/2018 <enter>
Dia: 25
Mês: 3
Ano: 2018
Teste ”o Programa:
Data [””/mm/aaaa]: 25/03/18 <enter>
ERRO: Formato Inváli”o
Teste ”o Programa:
Data [””/mm/aaaa]: 32/03/18 <enter>
ERRO: Dia Inváli”o
e)Implemente a função Verifica_Quadrante que recebe dois
valores inteiros: x e y e retorna o quadrante (1, 2, 3 ou
4) destas coordenadas, conforme exemplo a seguir:
Trecho do programa principal:
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
f)Implemente a função Final_Placa que recebe uma string
no formato “xxx9999” (placa) e devolve o final da placa
com dois dígitos, conforme exemplo a seguir:
Trecho do programa principal:
placa = input("Placa [xxx9999]: ")
final = FinalPlaca(placa)
if final != -1:
print("Final da Placa é: %d" %final)
Teste ”o Programa:
Pla“a [xxx9999]: etq1234 <enter>
Final ”a Pla“a é: 34
Teste ”o Programa:
Pla“a [xxx9999]: etq123 <enter>
ERRO: Formato Inváli”o
54
23. Criação e utilização ”e mó”ulos em Python
Python permite modularizar os programas, ou seja,
permite que o programador defina seus próprios módulos, desta
forma ele utiliza em outros programas. Um módulo nada mais
é do que um conjunto de funções.
Exemplo da definição do módulo [Link].
# ................................ Módulo: [Link]
def troca(x, y):
temp = x
x = y
y = temp
return(x, y)
Exemplo de um programa que utiliza o módulo [Link] e
que tem a função troca.
import Luzzardi
x = 3
y = 4
print("x = ", x)
print("y = ", y)
x, y = [Link](x, y)
print("x = ", x)
print("y = ", y)
Teste ”o Programa:
x = 3
y = 4
x = 4
y = 3
Exemplo da definição do módulo [Link] com mais duas
funções: maior e menor.
# .................... Módulo: [Link]
def troca(x, y):
temp = x
x = y
y = temp
return(x, y)
def maior(x, y):
if x >= y:
return(x)
else:
return(y)
55
def menor(x, y):
if x <= y:
return(x)
else:
return(y)
# .................... [Link]
import Luzzardi
x = 3
y = 4
print("x = ", x)
print("y = ", y)
x, y = [Link](x, y)
print("x = ", x)
print("y = ", y)
print("Maior: ", [Link](x, y))
print("Menor: ", [Link](x,y))
Teste ”o Programa:
x = 3
y = 4
x = 4
y = 3
Maior: 4
Menor: 3
Exemplo da definição do módulo [Link] com mais uma
função: mensagem.
# .................... Módulo: [Link]
def troca(x, y):
temp = x
x = y
y = temp
return(x, y)
def maior(x, y):
if x >= y:
return(x)
else:
return(y)
def menor(x, y):
if x <= y:
return(x)
else:
return(y)
def mensagem(mensagem, valor):
print(mensagem, valor)
Observação: Note que não é ne“essário return no final ”a função, o término ”a
função é pela i”entação.
56
# ....................... [Link]
import Luzzardi
x = 3
y = 4
[Link]("x = ", x)
[Link]("y = ", y)
x, y = [Link](x, y)
[Link]("x = ", x)
[Link]("y = ", y)
[Link]("Maior: ", [Link](x, y))
[Link]("Menor: ", [Link](x, y))
Teste ”o Programa:
x = 3
y = 4
x = 4
y = 3
Maior: 4
Menor: 3
Em Python é possível o programa”or es“rever suas próprias funções
”entro ”e um mó”ulo e inseri-lo em seus programas. O mó”ulo é um arquivo
Python (mo”[Link]) somente “om ”efinições ”e funções. A prin“ípio, este
mó”ulo ”eve estar junto ao programa fonte, ou seja, na mesma lo“alização.
#--------------------------------------------------------- Luzzar”[Link]
# 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 = [Link]“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”[Link]
import Luzzar”i # inserção ”o mó”ulo ”o programa”or
s = input("Digite um Real: ")
numero = luzzar”[Link](s)
if numero != -1:
print("Real ”igita”o foi: ", numero)
while numero == -1:
s = input("Digite um Real: ")
numero = luzzar”[Link](s)
print("Número ”igita”o: ", numero)
s = input("Digite um Inteiro: ")
numero = luzzar”[Link](s)
if numero != -1:
print("Inteiro ”igita”o foi: ", numero)
while numero == -1:
s = input("Digite um Inteiro: ")
numero = luzzar”[Link](s)
print("Número ”igita”o: ", numero)
======= RESTART: /Users/pluzzar”i/Desktop/Python/Python/Mo”[Link] ===
Digite um Real: 1234Paulo
ERRO: Conversão Inváli”a
Digite um Real: 123,45
Número ”igita”o: 123.45
Digite um Inteiro: 123Paulo
ERRO: Conversão Inváli”a
Digite um Inteiro: 123
Número ”igita”o: 123
>>>
24. Tratamento ”e erros (ex“eções)
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:
• Conversão numérica inválida;
• Limite de um vetor (acessar um índice inválido)
• Problemas em arquivos: abertura, criação ou caminho
(path);
• Overflow;
• Erro de entrada e saída (input/output);
• Divisão por zero.
Python pode assumir o controle da execução em caso que
ocorra uma situação de erro não prevista.
Isso é feito através do mecanismo de tratamento de
exceções que ao detectar uma situação de erro, o programa em
Python gera uma exceção.
Se o programa que estiver sendo executado possuir um
tratamento de exceções (try: ... except ...:), ele assume o
controle da execução. Mas se a exceção não tiver um
tratamento associado, o programa é interrompido e é exibida
uma mensagem de erro e o programa é abortado.
Uma exceção é um evento que indica uma condição anormal
que interrompe a execução normal de um programa.
O tratamento de erros no Python cria objetos da classe
error, o tratamento destes erros é feita pela manipulação
destes objetos. Analise o exemplo abaixo, aonde são testados
a conversão de string para inteiro (comando input) e raiz
quadrada de número negativo ([Link]()).
Tipo de Exceção: ValueError
# -------------------------- [Link]
import math
try:
num = int(input("Digite um Número: "))
try:
raiz = [Link](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/[Link] =======
Digite um Número: paulo
Erro: invalid literal for int() with base 10: 'paulo'
>>>
========= RESTART: /Users/pluzzardi/Documents/[Link] ========
Digite um Número: -16
Erro: math domain error
>>>
======= RESTART: /Users/pluzzardi/Documents/[Link] =========
Digite um Número: 16
Raiz Quadrada: 4.0
>>>
O tratamento de erros em Python baseia-se no comando
try. A sintaxe é a seguinte:
try:
comando
comando
except erro:
comando
comando
A execução de um bloco de código, protegido por um
tratamento de erros, é feito colocando o bloco no try, e
para cada erro que se deseja tratar, deve-se colocar uma
cláusula except tipo_de_erro as variável_erro:
Exceções são instâncias de classes geradas quando
houver erro. Estas exceções podem ser captadas e tratadas
para que não ocorra erros em tempo de execução.
Tipo de Exceção: ZeroDivisionError
# ------------------------------- [Link]
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:
======= RESTART: /Users/pluzzardi/Desktop/Python/Python/[Link] ======
Digite um Valor: paulo
Erro: could not convert string to float: 'paulo'
>>>
======= RESTART: /Users/pluzzardi/Desktop/Python/Python/[Link] =====
Digite um Valor: 4
Digite outro Valor: 0
60
Erro: float division by zero
>>>
Tipo de Exceção: NameError e TypeError
# ------------------------------------ [Link]
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:
========== RESTART: /Users/pluzzar”i/Do“uments/[Link] ========
Valor: 5
ERRO: name 'soma' is not ”efine”
ERRO: must be str, not int
>>>
Tipo de Exceção: IndexError
# ------------------------- [Link]
x = [10, 20, 30, 40, 50]
n = 5
try:
i = 1
while i <= n: # erro i <= n, pois o vetor começa em ZERO
print(x[i])
i = i + 1
except IndexError as error:
print("Erro: ", error)
Teste ”o Programa:
========= RESTART: /Users/pluzzardi/Documents/[Link] ========
20
30
40
50
Erro: list index out of range
>>>
Tipo de Exceção: IOError (Arquivos)
# ---------------------------------------- [Link]
nomeArquivo = input("Nome do Arquivo: ")
try:
61
file = open(nomeArquivo, 'r')
except IOError as error:
print("Erro: ", error)
else:
print("Nome do Arquivo: ", nomeArquivo)
[Link]()
Teste ”o Programa:
========== RESTART: /Users/pluzzardi/Documents/[Link] ========
Nome do Arquivo: [Link]
Nome do Arquivo: [Link]
>>>
========== RESTART: /Users/pluzzardi/Documents/[Link] ==========
Nome do Arquivo: [Link]
Erro: [Errno 2] No such file or directory: '[Link]'
>>>
25. Ban“o ”e Da”os em Python (SQLite)
A seguir são dados alguns exemplos de programas com
Banco de Dados (BD) em Python (SQLiteCriaBD, SQLiteLeBD,
SQLiteConsultaBD, SQLiteRemoveBD e SQLiteAppendBD). É criado
um banco de dados de uma agenda contendo id (identificador),
nome e fone utilizando o módulo SQLite3.
SQLiteCriaBD: Cria um banco de dados.
SQLiteLeBD: Faz a leitura dos registros do BD criado.
SQLiteConsultaBD: Consulta um registro através do id.
SQLiteRemoveBD: Remove um registro através do id.
SQLiteAppendBD: Anexa novos registros ao final do BD.
O programa a seguir cria um BD ([Link]) com uma
tabela “agenda” com os seguintes campos: id, nome e fone.
# ------------------------ [Link]
import sqlite3
nomeBD = input("Nome ”o Ban“o ”e Da”os: ")
“one“tor = sqlite3.“onne“t(nomeBD)
“ursor = “one“tor.“ursor()
“[Link]“ute('''
“reate table agen”a (
i” integer, # i”entifi“a”or
nome text,
fone text)
''')
i” = 1
nome = "Pessoa"
while nome != "":
print("i”: ", i”)
nome = input("Nome: ")
if nome != "":
fone = input("Fone: ")
62
“[Link]“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:
====== RESTART: /Users/pluzzar”i/Desktop/Python/[Link] =====
Nome ”o Ban“o ”e Da”os: Agen”a.b”
i”: 1
Nome: Paulo Roberto
Fone: 99164-8037
i”: 2
Nome: A”riane Maria
Fone: 99145-6789
i”: 3
Nome: Paola Maria
Fone: 98478-7856
i”: 4
Nome:
Ban“o ”e Da”os foi CRIADO: Agen”a.b”
>>>
O programa a seguir faz uma leitura dos campos do banco
de dados ([Link]) gerado pelo programa anterior.
# -------------------------- [Link]
import sqlite3 # as lite
import os
nomeBD = input("Nome ”o Ban“o ”e Da”os: ")
try: # tratamento ”e ex“eção
“one“tor = sqlite3.“onne“t(nomeBD)
“ursor = “one“tor.“ursor()
numRegistros = 0
“[Link]“ute("SELECT * FROM agen”a")
result = “[Link]“hall()
for “ontato in result:
print("i”: %”\nNome: %s \nFone: %s" % (“ontato))
numRegistros += 1
print(numRegistros, "registro(s)")
“ursor.“lose()
“one“tor.“lose()
ex“ept [Link] as error: # exe“uta quan”o o“orre um erro
print("Erro: BD não en“ontra”o")
print("Erro: ", error)
[Link](nomeBD) # remove arquivo “ria”o
63
Teste ”o Programa:
====== RESTART: /Users/pluzzar”i/Desktop/Python/[Link] =======
Nome ”o Ban“o ”e Da”os: Luzzar”i.b”
i”: 1
Nome: Paulo Roberto
Fone: 99164-8037
i”: 2
Nome: A”riane Maria
Fone: 99156-4567
i”: 3
Nome: Paola Maria
Fone: 98434-1234
3 registro(s)
>>>
O programa a seguir faz uma consulta dos campos do banco
de dados ([Link]) gerados pelo programa anterior através
da leitura via teclado do identificador (id).
# ------------------------ [Link]
import sqlite3, os
nomeBD = input("Nome ”o Ban“o ”e Da”os: ")
try:
“one“tor = sqlite3.“onne“t(nomeBD)
i” = '1'
“ursor = “one“tor.“ursor()
while i” != '0':
i” = input('Digite o ín”i“e [0 - Sair]: ')
if i” != '0':
“[Link]“ute("SELECT * FROM agen”a WHERE i”=?",(i”))
result = “[Link]“hall()
a“hei = False
for “ontato in result:
print("i”: %”\nNome: %s \nFone: %s" % (“ontato))
a“hei = True
if not a“hei:
print("Erro: Contato não En“ontra”o")
“ursor.“lose()
“one“tor.“lose()
ex“ept [Link] as error:
print("ERRO: BD não en“ontra”o")
print("Erro: ", error)
[Link](nomeBD) # remove arquivo “ria”o
Teste ”o Programa:
=== RESTART: /Users/pluzzar”i/Desktop/Python/[Link] ====
Nome ”o Ban“o ”e Da”os: Agen”a.b”
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
>>>
O programa a seguir permite remover os campos do banco
de dados ([Link]) gerados pelo programa anterior através
da leitura via teclado do identificador (id).
# ------------------------ [Link]
import sqlite3, os
nomeBD = input("Nome ”o Ban“o ”e Da”os: ")
try:
“one“tor = sqlite3.“onne“t(nomeBD)
“ursor = “one“tor.“ursor()
i” = '1'
while i” != '0':
i” = input("Digite o ín”i“e [0 - Sair]: ")
if i” != '0':
“[Link]“ute("DELETE FROM agen”a WHERE i”=?",(i”))
“one“tor.“ommit()
print("Okay, Contato REMOVIDO")
“ursor.“lose()
“one“tor.“lose()
ex“ept [Link] as error:
print("Erro: BD não en“ontra”o")
print("Erro: ", error)
[Link](nomeBD)
Teste ”o Programa:
===== RESTART: /Users/pluzzar”i/Desktop/Python/[Link] ====
Nome ”o Ban“o ”e Da”os: Agen”a.b”
Digite o ín”i“e: 3
Digite o ín”i“e: 0
Okay, Contato REMOVIDO
>>>
======= RESTART: /Users/pluzzar”i/Desktop/Python/[Link] =====
Nome ”o Ban“o ”e Da”os: Agen”a.b”
i”: 1
Nome: Paulo Roberto
65
Fone: 99164-8037
i”: 2
Nome: A”riane Maria
Fone: 99156-4567
>>>
# ------------------------ SQLiteAppen”[Link]
import sqlite3, os
nomeBD = input("Nome ”o Ban“o ”e Da”os: ")
try:
“one“tor = sqlite3.“onne“t(nomeBD)
“ursor = “one“tor.“ursor()
i” = 1
“[Link]“ute("SELECT * FROM agen”a")
result = “[Link]“hall()
for “ontato in result:
i” += 1
nome = "Pessoa"
while nome != "":
print("i”: ", i”)
nome = input("Nome: ")
if nome != "":
fone = input("Fone: ")
“[Link]“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 [Link] as error:
print("Erro: BD não en“ontra”o")
print("Erro: ", error)
[Link](nomeBD)
Teste ”o Programa:
==== RESTART: /Users/pluzzar”i/Desktop/Python/SQLiteAppen”[Link] =====
Nome ”o Ban“o ”e Da”os: Agen”a.b”
i”: 4
Nome: Renato Luis
Fone: 99134-2345
i”: 5
Nome: Ca“aio
Fone: 99891-3456
i”: 6
Nome:
>>>
66
Exe“ução ”o programa [Link]
======= RESTART: /Users/pluzzar”i/Desktop/Python/[Link] =====
Nome ”o Ban“o ”e Da”os: Agen”a.b”
i”: 1
Nome: Paulo Roberto
Fone: 99164-8037
i”: 2
Nome: A”riane Maria
Fone: 99156-4567
i”: 3
Nome: Paola Maria
Fone: 98434-1234
i”: 4
Nome: Renato Luis
Fone: 99134-2345
i”: 5
Nome: Ca“aio
Fone: 99891-3456
5 registro(s)
>>>
26. Sistema ”e Arquivos em Python
Python permite operar com arquivos binários e texto
através de algumas funções, tais como: open, write, read,
close, etc.
Um arquivo texto é formado de linhas de caracteres
terminados com um ‘\n’. Conforme exemplo abaixo: [Link].
Sintaxe do comando open: file = open(nomeArquivo, modo)
Modo: ‘r’ read (leitura)
‘w’ write (escrita)
‘a’ append (anexar no fim)
‘r+’ read e write (leitura e escrita)
‘b’ binary (binário)
Comandos para operar arquivos:
read(): Permite ler o conteúdo do arquivo.
readline(): Permite ler uma única linha do arquivo.
seek(colunas, posição): Posiciona o arquivo no ponto do
arquivo: Posição 0 é o início do arquivo, 1 é a posição do
arquivo atual e 2 é o final do arquivo.
write(string): Grava o conteúdo da string para o arquivo,
retornando o número de caracteres escritos.
close(): Fecha o arquivo aberto.
Arquivo texto: [Link]
67
1;Paulo Roberto;99164-8037;
2;Adriane Maria;99156-2345;
3;Paola Freitas;98678-1234;
# -------------------------------------- [Link]
nomeFile = input("Nome do Arquivo: ")
try:
file = open(nomeFile, "r")
for linha in file:
campos = [Link](';')
print(campos)
[Link]()
except IOError as error:
print("ERRO: ", error)
Teste ”o Programa:
======== RESTART: /Users/pluzzardi/Documents/[Link] ======
Nome do Arquivo: [Link]
['1', 'Paulo Roberto', '99164-8037', '\n']
['2', 'Adriane Maria', '99156-2345', '\n']
['3', 'Paola Freitas', '98678-1234', '\n']
>>>
# ------------------------------- [Link]
nomeFile = input("Nome do Arquivo: ")
try:
file = open(nomeFile, "r")
for linha in file:
campos = [Link](';')
print("id: ", campos[0])
print("Nome: ", campos[1])
print("Fone: ", campos[2])
[Link]()
except IOError as error:
print("ERRO: ", error)
Teste ”o Programa:
====== RESTART: /Users/pluzzardi/Documents/[Link] =====
Nome do Arquivo: [Link]
id: 1
Nome: Paulo Roberto
Fone: 99164-8037
id: 2
Nome: Adriane Maria
Fone: 99156-2345
id: 3
Nome: Paola Freitas
Fone: 98678-1234
>>>
Teste ”o Programa: (Arquivo texto não existe)
====== RESTART: /Users/pluzzardi/Documents/[Link] ====
Nome do Arquivo: [Link]
ERRO: [Errno 2] No such file or directory: '[Link]'
>>>
68
# -------------------------------------- [Link]
nomeFile = input("Nome do Arquivo: ")
try:
file = open(nomeFile, 'r')
id = 1
for linha in file:
id = id + 1 # contar o número de registros
[Link]()
file = open(nomeFile,'a') # anexando no fim do arquivo
nome = "Pessoa"
while nome != "":
print("id: ", id)
nome = input("Nome: ")
if nome != "":
fone = input("Fone: ")
linha = str(id) + ";" + nome + ";" + fone + ";" + "\n"
[Link](linha)
id = id + 1
[Link]()
except IOError as error:
print("ERRO: ", error)
Teste ”o Programa:
======== RESTART: /Users/pluzzardi/Documents/[Link] ======
Nome do Arquivo: [Link]
id: 3
Nome: Renato Luis
Fone: 98778-3456
Gravou dados
id: 4
Nome: Francisco Carlos
Fone: 98178-5678
Gravou dados
id: 5
Nome:
>>>
Listagem ”o Arquivo altera”o: Da”[Link]
['1', 'Paulo Roberto', '99164-8037', '\n']
['2', 'Adriane Maria', '99156-2345', '\n']
['3', 'Paola Freitas', '98678-1234', '\n']
[‘4’;’Renato Luis’;’98778-3456’;’\n’]
[‘5’;’Francisco Carlos’;’98178-5678’;’\n’]
# ------------------------------- [Link]
nomeFile = input("Nome do Arquivo: ")
try:
file = open(nomeFile, 'w') # cria novo arquivo texto
id = 1 # cuidado, apaga se existir
nome = "Pessoa"
while nome != "":
print("id: ", id)
nome = input("Nome: ")
if nome != "":
69
fone = input("Fone: ")
linha = str(id) + ";" + nome + ";" + fone + ";" + "\n"
[Link](linha)
id = id + 1
[Link]()
except IOError as error:
print("ERRO: ", error)
Teste ”o Programa:
======= RESTART: /Users/pluzzardi/Documents/[Link] ======
Nome do Arquivo: [Link]
id: 1
Nome: Paulo Roberto
Fone: 99164-8037
id: 2
Nome: Renato Luis
Fone: 98778-3456
id: 3
Nome: Francisco Carlos
Fone: 98178-5678
id: 4
Nome:
>>>
Listagem ”o Arquivo: [Link]
1;Paulo Roberto;99164-8037;
2;Renato Luis; 98778-3456;
3;Francisco Carlos; 98178-5678;
# ------------------------------- [Link]
nomeFile = input("Nome do Arquivo: ")
try:
file = open(nomeFile, "r")
posicao = 1
while posicao != 0:
posicao = int(input("Posição [0 - Sair]: "))
[Link](0, 0) # reinicializa o cursor do arquivo no início
imprimiu = False
for linha in file:
campos = [Link](';')
if campos[0] == str(posicao):
imprimiu = True
print("id: ", campos[0])
print("Nome: ", campos[1])
print("Fone: ", campos[2])
if not imprimiu:
print("Erro: Registro não encontrado")
[Link]()
except IOError as error:
print("ERRO: ", error)
Teste ”o Programa:
RESTART:
/Users/pluzzardi/Desktop/Python/Python/File/[Link]
Nome do Arquivo: [Link]
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
>>>
# ------------------------------------ [Link]
nomeFile = input("Nome do Arquivo: ")
try:
file = open(nomeFile, "r")
nome = "Pessoa"
while nome != "":
nome = input("Nome: ")
[Link](0, 0)
imprimiu = False
for linha in file:
campos = [Link](';')
if nome == campos[1]:
imprimiu = True
print("id: ", campos[0])
print("Nome: ", campos[1])
print("Fone: ", campos[2])
if not imprimiu:
print("Erro: Nome não encontrado")
[Link]()
except IOError as error:
print("ERRO: ", error)
Teste ”o Programa:
RESTART:
/Users/pluzzardi/Desktop/Python/Python/File/[Link]
Nome do Arquivo: [Link]
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
>>>
29. Arquivos Binários em Python
Como foi visto no capítulo 26, Python permite operar com
arquivos binários e textos através de algumas funções, tais
como: open, write, read, close, etc.
Enquanto um arquivo texto é formado de linhas de
caracteres terminados com um ‘\n’, um arquivo binário possui
campos de vários tipos, tais como: inteiro, real, string,
etc.
pickle é um módulo do Python que permite a serialização de
objetos, ou seja, transforma objetos em sequências de bytes.
Outros módulos similares podem ser utilizados, tais como:
Marshal, Struct (como na linguagem C), JSON e Shelve.
Exemplo de um programa em Python que grava em um arquivo
binário: [Link] os seguintes campos: nome (string),
telefone (string) e idade (inteiro).
# ........................ [Link]
import pickle
nomeArquivo = input("Nome do Arquivo Binário: ")
try:
file = open(nomeArquivo, "rb")
[Link]()
ch = input("Atenção: Arquivo já existe, sobre-escrever [s/n]")
if ch == "S" or ch == "s":
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: "))
[Link](n, file)
for i in range(n):
nome = input("Nome: ")
[Link](nome, file)
telefone = input("Telefone: ")
[Link](telefone, file)
idade = int(input("Idade: "))
[Link](idade, file)
[Link]()
except IOError as error:
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: "))
[Link](n, file)
for i in range(n):
nome = input("Nome: ")
[Link](nome, file)
telefone = input("Telefone: ")
[Link](telefone, file)
idade = int(input("Idade: "))
[Link](idade, file)
[Link]()
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:
Nome ”o Arquivo Binário: [Link] <enter>
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>
# ........................ [Link]
import pickle
nomeArquivo = input("Nome do Arquivo Binário: ")
try:
file = open(nomeArquivo, "rb")
n = [Link](file)
print("Número de Elementos: ", n)
for i in range(n):
nome = [Link](file)
print("Nome: ", nome)
telefone = [Link](file)
print("Telefone: ", telefone)
idade = [Link](file)
print("Idade: ", idade)
[Link]()
except IOError as error:
print('Atenção: Arquivo não Existe', nomeArquivo)
print(error)
Teste ”o Programa:
Nome ”o Arquivo Binário: [Link] <enter>
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>
Exemplo de um programa em Python que grava em um arquivo
binário: [Link] uma lista (vetor) contendo os seguintes
campos: nome (string), telefone (string) e idade (inteiro).
# ........................... GravaBinario
import pickle
nomeArquivo = input("Nome do Arquivo Binário: ")
lista = ["Paulo Roberto", "99164-8037", 56,
"Adriane Maria", "99156-3334", 48,
"Paola Freitas", "99181-3456", 19]
n = len(lista)
print("n = ", n)
try:
file = open(nomeArquivo, "wb")
except IOError as error:
print("Atenção: Impossível criar o arquivo")
[Link](lista, file)
[Link]()
print("Okay, Arquivo %s criado" %nomeArquivo)
Teste ”o Programa:
Nome ”o Arquivo Binário: ”a”[Link] <enter>
n = 9
Okay, Arquivo ”a”[Link] “ria”o
# ............................. 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 = [Link](file)
print("Lista: ", lista)
[Link]()
Teste ”o Programa:
Nome ”o Arquivo Binário: ”a”[Link]
74
Lista: ['Paulo Roberto', '99164-8037', 56, 'A”riane Maria', '99156-3334', 48, 'Paola
Freitas', '99181-3456', 19]
Arquivo Texto: [Link]
Aba“ate
Ameixa
Banana
Bergamota
Anana
Morango
Caqui
Uva
Laranja
Lima
Goiaba
Damas“o
Tangerina
# ........................... [Link]
nomeArquivo = input("Nome do Arquivo Texto: ")
linha = []
try:
file = open(nomeArquivo, "r")
for linha in file:
linha = [Link]()
print(linha)
[Link]()
except IOError as error:
print("Atenção: Arquivo Inexistente")
Teste ”o Programa:
Nome ”o Arquivo Texto: [Link] <enter>
Aba“ate
Ameixa
Banana
Bergamota
Anana
Morango
Caqui
Uva
Laranja
Lima
Goiaba
Damas“o
Tangerina
# .............................. [Link]
import pickle
nomeArquivoTexto = input("Nome do Arquivo Texto: ")
nomeArquivoBinario = input("Nome do Arquivo Binário: ")
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 = [Link]()
[Link](linha, fileBinario)
print(linha)
[Link]()
[Link]()
except IOError as error:
print("Atenção: Arquivo texto inexistente")
Teste ”o Programa:
Nome ”o Arquivo Texto: [Link] <enter>
Nome ”o Arquivo Binário: [Link] <enter>
Aba“ate
Ameixa
Banana
Bergamota
Anana
Morango
Caqui
Uva
Laranja
Lima
Goiaba
Damas“o
Tangerina
# ........................ [Link]
import pickle
nomeArquivo = input("Nome do Arquivo Binário: ")
try:
file = open(nomeArquivo, "rb")
try:
while True:
linha = [Link](file)
76
print(linha)
[Link]()
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:
Nome ”o Arquivo Binário: [Link] <enter>
Aba“ate
Banana
Anana
Caqui
Laranja
Goiaba
Tangerina
Atenção: Final ”o Arquivo
Atenção: Função que verifi“a se um arquivo já existe:
def ArquivoExiste(nomeArquivo):
try:
file = open(nomeArquivo, "r")
except IOError: # se não precisar da variável error não precisa
return False # definir
[Link]()
return True
# .............................. [Link]
import pickle
def ArquivoExiste(nomeArquivo):
try:
file = open(nomeArquivo, "r")
except IOError:
return False
[Link]()
return True
nomeArquivo = input("Nome Arquivo Binário: ")
if not(ArquivoExiste(nomeArquivo)):
try:
77
file = open(nomeArquivo, "wb")
ch = "S"
while ch == "S" or ch == "s":
nome = input("Nome: ")
[Link](nome, file)
idade = int(input("Idade: "))
[Link](idade, file)
ch = input("Continua [s/n]? ")
[Link]()
except IOError as error:
print("Atenção: Impossível CRIAR o Arquivo")
Teste ”o Programa:
Nome Arquivo Binário: Da”[Link] <enter>
Nome: Paulo Roberto
I”a”e: 56
Continua [s/n]? s
Nome: A”riane Maria
I”a”e: 48
Continua [s/n]? s
Nome: Paola Freitas
I”a”e: 19
Continua [s/n]? s
Nome: Julia Helena
I”a”e: 58
Continua [s/n]? s
Nome: Ana Maria
I”a”e: 59
Continua [s/n]? n
30. So“kets em Python
Socket é um mecanismo para comunicação de programas em
dois sentidos que funcionam em uma rede computadores.
O cliente solicita que uma conexão seja estabelecida
com o servidor através de um Socket.
Quando o servidor aceita o pedido de conexão, ele cria
um novo socket por uma porta diferente. No cliente, outro
socket é criado e então é utilizado para a comunicação com
este servidor.
Programas que utilizam sockets trabalham sempre em
formato cliente-servidor, e para isto é necessário criar um
programa servidor, que “escutará” as conexões em uma porta,
e o programa cliente, que faz a conexão com algum socket
disponível em alguma porta.
Os principais comandos para uso de sockets em Python
são os seguintes:
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.
bind((hostname,port)): conecta o socket ao endereço da
porta.
close(): fecha o socket.
connect((hostname,port)): conecta-se com outro socket, que
pode ser externo ou local. Para conexões locais utiliza-se
localhost ou [Link]
getpeername(): retorna o endereço IP e a porta na qual o
socket está conectado.
getsocketname(): retorna o endereço IP da porta do próprio
socket.
listen(max_connections): inicia ouvindo a porta e fica
esperando outras conexões. O sistema operacional recusa
novas conexões quando ela atingir o valor máximo de conexões.
send(string): Envia uma string de dados pelo socket.
Para a criação de programas que utilizem sockets no
lado do servidor é necessário principalmente o uso dos
seguintes comandos:
serverSocket=[Link](socket.AF_INET,socket.SOCK_STREA
M): para definir o protocolo a ser utilizado.
[Link]((host,porta)): iniciando a escuta de
conexões no lado do servidor.
[Link](1): realiza o controle de conexões
simultâneas que o servidor suportará.
[Link](dados): para enviar dados.
[Link](1024): para receber dados controlando o
tamanho do buffer.
Para a criação de programas que utilizem sockets no
lado do cliente é necessário principalmente o uso dos
seguintes comandos:
[Link](socket.AF_INET,socket.SOCK_STREAM):
para definir o protocolo a ser utilizado.
79
[Link]((servidor,porta)): para criar o objeto
de conexão que irá conectar em um servidor.
[Link](dados) : para enviar dados.
[Link](1024): para receber dados controlando o
tamanho do buffer.
Exemplo da criação de uma conexão do lado do Cliente:
# ...................... [Link]
import socket
# define host e porta
HOST = "[Link]"
PORTA = 5000
# define o protocolo
cliente = [Link](socket.AF_INET, socket.SOCK_STREAM)
# tenta conectar ao servidor
[Link]((HOST, PORTA))
# envia mensagem
[Link]("Olá!! Boa Noite!".encode("utf-8"))
print("Mensagem Enviada")
# fecha a conexão
[Link]()
Exemplo da “escuta” de uma conexão do lado do Servidor:
# ..................... [Link]
import socket
# define host e porta
HOST = "[Link]"
PORTA = 5000
# define protocolo
servidor = [Link](socket.AF_INET, socket.SOCK_STREAM)
print("Na escuta ...")
# inicia a escuta do lado servidor
[Link]((HOST, PORTA))
# define o número máximo de conexões na fila
[Link](1)
# para aceitar novas conexões
conexao, endereco = [Link]()
80
# recebe os dados enviados pelo cliente
dados = [Link](1024)
# exibe os dados recebidos
print("Dados Recebidos: ", [Link]("utf-8"))
print("Conectado por: ", endereco)
# fecha a conexão
[Link]()
Observação: Tem que se executar os dois programas ao mesmo
tempo, isto pode ser feito via abertura de dois terminais,
pois um programa “conversa” com o outro.
Teste do Programa:
81
82
31. Threa”s em Python
Forma de um processo dividir-se em duas ou mais
tarefas que podem ser executadas concorrentemente, ou
seja, pode ser visto como um fluxo de controle
sequencial isolado dentro do programa.
Uma thread tem começo, fim e uma sequência de
comandos. Uma thread em Python não é um programa, pois não
executa sozinha, ela executa dentro de um programa.
Threads permitem que um programa simples possa
executar várias tarefas diferentes ao mesmo tempo,
independentemente uma das outras. Programas multithreaded
são programas que contém várias threads, executando
tarefas distintas simultaneamente.
32. Mó”ulo tkinter para GUI em Python
Existe um módulo não-nativo no Python que permite
desenvolver interfaces gráficas (GUI - Graphics User
Interface).
Este módulo se chama “tkinter” (tk interface ou
toolkit interface). Onde tk vem de toolkit, ou seja, um
conjunto de ferramentas gráficas.
Ele é baseado em tcl/tk. Tcl é Tool Command Language
(Linguagem de Comandos de Ferramentas), ou seja, uma
linguagem de programação para scripts.
Link para vídeo aulas sobre o módulo “tkinter”:
[Link]
Elementos de interface (widgets) correspondem a
objetos de diversas classes. São alguns exemplos de
widgets:
• Frame (área retangular)
• Button (botão)
• Label (rótulo)
• Text (caixa de texto)
• Canvas (caixa de desenho)
83
Exemplo de como criar uma janela gráfica na aplicação
utilizando o módulo tkinter:
# ........................ Tk_1.py
import tkinter as tk # renomear um módulo
janela = [Link]()
[Link]()
No programa acima é necessário importar o módulo
“tkinter”. A chamada janela = [Link]() cria e exibe uma
janela gráfica na aplicação. A instrução
[Link]() faz com que a janela fique ativa, até
que o usuário resolva fechar a janela no “x” (entrar em
modo de tratamento de eventos).
Resultado do programa:
No programa abaixo é possível
colocar o nome na janela, neste caso: “Calculadora”,
através da instrução [Link](“Calculadora”).
# .............................. Tk_2.py
import tkinter as tk
janela = [Link]()
[Link]("Calculadora")
[Link]()
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 = [Link]()
[Link]("Chat")
janela["bg"] = "blue" # bg é background
[Link]()
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 [Link](“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 = [Link]()
[Link]("Chat")
janela["background"] = "blue" # bg ou background
[Link]("300x300+200+100")
#LarguraxAltura+distânciaEsquerda+distância_Topo, alguns são opcionais
[Link]()
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 [Link](x=10,
y=yc).
Label é um objeto tipo rótulo.
Place é responsável pela posição de onde a mensagem
vai ser colocada, ou seja, posição “x” e “y” em relação
a origem (0,0) [left, top].
# ............................ Tk_5.py
from tkinter import *
janela = Tk()
[Link]("Chat")
xMax = 300
yMax = 300
left = 100
top = 200
s = str(xMax) + "x" + str(yMax) + "+" + str(left) + "+" + str(top)
[Link](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])
[Link](x=10, y=yc)
yc = yc + 20
[Link]()
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 = [Link](janela, text=" Aperte ", command=
Mensagem) [insere o botão na janela da aplicação] e
[Link]() [exibe o botão].
# ........................... Tk_6.py
import tkinter as tk
def Mensagem():
print("Olá, tudo bem?")
janela = [Link]()
[Link]("Tkinter")
[Link]("300x300+200+100")
botao = [Link](janela, text=" Aperte ", command=Mensagem)
[Link]()
[Link]()
Resultado do programa:
Note que quando o botão foi pressionado, foi impressa a
mensagem “Olá, tudo bem” na tela em modo texto (ou
terminal).
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)
[Link](x=100, y=200)
janela = [Link]()
[Link]("Tkinter")
[Link]("300x300+200+100")
botao = [Link](janela, text=" Aperte ", command=Mensagem)
[Link]()
[Link]()
O programa a seguir contém uma caixa de diálogo que
permite a entrada de dados reais e exibe um somador
(acumulador).
89
# ........................ Tk_8.py
import tkinter as tk
from tkinter import *
def Soma(x):
[Link]([Link]() + [Link]())
def Mensagem():
mensagem = "Digite um valor e pressione <Enter>"
lb = Label(janela, text=mensagem)
[Link](x=25, y=200)
janela = [Link]()
[Link]("Acumulador")
janela["background"] = "lightblue"
[Link]("300x300+200+100")
Mensagem()
somador = DoubleVar(janela)
valor = DoubleVar(janela)
lSomador = Label(textvar=somador)
eValor = Entry(textvar=valor)
[Link]("<Return>", Soma)
[Link]()
[Link]()
[Link]()
90
No programa acima, a caixa de diálogo foi
realizada através da instrução: eValor =
Entry(textvar=valor).
O programa a seguir, mostra como encerrar uma
aplicação através de um botão (Button) e uma chamada de
um comando do Sistema Operacional: exit, por isto o
import sys (from sys import exit).
# .............................. Tk_9.py
from sys import exit
import tkinter as tk
from tkinter import *
janela = [Link]()
[Link]("Tkinter")
janela["background"] = "lightblue"
[Link]("300x300+200+100")
Button(janela, text=' Quit ', command=exit).pack()
[Link]()
O programa a seguir, mostra como configurar um
rótulo, ou seja, selecionar a fonte, background , borda
e etc através da instrução
[Link](relief="ridge", font="Arial 24 bold",
border=5, background="yellow").
91
# ............................. Tk_10.py
from tkinter import *
janela = Tk()
[Link]("Rótulo")
[Link]("400x100")
frame = Frame() ; [Link]()
rotulo = Label(frame, text=" Configurando um Rótulo ",
foreground="blue")
[Link]()
[Link](relief="ridge", font="Arial 24 bold", border=5,
background="yellow")
[Link]()
O programa a seguir exibe a posição x e y do cursor
do mouse.
# ........................ Tk_11.py
from tkinter import *
def clique(e):
txt = "Mouse: %d x %d" %(e.x,e.y)
[Link](text=txt)
janela = Tk()
[Link]("Mouse")
r = Label()
[Link](expand=True, fill="both")
[Link]("200x200")
[Link]("<Button-1>", clique)
mainloop()
92
O programa a seguir exibe uma listbox.
# ............................ Tk_12.py
from tkinter import *
root = Tk()
listbox = Listbox(root)
[Link]()
for i in range(10):
[Link](END, " -> "+str(i))
mainloop()
O seguinte programa mostra como exibir na tela
gráfica, texto colorido, configurando a cor da frente
(foreground = fg) e a cor de fundo (background = bg),
através da instrução: rot = Label(janela, text="Red",
bg="red", fg="white").
# ............................ Tk_13.py
from tkinter import *
janela = Tk()
[Link]("Cores")
[Link]("300x300+200+100")
rot = Label(janela, text="Red", bg="red", fg="white")
[Link](fill=X)
rot = Label(janela, text="Green", bg="green", fg="black")
[Link](fill=X)
rot = Label(janela, text="Blue", bg="blue", fg="white")
[Link](fill=X)
[Link]()
93
94