Aulas Programacao Diogo
Aulas Programacao Diogo
Aulas Programacao Diogo
Conteúdos Programáticos :
Blockchain :
Seu projeto original tem servido de inspiração para o surgimento de novas criptomoedas e de
bancos de dados distribuídos.
Banco de dados distribuído (BDD) é um banco de dados no qual nem todos os dispositivos de
armazenamento estão conectados a um processador comum. Pode ser armazenado em vários
computadores, localizados no mesmo local físico, ou podem ser dispersos por uma rede de
computadores interconectados. Ao contrário dos sistemas paralelos, nos quais os
processadores são fortemente acoplados e constituem um único sistema de banco de dados,
um sistema de banco de dados distribuído consiste em sites fracamente acoplados que não
compartilham componentes físicos.
Aula : Perceber os pontos de uma blockchain, é preciso compreender mais para chegar a
conclusões jurídicas melhores, é possível que em breve sejam comuns carros automáticos
e por isso é necessário saber mais sobre este conteúdo para tomar decisões sobre isso.
Algoritmo:
Um algoritmo é uma sequência finita de ações executáveis que visam obter uma solução
para um determinado tipo de problema.
https://dre.pt/pesquisa/-/search/123815982/details/maximized
Existem algumas “Lawtechs” que criaram softwares que permitem detetar falhas nos
contratos ou elementos que faltam de modo a poupar a repetição de tarefas na parte
humana.
“Advogados-programadores”:
Pré-requisitos:
Instalar o python
Significado da Simbologia :
então se a utilidade de dados for igual a finalidade de recolha não há pena pois a finalidade
está a ser a mesma.
Variáveis:
Uma variável estatística é uma característica que admite diferentes valores (um número ou
uma modalidade), um por cada unidade estatística
• Learning with Python: How to Think Like a Computer Scientist – Allen Downey, Jeff Elkner
and Chris Meyers
(disponível gratuitamente neste link:
http://greenteapress.com/thinkpython/thinkCSpy/thinkCSpy.pdf)
• Introduction to Machine Learning with Python: A Guide for Data Scientists – Andreas
Muller
Aula 16-09-2020
Máquina Virtual- Programa que possibilita a utilização de outros sistemas operativos dentro
do seu computador. Virtualbox.org / ubuntu.com/download
Tipo de disco rígido- Ssd é muito mais rápido e seguro do que hdd.
Dir- Comando para saber o que está naquela pasta através da linha de comandos
echo %cd%
Melhor programa- Entre dois programas, o melhor será sempre o que tem menos linhas.
Código sequencial -
quit() no python e depois cls- para fechar o python e limpar a linha de comandos
Exemplo :
py
>>>> x = 1
>>>> print(x)
1
>>>> x = x + 1
>>>> print(x)
2
>>>>quit()
Exemplo
>>>> x == 1
Traceback (most recent call last):
File”<stdin>”, line 1, in <module>
NameError: name “x” is not define
>>>>
Aula 17-09-2020
Exemplo(Aula 16-09-2020)
>>>> x == 1
Traceback (most recent call last):
File”<stdin>”, line 1, in <module>
NameError: name “x” is not define
>>>>
É possível que a linha que o python diz não seja completamente precisa mas é uma boa
diretiva.
Dois sinais de igual - quando existem dois sinais de igual é para comparar duas coisas
Print(x) - mostrar o valor de x, mostrar o conteúdo que está dentro dos parênteses
Sempre que houver uma palavra com parentes a seguir Ex: print(), estamos perante uma
função
Para escrever a palavra como ( True ) a primeira letra tem que ter letra maiúscula.
O nome da variável pode ser o que nós quisermos menos uma palavra
reservada(Ex:for, while, if), o nome tem de estar entre aspas.
Palavras reservadas são comandos que pertencem ao python e por isso não podemos
usar.
Seu quero contar as palavras de um documento a primeira coisa que eu tenho que fazer
é dizer qual é o nome do documento
Abrir o atom
x=1
y=2
z=x+y
a = (x == y)
print(z)
print(a)
Todos os códigos no python são sequências, mas dependendo daquilo que colocamos
no código ele vai seguir o que nós escrevermos ou parar.
Se o x não incluir nenhum dos pontos do programa ele vai saltando até a última linha;
indentation error: bloco identado é o recuo, se tenho um while tenho que avançar;
cd nome da pasta;
erros de lógica: quer fazer alguma coisa mas está escrito de maneira errada - ordem das
frases está errada;
Semântica: não há erro de lógica nem sintaxe mas o programa não faz aquilo que nós
queremos;
Para ajudar vamos usar o visual studio e quando guardarmos o documento na página
que queremos vemos como está escrito como se fossemos copiar para a linha de
comandos. Depois podemos ir para a linha de comandos e vamos fazendo cd até
chegarmos a página que queremos e quando chegarmos a essa página vamos fazer py
para o nome do documento. Para abrir o documento não se usa cd, nem dir, nem se
abre o python na linha de comandos.
Apenas se vai fazer py quando já estivermos dentro da pasta , MAS FORA DO
PYTHON. Apenas na linha de comandos.
Operadores - +, -, *, /
// quociente
**
+ concatenar strings
Str
Casas decimais são representadas com pontos. Nunca com vírgulas, sempre com
pontos Ex:3.14
Podemos usar inteiros com floats e o resultado vai ser sempre float
horas_por-semana = 40
calor_por_hora = 3.75
valor_por_semana =horas_por_semana*valor_por_hora
valor_por_mes=valor_por_semana*4
print(valor_por_mes)
x=5
x = 3.9 * x * (1 - x)
print(x)
• Resultado: -78.0
Ordem de precedência:
• Parênteses: 2 * (3 - 1) = 4; (1 + 1) ** (5 - 2) = 8.
• Potência: 2 ** 1 + 1 = 3, não 4; 3 * 1 ** 3 = 3, não 27.
• Multiplicação, Divisão e Resto: 2 * 3 - 1 = 5, não 4; 6 + 4 / 2 = 8, não 5.
• Adição e Subtração.
Constantes
horas_do_dia = 24
minutos_por_hora = 60
minutos_por_dia = horas_do_dia * minutos_por_hora
print(minutos_por_dia)
Recomendações:
• Não começar com sublinha/underscore: _
• Não começar com maiúsculas.
• esta_turma_de_programacao_para_juristas_tem_um_total_de_cin
quenta_e_um_alunos_se_nao_estou_em_erro = 51
horas_por_semana = 40
valor_por_hora = 3.75
valor_por_semana = horas_por_semana * valor_por_hora
valor_por_mes = valor_por_semana * 4 print(valor_por_mes)
Aula 24-09-2020
• Crie um código que mostre na tela o salário atual (750 euros) e um aumento de 15%
neste valor.
• Até aqui trabalhamos com dois tipos diferentes: int e str.
•Há ainda outros dois tipos de valores no Python: float e boolean.
x = 750
y = 750 * 0.15
print (x + y)
Todas as strings começam com um zero, os espaços também contam. Cada caracter tem
um índice.
Uma variável será numérica quando armazenar números inteiros ou de ponto flutuante.
•Utiliza-se o ponto (.) e não a vírgula (,) para indicar casas decimais.
•Uma variável será do tipo string quando armazenar texto – ou, mais tecnicamente,
quando armazenar uma cadeia de caracteres.
• É importante destacar que esta cadeia de caracteres pode conter letras, números,
sinais de pontuação, espaços em branco etc.
• Para saber o tamanho de uma string utiliza-se a função len() – seu resultado será um
número inteiro. •Quantos caracteres tem a string “João e Maria comem pão.”?
•type(“123”) == type(123)?
•Qualquer coisa que apareça entre aspas será str, mesmo números.
• print(type(123))
• print(type(“123”))
Para ter acesso a cada caractere de uma string é necessário identificar o seu respectivo
índice – todo índice se inicia em 0 (zero).
Exemplos:
• a = “ABCDEF”
• print(a[0])
• print(a[6])
• print(len(frase))
• print(len(frase))
•O símbolo % foi utilizado para indicar a composição da string anterior com o conteúdo da
variável X.
• %s: strings
• Se quisermos apresentar um número como 001 em vez de 1, ou 050 em vez de 50, temos
de completar com zeros à esquerda: isto é feito utilizando-se (neste exemplo) %03d.
•Isto é bastante relevante quando estamos guardando algo em um arquivo.
• idade = 22
• print(“[%d]” %idade)
• print(“[%03d]” %idade)
• print(“[%3d]” %idade)
• print(“[%-3d]” %idade)
• Com números decimais pode-se utilizar dois valores entre o símbolo % e a letra f: o
primeiro indica o tamanho total em caracteres a reservar e o segundo, o número de
casas decimais.
• %5.2f: estamos imprimindo um número decimal utilizando cinco posições, sendo que duas
são para a parte decimal.
• anos = 25
• print("€%f" %anos)
• print("€%3.2f" %anos)
• print("€ %3.2f" %anos)
• print("%3.2f €" %anos)
3 casas no total e duas casas decimais
Como mostrar na tela a seguinte frase: “João tem 22 anos e apenas € 51,34 em sua
carteira”?
• print("%s tem %d anos e apenas € %5.2f em sua carteira." %("João", 22, 51.34))
• print("%s tem %d anos e apenas € %5.2f em sua carteira." %("João", 22, 51.3456))
Aula 30-09-2020
Fatiamento de strings
• Podem ocorrer situações em que precisamos mostrar (ou usar) apenas parte de uma
string.
•s = "ABCDEFGHI"
• print(s[0:2])
• print(s[1:2])
• print(s[2:4])
• print(s[0:5])
• print(s[1:8])
• s = "ABCDEFGHI"
• print(s[:2])
• print(s[1:])
• print(s[0:-2])
• print(s[-1:])
• print(s[-5:7])
• print(s[-2:-1])
• print(s[:])
• Até agora trabalhamos apenas com valores conhecidos, escritos no próprio programa.
• É necessário adicionar aos programas mecanismos para permitir que novos valores
sejam fornecidos durante sua execução.
• A função input() sempre retorna valores do tipo str. entrada = input() print(entrada)
print(type(entrada)).
•Não se esqueça! A função input() sempre retorna valores do tipo str. Se forem solicitados
números ao utilizador deve-se convertê-los de str para int (ou float) antes de utilizá-los.
• Escreva um programa que solicite dois números inteiros. Mostre a soma desses
dois números na tela.
• Escreva um programa que leia um valor em metros inserido pelo utilizador e o exiba
convertido em milímetros.
Aula 01-10-2020
x = 200.0
y=5
z=x/y
print(type(z))
• A divisão de int por outro int sempre resulta em float – mas o programador pode querer (ou
precisar) o resultado em int.
type(10 / 5)
x = int(10 / 5)
print(type(x))
• Pode também ser necessário converter uma str em float – quando trabalha-se com
números com casas decimais, por exemplo.
x = “123”
type(x)
y = int(x)
type(y)
print(x == y)
a = 123
type(a)
b = str(a)
type(b)
print(a == b)
Podem ser feitos comentários em várias linhas, bastando inserir três aspas duplas no início
e ao final do trecho.
• Existem situações em que queremos que o Python “pule” uma ou mais linhas do nosso
código.
• Serão situações em que partes do programa devem ser executadas apenas em
decorrência do resultado de uma condição.
• A base dessas decisões consistirá em expressões lógicas que permitam representar
escolhas em programas: é a chamada execução condicional, baseada na lógica do if-
else.
• A lógica é simples: se o que vier após o if for verdadeiro (True), o bloco é executado.
•O if, portanto, nada mais é do que (literalmente) um se: se isso for verdadeiro, então
faça aquilo que está dentro do bloco.
• Como se define um bloco? Por meio da tecla ou por meio de 4 espaços em branco.
• Atenção: tudo que estiver dentro de um bloco será executado se a condição for
verdadeira. Um bloco, portanto, pode ter quantas linhas você quiser – desde que você
queira que tudo seja executado se a condição for verdadeira.
Neste segundo exemplo, como foi utilizado o símbolo <= (menor ou igual a), não ocorre o
problema do primeiro código: algo sempre será mostrado na tela.
Exercício (4): Escreva um programa que leia três números e que mostre na tela o
maior e o menor.
Aula 08-10-2020
Código “original”:
idade = int(input("Digite a idade de seu carro: "))
if idade <= 3:
print("Seu carro é novo.")
if idade > 3:
print("Seu carro é velho.")
Lembre-se de que o else deve ser escrito na mesma margem do if anterior para que o
Python compreenda que aquele else se refere àquele determinado if
– se não houver tal alinhamento o Python retornará uma mensagem de erro.
• Por que usar else? Os programas ficam mais claros, já que é possível expressar o que
fazer caso a condição especificada em if seja falsa.
• Atenção: o else será automaticamente executado se o if for falso.
Exercício (6): Escreva um programa que pergunte a distância que um passageiro deseja
percorrer em km. Calcule o preço da passagem, cobrado € 0,50 por km para viagens de
até 200 km, e € 0,45 para viagens mais longas.
• Com o Python é possível criar estruturas aninhadas, que nada mais são do que estruturas
if-else dentro de outras estruturas if-else.
•Imagine uma situação em que seja necessário calcular as tarifas de telemóvel com base
no número de minutos utilizados no mês:
Há uma outra forma de criar estruturas aninhadas sem, no entanto, efetivamente aninhar
os if-else: estamos falando da estrutura elif – que, como seu nome já indica, nada mais é
do que um else-if em sequência.
• A vantagem do elif é a criação de else-if sem criar outro nível de estrutura, evitando-se
problemas de deslocamentos desnecessários à direita.
Exercício (10): Crie uma calculadora em que o utilizador irá inserir dois números e o
símbolo da operação que deseja realizar: soma(+), subtração (-), multiplicação (*) ou
divisão (/). •
Exercício (12): Escreva um programa que calcule o preço a pagar pelo fornecimento
de energia elétrica. Pergunte a quantidade de kWh consumida e o tipo de instalação:
R para residências, I para indústrias e C para comércios. Calcule o preço a pagar de
acordo com a tabela apresentada a seguir. Mostre uma mensagem caso a instalação
indicada não seja nenhum destes 3 tipos.
Preço por tipo e faixa de consumo Tipo Faixa (kWh) Preço Residencial Até 500 Acima
de 500 € 0,40 € 0,65 Comercial Até 1000 Acima de 1000 € 0,55 € 0,60 Industrial Até
5000 Acima de 5000 € 0,50 € 0,65
Aula 12-10-2020
PJ
Uma estrutura de repetição nada mais é do que um comando em Python que faz com que
partes do seu código sejam executadas várias vezes, normalmente dependendo de uma
condição.
print(1)
print(2)
print(3)
• A primeira estrutura de repetição a ser apresentada é o while, que executa tudo que
estiver dentro do bloco enquanto a condição for verdadeira (True).
• Desta forma, para mostrar na tela os números de 1 a 3 bastaria utilizar este código: x = 1
while x <= 3:
print(x)
x=x+1
• É possível compreender a estrutura while como se fosse um if, com a diferença que o
código dentro do bloco será executado repetidamente enquanto a condição avaliada (ou
seja, o que estiver logo após a palavra while) for verdadeira.
•Imagine agora uma situação em que você, como programador, deva criar um código que
mostre na tela números inteiros iniciando com 1 e terminando com o valor inserido
pelo utilizador. Qual será o código para solucionar esta questão?
• Por exemplo, no código anterior o que acontece se você inserir o número zero?
•Nada aconteceu, você pode dizer; na verdade aconteceu – o programa foi executado
normalmente, mas nada foi mostrado devido à condição estabelecida no loop while – a
condição é falsa.
• Exercício (6): Crie um programa que mostre na tela apenas os números pares entre 0 e
um número digitado pelo utilizador.
•Obs.: há duas maneiras diferentes de solucionar este problema. Tente criar das duas
formas.
• Exercício (7): Crie um programa que mostre na tela apenas os números ímpares entre
1 e um número digitado pelo utilizador.
x=3
while x <= 30:
print(x)
x=x+3
Aula 14-10-2020
• Exercício (9): Escreva um programa que calcule a tabuada com base na vontade do
utilizador. O programa deve perguntar qual a tabuada (1, 2, ...), o número de início e o
número final. Veja à direita um exemplo do resultado esperado.
•Os contadores também podem ser úteis quando usados com condições dentro dos
programas.
• Por exemplo, é possível criar um programa para corrigir um teste de múltipla escolha
com três questões: a resposta da primeira é “b”, a resposta da segunda é “a” e a resposta
da terceira é “d”.
• Para cada resposta correta o programa deve atribuir 1 valor
valores = 0
questao = 1
while questao <= 3:
resposta = input("Resposta da questão %d: " %questao)
if questao == 1 and resposta ==
"b":
valores = valores + 1
if questao == 2 and resposta == "a":
valores = valores + 1
if questao == 3 and resposta ==
"d":
valores = valores + 1
questao += 1
print("O aluno fez %d valor(es)." %valores)
• Exercício (11): Modifique o código anterior para que o programa exiba a palavra “valor” no
singular ou a palavra “valores” no plural, a depender do número de valores obtidos na
avaliação. Se o aluno não obtiver nenhum valor deve ser exibida a mensagem “O aluno
recebeu nota igual a zero.”
valores = 0
questao = 1
while questao <= 3:
resposta = input("Resposta da questão %d: " %questao)
if questao == 1 and resposta == "b":
valores = valores + 1
if questao == 2 and resposta == "a":
valores = valores + 1
if questao == 3 and resposta == "d":
valores = valores + 1
questao += 1
if valores == 0:
print("O aluno recebeu nota igual a zero.")
elif valores == 1:
print("O aluno fez %d valor." %valores)
else:
print("O aluno fez %d valores." %valores)
•No entanto, em vez de apenas contarem quantas vezes o loop já ocorreu, elas também
acumulam valores a cada vez que o loop é executado.
n = 1 #contador
soma = 0 #acumulador
while n <= 10:
x = int(input("Digite o %dº número:" %n))
soma = soma + x
n=n+1
print("Soma: %d." %soma)
Aula 15-10-2020
• Assim como no caso do if, também com o while é possível criar estruturas aninhadas,
ou seja, um while dentro de outro while.
tabuada = 1
while tabuada <= 10:
numero = 1
while numero <= 10:
print("%d x %d = %d" % (tabuada, numero, tabuada * numero))
numero += 1
tabuada += 1
• É possível solucionar este problema de outra maneira:
tabuada = 1
numero = 1
while tabuada <= 10:
print("%d x %d = %d" %(tabuada, numero, tabuada * numero))
numero += 1
if numero == 11:
numero = 1
tabuada += 1
• Para fazer essa verificação, calcule o resto da divisão do número por 2 e depois por todos
os números ímpares até o número lido. Se o resto de uma dessas divisões for igual a zero,
o número não é primo. Observe que 0 e 1 não são primos e que 2 é o único número primo
que é par.
• Um número é palíndromo se continua o mesmo caso seus dígitos sejam invertidos. Ex.:
454, 10501.
# Função len():
# numero: 454
# índice: 012
•Neste caso deve-se utilizar a palavra reservada break para interromper a execução do
while independentemente do valor atual da sua condição.
• Por exemplo, imagine que o programa deva receber os números inseridos pelo
utilizador e apresentar o resultado final.
• É possível, neste caso, inserir a seguinte condição: se o número digitado for zero o
programa sai do while e mostra o resultado da soma de todos os números inseridos
anteriormente.
soma = 0
while True: # com o True o código executa “eternamente”
num = int(input("Digite um número a somar ou 0 para sair: "))
if num == 0:
break
soma = soma + num
print("O somatório de todos os números inseridos equivale a %d”
%soma)
Aula 19-10-2020
Estrutura do teste :
• “Leitura” de código;
• Correção de código; (Na linha x é indicar qual é o erro(Ex: o código devia estar fora do
bloco while / encontrar o erro e corrigi-lo)
Correção de Código: A expressão está sempre no plural mas não quer dizer
necessariamente que tenha mais do que um erro, podemos pensar em alguns erros. Aqui
há 2 erros que é um erro de lógica que é a questão do while. é uma leitura em busca dos
erros. Podemos usar o site e meter lá o código. A penúltima linha tem que estar fora do if
porque senão a questão só aumenta se a resposta for D à terceira pergunta. A variável
questão é um contador. Tem de estar alinhada com um if.
• Sugere-se que o arquivo com extensão “.py” seja comprimido em formato ZIP – caso
contrário poderá haver erro no envio do mesmo ao professor.
Estruturas de repetição
•Há também a palavra reservada continue, que irá parar a execução do bloco while,
retornando ao seu início.
•O continue será utilizado, portanto, quando você quiser que seu programa pare a execução
dos restantes comandos dentro do bloco while e retorne para o início do bloco while.
•Já o break será utilizado quando você quiser que seu programa pare a execução dos
restantes comandos dentro do bloco while e vá para a linha imediatamente subsequente no
seu programa
while True:
linha = input("Digite qualquer coisa ou \"fim\" para terminar: ")
if linha == "fim":
break
print(linha)
print("Fim!")
• Exercício (17): Escreva um programa que leia números inteiros inseridos pelo utilizador. O
programa deve ler os números até que seja inserido o número zero. No final da execução,
exiba a quantidade de números digitados, assim como a soma e a média aritmética.
soma = 0
quantidade = 0
while True:
num = int(input("Digite um número inteiro: "))
if num == 0:
break;
soma = soma + num
quantidade = quantidade + 1
print("Quantidade de números digitados: %d." %quantidade)
print("Soma: %d." %soma)
print("Média: %.2f." %(soma/quantidade))
• Exercício (18): Escreva um programa para controlar uma pequena caixa registradora.
Você deve solicitar ao utilizador que digite o código do produto e a quantidade comprada.
Utilize a tabela de códigos ao lado para obter o preço de cada produto. Seu programa deve
exibir o total das compras depois que o utilizador digitar zero. Qualquer outro código deve
gerar a mensagem de erro “Código inválido”.
valor_a_pagar = 0
while True:
codigo = input("Código da mercadoria (0 para sair): ")
preco = 0
if codigo == "0":
break;
elif codigo == "1":
preco = 0.5
elif codigo == "2":
preco = 1
elif codigo == "3":
preco = 4
elif codigo == "5":
preco = 7
elif codigo == "9":
preco = 8
else:
print("Código inválido! Digite um código válido - 1, 2, 3, 5 ou 9.")
continue
quantidade = int(input("Quantidade: "))
valor_a_pagar = valor_a_pagar + (preco * quantidade)
print("Total a pagar: € %.2f." %valor_a_pagar)
Aula 21-10-2020 PJ
•O que fazer quando a pessoa inserir algum dado que nosso programa não é capaz de
compreender? Por exemplo, se em vez de digitar um número a pessoa digitar uma letra?
Digite um número: A Traceback (most recent call last): File "ex-23.py", line 1, in a =
int(input("Digite um número: ")) ValueError: invalid literal for int() with base 10: 'A'
• Estaremos diante do já conhecido Traceback.
• É para este tipo de situação – quando o programador imagina previamente que poderá
ocorrer algum problema – que é utilizada a estrutura try-except.
• Para utilizar o try-except basta inserir as instruções que você quer ver executada dentro
destas respectivas estruturas.
• Exemplo:
x = input(“Digite um número: ”)
try: #perceba a obrigatoriedade dos dois pontos
x = int(x)
if x > 0:
print(“X é um número positivo.”)
except: #perceba a obrigatoriedade dos dois pontos
print(“Você não digitou um número.”)
• Exercício (27): Crie um programa que faça a conversão entre notas e menções entre
0,0 (zero) e 1,0 (um) conforme a tabela abaixo:
score = float(input("Digite a sua nota com valores entre 0.0 e 1,0: "))
if score > 1:
print("O número deve ser entre 0.0 e 1.0!")
elif score < 0:
print("O número deve ser entre 0.0 e 1.0!")
elif score >= 0.9:
print("Superior")
elif score >= 0.8:
print("Médio superior")
elif score >= 0.7:
print("Médio")
elif score >= 0.6:
print("Médio inferior")
else:
print("Insuficiente")
• Exercício (28): crie uma calculadora que é executada continuamente até que o
utilizador insira “sair” em qualquer momento de entrada de dados. Tenha atenção à
possibilidade do utilizador inserir caracteres inválidos – seja nos números, seja nos
operadores matemáticos
print("Calculadora 1.0\n")
print("Siga as instruções ou digite \"sair\" para terminar o programa.\n")
while True:
num1 = input("Digite o primeiro número: ")
if num1 == "sair":
break
try:
num1 = float(num1)
except:
print("\nPor favor, digite apenas números ou \"sair\" para terminar o programa.\n")
continue
num2 = input("Digite o segundo número: ")
if num2 == "sair":
break
try:
num2 = float(num2)
except:
print("\nPor favor, digite apenas números ou \"sair\" para terminar o programa.\n")
continue
operador = input("Digite o operador matemático (+, -, *, /): ")
if operador == "sair":
break
if operador == "+":
resultado = num1 + num2
elif operador == "-":
resultado = num1 - num2
elif operador == "*":
resultado = num1 * num2
elif operador == "/":
resultado = num1 / num2
else:
print("\nPor favor, digite um operador matemático válido ou \"sair\" para terminar o
programa.\n")
continue
print("Resultado da operação: %.2f.\n" %resultado)
print("\nObrigado por utilizar a Calculadora 1.0.\n")
Aula 22-10-2020
• Por analogia: você é convidado por alguém para ir ao cinema e diz que irá ter com a
pessoa no local depois de trocar de roupa.
• A expressão trocar de roupa poderá ser entendida como uma função, já que ela é
composta por várias outras ações.
•Já foram usadas várias funções até o momento: print(), input(), type(), int(), float(), str(),
len(), sum(), min(), max(). Se pensarmos na função print(), veja o que ela faz quando é
chamada (ou seja, quando é inserida no seu código):
• Transforma tudo o que você informar, inclusive números, em strings [daí a necessidade de
converter os números com a função str()];
• Adiciona um caractere de nova linha ao final de cada frase (“\n”), de forma que cada
chamada de print() termine em uma linha nova,
•Na prática, você não precisa saber como funciona a função print() “por dentro”: você
apenas a utiliza, inserindo o que quer que ela mostre sem se preocupar com o que ela faz
para exibir o resultado.
•Um aspecto relevante das funções é que elas são utilizadas para que sejam evitadas
repetições.
• Ou seja, se você perceber que está utilizando o mesmo código, ou conjunto de
código, de maneira repetida, você provavelmente se sairá melhor com uma função.
• Em uma função é possível combinar códigos que você quer usar mais de uma vez.
codigo1
codigo2 ...
codigoN
• Durante a execução do seu código você irá chamar a função colocando o nome dela
seguido de parênteses..
def diz_bom_dia():
print(“Bom dia!”)
print(“Olá!”)
diz_bom_dia()
• Resultado: Olá!
Bom dia!
•O que vem dentro dos parênteses corresponde aos argumentos de uma função. No caso
da função print(), o argumento corresponde àquilo que queremos que o programa nos
mostre.
•No caso da função que você mesmo cria, a existência (ou não) de argumentos dependerá
do que você quer que a função faça (mais sobre isso adiante).
•O cabeçalho da função sempre termina com “:”. O conteúdo da função deve ser recuado e
terá quantas linhas forem necessárias.
– The Beatles
• https://www.letras.mus.br/the-beatles/182
• Ex. 02
def introducao():
print("Help, I need somebody")
print("Help, not just anybody")
print("Help, you know I need someone, help!\n")
def estrofe_repetida():
print("When I was younger, so much younger than today")
print("I never needed anybody's help in any way")
print("But now these days are gone, I'm not so self assured")
print("Now I find I've changed my mind and opened up the doors\n")
def refrao():
print("Help me if you can, I'm feeling down")
print("And I do appreciate you being round")
print("Help me, get my feet back on the ground")
print("Won't you please, please help me?\n")
def estrofe_2():
print("And now my life has changed in oh so many ways")
print("My independence seems to vanish in the haze")
print("But every now and then I feel so insecure")
print("I know that I just need you like I've never done before\n")
print("Help – The Beatles\n")
introducao()
estrofe_repetida()
refrao()
estrofe_2()
refrao()
estrofe_repetida()
refrao()
•Não se esqueça de que a definição de uma função deve ser realizada antes de
chamá-la no código do seu programa!
def introducao():
print("Help, I need somebody")
print("Help, not just anybody")
print("Help, you know I need someone, help!\n")
def estrofe_repetida():
print("When I was younger, so much younger than today")
print("I never needed anybody's help in any way")
print("But now these days are gone, I'm not so self assured")
print("Now I find I've changed my mind and opened up the doors\n")
def refrao():
print("Help me if you can, I'm feeling down")
print("And I do appreciate you being round")
print("Help me, get my feet back on the ground")
print("Won't you please, please help me?\n")
def estrofe_2():
print("And now my life has changed in oh so many ways")
print("My independence seems to vanish in the haze")
print("But every now and then I feel so insecure")
print("I know that I just need you like I've never done before\n")
def padrao_estrofe_refrao():
estrofe_repetida()
refrao()
def toca_a_musica():
print("Help – The Beatles\n")
introducao()
padrao_estrofe_refrao()
estrofe_2()
refrao()
padrao_estrofe_refrao()
toca_a_musica()
•O que aparece entre os parênteses de uma função quando ela é chamada no seu
programa são seus argumentos – que, por sua vez, são considerados como parâmetros na
declaração da função.
•Os parâmetros especificam qual informação, se alguma, você deve providenciar para que a
função possa ser usada.
•Outra forma de dizer isto é que os parâmetros especificam o que a função necessita
para executar a sua tarefa.
• Argumentos: valores que “vêm de fora” e que são passados “para dentro” de uma função
durante a execução do código.
• É um valor fornecido para uma função quando a função é chamada. Este valor é
atribuído ao parâmetro correspondente na função. O argumento pode ser o resultado de
uma expressão que pode envolver operadores, operandos e chamadas a outras funções.
• Corresponde a um nome usado dentro de uma função para se referir ao valor que foi
passado a ela como um argumento.
def funcao(parametro):
codigo1_usando_parametro
codigo2_usando_parametro
…
codigoN_usando_parametro
funcao(argumento)
• É necessário entender que o parâmetro de uma função é uma espécie de variável local ou
temporária – isto é, ela só existe dentro da função e enquanto a função estiver sendo
executada.
• Esta variável local existe somente dentro da função e não pode ser usada fora dela.
Aula 26-10-2020
Montar um esqueleto para fazer aquilo que é pedido e se sobrar tempo melhoramos o
programa.
def elevado_ao_cubo(n):
print(str(n**3))
elevado_ao_cubo(12)
•Na primeira linha a função elevado_ao_cubo tem como parâmetro a variável local n.
•No âmbito da execução da função elevado_ao_cubo (terceira linha) o argumento que lhe
foi repassado é o valor 12.
• As funções mais relevantes são aquelas que retornam valores. Por outras palavras,
elas recebem algo como argumento e devolve algo que é o resultado daquilo que a
função realiza.
• A compreensão da execução de funções fica mais clara quando se sabe que o código
será executado seguindo o fluxo de execução, ou seja, saber a ordem em que os
comandos são executados.
• A execução sempre começa no primeiro comando do programa, sendo estes
executados um de cada vez de cima para baixo.
• Cada vez uma função termina, o programa volta para onde tinha parado quando a função
foi chamada. Quando o fim do programa é atingido, ele termina.
•Isso soa bastante simples, até você lembrar que uma função pode chamar outra função.
Enquanto estiver no meio de uma função, o programa pode ter que executar os comandos
de uma segunda função. Mas enquanto estiver executando a segunda função, o programa
pode ter que executar ainda uma terceira função.
• Cada vez uma função termina, o programa volta para onde tinha parado quando a
função foi chamada. Quando o fim do programa é atingido, ele termina
• A divisão de um programa longo em funções permite depurar as peças uma de cada vez e
depois montá-las em um todo em funcionamento.
• Funções bem projetadas são frequentemente úteis para muitos programas. Depois
de escrever e depurar uma, você poderá reutilizá-la.
• Prática (ex. 05): modifique o código abaixo para que o programa mostre o resultado de
um número inserido pelo utilizador elevado ao cubo.
def elevado_ao_cubo(n):
print(str(n**3))
elevado_ao_cubo(12)
import math
def elevado_ao_cubo(n):
print(str(n) + " elevado ao cubo é igual a " + str(n**3) + ".")
print("%s elevado ao cubo é igual a " %n + str(n**3) + ".")
num = int(input("Digite um número para elevá-lo ao cubo: "))
elevado_ao_cubo(num)
def sequencia(n):
print("\n")
for num in range(1, n + 1):
for i in range(num):
print (num, end=" ")
print("\n")
num = int(input("Digite um número: "))
if num < 1 or num > 9:
print("O número tem de ser entre 1 e 9. Tente novamente.")
else:
sequencia(num)
• Prática: reescreva o seu programa de cálculo do salário bruto mensal por meio de
uma função de nome calcula_salario() cujos argumentos sejam o número de horas
trabalhadas por semana e o valor pago por hora, retornando o valor mensal. Estes
números (inteiros) serão inseridos pelo utilizador do programa. Mensagens devem
ser exibidas caso a pessoa insira letras ou números decimais tanto no campo de
horas trabalhadas quanto no campo de valor pago por hora. O programa deve ser
executado indefinidamente até que a pessoa insira “-1” como número de horas
trabalhadas.
while True:
while True:
valorPorHora = input("Digite o valor pago por hora: ")
try:
valorPorHora = int(valorPorHora)
break
except:
print("Por favor, insira apenas números.")
continue
while True:
quantidadeHoras = input("Digite o número de horas trabalhadas por semana ou \"-1\"
para encerrar: ")
try:
quantidadeHoras = int(quantidadeHoras)
break
except:
print("Por favor, insira apenas números.")
continue
if quantidadeHoras == -1:
print("Obrigado por utilizar nosso programa.\n")
# break
break
salarioBruto = calculaSalario(valorPorHora, quantidadeHoras)
if salarioBruto > 2401:
irs = 32
elif salarioBruto > 1801:
irs = 24
elif salarioBruto > 1201:
irs = 16
elif salarioBruto > 601:
irs = 8
else:
irs = 0
valorIRS = int(salarioBruto * (irs / 100))
valorSS = int(salarioBruto * (11 / 100))
salarioLiquido = int(salarioBruto - valorIRS - valorSS)
print("Salário bruto: " + str(salarioBruto) + "€/mês.")
print("Desconto do IRS (" + str(irs) + "% do salário bruto): " + str(valorIRS) + "€.")
print("Desconto da Segurança Social (11% do salário bruto): " + str(valorSS) + "€.")
print("Valor total dos descontos: " + str(valorSS + valorIRS) + "€.")
print("Salário líquido: " + str(salarioLiquido) + "€/mês.\n")
• Prática: crie um programa usando uma função que retorne a menção correspondente à
nota inserida pelo utilizador. A nota deve ser referente a valores entre 0,0 (zero) e 1,0 (um)
e as menções correspondentes deverão ser exibidas conforme a tabela abaixo:
• Se a pessoa digitar um valor que esteja fora das notas possíveis deve-se mostrar uma
mensagem de erro.
• O programa será executado continuamente até que seja inserido o número “-1”.
import os
def conversor_nota(a):
if a > 1:
print("O número deve ser entre 0.0 e 1.0!")
elif a < 0:
print("O número deve ser entre 0.0 e 1.0!")
elif a >= 0.9:
print("Superior")
elif a >= 0.8:
print("Médio superior")
elif a >= 0.7:
print("Médio")
elif a >= 0.6:
print("Médio inferior")
else:
print("Insuficiente")
while True:
while True:
nota = input("Digite a sua nota com valores entre 0.0 e 1.0 ou \"-1\" para encerrar: ")
try:
nota = float(nota)
break
except:
print("Por favor, digite apenas números com pontos para indicar decimais, se for o
caso.")
continue
if nota == -1:
print("Obrigado por utilizar o programa.")
break
conversor_nota(nota)
Aula 29-10-2020
Nota: Ver a aula de revisão do teste de dia 29-10-2020 para a próxima aula porque o
Professor vai explicando como fazer. Apesar da matéria ser diferente é útil para entender a
metodología.
Correção do teste:
Nota: Fazer um try e um except em todos os programas para ver se o número digitado é
uma letra ou um número.
while True:
while True:
num1 = input("Insira o primeiro número ou \"-1\" para encerrar: ")
try:
num1 = int(num1)
break
except:
print("Por favor, digite apenas números inteiros. Tente novamente.")
continue
if num1 == -1:
print("Obrigado e até a próxima!")
break
while True:
num2 = input("Insira o segundo número ou \"-1\" para encerrar: ")
try:
num2 = int(num2)
break
except:
print("Por favor, digite apenas números inteiros. Tente novamente.")
continue
if num2 == -1:
print("Obrigado e até a próxima!")
break
if num1 % 4 == 0:
print("O primeiro número (%d) é divisível por 4." %num1)
elif num1 % 2 == 0:
print("O primeiro número (%d) é um número par." %num1)
elif num1 % 2 != 0:
print("O primeiro número (%d) é um número ímpar." %num1)
if num1 % num2 == 0:
print("O resultado da divisão de %d por %d é exato (o resto é igual a zero)." %(num1,
num2))
else:
print("O resultado da divisão de %d por %d não é exato (o resto é diferente de zero)."
%(num1, num2))
while True:
while True:
num1 = input("Digite o 1º número ou \"0\" para encerrar: ")
try:
num1 = int(num1)
break
except:
print("Por favor, digite apenas números. Obrigado e tente novamente.")
continue
if num1 == 0:
print("Obrigado e até a próxima!")
break
while True:
num2 = input("Digite o 2º número ou \"0\" para encerrar: ")
try:
num2 = int(num2)
break
except:
print("Por favor, digite apenas números. Obrigado e tente novamente.")
continue
if num2 == 0:
print("Obrigado e até a próxima!")
break
while True:
num3 = input("Digite o 3º número ou \"0\" para encerrar: ")
try:
num3 = int(num3)
break
except:
print("Por favor, digite apenas números. Obrigado e tente novamente.")
continue
if num3 == 0:
print("Obrigado e até a próxima!")
break
if num1 == num2 == num3:
print("Como os números são iguais, sua soma multiplicada por 3 resulta em %d." %
(resultado(num1, num2, num3)))
else:
print("Como os números são diferentes, o somatório deles resulta em %d." %
(resultado(num1, num2, num3)))
5) (2 valores) Quero escrever um programa que mostre todos os números de 1 a 10,
menos aqueles que sejam múltiplos de 3. Escrevi o código abaixo, mas o programa
não está fazendo o que quero. Corrija o código.
x=0
while x < 11:
if (x == 3 or x == 6 or x == 9):
continue
print(x)
x += 1
x=0
while x < 10:
x += 1
if (x == 3 or x == 6 or x == 9):
continue
print(x)
6) (5 valores) Peça ao utilizador que insira um número. Se o número for maior que 50,
mostre uma mensagem dizendo que o número escolhido está errado, e peça
novamente um número, mas sem indicar que o número não pode ser maior que 50. Se
o número for menor de 50, mostre na tela todos os número de 1 até o número
inserido pelo utilizador com base nas seguintes regras: a) Se o número a ser
mostrado for múltiplo de 3, mostre “Múltiplo de 3” em vez do número; b) Se o número
a ser mostrado for múltiplo de 5, mostre “Múltiplo de 5” em vez do número; c) Se o
número a ser mostrado for múltiplo de 3 ou múltiplo de 5, mostre “Múltiplo de 3 ou
múltiplo de 5” em vez do número. Se o utilizador inserir qualquer outra coisa que não
um número, mostre uma mensagem de erro. O programa só termina quando o
utilizador inserir o número zero.
while True:
while True:
num = input("Digite um número ou \"0\" para encerrar: ")
try:
num = int(num)
break
except:
print("Por favor, digite apenas números. Obrigado e tente novamente.")
continue
if num == 0:
print("Obrigado e até a próxima!")
break
elif num > 50 or num < 0:
print("Por favor, tente novamente com outro número.")
continue
else:
inicio = 0
while inicio < num:
inicio += 1
if inicio % 3 == 0 and inicio % 5 == 0:
print("Múltiplo de 3 e múltiplo de 5")
continue
elif inicio % 3 == 0:
print("Múltiplo de 3")
continue
elif inicio % 5 == 0:
print("Múltiplo de 5")
continue
else:
print(inicio)
Aula 29-10-2020
•No entanto, é importante destacar que uma string também deve ser compreendida como
uma sequência de caracteres.
•O entendimento deste conceito é importante porque é possível ter acesso a cada letra de
uma string por meio da indicação do seu índice – ou seja, de sua posição na sequência
de caracteres.
fruta = “banana”
letra = fruta[1]
print(letra)
• Assim o é porque todo índice – seja de strings, seja de listas – começa com o número
zero, não com o número 1.
•O valor dos índices sempre deverá ser um inteiro – ainda que possa ser uma variável
cujo conteúdo seja um número inteiro.
• Da mesma forma que em uma lista, é possível descobrir o tamanho de uma string usando
a função len() – mas é necessário sempre ter em mente que a contagem iniciará no
número zero.
• Para fazê-lo deve-se indicar a string seguida de colchetes e, dentro destes, os números
de início e de fim referentes ao índice das letras, separados por dois pontos.
fruta = “banana”
print(fruta[1:4])
• É necessário lembrar que o último número não será buscado – ou seja, o Python
buscará até o número anterior (= função range()).
• Se você deixar o primeiro número em branco, ele pegará a partir do índice zero. Se
você deixar o último número em branco, ele pegará até o último caractere.
fruta = “banana”
print(fruta[:4])
print(fruta[2:])
• Se os números forem iguais, será retornada uma string vazia.
• Prática: crie um programa – usando o loop while – que peça uma palavra à pessoa e,
em seguida, mostre cada uma das letras em sequência, uma em cada linha (ex. 01).
while True:
contador = 0
palavra = input("Digite uma palavra por favor:")
quantidade = int(len(palavra))
while contador < quantidade:
print(palavra[contador])
contador += 1
• Prática: crie um programa – usando o loop while – que peça uma palavra à pessoa e,
em seguida, mostre cada uma das letras de trás para frente, uma em cada linha (ex.
02).
Aula 02-11-2020
Quando criamos um while temos de criar um mecanismo para que o programa termine o
loop while.
O for é utilizado quando sabemos quantas vezes o loop vai ser executado. Sabemos que
o programa deve mostrar enquanto tiver caracteres.
Se eu insiro o meu nome, o programa vai ser executado quantas vezes o meu nome.
for letra in nome significa dizer ao python para pegar no conteudo da variavel nome e
o python criar uma espécie de outra variável chamada letra que vai conter cada
caracter da minha string so que em momentos alternados. Em vez de falar para o
python e pedir para mostrar o conteúdo de índice x o python já vai estar a fazer isso.
Quando o programa executa da primeira vez o conteudo da variavel letra vai ser a letra M e
depois executa a variável de nome e vai para a próxima letra e mostra o A e assim
sucessivamente.
Eu não preciso de dizer ao python para mostrar aquilo que está naquele índice, o python faz
isso para mim.
O for é mais simples porque o programador não precisa de criar um contador
n=1
while n < 6:
print(n)
n = n +1
print(“Fim”)
O número inicial(se não indicado começa-se no zero), final(lembrando que será gerado
até ao número anterior)
e a variação entre os números. (padrão = 1).
A função range so gera números inteiros, o objetivo é permitir que possamos gerar números
O range é muito relevante quando temos uma noção quando vai ser executado e não
queremos criar uma variavel para ser o contador.
Durante a própria execução do programa,
(ex-03.py)
for n in range(5):
print(n)
Ele é muito utilizado para ler strings e listas. Não temos que nos preocupar já com listas.
Temos vários itens separados com listas e cada lista tem o seu índice. 3 no índice 0.
X vai para o primeiro, o contador aumenta vai para o segundo elemento da lista e assim
sucessivamente. A função len conta os caracteres, têm basicamente um foque varre as
linhas.
Ex: Crie um programa que peça para que a pessoa insira qualquer coisa e, em
seguida, mostre(com o comando for) cada caractere inserido.
Fruta que está na posição zero passa a ter um B maiúsculo, a variável a que nos estamos a
referir não pode ter o seu conteúdo alterado, ou seja, strings são imutáveis.
Se precisar de alterar a primeira letra eu crio uma nova variável utilizando o slicing
utilizando o pedaço da segunda variável. Pegue todos os caracteres do primeiro índice ate
ao ultimo e concatenar com a letra B.
Nova fruta recebe o B concatenado com fruta até ao fim.
print(nova_fruta) ele mostra com a maiúscula, existem outras formas.O ponto é que não
podemos atribuir um novo conteúdo para a string e isto é importante para evitar erros nos
programas mais para a frente.
Nota: Se criarmos uma aplicação para fazer um resumo do texto.Conseguimos utilizar livros
ou artigos para serem resumidos. Vão ser resumos de palavras mas vão dar a ideia do
conteúdo.
Prática: Criar um programa que seja executado continuamente que tenha como objetivo
contra as vogais que o utilizador inseriu.
Se forem inseridos números diga que não pode. Temos de ter um while true, input, if se for
igual a fim termine, try except temos de ver se inseriu caracteres que são letras ou números
e se forem números não pode e temos que colocar um for que leia o conteudo da variavel e
onde tiver vogais ele conta.
Se for igual a ele aumenta o contador ou e aumenta , etc…. Se houver um ponto na palavra
eu estou a verificar se a pessoa digitou um float e se a conversão der certo eu não quero.
(faço um if para dizer que não quero numeros e utilizo um else e se der certo também não
quero.
Se da erro na conversão para números é porque está ok porque a pessoa digitar um
caractere.
Se o contador for maior do que 1 eu digo que tem x, se for < 1 eu digo que não tem vogais.
def limpa_tudo():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
limpa_tudo()
while True:
palavra = input("Digite algo ou \"fim\" para encerrar: ")
try:
if "." in palavra:
var = float(palavra)
print("Por favor, digite apenas texto, não números.")
continue
else:
var = int(palavra)
print("Por favor, digite apenas texto, não números.")
continue
except:
if palavra == "fim":
print("\nObrigado por utilizar o programa. Até a próxima!\n")
break
contador = 0
for letra in palavra:
if letra == "a" or letra == "e" or letra == "i" or letra == "o" or letra == "u":
contador += 1
if contador == 1:
print("Existe uma vogal no que você digitou.\n")
elif contador > 1:
print("Existem %s vogais no que você digitou.\n" %contador)
else:
print("A palavra digitada não contém nenhuma vogal.\n")
time.sleep(2)
limpa_tudo()
Aula 04-11-2020
Novo tópico é a parte de métodos a serem utilizados com strings e não só. Mas o nosso
foco são as strings.
Uma definição ao acréscimo do conceito de string: (não sai em exame) objeto para o python
: é composto pelos dados em si mesmos e pelos métodos utilizados para tratar tais dados.
Os métodos são como funções específicas do objeto em uso.
fruta = “banana”
dir(fruta)
- Em seguida usar o comando “help”: help(str.upper)
Vamos trabalhar com vários métodos nomeadamente os que não têm _ antes e depois.
Código do professor:
fruta = “banana”
fruta. #fruta + o ponto chama o método
fruta = “banana”
nova_fruta = fruta.upper()
print(nova_fruta)
Método lower() : retorna uma cópia de string com todos os caracteres minúsculos.
Método upper() : retorna uma cópia de string com todos os caracteres maiúsculos.
fruta = “banana”
indice = fruta.find(“a”)
print(indice)
resultado = 1
Pode-se utilizar também, como argumento do método find(), um “pedaço” de uma string.
fruta = “banana”
indice= fruta.find(“na”)
print(indice)
resultado: 2
Será indicado o índice da primeira letra indicada no método.
• Se você quiser pesquisar da direita para a esquerda utilize o método rfind() (ex-16.py).
Outra forma de verificar se uma palavra pertence a uma string é utilizando o operador in.
Aula 09-11-2020
Nota: O operador in não indica o índice. Só indica se a expressão está ou não presente na
sua string.
• Você também pode testar se uma string não está contida em outra utilizando o
operador not in (ex-13.py).
• Você pode combinar lower() e upper() com in e not in para ignorar a diferença entre
maiúsculas e minúsculas quando você fizer estas verificações (ex-14.py).
Método count(): conta as ocorrências de uma letra ou palavra em uma string (ex-
15.py).
• Método strip(): remove espaços em branco antes ou depois da string (sejam tabs,
caractere de nova linha ou simples espaços):
fruta = “ banana ”
print(fruta.strip())
• Resultado: “banana”
• Existem também os métodos lstrip() (esquerda) e rstrip(direita).
• Se você passar um parâmetro para estes métodos, o mesmo será o caractere a ser
removido.
• Método startswith(): indica se uma string começa ou não com determinado caractere
– retorna True ou False:
fruta = “banana”
print(fruta.startswith(“B”))
• Resultado: False
• É necessário tomar cuidado com a distinção entre maiúsculas e minúsculas!
• Método endswith(): indica se uma string termina ou não com determinado caractere –
retorna True ou False:
fruta = “banana”
print(fruta.endswith(“B”))
• Resultado: False
• É necessário tomar cuidado com a distinção entre maiúsculas e minúsculas!
• Existem ainda métodos que nos permitem fazer validações do conteúdo inserido pelo
utilizador.
• Estes métodos verificam se todos os caracteres são letras, números ou uma
combinação deles.
•O método isalnum() retorna True se a string não estiver vazia e se todos os caracteres
forem letras e/ou números. (alpha-letra e números)
•O método isalpha() é mais restritivo, pois retorna True apenas se todos os caracteres
forem letras, incluindo vogais acentuadas.
• Retorna False se algum outro tipo de caractere for encontrado na string ou se esta estiver
vazia (ex-21.py).
s = "125"
p = "alô mundo"
print(s)
print(p)
print(s.isalnum())
print(p.isalnum())
print(s.isalpha())
print(p.isalpha())
print("771".isdigit())
print("10.4".isdigit())
print("+10".isdigit())
print("-5".isdigit())
•Há também como verificar se a string contém apenas caracteres em branco, como
espaços, marcas de tabulação (TAB), quebras de linha ou retorno (enter). Utiliza-se
neste caso o método isspace() (ex24.py).
Aula 11-11-2020
• É possível concatenar métodos com o objetivo de fazer determinadas verificações:
fruta = “banana”
print(fruta.upper().startswith(“B”))
• Resultado: True
•(ex-11.py)
•Uma das maiores utilidades do Python é a análise de strings: a ideia é verificar se algo
está presente no texto para posterior análise/uso.
• Ex.: quero criar uma planilha em Excel com todos os emails de contato presentes nos
contratos da minha empresa.
• Se trabalho com 500 contratos, será mais útil criar um programa em Python para que
ele leia automaticamente os contratos e me indique os emails presentes no texto.
• A primeira coisa a se fazer é abrir o documento que contém o contrato, que poderá estar
em formato TXT, PDF ou DOCX (isto será explicado em aulas futuras).
•Uma vez aberto o documento, atribuo o texto a alguma variável e pesquiso neste texto
a presença de determinados caracteres.
• Se estou trabalhando com emails, poderá ser interessante pesquisar pelo símbolo de “@”,
pela extensão do email (“.com”, “.pt”, etc.) e por espaços em branco após a extensão
do email.
• Exemplo: nos meus contratos há sempre o seguinte texto: “Empresa XPTO Lda.,
sociedade com sede na Rua XPTO, pessoa coletiva n.º 123, registada na Conservatória de
Registo Comercial de XPTO com o capital social de € 10, neste ato representada pelo
Senhor José XPTO, na qualidade de procurador, devendo ser contactado exclusivamente
pelo email [email protected], doravante designada por Segunda Outorgante [...]”.
•Importante: sei que sempre após o email aparecerá uma vírgula, já que este é um
contrato padrão que faço com meus fornecedores.
• Prática: crie um programa que verifique se o que o utilizador inseriu é uma vírgula de
um texto ou se é uma vírgula de um número.
• Se for vírgula de um texto, contar quantas vogais existem na palavra (ou frase, ou
texto) inserida pelo utilizador.
• Se for vírgula de um número, mostre uma mensagem de erro pedindo para o utilizador
inserir apenas texto.
def limpa_tudo():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
def encontra_virgula(a):
indice = a.find(",")
try:
teste = int(a[indice - 1])
print("Por favor, insira apenas texto.\n")
return True
except:
return False
limpa_tudo()
while True:
palavra = input("Digite uma palavra sem acentos ou \"fim\" para encerrar: ").lower()
if "," in palavra:
condicao = encontra_virgula(palavra)
if condicao == True:
continue
try:
if "." in palavra:
var = float(palavra)
print("Por favor, digite apenas texto, não números.\n")
continue
else:
var = int(palavra)
print("Por favor, digite apenas texto, não números.\n")
continue
except:
if palavra == "fim":
print("\nObrigado por utilizar o programa. Até a próxima!\n")
break
contador = 0
for letra in palavra:
if letra == "a" or letra == "e" or letra == "i" or letra == "o" or letra == "u":
contador += 1
if contador == 1:
print("Existe uma vogal no que você digitou.\n")
elif contador > 1:
print("Existem %s vogais no que você digitou.\n" %contador)
else:
print("A palavra digitada não contém nenhuma vogal.\n")
time.sleep(5)
limpa_tudo()
def limpa_tudo():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
limpa_tudo()
print(texto + "\n")
lista_pos_arroba = []
lista_pos_espaco_antes = []
lista_pos_ponto_virgula = []
indice = 0
while True:
a = lista_pos_espaco_antes[indice]
b = lista_pos_ponto_virgula[indice]
email = texto[a:b]
print("O email nº %d é o %s." %((indice + 1), email))
indice += 1
if indice > (len(lista_pos_espaco_antes) - 1):
break
time.sleep(10)
limpa_tudo()
Aula 12-11-2020
def limpa_tudo():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
limpa_tudo()
print(texto + "\n")
lista_pos_arroba = []
lista_pos_espaco_antes = []
lista_pos_ponto_virgula = []
while True:
a = lista_pos_espaco_antes[indice]
b = lista_pos_ponto_virgula[indice]
email = texto[a:b]
print("O email nº %d é o %s." %((indice + 1), email))
indice += 1
if indice > (len(lista_pos_espaco_antes) - 1):
break
time.sleep(10)
limpa_tudo()
• Prática: crie um programa que verifique se o que o utilizador inseriu é uma vírgula
de um texto ou se é uma vírgula de um número.
• Se for vírgula de um texto, contar quantas vogais existem na palavra (ou frase, ou texto)
inserida pelo utilizador.
• Se for vírgula de um número, mostre uma mensagem de erro pedindo para o utilizador
inserir apenas texto.
•Insira “fim” para encerrar o programa (ex-09.py).
def limpa_tudo():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
def encontra_virgula(a):
indice = a.find(",")
try:
teste = int(a[indice - 1])
print("Por favor, insira apenas texto.\n")
return True
except:
return False
limpa_tudo()
while True:
palavra = input("Digite uma palavra sem acentos ou \"fim\" para encerrar: ").lower()
if "," in palavra:
condicao = encontra_virgula(palavra)
if condicao == True:
continue
try:
if "." in palavra:
var = float(palavra)
print("Por favor, digite apenas texto, não números.\n")
continue
else:
var = int(palavra)
print("Por favor, digite apenas texto, não números.\n")
continue
except:
if palavra == "fim":
print("\nObrigado por utilizar o programa. Até a próxima!\n")
break
contador = 0
for letra in palavra:
if letra == "a" or letra == "e" or letra == "i" or letra == "o" or letra == "u":
contador += 1
if contador == 1:
print("Existe uma vogal no que você digitou.\n")
elif contador > 1:
print("Existem %s vogais no que você digitou.\n" %contador)
else:
print("A palavra digitada não contém nenhuma vogal.\n")
time.sleep(5)
limpa_tudo()
•Uma lista pode conter zero ou mais elementos de um mesmo tipo ou de tipos diversos,
podendo inclusive conter outras listas.
• A linha de código acima cria uma lista chamada listaVazia com zero elementos, ou
seja, uma lista vazia.
• Para se criar uma lista com 3 elementos, utiliza-se a mesma estrutura, separando-se os
elementos por vírgulas: listaCheia = [15, 8, 9]
•O número 15 tem índice 0 e o número 9 tem índice 2 na listaCheia.
Nota: Não esquecer que nas listas começam-se a contar os elementos por 0.
• Se por um lado uma string é imutável, por outro uma lista pode ser alterada utilizando-se
o respectivo índice.
print(listaCheia[0])
15
listaCheia[0] = 7
print(listaCheia[0])
7
print(listaCheia)
notas = [6, 7, 5, 8, 9]
soma = 0
x=0
while x < 5:
soma += notas[x]
x += 1
print("Média: %.2f" %(soma/x))
Prática: altere o programa anterior de maneira que o utilizador insira sete notas do
aluno. Em seguida o programa mostra cada uma das notas e, ao final, a média (ex-
03.py)
notas = [0, 0, 0, 0, 0, 0, 0]
soma = 0
x=0
while x < 7:
notas[x] = float(input("Insira a nota do aluno: "))
soma += notas[x]
x += 1
x=0
while x < 7:
print("Nota %d: %.2f" %(x + 1, notas[x]))
x += 1
print("Média: %.2f" %(soma/x))
numeros = [0, 0, 0, 0, 0]
x=0
while x < 5:
numeros[x] = int(input("Digite um número: "))
x += 1
while True:
escolhido = int(input("Que posição você quer imprimir (0 para sair): "))
if escolhido == 0:
print("Até a próxima!")
break
print("Você escolheu o número %d." %(numeros[escolhido - 1]))
Aula 16-11-2020
numeros = [0, 0, 0, 0, 0]
x=0
while x < 5:
numeros[x] = int(input("Digite um número: "))
x += 1
while True:
escolhido = int(input("Que posição você quer imprimir (0 para sair): "))
if escolhido == 0:
print("Até a próxima!")
break
print("Você escolheu o número %d." %(numeros[escolhido - 1]))
Nota: Criamos a lista números, criamos um while, com um input dentro chamado escolhido,
no último print, fazemos os números - (escolhido -1).
Nem sempre vamos querer lidar com o original, mas pode acontecer o programa ter um erro
de semântica e perdemos o conteúdo daquela lista.
Podemos fazer uma cópia de uma lista. O que é que pensaríamos em termos de cópias ?
A lista V recebe o conteúdo da lista L. Lista V é uma cópia da lista L. A mostragem das
duas listas com os prints.
Atribuímos o número 6 ao índice 0 e ambos as listas ficam com o 6 no índice 0.
• É necessário ter cuidado ao se fazer cópias de listas: o Python não gera uma nova lista (a
cópia), mas sim cria um ponteiro para a lista original.
L = [1, 2, 3, 4, 5]
V=L
print(L)
print(V)
V[0] = 6
print(V)
print(L)
ex-05.py • O que temos aqui são duas variáveis apontando para a mesma lista.
• Para copiar efetivamente uma lista para uma nova variável é necessário utilizar o
símbolo [:].
L = [1, 2, 3, 4, 5]
V = L[:]
print(L)
print(V)
V[0] = 6
print(V)
print(L)
• Podemos também “fatiar” uma lista da mesma maneira que fizemos com strings (ex-
07.py).
• Podemos também descobrir o número de itens em uma lista com a função len().
• A função len() pode ser utilizada em repetições para controlar o limite dos índices de
uma lista.
• A vantagem desta técnica é que não precisaremos alterar o código caso alteremos o
conteúdo da lista (ex-08.py).
L = [1, 2, 3]
x=0
while x < len(L):
print(L[x])
x += 1
print("\n")
L = [7, 8, 9, 10, 11, 12]
x=0
while x < len(L):
print(L[x])
x += 1
•Uma das principais vantagens de trabalharmos com listas é poder adicionar novos
elementos durante a execução do programa.
• Para adicionar um elemento ao fim da lista utiliza-se o método append() (ex-11.py).
• É possível também adicionar elementos a uma lista com a adição de uma lista a
outra.
L = []
print(len(L))
L.append("a")
print(L)
L.append("b")
print(L)
L.append("c")
print(L)
print(len(L))
• A adição de listas implica sempre na utilização dos colchetes ([]) para indicar que
uma lista está sendo adicionada à outra (ex-13.py).
L = []
print(L)
L = L + [1]
print(L)
L += [2]
print(L)
L += [3, 4, 5]
print(L)
• É necessário tomar cuidado ao utilizar o método append(), pois ele irá adicionar tudo
que estiver dentro dos parênteses como um novo item único da lista original.
• Por outras palavras, é possível pedir ao append() para adicionar uma nova lista à lista
anterior, mas neste caso a lista inserida irá ser considerada como um novo item da lista,
não como um item normal – ou seja, haverá uma lista dentro de uma lista (ex-14.py,
ex-15.py).
ex-14.py
L = []
print(L)
print(len(L))
L.append("a")
print(L)
print(len(L))
L.append(["b", "c"])
print(L)
print(len(L))
Nota: O append de b e c estão dentro da mesma lista dentro de outra lista portanto quando
usamos a função len só conta para contar o a, b e c só conta até 2 porque b e c estao
dentro da mesma lista.
ex-15.py
L = []
print(L)
print(len(L))
L.append("a")
print(L)
print(len(L))
V = ["b", "c"]
L += V
print(L)
print(len(L))
• Para adicionar listas a listas pode-se utilizar também o método extend() (ex-16.py).
L = ["a"]
L.append("b")
print(L)
L.extend(["c"])
print(L)
L.append(["d", "e"])
print(L)
L.extend(["f", "g", "h"])
print(L)
• Para aceder a itens de listas dentro de listas utilizam-se dois colchetes, um indicando
a posição do item na primeira lista e o outro indicando a posição do item na segunda
lista: por exemplo,
L[2][1] (ex-19.py).
L = ["a"]
print("L = [\"a\"]")
print("Lista até agora: %s" %L)
print("Tamanho da lista: %d" %(len(L)))
input()
L.append(["b"])
print("L.append([\"b\"])")
print("Lista até agora: %s" %L)
print("Tamanho da lista: %d" %(len(L)))
input()
L.append(["c", "d"])
print("L.append([\"c\", \"d\"])")
print("Lista até agora: %s" %L)
print("Tamanho da lista: %d" %(len(L)))
input()
print("Posição 0 da lista (L[0]): %s – um caractere" %L[0])
input()
print("Posição 1 da lista (L[1]): %s – uma lista com um item" %L[1])
input()
print("Posição 2 da lista (L[2]): %s – uma lista de 2 itens" %L[2])
input()
print("Tamanho da posição 2 da lista (len(L[2])): %d" %len(L[2]))
input()
print("Como aceder ao 2º item da lista que está na posição 2 – item \"d\"?")
input()
print("Utiliza-se esta expressão: (L[2][1]) – obtém-se o item \"%s\"." %L[2][1])
input()
• Prática: crie um programa que peça apenas números inteiros ao utilizador, armazene-os
em uma lista e, ao final, mostre na tela todos os números inseridos. A inserção de números
é encerrada quando o utilizador inserir o número zero (ex-12.py).
L = []
while True:
n = int(input("Digite um número (0 para encerrar): "))
if n == 0:
break
L.append(n)
x=0
print("Números inseridos:")
while x < len(L):
print(L[x])
x += 1
• Prática: crie um programa que leia duas listas e que gere uma terceira com os elementos
das duas primeiras (ex-17.py).
primeira = []
segunda = []
while True:
e = int(input("Digite um valor para a primeira lista (0 para terminar): "))
if e == 0:
break
primeira.append(e)
while True:
e = int(input("Digite um valor para a segunda lista (0 para terminar): "))
if e == 0:
break
segunda.append(e)
terceira = primeira[:] # Copia os elementos da primeira lista
terceira.extend(segunda)
x=0
while x < len(terceira):
print(f"{x}: {terceira[x]}")
x=x+1
• Prática: crie um programa que percorra duas listas e gere uma terceira sem elementos
repetidos (ex-18.py).
primeira = []
segunda = []
while True:
e = int(input("Digite um valor para a primeira lista (0 para terminar):"))
if e == 0:
break
primeira.append(e)
while True:
e = int(input("Digite um valor para a segunda lista (0 para terminar):"))
if e == 0:
break
segunda.append(e)
terceira = []
# Aqui vamos criar uma outra lista, com os elementos da primeira
# e da segunda. Existem várias formas de resolver este exercício.
# Nesta solução, vamos pesquisar os valores a inserir na terceira
# lista. Se não existirem, adicionaremos à terceira. Caso contrário,
# não copiaremos, evitando assim os repetidos.
duas_listas = primeira[:]
duas_listas.extend(segunda)
x=0
while x < len(duas_listas):
y=0
while y < len(terceira):
if duas_listas[x] == terceira[y]:
break
y=y+1
if y == len(terceira):
terceira.append(duas_listas[x])
x=x+1
x=0
while x < len(terceira):
print("Índice: %d, Item: %d" %(x, terceira[x]))
x=x+1
Aula 18-11-2020
print("Método pop():")
ultimo = 10
fila = list(range(1, ultimo + 1))
while True:
print("\nExistem %d clientes na fila." %(len(fila)))
print("Fila atual: %s" %fila)
print("Digite F para adicionar um cliente ao fim da fila")
print("ou A para realizar o atendimento. S para sair.")
operacao = input("Operação (F, A ou S): ").upper()
if operacao == "A":
if len(fila) > 0:
atendido = fila.pop(0)
print(f"Cliente %d atendido." %atendido)
else:
print("Fila vazia! Ninguém para atender.")
elif operacao == "F":
ultimo += 1 # Incrementa o ticket do novo cliente
fila.append(ultimo)
elif operacao == "S":
print("Obrigado e até a próxima.")
break
else:
print("Operação inválida! Digite apenas F, A ou S!")
= [15, 7, 27, 39]
p = int(input("Digite o valor a procurar: "))
achou = False
x=0
while x < len(L):
if L[x] == p:
achou = True
break
x += 1
if achou:
print("%d achado na posição %d." %(p, x))
else:
print("%d não encontrado." %p)
"""
É possível acrescentar a instrução "else" na estrutura "for".
O objetivo é simples: fazer com que "algo" seja executado caso
a pesquisa chegue ao fim da lista e não encontre nenhum resultado.
O "else" pode ser utilizado desta mesma forma após a estrutura "while".
"""
• Pode-se utilizar duas maneiras diferentes para mostrar o índice de uma lista e seu
respectivo conteúdo: a primeira é por meio de um contador (ex-03.py)
L = [5, 9, 13]
x=0
for e in L:
print("[%d] %d" %(x, L[x]))
x += 1
•Há também o método sorted(), que ordena uma lista sem alterar seus elementos (ex-
09.py).
Z = [4, 3, 1]
print(Z)
print(sorted(Z))
print(Z)
Aula 25-11-2020
- Um arquivo é uma área do disco gerida pelo sistema operativo na qual podemos
gravar e ler informações.
- A atividade básica em relação a arquivos diz respeito à sua abertura, leitura de seu
conteúdo, tratamento de dados, armazenamento do conteúdo e fechamento do
documento.
- Os modos de abertura podem ser combinados: r+, w+, a+, r+b, w+b, a+b etc.
- A função open() retorna um objeto do tipo file - ou seja, existem métodos
específicos para tratamento de arquivos.
- O método write() escreve dados em um arquivo
- O método read() escreve dados em um arquivo
- O método close()encerra o documento
- Exemplos:
arquivo = open(“nome_arquivo.txt”, “r”
igual a arquivo
Veja-se um exemplo
A abertura de um arquivo não garante a leitura automática do seu conteúdo: para que tal
Aula 26-11-2020
- A vantagem desta estrutura é que ela cria uma espécie de “contexto” em que o
arquivo é aberto, lido e encerrado automaticamente, de maneira que você apenas
trabalhe com o conteúdo do arquivo estando este armazenado em uma variável ao
mesmo tempo em que com a abertura do arquivo chamado numeros.txt em modo
leitura e pegando neste documento e apontando para a variável arquivo.
- É util no try-except.
with open(“numeros.txt”, “w”)
for linha in arquivo.readlines():
print(linha)
- A partir do arquivo dos pares, vamos criar um com múltiplos de 4. Se o resto for
igual a 0 o número é par. Se são quinhentas linhas e estamos de 2 em 2 temos de
ter um for que vá de 0 a 1000. Temos de ter uma estrutura de repetição para ir de 0
a 1000. Temos de ter um if else para gravar em um ou outro arquivo. Abrir, gravar e
fechar o arquivo. No segundo temos leitura
Quando o código não exibe nenhuma mensagem podemos criar uma mensagem de
erro ou de sucesso