Introdução - Python
Introdução - Python
PROGRAMAÇÃO (PYTHON)
2024.1
G.E.Vieira 2
• Programming languages used in most popular websites
https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
https://techvidvan.com/tutorials/best-programming-languages-for-android-app-
development/
G.E.Vieira 3
"Introdução a Linguagens de Programação:
Python"
• Conceitos fundamentais
• Tipos primitivos de dados
• Memória, constantes e variáveis
• Operadores aritméticos, lógicos e relacionais
• Comandos básicos de atribuição, entrada e saída
• Funções primitivas
• Estruturas condicionais
• Estruturas de repetição
• Noções de programação orientada a objetos (POO)
• Integração com banco de dados
• Integração com planilhas eletrônicas
G.E.Vieira
4
Bibliografia Recomendada
Livro
G.E.Vieira
5
Implementação de Algoritmos(*)
• Conceitos Fundamentais
• Tipos básicos de dados
• Memória, constantes e variáveis
• Operadores Aritméticos, Lógicos e Relacionais
• Comandos básicos de atribuição, entrada e saída
• Funções primitivas
• Estruturas Condicionais
• Estruturas de Repetição
Fonte principal: Diego Oliveira
(IFRN)(http://docente.ifrn.edu.br/diegooliveira/disciplinas/algoritmos-acessivel-
para-leitores-de-tela/) G.E.Vieira
6
Conceitos Fundamentais
• Um Algoritmo serve para representar uma solução
para um problema
• É uma linguagem intermediária entre a humana e as
de programação
• Pode ser representado como:
– Narrativa
– Fluxograma
– Pseudocódigo
G.E.Vieira
7
Conceitos Fundamentais
• Narrativa: nesta forma de representação, os algoritmos
são expressos em linguagem natural (é o “passo a
passo”)
G.E.Vieira
9
Conceitos Fundamentais
• Elementos do fluxograma:
– Início e fim de programa
• Representados por uma elipse
– Operação de Atribuição
• Representada por um retângulo
– Operação de Entrada de Dados
• Representada por um retangulo com un dos cantos
dobrados (como em uma folha de papel)
– Decisão
• Representada por um losango
– Operação de Saída
• Representada por um retângulo com um dos lados
recordado de maneira ondulada
G.E.Vieira
10
Conceitos Fundamentais
• Exemplo de fluxograma:
– Início (dentro de uma elipse)
– Calcular média de duas notas (dentro de um retângulo
com um dos cantos dobrados)
– A média para passar é 7 (dentro de um retângulo)
– Indicar “Aprovado” ou
“Reprovado” como saída (verifica se a média é maior ou igual
a 7 dentro de um losango)
– Se a média for maior ou igual a 7 imprime “Aprovado”
dentro de um retângulo com um dos lados recortado
de maneira ondulada
– Se a média for menor do que 7 imprime “Reprovado”
dentro de um retângulo com um dos lados recortado
de maneira ondulada
– Fim de programa (dentro de uma elipse)
G.E.Vieira
11
Conceitos Fundamentais
G.E.Vieira
12
Conceitos Fundamentais
G.E.Vieira 14
• Passo1: Ler as notas N1, N2, N3
• Passo2: Calcular média ponderada: m =
0.5N1+0.3N2+0.2N3
• Passo3: Se m >= 6: Escrever "Aprovado"
Caso contrário ("se não"):
Se m >= 3: Escrever "Em rec."
Caso contrário: Escrever "Reprovado"
G.E.Vieira 15
Tipos Básicos de Dados
• Dados Numéricos Inteiros
– São os números positivos e negativos sem casas
decimais
• Dados Numéricos Reais
– São os números positivos e negativos que possuem
casas decimais
• Dados Literais (strings ou textos (frases ou
palavras)
– São sequências de caracteres
• Dados Lógicos ou Booleanos
– Podem ser verdadeiros ou Falsos, apenas
• Dados temporais (Data/Hora)
G.E.Vieira
16
Tipos Inteiros
G.E.Vieira 17
Tipos Reais e Booleanos
Tipos Reais
Os tipos reais (de ponto flutuante) básicos são:
Tipo sizeof Faixa de valore Precisão
float 4 1.2E-38...3.4E+38 6 dígitos
double 8 2.3E-308...1.7E+308 15 dígitos
long double 10 3.4E-4932...1.1E+4932 19 dígitos
G.E.Vieira 18
Constantes
Constantes
Existem na maioria das linguagens de programação, mas não em Python.
G.E.Vieira 19
Variáveis
• O armazenamento de informações pelo computador em sua
memória, se dá em uma região nomeada através de uma
variável
• Uma variável possui:
– NOME
– TIPO
– CONTEÚDO
Entretanto, geralmente não há necessidade de declaração
explícita de variável em Python.
• As regras para nomes de variáveis mudam de uma
linguagem para outra, entretanto
• Não se começa por número e não pode existir espaço no
nome da variável.
G.E.Vieira
20
Variáveis
• Geralmente variáveis devem ser declaradas
e antes de serem utilizadas (exceções, p.exe.
Python, MatLab)
• Ao declarar uma variável, o computador reserva
um espaço na memória para ela
• A memória é constituída de bytes, que são
conjuntos de 8 bits
• Cada tipo de variável ocupa um tamanho diferente
na memória, isso varia para cada linguagem de
programação
G.E.Vieira
21
1 bit 2 valores 0 ou 1 (binary digit)
1 Byte 8 bits 256 valores
2 Bytes 16 bits 65536
G.E.Vieira 22
Operadores
• Os operadores podem ser:
– Lógicos
– Aritméticos
– Relacionais
• Cada tipo de operador tem sua função específica e
uma ordem de precedência
G.E.Vieira
23
Operadores
• Operadores Lógicos:
Lista de Operadores Lógicos
Operador QTD de Operadores Operação Prioridade
.OU. binário disjunção 3
.E. binário conjunção 2
.NAO. unário negação 1
G.E.Vieira
24
Operadores
• Operadores Aritméticos
Lista de Operadores Numéricos
Operador QTD de operadores Operação Prioridade
+ binário adição 4
- binário subtração 4
* binário multiplicação 3
/ binário divisão 3
** binário exponenciação 2
+ unário conservação do 1
sinal
- unário inversão do sinal 1
G.E.Vieira
25
Operadores
• Operadores Relacionais:
Lista de Operadores Relacionais
Operador QTD de Operadores Operação
= binário igualdade
< binário Menor que
> binário Maior que
<= binário Menor ou igual
>= binário Maior ou igual
< > ou != binário diferença
G.E.Vieira
26
Atribuição
G.E.Vieira
27
Entrada
• As operações de entrada permitem que o usuário
forneça dados ao programa (teclado e mouse)
• A entrada também pode ser dada via programas,
scanners, câmeras e outros
• A entrada também pode ser dada via leitura de um
banco de dados.
• Formas simples para se fazer leitura do teclado:
• Input() --> Python ==> retorna TEXTO.
G.E.Vieira
28
Entrada
G.E.Vieira
29
Saída
• As operações de saída permitem que o programa
forneça informações ao usuário
• Geralmente a saída é feita na tela, mas também pode
ser via rede, impressora, leds, som e outros
• Saída na tela:
• print --> Python
G.E.Vieira
30
n1 = float(input("Digite a primeira nota: "))
n2 = float(input("Digite a segunda nota: "))
n3 = float(input("Digite a terceira nota: "))
G.E.Vieira 31
Do primeiro exemplo em algoritmos
G.E.Vieira 32
Exemplo
G.E.Vieira 33
Funções
G.E.Vieira
35
Funções
Em Python:
def NOME( PARÂMETROS/ARGUMENTOS):
COMANDOS
Exemplo 1: Crie uma função para soma de dois números
passados como argumento
Exemplo2: Crie uma função soma de dois números
digitados pelo usuário.
Exemplo3: Crie uma função para calcular e mostrar a raiz
"b" de "a".
--> idem mas a função deve retornar o valor da raiz.
Exemplo4: Crie uma função para calcular e mostrar a
média de três números.
G.E.Vieira 36
def soma(a, b):
resultado = a + b
print(f"{a} + {b} = {resultado}")
soma(5, 10)
def soma():
a = float(input("Digite um primeiro número"))
b = float(input("Digite um segundo número"))
resultado = a + b
print(f"{a} + {b} = {resultado:.2f}")
soma()
G.E.Vieira 37
def raiz(a, b):
resultado = pow(a, 1/b)
print(f"raiz({a},{b}) = {resultado}")
raiz(5, 2)
def raiz(a,b):
return pow(a, 1/b)
print(raiz(5,3))
G.E.Vieira 38
def media(n1, n2, n3):
m = (n1 + n2 + n3)/3
print(f"Média= {m:.2f}")
return m
y = media(-3.5, 8, 99)
print(y)
def media():
n1 = float(input("Digite o n1: "))
n2 = float(input("Digite o n2: "))
n3 = float(input("Digite o n3: "))
m = (n1 + n2 + n3)/3
print(f"Média= {m:.2f}")
return m
y = media()
print(y)
G.E.Vieira 39
Lista de Exercícios
G.E.Vieira 40
Escopo de Variáveis
G.E.Vieira
41
def Soma(a, b):
resultado = a + b
print(a)
return resultado
G.E.Vieira 42
Estruturas Condicionais
• As estruturas condicionais (if/else) são
utilizadas quando é preciso escolher entre mais de
um caminho possível
• Para se escolher o caminho,
Em Python
• if <>:...
• elif <>: ...
• else: ...
G.E.Vieira 43
• Escreva uma função para receber 3
números, calcular a média e dizer se está aprovado
(>= 6) ou reprovado (<6).
def par(n):
if (n == 0):
print(f"{n} não par e nem ímpar!")
elif (n % 2 == 0):
print(f"{n} é par!")
else:
print(f"{n} é ímpar!")
par(5)
par(-3)
par(0)
par(1000)
G.E.Vieira 45
Exemplo
G.E.Vieira 46
(*) em Python:
G.E.Vieira 47
Exemplo
G.E.Vieira 48
Exemplo:Par ou ímpar
• Como identificar se um número é par ou ímpar?
def par(n):
if (n == 0):
print(f"{n} não é par e nem ímpar!")
elif (n % 2 == 0):
print(f"{n} é par!")
else:
print(f"{n} é ímpar!")
par(10)
par(7)
par(0)
G.E.Vieira 49
Algumas funções matemáticas
ceil(x) arredonda x para cima
floor(x) arredonda x para baixo
sin(x), cos(x) etc. seno, cosseno etc. do ângulo x
(em radianos)
factorial(x) fatorial de x (em Python, apenas)
abs(x) módulo de x
pow(x,y)
Mod /// %
(muitas outras funções...)
round(x,n) arredondar x com n número de dígitos
https://docs.python.org/pt-br/3/library/math.html G.E.Vieira 50
Exemplo
x = 10 * math.sin(math.radians(60))
print(f"Barco navegou= {x:.2f} MN para leste.")
G.E.Vieira 51
Arredondar para cima/baixo....
import math
print(math.ceil(513.17689))
print(math.floor(513.17689))
print(round(513.17689, 2))
print(math.factorial(5))
print(math.fabs(-213.7))
G.E.Vieira 52
Potenciação e raiz...
print("Digite um número")
n = float(input())
print(f"{n} ",end= "")
print(f"{n**2}",end= "")
G.E.Vieira 53
Exemplo com if/elif/else:
G.E.Vieira 54
*Em Python:
G.E.Vieira 56
Exercícios
G.E.Vieira 57
consumo = float(input("Qual foi o consumo - kwh - no mês? "))
gasto = 0.57302 * consumo
renda = float(input("Qual foi a renda da família no mês? "))
print(f"Valor gasto com energia elétrica R$ {gasto:.2f}")
porc = (gasto/renda)*100
print(f"Porcentagem da renda com energia elétrica {porc:.2f}%")
#gasto = gasto*0.83
print(f"Valor gasto com energia elétrica com desc. 17% R$ {(gast
o*0.83):.2f}")
G.E.Vieira 58
Exercícios
G.E.Vieira 59
print("Entre com o custo do espetáculo e o valor do ingresso: ")
custo_espetaculo = float(input())
valor_ingresso = float(input())
qtdade_ingressos_vendidos = (1.4 * custo_espetaculo) / valor_ingresso
print("Número de ingressos que precisam ser vendidos: ",
math.ceil(qtdade_ingressos_vendidos))
import math
custo = float(input("Custo do espetáculo? R$ "))
convite = float(input("Valor do convite? R$ "))
custof = 1.4 * custo
venda_esperada = math.ceil(custof / convite)
print("Número mínimo de convites para vender= ", venda_esperada)
G.E.Vieira 60
Exercícios
G.E.Vieira 61
String
Entrada usando strings:
(*) Em Python
--> para strings:
https://www.devmedia.com.br/tipos-de-dados-em-python-string/40669:
nome_1 = "Ricardo Alves"
nome_2 = 'Joana Melo'
print(type(nome_1)) ==> função type retorna o tipo 'str'
print(type(nome_2)) ==> função type retorna o tipo 'str'
print(nome_1[0]) ==> R
print(nome_1[0:3]) ==> Ric
– Concatenação de Strings
– Comparação de Strings
– Principais métodos de Strings
– Método find()
– Método replace()
– Método split()
– Método upper()
– Método lower()
Acentuação no Python
G.E.Vieira 62
nome1 = 'João BaTISta'
nome2 = "Pedro"
type(nome1)
print(nome1.capitalize())
nome3 = nome1.casefold()
print(nome3)
nome1 = "Joana"
print(nome1)
print(nome3)
G.E.Vieira 63
texto = "Hoje temos um dia ensolarado, mas com possibilidade d
e chuvas."
print(texto.find("temos"))
print(texto.replace("temos", "TEMOS"))
print(texto.replace("as", "AS"))
print(texto.upper())
print(texto.lower())
print(texto.count("as"))
print(texto.title())
print(len(texto))
print(texto[5])
print(texto[:5])
print(texto[5:])
print(texto[2:5])
print(texto[-5:])
G.E.Vieira 64
Exercícios
G.E.Vieira 65
G.E.Vieira 66
Estruturas de Repetição
• As estruturas de repetição permitem que um trecho
de código seja repetido até que uma condição seja
satisfeita
• Os laços, ou loops, em Python podem ser:
– FOR
– WHILE
G.E.Vieira
67
Estruturas de Repetição
for x in range(26):
if (x%3 == 0):
print(x)
G.E.Vieira
68
x= range(1,50, 5)
for i in x:
print(i)
G.E.Vieira 71
1. Faça um programa que leia 'n' nomes e depois de
ler todos, escreva-os.
nomes = [] #lista de nomes
n = int(input("Quantos nomes devem ser lidos? "))
for i in range(n):
nome = input("Digite um nome: ")
nomes.append(nome)
print(nomes)
G.E.Vieira 72
2. Faça um programa que, após ler o valor de x e n,
mostre os n primeiros elementos da sequência:
(depois, calcule e mostre a média desses 'n'
elementos): 1, x, (x^2)/2, (x^3)/3 ... --> x^n / n
G.E.Vieira 73
(A)
x = float(input("Qual é o valor de x? "))
N = int(input("Quantos elementos da sequência? "))
for n in range(1,N+1):
elemento = round((x ** n) / n, 2)
print(elemento, end= " ")
B)
x = float(input("Qual é o valor de x? "))
N = int(input("Quantos elementos da sequência? "))
for n in range(N):
if n == 0:
elemento = 1
else:
elemento = round((x ** n) / n, 2)
print(elemento, end= " ")
G.E.Vieira 74
Uma outra solução bem parecida:
G.E.Vieira 75
3.Faça um programa que mostre os 'n' primeiros elementos da sequência
de Fibonacci.
G.E.Vieira 76
3.Faça um programa que mostre os 'n' primeiros elementos da sequência
de Fibonacci.
OUTRA SOLUÇÂO:
G.E.Vieira 77
4. Faça um programa que mostre todos os números primos até um
dado número 'n' positivo.
def eh_primo(n):
nd = 0
for i in range(1,n+1):
if (n % i == 0):
nd = nd + 1
if (nd > 2):
break
if (nd == 2):
return True
else:
return False
n = int(input("Digite um número e eu te direi todos os números
primos até ele!"))
for i in range(1, n+1):
if eh_primo(i):
print(i, end= " ")
G.E.Vieira 78
4. Faça um programa que mostre todos os números primos até um dado número 'n'
positivo (outra solução).
G.E.Vieira 79
4. Faça um programa que mostre todos os números primos até um dado número 'n'
positivo (outra solução)... mais outra solução:
def eh_primo(n):
cont = 0 #conta número de divisores
for i in range(1, n+1):
if n % i == 0:
cont = cont + 1
if cont > 2:
return False
if cont == 2:
return True
else:
return False
G.E.Vieira 80
5. Maior, menor e média das idades:
soma = 0
n = int(input("De quantas idades vc deseja fazer a média?"))
for i in range(n):
idade = float(input("Digite uma idade: "))
soma = soma + idade # igual a escrever: soma += idade
if i == 0:
menor = idade
maior = idade
else:
if idade < menor:
menor = idade
if idade > maior:
maior = idade
media = soma / n
print(f"A média das idades é: {media:.2f}")
print("A maior idade lida foi ", maior)
print("A menor idade lida foi ", menor)
G.E.Vieira 81
5. Maior, menor e média das idades: (outra solução)
soma = 0 #somatório
n = int(input("Quantas idades devem ser lidas?"))
for i in range(n):
idade = float(input("Digite uma idade: "))
soma = soma + idade # poderia ser escrito tbém como "soma
+= idade"
if i == 0:
menor = maior = idade
else:
if idade > maior:
maior = idade
if idade < menor:
menor = idade
media = soma / n
print(f"Média das idades= {media:.2f}")
print("Menor idade lida= ", menor)
print("Maior idade lida= ", maior)
# ou em uma única linha:
print(f"Média das idades= {media:.2f}, menor idade= {menor} e
maior idade= {maior}") G.E.Vieira 82
Estruturas de Repetição
G.E.Vieira
83
Exemplo #1 com while...
G.E.Vieira 84
#Digite um número e mostre o número digitado, enquanto não for
digitado o número zero.
n = 1
while n != 0:
n = float(input("Digite um número: "))
print("Número digitado foi= ", n)
print("Fim da execução!")
a = True
while a == True:
n = float(input("Digite um número: "))
print("Número digitado foi= ", n)
if n == 0:
a = False
print("Fim da execução!")
G.E.Vieira 85
while True:
n = float(input("Digite um número: "))
print("Número digitado foi= ", n)
if n == 0:
break
print("Fim da execução!")
G.E.Vieira 86
Exemplo #2 com while...
G.E.Vieira 87
#Digite um nome e mostre o nome digitado,
#enquanto não for digitado a palavra "sair".
nome = ""
while nome != "sair":
nome = input("Digite um nome: ")
print("Nome (palavra) digitado= ", nome)
print("Fim da execução!")
G.E.Vieira 88
Exemplo #3 com while...
Enquanto não for dia com sol ou for dia de aula, não ir
para praia. O programa pergunta para o usuário se o
dia é de sol e se tem aula. Use "s" para sim e "n"
para não. Programa fica mostrando se vai ou não
para praia no dia. O programa finaliza quando "for
para praia". (Obs.: também pode ser resolvido com
variáveis booleanas "True" e "False" se preferir,
entretanto, Python não tem leitura de teclado ("input")
que gere valor booleano (true ou false). Para isto,
poderia ser implementando uma função.)
G.E.Vieira 89
sol = 'n'
aula = 's'
while (sol == 'n' or aula == 's'):
sol = input("Tem sol hoje? (s/n): ")
aula= input("Tem aula hoje? (s/n): ")
if (sol == 's' and aula == 'n'):
print("Vamos para praia!")
else:
print("Não vai rolar praia hoje!")
print("Fim da execução!")
Fonte: https://stackoverflow.com/questions/68239507/how-to-get-a-
boolean-input-from-the-user-in-python
G.E.Vieira 90
#outra solução:
while True:
sol = input("Vai dar sol amanhã? s/n")
aula = input("Vai ter aula amanhã? s/n")
if sol == 's' and aula == 'n':
print("Vamos para praia!")
break
else:
print("Não vai rolar praia!")
print("Fim da execução!")
G.E.Vieira 91
Exemplo #4 com while...
G.E.Vieira 92
import math
opcao = 1
while opcao != 4:
a = float(input("Digite o valor de a= "))
b = float(input("Digite o valor de b= "))
print('''
(1) a^2 – 3*b + 2
(2) raiz quadrada de |a * b|
(3) a * b^4 – sin(a * b)
(4) sair ''')
opcao = int(input("Escolha uma opção do menu: "))
if (opcao == 1):
resultado = a ** 2 - 3 * b + 2
if (opcao == 2):
resultado = math.sqrt(abs(a * b))
if (opcao == 3):
resultado = a * (b**4) - math.sin(a * b)
if (opcao != 4):
print("Resultado = ", resultado)
G.E.Vieira 93
Exercícios com while...
1. Faça um programa que fique lendo um número inteiro positivo, de zero a
nove, e fique mostrando na tela seu valor, enquanto este número for
diferente de 0.
3. Faça um programa que fique lendo um nome enquanto este nome for
diferente de 'Carlos'. O programa deve ir mostrando uma mensagem
com o nome lido.
G.E.Vieira 94
n=float(input("Digite um número:"))
while (n < 10):
print("n= ", n)
n=float(input("Digite um número:"))
G.E.Vieira 95
G.E.Vieira 96
Continuando exercício da SF
G.E.Vieira 97
G.E.Vieira 98
Uma outra solução...
G.E.Vieira 99
Exercícios (Estruturas de Repetição)
G.E.Vieira 100
G.E.Vieira 101
Exercícios (Estruturas de Repetição)
Número de Euler (Aproximação)
= 2,7182818285
O número de Neper, escrito com dez casas decimais, é e = 2,7182818285 (a
última casa decimal resulta de arredondamento). Na Natureza, o número de
Neper aparece, por exemplo, associado à desintegração radioativa.
G.E.Vieira 102
import math #PYTHON
E = 1
n = int(input("Digite um número inteiro positivo: "))
for i in range(1,n+1):
E = E + 1/math.factorial(i)
print("E= ",E)
OU
E = 0
n = int(input("Digite um número inteiro: "))
for i in range(n+1):
E = E + 1/math.factorial(i)
print("E= ",E)
G.E.Vieira 103
Outra solução (Python):
#import math
#print(math.factorial(5))
G.E.Vieira 104
Exercícios (Estruturas de Repetição)
G.E.Vieira 105
Listas
G.E.Vieira 106
"list" (Classe Lista em Python)
Method Description
append() Adds an element at the end of the list
clear() Removes all the elements from the list
copy() Returns a copy of the list
count() Returns the number of elements with the specified value
extend() Add the elements of a list (or any iterable), to the end of
the current list
index() Returns the index of the first element with the specified
value
insert() Adds an element at the specified position
pop() Removes e return the element at the specified position
A = [2, 3, -2, 5]
print(A)
print(A[1])
for elemento in A:
print(elemento, end = " ")
print()
A[2] = A[2] * 3
for elemento in A:
print(elemento, end = " ")
print()
A.append(8)
A.append(-1)
print(A)
elemento = A.pop(2)
print(elemento)
print(A)
A.sort()
print(A)
G.E.Vieira 109
Em Python:
x = [1.2, 3.7, -0.9, 2.3, -4.9]
print(x)
x.sort() --> em ordem crescente
print(x)
x.sort(reverse=True) --> em ordem decrescente
print(x)
print("Maior elemento de x= ", x[0])
print("Menor elemento de x= ", x[4])
G.E.Vieira 110
Exemplo
G.E.Vieira 111
G.E.Vieira 112
Exemplo
A = [2, 5, 7, -2]
B = [3, -1, 0, 6]
• C = A + B --> C[i] = A[i] + B[i]
• Mostre C
• D = Maior(A, B) --> D[i] = Maior(A[i], B[i])
• Mostre D
• E = Menor(A, B) --> E[i] = Menor(A[i], B[i])
• Qual é o maior e o menor elementos de D?
• Qual é a média dos elementos de D?
• Dica: Python tem as funções "max" e "min" prontas.
G.E.Vieira 113
A = [2, 5, 7, -2]
B = [3, -1, 0, 6]
C = []
D = []
E = []
soma = 0
for i in range(4): #3 formas de fazer:
C.append(A[i] + B[i])
#C = C + [A[i] + B[i]]
#C.extend([A[i] + B[i]])
D.append(max(A[i],B[i]))
E = E + [min(A[i],B[i])] # só para implementar de outro j
eito.
soma = soma + D[i] # isto é igual a: soma += D[i]
print(C)
print(D)
print(E)
print("Maior elemento de D= ", max(D))
print("Menor elemento de D= ", min(D))
avg = soma / 4
print("Média dos elementos de D= ", avg)
G.E.Vieira 114
Exercício
G.E.Vieira 115
Python permite:
x[i],x[j] = x[j],x[i]
G.E.Vieira 116
Exercício
G.E.Vieira 117
cid = ["","","","",""] #SOLUÇÃO SIMPLES, SEM APPEND !
nvp = [0,0,0,0,0]
natv = [0,0,0,0,0]
iat = [0,0,0,0,0]
for i in range (0,5,1):
print("Digite o código da cidade " + str(i+1) + ": ")
cid[i] = input()
print("Digite o NVP da cidade " + str(i+1) + ": ")
nvp[i] = float(input())
print("Digite o NATV da cidade " + str(i+1) + ": ")
natv[i]= float(input())
if (i==0):
menor_iat = maior_iat = iat[i]
cid_menor_iat = cid_maior_iat = cid[i]
else:
if (iat[i] > maior_iat):
maior_iat = iat[i]
cid_maior_iat = cid[i]
if (iat[i] < menor_iat):
menor_iat = iat[i]
cid_menor_iat = cid[i]
iat.append(natv[i] / nvp[i])
if (i==0):
menor_iat = maior_iat = iat[i]
cid_menor_iat = cid_maior_iat = cid[i]
else:
if (iat[i] > maior_iat):
maior_iat = iat[i]
cid_maior_iat = cid[i]
if (iat[i] < menor_iat):
menor_iat = iat[i]
cid_menor_iat = cid[i]
print(cid)
print(iat)
print("Cidade com maior IAT= " + cid_maior_iat + " -
IAT= " + str(maior_iat)) G.E.Vieira 119
Simplifique: considere 3 times de 5 jogadores. Sugestão: Use um único
vetor para as idades, pesos e alturas. Lance os valores diretamente
nos vetores ao invés de leitura pelo teclado.
G.E.Vieira 120
idades = [17, 20, 21, 22, 19, 18, 16, 19, 20, 21, 22, 20, 19, 20, 19]
alturas = [1.8, 1.7, 1.65, 1.69, 1.71, 1.6, 1.8, 1.81, 1.77, 1.79, 1.68, 1.7, 1.71,
1.8, 1.67]
pesos = [77.5, 69, 70.5, 80.1, 74.7, 67.7, 71.1, 66.9, 69.4, 70.4, 72.3, 74.7,71.3
, 72.4, 67.3]
qtd18 = 0
soma = 0
qtd80kg = 0
for i in range(15):
if (idades[i] < 18):
qtd18 += 1
soma += idades[i]
if (pesos[i] > 80):
qtd80kg += 1
media_idades = soma / 15
print("Quantidade de jogadores com menos de 18 anos: ", qtd18)
print("Média das idades de todos os jogadores= ", media_idades)
porc80 = (qtd80kg / 15) * 100
print("Porcentagem de jogadores com mais de 80kg= ", porc80)
G.E.Vieira 121
Outra solução...
idades = [17, 20, 21, 22, 19, 18, 16, 19, 20, 21, 22, 20, 19, 20, 19]
alturas = [1.8, 1.7, 1.65, 1.69, 1.71, 1.6, 1.8, 1.81, 1.77, 1.79, 1.68, 1.7, 1.71, 1.8, 1.67]
pesos = [77.5, 69, 70.5, 80.1, 74.7, 67.7, 71.1, 66.9, 69.4, 70.4, 72.3, 74.7,71.3, 72.4, 67.3]
qtd18 = 0
soma = 0
soma1 = soma2 = soma3 = 0
qtd80kg = 0
for i in range(15):
if idades[i] < 18:
qtd18 += 1 # qtd18 = qtd18 + 1
soma += alturas[i]
if (i < 5):
soma1 += idades[i]
elif (i < 10):
soma2 += idades[i]
else:
soma3 += idades[i]
if (pesos[i] > 80):
qtd80kg += 1
G.E.Vieira 122
Exercícios
G.E.Vieira 123
Criando uma lista com o range()
G.E.Vieira 124
#só para ser mais rápido, não faremos a leitura
preco = [1.5, 12.2, 5.4, 75, 17.25, 23.5, 17.5, 50, 25, 33.4]
qtd_vendida = [10, 20, 12, 5, 9, 10, 12, 25, 15, 30]
faturamento = [ ]
total_vendas = 0
for i in range(10):
faturamento.append(preco[i]*qtd_vendida[i])
total_vendas += faturamento[i]
if (i == 0):
mais_vendido = qtd_vendida[i]
ind_mais_vendido = i
else:
if (qtd_vendida[i] > mais_vendido):
mais_vendido = qtd_vendida[i]
ind_mais_vendido = i
G.E.Vieira 126
#EXE 05 PYTHON
import math
S = 0
denominador = [1,2,3,4,3,2]
x = float(input("Digite o valor de x: "))
n = int(input("Digite o número de termos: "))
for i in range(1,n+1,1):
if (i <= 6):
den = denominador[i-1]
else:
den = denominador[(i-1) % 6]
termo = pow(-1,i)*pow(x,i+1)/math.factorial(den)
#print("termo= ", termo)
S = S + termo
print("S= ", S)
G.E.Vieira 127
Lista (Python / C++)
• https://www.w3schools.com/python/python_ref_list.asp
• https://pythonacademy.com.br/blog/listas-no-python
• https://www.javatpoint.com/post/cpp-list
• https://cplusplus.com/reference/list/list/
G.E.Vieira 128
Mais exercícios (Estruturas de Repetição)
G.E.Vieira 129
S = -x + x^2/2! - x^3/3! + ….
import math
N = int(input("Digite N: "))
x = float(input("Digite um valor positivo para x: "))
S = 0
for n in range(1,N+1):
S += pow(-1,n)*pow(x, n)/math.factorial(n)
print("S= ", S)
G.E.Vieira 130
Exercícios (Estruturas de Repetição)
G.E.Vieira 131
Exercícios (Vetores)
G.E.Vieira 132
Exercícios (Vetores --> Listas)
G.E.Vieira 135
vint = []
vpos = []
vneg = []
#construção do vetor de inteiros:
for i in range(8):
x = int(input("Digite um número inteiro: "))
vint.append(x) # vint.append(int(input("Digite um núm
ero inteiro: ")))
print(vint)
print(vpos)
print(vneg)
G.E.Vieira 136
Exercícios (Vetores)
G.E.Vieira 137
numero = [] #NÃO ESTÁ ACABADO … SUGESTÃO: FINALIZE ESTA RESOLUÇÃO...
origem = []
destino = []
disponib= []
nvoos = 1
for i in range(nvoos):
numero.append(int(input(f"Digite o número do Voo {i+1}: ")))
origem.append(input(f"Digite o código da origen do Voo {i+1}: "))
destino.append(input(f"Digite o código do destino do Voo {i+1}: "))
disponib.append(int(input(f"Digite o número de assentos disponíveis no Voo {i+1}: ")))
opcao = ''
while opcao != 'S' and len(opcao) == 1:
print("*** MENU: ***")
print("Consultar (para mostrar os voos e disponibilidades) ('c') ")
print("Efetuar reserva (caso haja disponibilidade) ('e')")
print("Sair ('s')")
opcao = input().upper()
if opcao == 'C':
for i in range(nvoos):
print("Voo: " + str(numero[i]) + " ORIGEM: " + origem[i] + " DEST.: " + destino[i] + " Disp.: " + str(disponib[i]))
# if opcao == 'E'
G.E.Vieira 138
Exercícios
Sendo um vetor x = [14, -0.5, 34.7, -45.1, 39, 8.7, 6.7] e y= [1.9, 6.6, 1.7, -15.1, 1.9, 2.4,
-7.7] encontre:
G.E.Vieira 139
Programação Orientada a Objetos (POO)
G.E.Vieira
14
Crie 3 retângulos diferentes e mostre: (a) A médias das áreas e (b) O maior
perímetro.
G.E.Vieira 141
class Retangulo: #COM VARIÁVEIS PRIVADAS
def __init__(self, a, b):
self.a = a
self.b = b
self.__area = a * b
self.__perimetro = 2*(a + b)
def Info(self):
print(f"Retângulo com largura= {self.a} e comprimento= {
self.b} tem área= {self.__area} e perímetro= {self.__perimetro}.
")
def Area(self):
return self.__area
def Perimetro(self):
return self.__perimetro
G.E.Vieira 142
• Crie 3 retângulos diferentes e mostre: (a) A médias
das áreas e (b) O maior perímetro.
G.E.Vieira 143
Herança
class Quadrado(Retangulo):
def __init__(self, a):
Retangulo.__init__(self,a,a)
def Info(self):
print(f"Quadrado com lado {self.a} tem área = {self.ar
ea}")
q1 = Quadrado(13)
q2 = Quadrado(10)
q3 = Quadrado(20)
q1.Info()
q2.Info()
q3.Info()
print(q1.Area())
G.E.Vieira 144
class Quadrado(Retangulo):
def __init__(self, a):
self.a = a
Retangulo.__init__(self,a,a)
def Info(self):
print(f"Quadrado com lado= {self.a} tem área= {self.A
rea()} e perímetro= {self.Perimetro()}.")
q1 = Quadrado(10)
q2 = Quadrado(20)
q1.Info()
q2.Info()
G.E.Vieira 145
Crie a classe Círculo.
Métodos "Área" e "Circunferência"
Crie 3 círculos
Mostre a média das 3 áreas.
G.E.Vieira 146
import math
class Circulo:
def __init__(self, raio):
self.raio = raio
self.area = math.pi * pow(raio,2) # raio**2
self.circun= 2*math.pi*raio
def Info(self):
print(f"Área= {self.area} e Circunferência= {self.circun}")
def Area(self):
return self.area
c1 = Circulo(5)
c2 = Circulo(10)
c3 = Circulo(15)
ma = (c1.Area() + c2.Area() + c3.Area())/3
print(f"Médias das áreas= {ma:.2f}")
G.E.Vieira 147
Exercício:
Classes: Pessoa, Empregado e Estudante universitário
Pessoa:
Nome Completo (string/texto)
CPF: (string/texto: nnn.nnn.nnn-nn)
Data de Nascimento: (string/texto: dd/mm/aaaa) Crie métodos para mostrar/retornar
Cidade, Estado e País de nascimento informações em cada uma das classes.
(naturalidade):
Obs.: Na prática, usaríamos tipo "datas".
• Crie 5 empregados... coloque em
uma lista seus salários e mostre o
Empregado: É uma Pessoa, tem mais:
nome (e a empresa) de quem tem o
Empresa: (string/texto) maior salário.
Salário: (número real)
Cargo: (string/texto)
• Crie 5 estudantes... liste-os em
Data de Contratação: (string/texto: dd/mm/aaaa) ordem crescente pelo IAA e seu
respectivo curso.
EstudanteUniversitário: É uma Pessoa, tem mais:
IES: (string/texto)
Número de matrícula: (número)
Curso: (texto)
Data de Ingresso: (string/texto: dd/mm/aaaa)
G.E.Vieira 148
class Pessoa:
def __init__(self, Nome, CPF, DdN, cid_nasc, est_nasc, pais_nasc):
self.Nome=Nome
self.CPF=CPF
self.DdN=DdN
self.cid_nasc=cid_nasc
self.est_nasc=est_nasc
self.pais_nasc=pais_nasc
def Info(self):
print(self.Nome + " " + self.CPF + " " + self.DdN + " " + self.cid_nasc + "/" + self.est_
nasc + "/" + self.pais_nasc)
#joao.Info()
#maria.Info()
class Empregado(Pessoa):
def __init__(self, Nome, CPF, DdN, cid_nasc, est_nasc, pais_nasc):
Pessoa.__init__(self, Nome, CPF, DdN, cid_nasc, est_nasc, pais_nasc)
def contratacao(self, Empresa, Salario, Cargo, DC):
self.Empresa = Empresa
self.Salario = Salario
self.Cargo = Cargo
self.DC = DC
def Info(self):
print(self.Nome + " tabalha na empresa: " + self.Empresa)
e1.Info()
G.E.Vieira 149
G.E.Vieira 150
Uso de "matrizes" ou listas de listas (Python)
Não vamos ter tempo para usar trabalhar com o array (do
NumPy) – mas vale a pena dar uma olhada se for trabalhar
com vetores e matrizes (arrays).
A = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
print(A) #ou
for i in A:
print(i) #ou
for i in range(3):
print(A[i]) #ou
for i in range(3):
for j in range(3):
if j < 2:
print(A[i][j], end= " ")
else:
print(A[i][j])
VER: https://www.programiz.com/python-programming/matrix
G.E.Vieira 152
#Ideia.... "forma geral" para criação de matriz em Python
matriz = [] # lista vazia
n_linhas= 3
n_colunas = 3
for i in range(n_linhas):
linha = [] # lista vazia --- cria a linha i
for j in range(n_colunas):
valor = i * j #só como exemplo
linha.append(valor)
matriz.append(linha) # coloque linha na matriz
print(matriz)
G.E.Vieira 153
Uso de "matrizes" ou
listas de listas (Python)
G.E.Vieira 154
A = []
#criar 3 linhas e adicioná-las ao A
ne5 = 0
for i in range(3):
for j in range(3):
linha = [] # Cria uma linha nova
elemento = int(input(f"Digite o elemento [{i}][{j}]= "))
linha.append(elemento)
if elemento > 5:
ne5 += 1
if i==0 and j==0:
maior = elemento
i_maior = i
j_maior = j
else:
if elemento > maior:
maior = elemento
i_maior = i
j_maior = j
#A.append(linha[:]) # "append" não cria cópia da lista, mas "aponta" para a list
a, em outras palavras, cria um "apelido" para a lista
A.append(linha)
print(A)
print("Número de elementos maiores que 5= ", ne5)
print(f"Maior elemento= {A[i_maior][j_maior]} na posição: {i_maior} ,{j_maior}")
G.E.Vieira 155
• Como ver apenas 1 (uma) coluna "j" em Python?
for e in A:
print(e[2])
Ou:
for i in range(3):
print(A[i][2])
G.E.Vieira 156
"Apelido" para matriz (em Python)
def main():
a = [0, 1, 2, 3, 4]
b = a #b é um apelido para a
b[1] = 7
print("a = ", a)
print("b = ", b)
main()
def main():
a = [0, 1, 2, 3, 4]
b = a[:] #b é outra lista, cópia de a
b[1] = 7
print("a = ", a)
print("b = ", b)
main()
G.E.Vieira 157
G.E.Vieira 158
• Crie 2 matrizes: A2x4 (aij= i +2j) e B4x3
(bij= (i+j)^2) --> lembrando que os índices começam
em zero.
• Calcule C = A x B
• Mostre C
• E Mostre C[1][2]
G.E.Vieira 159
Exercício (Revisão)
G.E.Vieira 160
def elemento(i): #(2*n + 1)
return 2*i + 1 #Qual é o 50° múltiplo de 7 ?
nm7 = 0
n = 0
#Qual é o elemento 250 ?
while nm7 < 50:
print(elemento(250))
n += 1
if (elemento(n) % 7 == 0):
#Qual é a soma dos elementos 1
nm7 += 1
50 a 200 ?
soma = 0
print(elemento(n))
for i in range(150,201):
soma += elemento(i)
x = []
y = []
print(soma)
soma = 0
for i in range(130, 151):
#Qual é a média dos elementos
x += [elemento(i)] # ou x.append(elemento(i))
120 a 170?
soma += elemento(i)
soma = 0
media = soma / 21
for i in range(120,171):
for i in x:
soma += elemento(i)
y += [i/media]
'''
media = soma / 51
print(media) Ou:
for i in range(21):
y += [x[i]/media]
for i in range(100,201):
if (elemento(i) % 3 == 0):
Ou:
print(i)
y += [i/media for i in x]
'''
print(y)
G.E.Vieira 161
Exercício (Revisão)
Onde i e j >= 1
G.E.Vieira 162
A = []
linha = []
for i in range(4):
for j in range(4):
if i >= j:
elem = i + j
else:
elem = i - j
linha += [elem] # ou usa append
A.append(linha)
linha = []
OU: def a(i, j):
print(A)
if (i >= j):
return i + j
else:
return i - j
A = []
linha = []
for i in range(4):
for j in range(4):
linha += [a(i+1,j+1)]
A += [linha]
linha = []
G.E.Vieira 164
https://www.iberdrola.co
m/sustentabilidade/classi
ficacao-seres-vivos-
G.E.Vieira
reinos-biologicos 165
class Animal:
def __init__(self, especie, peso, idade):
self.especie = especie
self.peso = peso
self.idade = idade
def Info(self):
print(f"{self.especie}/{self.peso}kg/{self.idade}ano(s)")
a1 = Animal("Mamífero",12,1)
a2 = Animal("Réptil",5,2)
a1.Info()
a2.Info()
class Cachorro(Animal):
def __init__(self, nome, raca, latido, peso, idade):
Animal.__init__(self,"Mamífero", peso, idade)
self.nome = nome
self.raca = raca
self.latido = latido
def Info(self):
print(f"{self.nome} tem {self.idade} anos, é da raça {self.raca} e pesa {self.p
eso} kg.")
G.E.Vieira 166
Exemplo: Class Dog e seu uso
G.E.Vieira 167
G.E.Vieira 168
Exemplo: outra Classe Estudante
Então:
- Crie 2 estudantes
- Mostre suas informações
- Indique o estudante que tem mais tempo de
universidade.
G.E.Vieira 170
class Estudante:
def __init__ (self, nome, sobrenome, numero_mat, curso, ano_ingr):
self.nome = nome
self.sobrenome = sobrenome
self.numero_mat = numero_mat
self.curso = curso
self.ano_ingr = ano_ingr
def Info(self):
print(self.nome + " " + self.sobrenome + " cursa " + self.curso)
G.E.Vieira 171
Exercícios POO
1. Crie uma classe para representar/modelar uma “Pessoa” com os atributos: Nome
(string), Endereço (string) e Data de Nascimento (dia, mês e ano são três
números inteiros). Faça também um programa para usar a classe pessoa. O
usuário deve cadastrar 2 pessoas e o programa deve mostrar o nome da pessoa
mais velha.
2. Crie uma classe “Produto” que contenha os atributos: Descrição (string), preço de
compra (real), imposto taxado ("taxa") ao vender (real), taxa de lucro "markup"
(real), estoque (inteiro) atual. Dentre os métodos, inclua um que represente
aquisição (compras do fornecedor) e vendas. Faça também um programa para
usar a classe Produto: Cadastre todas as informações de produto, inclusive o
estoque atual.
Para conseguir atender um pedido ("vender"), deve ser consultado o estoque atual. Só
pode vender o máximo em estoque.
Um pedido de cliente significa que ele deseja comprar "n" unidades de um produto.
Realize 5 vendas de 3 produtos diferentes. Mostre o total das vendas (em unidades e
em valores monetários (R$)). Mostre o lucro total obtido e o total pago em
impostos.
Realize uma reposição de estoque entre as vendas.
G.E.Vieira 172
G.E.Vieira 173
DICA: Uma função para converter data (dia/mês/ano) em número real
Ou
G.E.Vieira 174
Exercícios POO
G.E.Vieira 175
Ordenar uma lista...
• Implementar um algoritmo.
• Depois usar o método "sort" .
G.E.Vieira 176
• Dada um sequência de números reais cujo termo
geral é:
a(n) = n^3 + tg(n) - raiz_q(n)
G.E.Vieira 177
x = [18, 22, 21, 20, 17, 23, 21, 18]
'''n = 8
for i in range(0,n-1):
for j in range(i+1, n):
if (x[j] < x[i]): #para ordem CRESCENTE
x[i],x[j] = x[j],x[i]
'''
#usando a função (método) pronta:
x.sort()
print(x)
x.sort(reverse=True)
print(x)
G.E.Vieira 178
Dicionários (Python)
• https://kenzie.com.br/blog/dicionario-
python/#:~:text=O%20que%20%C3%A9%20um%20dicion%C3%A1rio,isso%20oc
orre%20de%20forma%20diferente.
G.E.Vieira 179
PySimpleGUI (Python)
import PySimpleGUI as sg
sg.theme("SandyBeach")
sg.set_options(font= "Courier 16", text_color= "black")
layout = [
[sg.T("CADASTRO")],
[sg.T("Nome"), sg.Push(), sg.I(size=(30,1),key='NAME')],
[sg.CalendarButton(button_text="Data de Nascimento",format='%d-%m-
%y',no_titlebar=True,close_when_date_chosen=True,target='DOB',default_date_m_d_y=(1,6,1980)), sg.Push(), sg.I(size=(30,1),key='DOB')],
[sg.T("Sexo"), sg.Push(), sg.Combo(size=(30,1),values=["Female", "Male"],key="GENDER")],
[sg.T("Endereço"), sg.Push(), sg.ML(size=(30,3), key="ADDRESS")],
[sg.Button("Submiter", expand_x=True), sg.Button("Limpar", expand_x=True), sg.Button("Sair", expand_x=True)]
]
window = sg.Window("Aplicação com GUI e Banco de Dados", layout)
def clear_inputs():
for key in values:
window['NAME'].update('')
window['DOB'].update('')
window['GENDER'].update('')
window['ADDRESS'].update('')
while True:
event, values = window.read()
#if event == sg.WIN_CLOSED or event == 'Sair':
if event in [sg.WIN_CLOSED, 'Sair']:
break
if event == 'Limpar':
clear_inputs()
if event == 'Submiter':
name = values['NAME']
if name == '':
sg.PopupError("Nome precisa ser digitado!")
else:
data = name + " " + values['DOB'] + " " + values['GENDER']
sg.PopupOK(data)
• http://docente.ifrn.edu.br/diegooliveira/disciplinas/alg
oritmos-acessivel-para-leitores-de-tela/
• https://www.inf.ufpr.br/roberto/ci067/02_tipos.html
• https://www.datacamp.com/courses/intro-to-python-
for-data-science
G.E.Vieira 181