su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas....

101
Aula 14-09-2020 Programação para juristas Professor Matheus Silva Conteúdos Programáticos : Conhecimento sobre tecnologia em geral, saber como um software funciona, desmistificar tecnologia, algoritmos, inteligência artificial, criação de ferramentas para automatizar tarefas simples, mercado de advogados-programadores em alta, apresentação de novas tendências nas áreas de tecnologia. Blockchain : A blockchain (também conhecido como “o protocolo da confiança”) é uma tecnologia de registro distribuído que visa a descentralização como medida de segurança. 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.

Transcript of su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas....

Page 1: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

Aula 14-09-2020

Programação para juristas

Professor Matheus Silva

Conteúdos Programáticos :

Conhecimento sobre tecnologia em geral, saber como um software funciona, desmistificar tecnologia, algoritmos, inteligência artificial, criação de ferramentas para automatizar tarefas simples, mercado de advogados-programadores em alta, apresentação de novas tendências nas áreas de tecnologia.

Blockchain :

A blockchain (também conhecido como “o protocolo da confiança”) é uma tecnologia de registro distribuído que visa a descentralização como medida de segurança.

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.

As suas características são: finitas, o algoritmo deve eventualmente resolver o problema; bem definidas: os passos devem ser definidos de modo a serem entendidos; efetivas, deve sempre resolver o que tem para solucionar, antecipando falhas.

Page 2: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita culinária, embora muitos algoritmos sejam mais complexos.

Lei Nº58, 2019- Lei da Proteção de Dados:

https://dre.pt/pesquisa/-/search/123815982/details/maximized

Programas que analisam contratos e detetam falhas:

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”:

Talvez um mestrado em tecnologia ou mesmo uma futura licenciatura em ciência da computação.

Pré-requisitos:

Portátil, raciocínio lógico(passos para se chegar a um resultado), interesse pela cadeira, conhecimentos de alguns comandos, acompanhamento pelo material a ser disponibilizado, perguntar quando houver dúvidas, futuramente instalar programas no computador.

Instalar o python

Razões para programar :

Estimular a criatividade, se tivermos muitos computadores podemos utilizá-los a nosso favor, computadores foram feitos para realizar tarefas repetitivas, as tarefas repetitivas podem ser substituídas por computadores de 3 a 5 anos, quando as máquinas começarem a realizar tarefas repetitivas, iriam desaparecer certas profissões e começarem a existir outras profissões. resolver problemas do dia-a-dia.

Relação entre Direito e Programação

Page 3: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

Lei Nº58/2019, lei de proteção de dados. Artigo 37ºN1, contraordenações muito graves. Alínea C ) incumprimento do RGPD. Artigo 37ºN2 Punições às contraordenações muito graves(Alínea A), B) e C) explicam as diferentes coimas para cada tipo de caso). Crime, artigo 46º, criação de uma página e dizer que preciso do numero de telemóvel para enviar notificações por Sms e a empresa decide enviar marketing para o número. De uma maneira muito simples está a cometer um crime.

Traduzindo o artigo 37º para uma linguagem de programação (imprópria) :

Traduzindo o artigo 46º para uma linguagem de programação (imprópria) :

Significado da Simbologia :

= atribuindo um valor a algo == saber se o lado esquerdo ou direito são iguais != diferente

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

Links para nos basearmos:

• Aprenda Python básico rápido e fácil de entender – Felipe Galvão (disponível gratuitamente neste link:http://felipegalvao.com.br/livros)

• 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)

• A Byte of Python – C. H. Swaroop (disponível gratuitamente neste link: https://python.swaroopch.com)

• Introduction to Machine Learning with Python: A Guide for Data Scientists – Andreas Muller

Page 4: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

Aula 16-09-2020

Programação para Juristas

Professor Matheus Silva

Máquina Virtual- Programa que possibilita a utilização de outros sistemas operativos dentro do seu computador. Virtualbox.org / ubuntu.com/download

Memória Ram - Memória temporária

Hd- 1tb , ex: guardar o documento word ocupa um espaço no hd

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

Cls - Clear, para limpar a linha de comandos

Cd..- Voltar para a página anterior

py- na linha de comandos para abrir o python

echo %cd%

python.org - se quer adicionar o phython ao path

o nome do arquivo é exe.

Melhor programa- Entre dois programas, o melhor será sempre o que tem menos linhas.

Código sequencial -

Código de repetição - O programa chega a um ponto em que repete, até chegar a um certo ponto que o faz mudar.

Dispositivos de entrada- teclado, rato, usb, etc.

Dispositivos de saída- monitor, ecrã, impressora, etc.

Cpu- Central Processing Unit

Memória principal- Random Access Memory

Page 5: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

Memória Secundária- Hard Drive, pendriveRaspberry pi - Mini computador que tem diversas componentes que um computador normal tem. Bom para ver como funciona um computador por dentro.

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 == 1Traceback (most recent call last):

File”<stdin>”, line 1, in <module>NameError: name “x” is not define>>>>Aula 17-09-2020

Programação para juristas

Professor Matheus Silva

Exemplo(Aula 16-09-2020)

>>>> x == 1Traceback (most recent call last):

File”<stdin>”, line 1, in <module>NameError: name “x” is not define>>>>

Quando dá um erro é importante ver a linha do erro.

É 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

Um sinal de igual- Define o que está do outro lado

Page 6: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

x == 1 - Na memória do computador tem algum valor dado ao x que seja 1 ? Significa dizer x é igual um, mas o python não sabe porque a variável não está definida.

x = 1 - Na memória existe algum espaço chamado x e o valor é um ?

Print(x) - mostrar o valor de x, mostrar o conteúdo que está dentro dos parênteses

Palavras utilizadas para definir variáveis :

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.

Para dizer x + y + z, tenho que fazer com o print.

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.

Input : Entrar com alguma coisa

Seu quero contar as palavras de um documento a primeira coisa que eu tenho que fazer é dizer qual é o nome do documento

Editor de texto - atom.io

Abrir o atom

1º coisa- Guardar o ficheiro (Ctrl S)

x = 1y = 2z = x + y a = (x == y)print(z)print(a)

Como executar na linha de comandos o código do atom - py nomedodocumento.py

Page 7: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

Aula 21-09-2020

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.

O último print(“fim”) está na linha mais atrás do que os printes anteriores;

Como abrir uma página do computador no python;

Não posso copiar diretamente do powerpoint para a ide, vem desformatado,

Se o x não incluir nenhum dos pontos do programa ele vai saltando até a última linha;

Só executa o que está dentro do if se a condição for verdadeira;

py e nome do documento .py;

while dá o efeito de repetição;

indentation error: bloco identado é o recuo, se tenho um while tenho que avançar;

sem espaços nas pastas;

nome dos arquivos;

dir - ver o que está dentro de determinada pasta;

cd nome da pasta;

Debug- ver a linha e tipo e tipo de erro;

erros de sintaxe : erros de gramática;

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.

Page 8: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

Apenas se vai fazer py quando já estivermos dentro da pasta , MAS FORA DO PYTHON. Apenas na linha de comandos.

Concluindo : Cd e dir até à pasta que queremos e depois py e o nome do documento para executar. Resultado : C:\Users\ruiol\Desktop\prog-jur>py ex-01.pyAula 23-09-2020 PJ

pythontutor.com - Serve basicamente para testar o código

Operadores - +, -, *, /

%- Eu sei se um número é par se o divido por 2 e o resto é 0

// quociente

**

+ concatenar strings

String Verde com texto

Somas coisas dentro de aspas - “2” - 2 recebe o valor de texto 2 - string

Somar coisas sem aspas - 2 recebe o valor do número 2

Int- Números inteiros

Float - Números Decimais

Str

Casas decimais são representadas com pontos. Nunca com vírgulas, sempre com pontos Ex:3.14

print(type(m)) - Para saber o tipo

print(type(n)) - Para saber o tipo

Podemos usar inteiros com floats e o resultado vai ser sempre float

Variável não pode começar com números

Não usar palavras iguais dentro do mesmo programa

horas_por-semana = 40

Page 9: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

calor_por_hora = 3.75valor_por_semana =horas_por_semana*valor_por_horavalor_por_mes=valor_por_semana*4print(valor_por_mes)

O operador * é também utilizado para “multiplicar” strings. a = “Teste” b = 3 print(a * b) A) Traceback B) TesteTesteTeste

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.

•Operadores com a mesma precedência são executados da esquerda para a direita: 5 - 3 - 1 = 1, não 3. • Recomendação: sempre colocar parênteses para deixar clara para você mesmo a ordem de precedência

Declare duas variáveis, pi1 = 3.14159265359 pi2 = 3,14159265359 • Mostre o conteúdo destas duas variáveis, bem como seus tipos.pi1 = 3.14159265359 pi2 = 3,14159265359 print(pi1)print(pi2) print(type(pi1)) print(type(pi2))

Constantes

• Valores que nunca mudam ao longo de um programa.

horas_do_dia = 24 minutos_por_hora = 60

Page 10: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

minutos_por_dia = horas_do_dia * minutos_por_hora print(minutos_por_dia)

• Como dar nomes a variáveis ou a constantes? • Não podem começar por números: 74alunos_prog_jur = 74; • Não podem ter caracteres especiais: 74alun@s_prog_jur = 74; • Não podem ser palavras reservadas: class = “74 alunos”. Recomendações: • Não começar com sublinha/underscore: _ • Não começar com maiúsculas.

Nomes de variáveis e/ou constantes

•Nomes de variáveis/constantes têm o tamanho desejado pelo programador.

• esta_turma_de_programacao_para_juristas_tem_um_total_de_cin quenta_e_um_alunos_se_nao_estou_em_erro = 51

•Há distinção entre maiúsculas e minúsculas: spam != Spam != SPAM

Nomes de variáveis e/ou constantes •Geralmente utilizam-se nomes de variáveis e/ou de constantes que tenham significado para o programador. bfhf8j = 40 j6hbyk = 3.75 ejE6Y4 = bfhf8j * j6hbyk gwL2KS = ejE6Y4 * 4 print(gwL2KS)

O desconhecimento das variáveis dificulta a vida do programador.

Fica mais fácil quando as variáveis têm significado para o programador:

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.

Page 11: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

•Há ainda outros dois tipos de valores no Python: float e boolean.

print(“Salário atual: 750 euros”) salario = 750Aumento = 15print(“salario com aumento de 15%”)print(Salário atual: 750 euros + (salario * Aumento / 100)

x = 750 y = 750 * 0.15print (x + y)

print \n - é como clicar no enter para saltar uma linha

print(len(........)) - numero inteiro, não serve para numeros

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.

•Números inteiros: 1, 0, -5, 550, -47, 30000.

•Números de ponto flutuante: 1.0, -5.0, 10.478, 30000.4.

•Utiliza-se o ponto (.) e não a vírgula (,) para indicar casas decimais.

•Não se utiliza nada para separar os milhares.

•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.

• Exemplo: “João e Maria comem pão.” •João = sequência de caracteres J, o, ã, o.

• String = cadeia de caracteres.

Valores e tipos de valores

• Strings sempre devem ser indicados entre aspas no seu código.

Page 12: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

•Uma string em Python tem um tamanho associado: seu conteúdo pode ser acessado como um todo ou caractere a caractere.

• 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.”?

•len("João e Maria comem pão.") – resultado: 23.

•type(“123”) == type(123)?

•Qualquer coisa que apareça entre aspas será str, mesmo números.

• print(type(123))

• print(type(“123”))

•Qual o resultado deste comando: print(1,000,000)?

• Acima: erro semântico – não há mensagem de erro, mas há erro!

Para ter acesso a cada caractere de uma string é necessário identificar o seu respectivo índice – todo índice se inicia em 0 (zero).

Para acessar o caractere de determinado índice, deve-se informar o índice ou posição do caractere entre colchetes ([ ]).

Exemplos: • a = “ABCDEF”• print(a[0]) • print(a[6])

• Para descobrir o tipo de valor usa-se a função type().

• Exercício: indique o tipo de 123, o tipo de “Hello, World” e o tipo de 123.0.Aula 28-09-2020 PJ

• Para saber o tamanho de uma string utiliza-se a função len()

– seu resultado será um número inteiro.

• print(len(“João come pão.”))

•frase = “João come pão.”

• print(len(frase))

• Para saber o tamanho de uma string utiliza-se a função len()

Page 13: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

– seu resultado será um número inteiro.

• print(len(“João come pão.”))

•frase = “João come pão.”

• print(len(frase))

O que fazer quando queremos colocar um número no meio de uma string?

•Utiliza-se a chamada “composição”: corresponde à utilização de determinados códigos que indicarão que, em seu lugar, deve estar presente um número.

• Ex.: “João tem 25 anos.”

• Em Python: “João tem %d anos.” %X

•O símbolo % foi utilizado para indicar a composição da string anterior com o conteúdo da variável X.

•O % dentro da string é chamado de “marcador de posição”: ele indica que naquela posição iremos colocar um valor inteiro (%d).

•Os principais marcadores são estes:

• %d: números inteiros

• %s: strings

• %f: números decimais

• 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.

Page 14: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• %5.2f: estamos imprimindo um número decimal utilizando cinco posições, sendo que duas são para a parte decimal.

•Isto é relevante quando queremos exibir o resultado de cálculos mais precisos, ou mesmo representar dinheiro.

• 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))

•Qual o resultado deste comando:

• print("%s tem %d anos e apenas € %5.2f em sua carteira." %("João", 22, 51.3456))Aula 30-09-2020

Programação para Juristas

Fatiamento de strings

• Fatiamento: ação de “fatiar” as strings em Python (inglês slicing).

• Podem ocorrer situações em que precisamos mostrar (ou usar) apenas parte de uma string.

•Quando isto ocorrer fazemos o fatiamento por meio da utilização do símbolo de 2 pontos em relação ao índice da string: o número à esquerda dos 2 pontos indica a posição de início e o número à direita, a de fim.

•Detalhe: o caractere que estiver no índice da direita não aparece!

•s = "ABCDEFGHI"

• print(s[0:2]) • print(s[1:2]) • print(s[2:4]) • print(s[0:5]) • print(s[1:8])

• Se o número da esquerda for omitido, o fatiamento é feito desde o índice zero.

Page 15: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• Se o número da direita for omitido, o fatiamento é feito até o último caractere da string.

• É possível utilizar valores negativos para indicar posições a partir da direita: -1 é o último caractere; -2, o penúltimo; e assim sucessivamente.

• 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 entrada de dados, portanto, corresponde ao momento em que o programa recebe dados ou valores por um dispositivo de entrada de dados – o teclado ou um arquivo guardado no disco rígido.

• Para que o programa receba dados utiliza-se a função input().

• A função input() sempre retorna valores do tipo str. entrada = input() print(entrada) print(type(entrada)).

É recomendável dizer ao utilizador o que se espera dele:

nome = input(“Insira seu nome: ”) print(nome) print(“Seu nome é %s.” %nome)

•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.

• Como calcular o bônus salarial em relação aos anos de serviço?

Page 16: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• anos = int(input(“Anos de serviço: ”))

• valor_por_ano = float(input(“Valor por ano: ”))

• bonus = anos * valor_por_ano

• print(“Bônus de € %.2f.” %bonus)

•O que ocorrerá se você digitar uma string ao digitar os anos ou o valor?

• 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.

• Escreva um programa que leia a quantidade de dias, horas, minutos e segundos inseridos pelo utilizador. Calcule o total em segundos.

Aula 01-10-2020

•O Python converte automaticamente int em float se estes tipos de valores estiverem na mesma expressão.

x = 200.0

y = 5

z = x / y

print(type(z))

Porém, há determinados momentos em que o programador quer converter propositadamente os tipos.

• 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))

Page 17: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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)

• É possível inserir comentários – pequenas notas – no meio do código para esclarecimentos a respeito do mesmo.

•Os comentários são ignorados pelo Python.

# pede o nome do utilizador

nome = input(“Digite seu nome: ”)

• Tudo que vier após o símbolo # será ignorado

# pede o nome do utilizador

nome = input(“Digite seu nome: ”)

Page 18: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

nome = input(“Digite seu nome: ”) # pede o nome do utilizador

Podem ser feitos comentários em várias linhas, bastando inserir três aspas duplas no início e ao final do trecho.

nome = input(“Insira seu nome: ”) """ Isto é um comentário em várias linhas. """ print(nome)

Exercícios Aula 01-10-2020

Execução condicional: if-else

• 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 execução condicional em Python é feito com a palavra reservada if.

• A lógica é simples: se o que vier após o if for verdadeiro (True), o bloco é executado.

Caso contrário, o bloco é “pulado” e executa-se a linha seguinte ao bloco.

if <condição>: #perceba a obrigatoriedade dos dois pontos 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.

a = int(input("Primeiro valor: ")) b = int(input("Segundo valor: ")) if a > b:

print("O primeiro número é o maior!")

Page 19: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

if b > a: print("O segundo número é o maior!")

•No código anterior, o que ocorre se os números inseridos forem iguais?

idade = int(input("Digite a idade de seu carro: ")) if idade <= 3:

print("Seu carro é novo.") if idade > 3:

print("Seu carro é velho.")

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 (3): escreva um programa que pergunte a velocidade do carro de um utilizador. Se a velocidade for de até 80km/h, exiba uma mensagem dizendo que está tudo ok. Caso ultrapasse 80 km/h, exiba uma mensagem dizendo que o utilizador foi multado e exiba também o valor da multa, cobrando € 5 por km acima de 80km/h.

velocidade = float(input("Digite a velocidade do carro: ")) if velocidade > 80:

print("Você foi multado em € %.2f!" %((velocidade - 80) * 5)) if velocidade <= 80:

print("Sua velocidade está ok, boa viagem!")

Exercício (4): Escreva um programa que leia três números e que mostre na tela o maior e o menor.

Exercício (5): Escreva um programa que pergunte o salário do funcionário e calcule o valor do aumento. Para salários superiores a € 1.500, calcule um aumento de 10%. Para salários menores ou iguais a € 1.500, o aumento é de 15%.

Aula 08-10-2020

Existem situações em que sabemos antecipadamente que a segunda condição será executada caso a primeira não seja executada (lembre-se do código referente à idade do carro). •Nestes casos podemos simplificar o código por meio da utilização da palavra reservada else. •O else, portanto, será utilizado para especificar o que fazer caso o resultado da avaliação da primeira condição seja falso sem precisarmos de um novo if.

Código “original”:

Page 20: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

idade = int(input("Digite a idade de seu carro: ")) if idade <= 3:

print("Seu carro é novo.") if idade > 3:

print("Seu carro é velho.")

• Código com else:

idade = int(input("Digite a idade de seu carro: ")) if idade <= 3:

print("Seu carro é novo.") else: # o else também precisa dos dois pontos ao final

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:

• Até 200 minutos, a empresa cobra € 0,20 por minuto. • Entre 201 e 400 minutos, a empresa cobra € 0,18 por minuto. • Acima de 401 minutos, a empresa cobra € 0,15 por minuto.minutos = int(input("Quantos minutos você utilizou este mês: ")) if minutos <= 200:

preco = 0.20 else:

if minutos <= 400:preco = 0.18

else: preco = 0.15

print("Você vai pagar este mês € %.2f." %(minutos * preco))

Exercício (8): Escreva um programa que pergunte a categoria do produto e mostre uma mensagem com o respectivo preço com base na tabela a seguir. Se for inserida

Page 21: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

uma categoria inválida o programa deve exibir uma mensagem ao utilizador avisando-o sobre isto. Categoria Preço 1 10,00 2 18,00 3 23,00 4 26,00 5 31,00

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.

• Veja a seguir o exercício 8 com o elif.

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 (11): Escreva um programa para aprovar o empréstimo bancário para a compra de uma casa. O programa deve perguntar o valor da casa a comprar, o salário e a quantidade de anos a pagar. O valor da prestação mensal não pode ser superior a 30% do salário. Calcule o valor da prestação como sendo o valor da casa a comprar dividido pelo número de meses a pagar.

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,65Aula 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.

• Como já mostrado no início do curso, para mostrar na tela os números 1, 2 e 3 podemos utilizar o seguinte código:

print(1) print(2) print(3)

•Há também outra opção utilizando-se de uma variável:

Page 22: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

x = 1 print(x) x = 2 print(x) x = 3 print(x)

•Há também a possibilidade de se incrementar o valor da variável x: x = 1 print(x) x = x + 1 print(x) x = x + 1 print(x)

• E se o objetivo fosse mostrar os números de 1 a 100? Ou de 1 a mil? É neste contexto em que se utiliza uma estrutura de repetição.

• 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).

while : #perceba a obrigatoriedade dos dois pontos bloco executado

• 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.

• Exercício (2): Modifique o programa anterior para exibir os números de 1 a 200.

• Exercício (3): Modifique o programa anterior para exibir os números de 50 a 300.

• Exercício (4): Faça um programa que mostre na tela a contagem regressiva do lançamento de um foguete. O programa deve mostrar 10, 9, 8, ..., 1, 0, Lançado.

•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?

ultimo = int(input("Digite o último número a ser mostrado: ")) x = 1

Page 23: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

while x <= ultimo: print(x) x = x + 1

•No exemplo anterior a variável x é chamada de contador, pois é dela a “responsabilidade” por contar os números até que a condição estabelecida no while seja concretizada.

• 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.

• Exercício (8): Escreva um programa para mostrar na tela os 10 primeiros múltiplos de 3.

ultimo = int(input("Digite o último número a ser mostrado na tela: "))x = 1while x <= ultimo: print(x) x = x + 2

x = 3while x <= 30: print(x) x = x + 3

Aula 14-10-2020

Page 24: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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.

n = int(input("Tabuada de: "))inicio = int(input("De: "))fim = int(input("Até: "))while inicio <= fim: print("%d x %d = %d" %(n, inicio, n*inicio)) inicio = inicio + 1print("Fim da tabuada.")

•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 = 0questao = 1while questao <= 3:resposta = input("Resposta da questão %d: " %questao)if questao == 1 and resposta =="b":valores = valores + 1if questao == 2 and resposta == "a":valores = valores + 1if questao == 3 and resposta =="d":valores = valores + 1questao += 1print("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 = 0questao = 1while 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":

Page 25: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

valores = valores + 1 if questao == 3 and resposta == "d": valores = valores + 1 questao += 1if 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)

• Além dos contadores, temos também os chamados acumuladores: são variáveis utilizadas para controlar o loop da repetição.

•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.

• Por exemplo, imagine um programa que calcule a soma de 10 números inseridos pelo utilizador: teremos uma variável acumuladora e uma contadora.

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)

•O mesmo ocorreria se tivéssemos de criar um programa para calcular a média aritmética de 5 números digitados pelo utilizador: x = 1 soma = 0 while x <= 5: n = int(input("Digite o %dº número: " %x)) soma = soma + n x = x + 1 print("Média: %.2f." %(soma/5))

Page 26: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• Exercício (14): Escreva um programa que pergunte o depósito inicial e a taxa de juros de uma poupança. Exiba os valores mês a mês para os 24 primeiros meses. Exiba também o total ganho com juros no período.

deposito = float(input("Depósito inicial: "))taxa = float(input("Taxa de juros (ex.: 3 para 3%): "))mes = 1saldo = depositowhile mes <= 24: saldo = saldo + (saldo * (taxa / 100)) print("O saldo do mês %d é de € %.2f." %(mes, saldo)) mes = mes + 1print ("O ganho obtido com os juros foi de € %.2f." %(saldo - depósito))

• Exercício (15): Altere o programa anterior de forma a perguntar também o valor depositado mensalmente. Este valor será depositado no início de cada mês, e você deve considerá-lo para o cálculo de juros do mês seguinte.

deposito = float(input("Depósito inicial: "))taxa = float(input("Taxa de juros (ex.: 3 para 3%): "))investimento = float(input("Depósito mensal: "))mes = 1saldo = depositoinvTotal = investimentowhile mes <= 24: saldo = saldo + (saldo * (taxa / 100)) + investimento print ("O saldo do mês %d é de € %.2f." %(mes, saldo)) mes = mes + 1 invTotal += investimentoprint ("O ganho obtido com os juros foi de € %.2f." %(saldo - deposito - invTotal))

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.

•Imaginemos uma situação em que seja necessário mostrar na tela as tabuadas de multiplicação de 1 a 10.

tabuada = 1 while tabuada <= 10: numero = 1

while numero <= 10: print("%d x %d = %d" % (tabuada, numero, tabuada * numero)) numero += 1

tabuada += 1

Page 27: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• É 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

• Exercício (21): Escreva um programa que leia um número positivo e verifique se é ou não um número primo.

• 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.

n = int(input("Digite um número: "))if n < 0: print("Número inválido. Digite apenas valores positivos.")elif n == 0 or n == 1: print("%d é um caso especial." %n)else: if n == 2: print("2 é primo.") elif n % 2 == 0: print("%d não é primo, pois 2 é o único número par primo." %n) else: x = 3 while(x < n): if n % x == 0: break x = x + 2 if x == n: print("%d é primo." %n) else: print("%d não é primo, pois é divisível por %d." %(n, x))

• Exercício (22): Escreva um programa que verifique se um número é palíndromo.

• Um número é palíndromo se continua o mesmo caso seus dígitos sejam invertidos. Ex.: 454, 10501.

# Para resolver este problema podemos usar strings.

Page 28: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

# Veja que estamos lendo o número sem convertê-lo para int ou float: desta forma o valor de s será uma stringnum_string = input("Digite o número a verificar, sem espaços: ")inicio = 0 # variável início == índice do primeiro caractere da stringfim = len(num_string) - 1 # posição do último caractere da stringwhile fim > inicio and num_string[inicio] == num_string[fim]: fim = fim - 1 inicio = inicio + 1if num_string[inicio] == num_string[fim]: print("%s é palíndromo." %num_string)else: print("%s não é palíndromo." %num_string)

# Função len():

# numero: 454# índice: 012

• A estrutura while so verifica sua condição de parada no início de cada repetição.

•No entanto, a depender do que se quer fazer, a possibilidade de terminar o while dentro do bloco a repetir pode ser requerida.

•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.

• Se não houver uma maneira de travar a execução do while, o programa será executado indefinidamente. - Break

• É 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 = 0while 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:

breaksoma = soma + numprint("O somatório de todos os números inseridos equivale a %d” %soma)

Page 29: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

Aula 19-10-2020

Informações sobre a Avaliação:

Estrutura do teste :

• Análoga à resolução de exercícios feita até agora:

• “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)

• Criação de código.(Exercícios semelhantes aos exercícios dados em aulas)

Leitura de código : Fazer comentário por exemplo, no final da linha comentamos um comentário, um ponto positivo seria dizer que era desnecessário porque a função input invoca string porque ao fazer isso eu ganho velocidade no programa, mesmo que mínima. Mas o ponto não é dizer se é mais rápido alguns milissegundo, o que interessa é pensar como programador e tornar o programa mais eficiente.

categoria = int(input("Digite a categoria do produto:")) if categoria == 1: preco = 10 else: if categoria == 2: preco = 18 else: if categoria == 3: preco = 23 else: if categoria == 4: preco = 26 else: if categoria == 5: preco = 31 else: print("Categoria inválida, digite um valor entre 1 e 5!") preco = 0 print("O preço do produto é: € %6.2f." %preco)

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.

Enviar para: [email protected] ou [email protected]

• 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

Page 30: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

•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 = 0quantidade = 0while True: num = int(input("Digite um número inteiro: ")) if num == 0: break; soma = soma + num quantidade = quantidade + 1print("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 = 0while True: codigo = input("Código da mercadoria (0 para sair): ") preco = 0 if codigo == "0": break; elif codigo == "1":

Page 31: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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?

a = int(input("Digite um número: "))

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.

• Em síntese, o try-except corresponde a esta lógica: o programador diz ao Python “tente executar esta parte do programa; se der erro ignore esta instrução e pule para a próxima”.

• 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 (25): Crie um programa que receba um número da pessoa e, a depender do número inserido, mostre as mensagens “X é um número positivo.”, “X é igual a

Page 32: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

zero.” ou “X é um número negativo.”. Caso a pessoa não digite um número, deve-se mostrar a mensagem “Você não digitou um número.”. Para a última mensagem deve-se obrigatoriamente utilizar a estrutura try-except.

x = input("Digite um número: ")try: x = int(x) if x > 0: print("X é um número positivo.") elif x == 0: print("X é igual a zero.") else: print("X é um número negativo.")except: print("Você não digitou um número.")

• Exercício (26): Crie um programa que faça a conversão da temperatura de Fahrenheit para Celsius. Caso a pessoa não digite um número, deve-se mostrar a mensagem “Por favor, digite apenas números.”. A mensagem final deve ser a seguinte: “A temperatura em Celsius é igual a X graus.” (Obs.: o X será igual ao número convertido.). Deve-se obrigatoriamente utilizar a estrutura tryexcept

temp_usuario = input("Insira a temperatura em Fahrenheit: ")try: temp_fahr = float(temp_usuario) print("A temperatura em Celsius é igual a %.2f graus." %((temp_fahr - 32.0) * 5.0 / 9.0))except: print("Por favor, digite apenas números.")

• 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:

• Nota menor que 0,6 – menção “Insuficiente” • Nota maior que 0,6 – menção “Médio Inferior” • Nota maior que 0,7 – menção “Médio” • Nota maior que 0,8 – menção “Médio Superior” • Nota maior que 0,9 – menção “Superior” • Se a pessoa digitar um valor que esteja fora das notas possíveis deve-se mostrar uma mensagem de erro.

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:

Page 33: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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:

Page 34: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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

Programação para Juristas

•Uma função no Python (e em qualquer linguagem de programação) nada mais é do que um conjunto de códigos que são executados quando o nome da função é chamado (ou invocado) durante sua execução.

• 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,

• Mostra a string na tela.

•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.

• Sendo assim, torna-se possível vislumbrar dois tipos de funções: como as que foram mostradas no slide anterior;

• Aquelas que você, programador, cria para a execução do seu código

•Um aspecto relevante das funções é que elas são utilizadas para que sejam evitadas repetições.

Page 35: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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.

•Uma função será declarada por meio da palavra reservada def.• def nome_da_funcao():

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.

• Exemplo: música “Help!”

– The Beatles

• https://www.letras.mus.br/the-beatles/182

Page 36: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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()

• É plenamente possível colocar funções dentro de funções, de maneira que a execução do programa dependa, em última instância, de uma única linha (ex. 03) – mas é claro que o programa todo foi definido nas linhas anteriores, dentro de cada função.

•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")

Page 37: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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.

• Parâmetros: variáveis internas a uma função que recebem os argumentos e trabalham-nos dentro da função.

• Corresponde a um nome usado dentro de uma função para se referir ao valor que foi passado a ela como um argumento.

Page 38: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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.

• É diferente de uma variável que existe no corpo do programa – variável global.

• Esta variável local existe somente dentro da função e não pode ser usada fora dela.Aula 26-10-2020

Programação para Juristas

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.

• Você poderá utilizar o resultado da função atribuindo-o a alguma variável no seu programa, ou ainda utilizá-lo como parte de alguma expressão.

def soma_dois_numeros(a, b): soma = a + b return soma

x = soma_dois_numeros(3, 5) print(x)

• 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.

Page 39: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• A execução sempre começa no primeiro comando do programa, sendo estes executados um de cada vez de cima para baixo.

• As definições de funções não alteram o fluxo de execução do programa, mas lembre-se de que os comandos dentro da função não são executados a menos que a função seja chamada.

• Chamadas de funções são como “desvios” do fluxo de execução. Em vez de ir para o próximo comando, o fluxo pula para a primeira linha da função chamada, executa todos os comandos de lá, e então volta para continuar de onde tinha parado.

•O Python mantém o controle de onde ele está em cada 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.

•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.

•O Python mantém o controle de onde ele está em cada 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

1 def pot(b, p): 2 y = b ** p 3 return y 4 5 def quadrado(x): 6 a = pot(x, 2) 7 return a 8 9 n = 5 10 resultado = quadrado(n) 11 print(resultado)

• Vantagens das funções:

• A criação de uma nova função dá nome claro a um grupo de comandos, facilitando a leitura, a compreensão e a depuração do programa.

Page 40: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• As funções podem diminuir um programa eliminando o código repetitivo. Se for necessária uma alteração, você a fará em um só lugar.

• 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 mathdef 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)

• Prática (ex. 06): crie um programa usando o conceito de funções e também o comando for que mostre a seguinte sequência:

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

Page 41: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

executado indefinidamente até que a pessoa insira “-1” como número de horas trabalhadas.

def calculaSalario(a, b): return int(a * b * 4)

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) + "€.")

Page 42: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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:

• Nota menor que 0,6 – menção “Insuficiente” • Nota entre 0,61 e 0,7 – menção “Médio Inferior” • Nota entre 0,71 e 0,8 – menção “Médio” • Nota entre 0,81 e 0,9 – menção “Médio Superior” • Nota maior que 0,9 – menção “Superior”

• 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

Page 43: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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.

1) (3 valores) Peça ao utilizador dois números e indique: a. Se o primeiro número é divisível por 4; b. Se o primeiro número é par ou ímpar; c. Se o resultado da divisão do 1º pelo 2º número é exato ou não (ou seja, se o resto é igual a zero ou não).

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:

Page 44: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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))

2) (3 valores) Peça ao utilizador que digite um texto qualquer. Em seguida, mostre na tela apenas os caracteres que estão presentes em um índice de número par.

frase = input("Digite um texto qualquer: ")tamanhoFrase = len(frase)indice = 0while indice <= tamanhoFrase: if indice % 2 == 0: print(frase[indice]) indice += 1 if indice == tamanhoFrase: breakprint("Obrigado e até a próxima!")

3) (2 valores) Explique o que o código abaixo faz: a = int(input("Insira um número: ")) n1 = int("%s" %a) n2 = int("%s%s" %(a, a)) n3 = int("%s%s%s" %(a, a, a)) print(n1 + n2 + n3)Nota: Se for preciso para o próximo teste devo ver a parte da aula de dia 29 de outubro sobre a revisão do código

a = int(input("Insira um número: "))n1 = int("%s" %a)n2 = int("%s%s" %(a, a))n3 = int("%s%s%s" %(a, a, a))print(n1 + n2 + n3)

4) (5 valores) Peça ao utilizador 3 números. Se os números inseridos forem diferentes, apresente o resultado da soma deles. Se os números forem iguais, apresente a soma multiplicada por três. O programa é executado continuamente até que o utilizador insira o número zero em qualquer um dos pontos de inserção de dados. Se o utilizador inserir algo que não seja um número, deve ser mostrada a ele uma mensagem de erro. O cálculo da soma (ou da soma multiplicada por três) deve ser feita dentro de uma função criada pelo aluno.

def resultado(x, y, z): soma = x + y + z if x == y == z: soma *= 3

Page 45: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

return soma

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)))

Page 46: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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 = 0while 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.")

Page 47: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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

• Conforme já indicado, uma string é um conjunto de caracteres – ou, por outras palavras, nada mais do que um texto.

•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.

•Qual o resultado deste código?

fruta = “banana” letra = fruta[1] print(letra)

O resultado será o de mostrar a letra “a”, não a letra “b”.

• 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.

• A propósito, uma string nada mais é do que uma lista de caracteres.

•O valor dos índices sempre deverá ser um inteiro – ainda que possa ser uma variável cujo conteúdo seja um número inteiro.

Page 48: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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.

• É possível ler apenas “pedaços” (slices) de uma string.

• 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).

#Obter letras de trás para a frente de uma palavrawhile True: palavra = input("Digite uma palavra por favor:") #Obter a quantidade de letras de uma palavra

Page 49: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

quantidade = int(len(palavra)) #Subtrair 1 à quantidade uma vez que a contagem de índices começa em 0 quantidade -= 1 while quantidade >= 0: print(palavra[quantidade]) quantidade -= 1

Aula 02-11-2020

O while é um loop infinito e o for é um loop finito porque o programador já sabe de antemão quantas vezes aquilo vai acontecer.

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.

O conceito do for é diferente.

Se eu insiro o meu nome, o programa vai ser executado quantas vezes o meu nome.

Execução repetitiva com for (ex-01.py): x = 1 nome = ”Matheus" for letra in nome:

print(”%dª letra: %s." %(x, letra)) x += 1

print("Fim")

•No exemplo anterior a variável “nome” contém uma string. •O loop for avança por todos os itens da string e executa o código dentro do bloco. • A variável “letra” é a variável de iteração do loop. • A razão de ser da variável “letra” é a de controlar a execução do bloco de código dentro do loop for, indicando quando a execução do mesmo será encerrada.

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.

Page 50: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

O for é mais simples porque o programador não precisa de criar um contador

O for é útil para strings, listas e tuplas.

Exemplo 2 com while:

n = 1while n < 6:

print(n)n = n +1 print(“Fim”)

Exemplo 2 com for: for in range (1,6):

print(n)print(“Fim”)

A função range() gera números inteiros gera números positivos ou negativos começando pelo número inserido e o inteiro final mas não incluindo este.

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)

for x in range(2, 6): print(x)

for y in range(1, 10, 2): print(y)

for n in range(-5): print(n)

for x in range(-2, 6): print(x)

Page 51: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

for y in range(-1, 10, 2): print(y)

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.

textoinserido = input (“Digite qualquer coisa”)contador = 0for i in textoInserido:

contador += 1 for i in range(0, contador):

print(textoinserido[i])for letra in range(0, (len(textoInserido)):

print(textoInserido[letra])

•Não é possível alterar o conteúdo de uma string indicando o índice e tentando atribuir novo valor a tal posição. fruta = “banana” fruta[0] = “B”

• Receberá uma mensagem de erro no código acima.

• Como resolver este problema? nova_fruta = “B” + fruta[1:]

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.

Vamos utilizar o fornas strings.

Page 52: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

String são imutáveis, não quer dizer que não posso alterar o'conteudo da variavel.Mas nao consigo alterar a string em si mesma. O que está na segunda linha é uma tentativa de alterar uma letra que está no índice 0, isto é uma tentativa de alterar a string fazendo com que passe a ter um B maiúsculo e isso vai dar um erro porque não consigo alterar umas string.

• Como contar o número de letras “a” na palavra “banana”? (ex-06.py) fruta = “banana” contador = 0 for letra in fruta:

if letra == “a”: contador += 1

print(contador)

Agora temos uma contagem de caracteres através do código: fruta = “banana” contador = 0 for letra in fruta:

if letra == “a”:contador += 1

print(contador)

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.

import os, time

def limpa_tudo(): if os.name == 'nt': os.system('cls') else: os.system('clear')

Page 53: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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

- Os operadores >, < e == podem ser utilizados como strings. - São úteis para descobrir a ordem alfabética das palavras- < = vem antes - Z = vem depois - Cuidado com comparações entre letras maiúsculas e letras minúsculas: para o

Python Maçã vem antes de banana.- Primeiro vem o alfabeto todo com maiúsculas e depois as minúsculas.

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.

Page 54: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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.

Para descobrir os métodos os objeto string, no python interativo:

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.

Método find(): utilizado para encontrar o índice de determinado caractere na string.

fruta = “banana” indice = fruta.find(“a”)print(indice)resultado = 1

# O índice de uma string sempre começa com o número zero

Web scraping é fazer um levantamento de dados Se naquele conteúdo for igual a letra A

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.

Quando a string não existe ele retorna -1

Page 55: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

Se a string não existir, você receberá o número -1 como resultado.

Nota: Nºao esquecer que os espaços e tudo o resto também contam.

• Se você quiser pesquisar da direita para a esquerda utilize o método rfind() (ex-16.py).

s = “Um dia de sol” print(s)print(s.rfind(“d”))print(s.find(“d”))

Ainda os métodos find() e rfind()podem receber um segundo argumento

- Ainda, os métodos find() e rfind() podem receber um segundo argumento , que indicará o índice a partir do qual a pesquisa será realizada.

fruta = “banana” indice = fruta.find(“na”, 3) print(indice)Resultado : 4

- Existem ainda os métodos index() e rindex() - A diferença é que se o texto não for encontrado estes métodos retornam um erro.

• Existem ainda os métodos index() e rindex(). • A diferença é que se o texto não for encontrado, elas retornam um erro – portanto, precisam de ser utilizadas dentro de um try-except.

Prática: Crie um programa que indique todas as ocorrências da palavra “tigre” na string “Um tigre, dois tigres, três tigres”.

s = "um tigre,dois tigres, três tigres"p = 0while(p > -1): p = s.find("tigre", p) if p >= 0: print("Posição %d" %p) p += 1

Outra forma de verificar se uma palavra pertence a uma string é utilizando o operador in.

s = “Maria Amelia Sousa” print(s)

Page 56: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

print(“Amelia” in s)print(“Maria” in s)print(“Sousa” in s)print(“a A” in s)print(“amelia” in s)print(“amelia”.capitalize() in s)print(“amelia”.upper() in s)print(“amelia”.lower() in s)

Respondem como forma booleana(True or False a cada alínea)

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).

s = "Todos os caminhos levam a Roma" print(s) print("levam" not in s) print("Caminhos" not in s) print("AS" not in s)

• 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).

s = "João comprou um carro" print(s) print("joão" in s.lower()) print("CARRO" in s.upper()) print("comprou" not in s.lower()) print("barco" not in s.lower())

Método count(): conta as ocorrências de uma letra ou palavra em uma string (ex-15.py).

texto = "um tigre, dois tigres, três tigres" print(texto.count("tigre")) print(texto.count("tigres")) print(texto.count("t")) print(texto.count("z"))

• Método strip(): remove espaços em branco antes ou depois da string (sejam tabs, caractere de nova linha ou simples espaços):

Page 57: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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!

• Método split(): “quebra” uma string a partir de um caractere passado como parâmetro, retornando uma lista com as substrings já separadas (ex-19.py).

s = "um tigre, dois tigres, três tigres" print(s) print(s.split(",")) == ['um tigre', ' dois tigres', ' três tigres']print(s.split(" ")) == ['um', 'tigre,', 'dois', 'tigres,', 'três', 'tigres']print(s.split()) == ['um', 'tigre,', 'dois', 'tigres,', 'três', 'tigres']

• Método replace(): substitui o conteúdo em uma string. • Contém 2 parâmetros: o primeiro é a string a substituir, e o segundo é o conteúdo que a substituirá. • Pode haver um 3º parâmetro, que limita quantas vezes queremos realizar a repetição (ex-20.py).

s = "um tigre, dois tigres, três tigres" print(s) print(s.replace("tigre", "gato")) print(s.replace("tigre", "gato", 1)) print(s.replace("tigre", "gato", 2)) print(s.replace("tigre", "")) print(s.replace("" , "-"))

• Existem ainda métodos que nos permitem fazer validações do conteúdo inserido pelo utilizador.

Page 58: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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)

• Se a string contiver outros tipos de caracteres, como espaços, vírgula, exclamação, interrogação ou caracteres de controle, retorna False.

•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())

•O método isdigit() verifica se o valor consiste em números, retornando True se a string não estiver vazia e contiver apenas números.

• Se a string contiver espaços, pontos, vírgulas ou sinais (+ ou -), retorna False.

print("771".isdigit()) print("10.4".isdigit()) print("+10".isdigit()) print("-5".isdigit())

• Podemos verificar se todos os caracteres de uma string são maiúsculas ou minúsculas: isupper() e islower(), respectivamente (ex-23.py).

•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

Page 59: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• É 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 tenho um, dois ou dez contratos, é fácil fazer de maneira manual.

• 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.

• Primeiro passo: descobrir o índice em que se encontra o símbolo “@”.

• Segundo passo: descobrir o índice do espaço em branco antes do início do email.

Page 60: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• Terceiro passo: descobrir o índice em que se encontra a vírgula após o símbolo “@”.

•Quarto passo: armazenar o email recolhido do contrato em algum lugar.

• Exemplo final: jogo da forca (ex-25.py).

palavra = input("Digite a palavra secreta: ").lower().strip()for x in range(100): print()digitadas = []acertos = []erros = 0while True: senha = "" for letra in palavra: senha += letra if letra in acertos else "." print(senha) if senha == palavra: print("Você acertou!") break tentativa = input("\nDigite uma letra: ").lower().strip() if tentativa in digitadas: print("Você já tentou esta letra!") continue else: digitadas += tentativa if tentativa in palavra: acertos += tentativa else: erros += 1 print("Você errou!") print("X==:==\nX : ") print("X O " if erros >= 1 else "X") linha2 = "" if erros == 2: linha2 = " | " elif erros == 3: linha2 = " \| " elif erros >= 4: linha2 = " \|/ " print("X%s" % linha2) linha3 = "" if erros == 5: linha3 += " / " elif erros >= 6: linha3 += " / \ "

Page 61: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

print("X%s" % linha3) print("X\n===========") if erros == 6: print("Enforcado! A palavra correta era %s!" %palavra) break

• 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).

import os, time

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")

Page 62: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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()

• Prática: crie um programa que encontre todos os emails no texto disponível no Moodle e intitulado “texto exercício 10”.

• Copiar o texto para a variável no seu código-fonte.

•O caractere de escape do email é o ponto e vírgula (ex-10.py).

import os, time

def limpa_tudo(): if os.name == 'nt': os.system('cls') else: os.system('clear')

limpa_tudo()

texto = ("O primeiro email de contato é o [email protected]; ""o segundo email de contato é o [email protected]; ""o terceiro email de contato é o [email protected]; ""o quarto email de contato é o [email protected]; ""o quinto email de contato é o [email protected]; "

Page 63: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

"o sexto email de contato é o [email protected]; ""o sétimo email de contato é o [email protected]; ""o oitavo email de contato é o [email protected];")

# texto = ("O primeiro email de contato é o [email protected]; o segundo email de contato é o [email protected]; o terceiro email de contato é o [email protected]; o quarto email de contato é o [email protected]; o quinto email de contato é o [email protected]; o sexto email de contato é o [email protected]; o sétimo email de contato é o [email protected]; o oitavo email de contato é o [email protected];")

print(texto + "\n")

lista_pos_arroba = []lista_pos_espaco_antes = []lista_pos_ponto_virgula = []

for i in range(0, len(texto)): if texto[i] == "@": lista_pos_arroba.append(i) for j in range(i, 0, -1): if texto[j] == " ": lista_pos_espaco_antes.append(j + 1) breakfor i in range(0, len(texto)): if texto[i] == ";": lista_pos_ponto_virgula.append(i)

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

Prática: crie um programa que encontre todos os emails no texto disponível no Moodle e intitulado “texto exercício 10”.

Page 64: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• Copiar o texto para a variável no seu código-fonte. •O caractere de escape do email é o ponto e vírgula. •(ex-10.py – com listas) •(ex-10-1.py – sem listas)

import os, time

def limpa_tudo(): if os.name == 'nt': os.system('cls') else: os.system('clear')

limpa_tudo()

texto = ("O primeiro email de contato é o [email protected]; ""o segundo email de contato é o [email protected]; ""o terceiro email de contato é o [email protected]; ""o quarto email de contato é o [email protected]; ""o quinto email de contato é o [email protected]; ""o sexto email de contato é o [email protected]; ""o sétimo email de contato é o [email protected]; ""o oitavo email de contato é o [email protected];")

# texto = ("O primeiro email de contato é o [email protected]; o segundo email de contato é o [email protected]; o terceiro email de contato é o [email protected]; o quarto email de contato é o [email protected]; o quinto email de contato é o [email protected]; o sexto email de contato é o [email protected]; o sétimo email de contato é o [email protected]; o oitavo email de contato é o [email protected];")

print(texto + "\n")

lista_pos_arroba = []lista_pos_espaco_antes = []lista_pos_ponto_virgula = []

for i in range(0, len(texto)): if texto[i] == "@": lista_pos_arroba.append(i) for j in range(i, 0, -1): if texto[j] == " ": lista_pos_espaco_antes.append(j + 1) breakfor i in range(0, len(texto)): if texto[i] == ";": lista_pos_ponto_virgula.append(i)

Page 65: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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()

• 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).

import os, time

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)

Page 66: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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()

• Listas são um tipo de variável que permite o armazenamento de vários valores, acedendo-se a cada um por um índice.

•Uma lista pode conter zero ou mais elementos de um mesmo tipo ou de tipos diversos, podendo inclusive conter outras listas.

•O tamanho de uma lista é igual à quantidade de elementos que ela contém.

• Listas são flexíveis e podem crescer ou diminuir com o tempo.

• Para se criar uma lista em Python utiliza-se a seguinte linguagem: listaVazia = []

• 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]

Page 67: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

•O número 15 tem índice 0 e o número 9 tem índice 2 na listaCheia.

• Para mostrar o item de determinado índice, utiliza-se a mesma maneira utilizada anteriormente com strings: print(listaCheia[1]) 8Nota: Aparece o número 8 porque está na primeira posição da lista, lembrando que começamos a contar do 0.

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)

•Imaginemos uma situação em que as notas de um aluno estejam armazenadas em uma lista e queiramos calcular a média das notas.

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 = 0x = 0while x < 7:

Page 68: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

notas[x] = float(input("Insira a nota do aluno: ")) soma += notas[x] x += 1x = 0while x < 7: print("Nota %d: %.2f" %(x + 1, notas[x])) x += 1print("Média: %.2f" %(soma/x))

• Prática: crie um programa que peça cinco números ao utilizador, armazenando-os em uma lista. O programa então pede ao utilizador que escolha um número de 1 a 5 e, em seguida, mostra na tela o número anteriormente inserido que corresponde à posição solicitada pelo utilizador (ex-04.py).

numeros = [0, 0, 0, 0, 0]x = 0while x < 5: numeros[x] = int(input("Digite um número: ")) x += 1while 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

Prática: crie um programa que peça cinco números ao utilizador, armazenando-os em uma lista. O programa então pede ao utilizador que escolha um número de 1 a 5 e, em seguida, mostra na tela o número anteriormente inserido que corresponde à posição solicitada pelo utilizador (ex-04.py).

numeros = [0, 0, 0, 0, 0]x = 0while x < 5: numeros[x] = int(input("Digite um número: ")) x += 1while 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]))

Page 69: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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.

Quando colocamos o [:] a atribuição difere.

• 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)

O fatiamento das listas também é importante e é relativamente semelhante ao que fizemos com as strings.

• 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().

Page 70: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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 = 0while x < len(L): print(L[x]) x += 1print("\n")L = [7, 8, 9, 10, 11, 12]x = 0while 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.

Page 71: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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.pyL = []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.pyL = []print(L)print(len(L))L.append("a")print(L)print(len(L))V = ["b", "c"]L += Vprint(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)

Page 72: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• 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 = 0print("Números inseridos:")while x < len(L): print(L[x])

Page 73: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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 listaterceira.extend(segunda)x = 0while 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

Page 74: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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 = 0while 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 + 1x = 0while x < len(terceira): print("Índice: %d, Item: %d" %(x, terceira[x])) x = x + 1

Nota: Podemos sempre acrescentar elementos no fim da lista e é utilizado o método append();Para adicionar listas a listas utilizamos o método extend();Para retirar elementos de uma lista usamos a instrução de();Os índices são calculados sem o elemento que foi eliminado.

Aula 18-11-2020

• Método pop(): retorna o valor do argumento inserido e o remove da lista (ex-00.py). • Para pesquisarmos algo em uma lista podemos utilizar a estrutura de repetição while (ex-01.py) ou a estrutura de repetição for (ex-02.py). •O for é recomendado na maioria das vezes, especialmente quando queremos percorrer a lista item a item de maneira sequencial. •O while é recomendado quando não sabemos quantas vezes vamos repetir ou quando manipulamos índices de maneira não sequencial.

print("Método pop():")ultimo = 10

Page 75: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

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!")

Page 76: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

= [15, 7, 27, 39]p = int(input("Digite o valor a procurar: "))achou = Falsex = 0while x < len(L): if L[x] == p: achou = True break x += 1if achou: print("%d achado na posição %d." %(p, x))else: print("%d não encontrado." %p)

L = [15, 7, 27, 39]p = int(input("Digite o valor a procurar: "))# achou = Falsefor i in range(len(L)): if L[i] == p: print("%d achado na posição %d." %(p, i)) breakelse: 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 casoa 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 = 0for e in L: print("[%d] %d" %(x, L[x])) x += 1

e a segunda é por meio da função enumerate() (ex-04.py). L = [5, 9, 13]for x, e in enumerate(L): print("[%d] %d" %(x, e))

Page 77: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

• Para ordenar uma lista pode-se utilizar o método sort() – haverá a alteração da posição dos elementos da lista original (ex-08.py). L = [6, 4, 2, 1, 9]print(L)L.sort()print(L)

•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

Programação para Juristas

- Arquivos são essenciais para que possamos armazenar dados de maneira permanente, além de permitirem ler dados a partir de outras aplicações e/ou da internet.

- 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.

- A abertura realiza a ligação entre o programa e o espaço em disco, gerenciada pelo sistema operativo.

- As etapas de leitura e ou escrita são operações que desejamos realizar no programa.

- O encerramento informa ao sistema operativo que não vamos mais trabalhar com o documento.

Quando trabalhamos com o python abrir/ler/gravar documentos todos os arquivos devem estar na mesma pagina do código em python Os arquivos txt estão na mesma página que o código py.

arquivo = open(“numeros.txt” “w”)for num in range(1, 101):

arquivo.write(“%d\n” %num)arquivo.close()

Page 78: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

- Para abrirmos com o Python utilizamos a função open() com os parâmetros entre aspas porque são strings: nome do documento e modo de abertura:

- r = leitura - w = escrita - a = escrita, preservando o conteúdo se este já existir - b = binário - + = atualização de 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

Arquivo recebe o resultado da função open.

Nota: Escreve no ponteiro todos os números de 1 a 100. Não é possível abrir documentos no python tutor

- O encerramento é muito importante, pois cada arquivo aberto consome recursos do computador.

- Além disso, só o encerramento do arquivo garante a liberação desses recursos e preserva a integridade dos dados do documento.

- Isto porque quando trabalhamos com arquivos, seu conteúdo não está diretamente no disco, mas sim na memória ram.

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

Programação para Juristas

- Para evitarmos o esquecimento do encerramento do arquivo podemos utilizar a estrutura do encerramento do arquivo, podemos utilizar a estrutura with.

- 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.

Page 79: su.novalaw.unl.pt€¦  · Web view2021. 2. 11. · Aula 14-09-2020. Programação para juristas. Professor Matheus Silva. Conteúdos . Programáticos: Conhecimento sobre tecnologia

- É util no try-except. with open(“numeros.txt”, “w”)

for linha in arquivo.readlines():print(linha)

- Criar um código em que se o número for 2, 4, 6, 8 .. com quinhentas linhas gravar esses números num arquivo para.txt , se forem ímpares gravamos nos ímpares.txt

- 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

with open ("impares.txt", "w") as impares: with open("pares.txt", "w") as pares: for n in range(1, 1001): if n % 2 == 0: pares.write("%d\n" %n) else: impares.write("%d\n" %n)