Aula 00 - Python Procedural
Aula 00 - Python Procedural
Python
Introdução. Visão Geral do Python.
Variáveis. Tipo de Dados.
Conversão de Tipos. Constantes.
Entrada e Saída.
Comentários.
Operadores aritméticos.
Operadores relacionais e lógicos.
Estruturas de Seleção.
Estruturas de Repetição.
Funções e Recursão.
Strings.
Listas. Tuplas.
Dicionários. Conjuntos
Algoritmos de Pesquisa e Algoritmos de Ordenação.
Arquivos.
2
Referências:
3
Referências:
4
A Linguagem Python
●
Python foi idealizado na década de 80 e sua implementação começou em
1989, por Guido van Rossum (CWI – Holanda) como sucessor da
linguagem ABC
●
Nome da linguagem em homenagem ao Monty Python´s Flying Circus
(grupo humorístico britânico)
●
Python 2
– Lançada em 16 de outubro de 2000
– Se tornou mais aberta a comunidade
– Foi incorporada aos computadores que rodam sistemas GNU/Linux
– [Link]
●
Python 3
– Lançada em 3 de dezembro de 2008
– Quebra de compatibilidade com a família 2.x
5
A Linguagem Python
●
Características da linguagem:
– Alto nível (Mais fácil de aprender)
– Multiparadigma
– Multiplataforma
– Interpretada
– Tipagem dinâmica
– Presente em todos os sistemas baseados em GNU/Linux
– Tudo são objetos
– Comunidade ativa
6
O Ambiente de Desenvolvimento
●
Ambiente de desenvolvimento de software Python
– Usaremos Python 3 ([Link])
●
[Link]
●
Inclui IDLE, pip e documentação
●
Para verificar se você tem o python instalado em um PC com
Windows, procure Python na barra inicial ou execute o seguinte na
linha de comando ([Link]):
python -V ou python --version
●
Python Shell (modo interativo) e Python Script (modo de script)
●
import this (easter egg) – filosofia do Python
7
O Ambiente de Desenvolvimento
●
O ambiente de desenvolvimento Python inclui:
– Um amplo conjunto de Interfaces de Programação de Aplicações
(APIs, do inglês “Application Programming Interfaces”)
– Ferramentas de compilação e depuração de código
●
Python 3 não é um Ambiente Integrado de Desenvolvimento (IDE, do inglês
“Integrated Development Environment”)
●
Python IDE
– PyCharm
– Visual Studio Code
8
Ambiente de Desenvolvimento
●
Python online
– [Link]
– [Link]
– [Link]
– [Link]
– [Link]
9
Google colab
●
[Link]
●
É um ambiente aberto de desenvolvimento de notebook Jupyter que roda
totalmente em nuvem
●
Não demanda uma configuração
●
Os notebooks criados podem ser simultaneamente editados por todos os
membros da equipe. É possível criar, enviar e compartilhar notebooks.
●
É possível importar e salvar notebooks do/para o Google Drive
10
Google colab
●
Um notebook Colab consiste em células de texto, células de código e
saídas de células de código
●
As células de texto são escritas em Markdown. Isso significa que eles
podem conter texto formatado, imagens, HTML, LaTeX e muito mais.
●
As células de código são escritas em Python. Também podemos
inserir um comando de sistema/terminal prefixando uma linha com !
●
As saídas das células de código aparecem abaixo de sua célula
correspondente. Eles podem incluir texto, gráficos e informações sobre
erros que ocorreram durante a execução do código
11
em
Hello World!
# [Link]
print("Hello World!")
● Java
// [Link]
public class HelloWorldApp {
public static void main(String[] args) {
[Link]("Hello World!");
}
}
13
Variáveis
● Área de memória que mantém um valor que pode ser
mudado
● Identificadores de variáveis: só podem conter letras,
números e o símbolo “_”, nunca començando com número
● Case sensitive ("sensível a maiúsculas e minúsculas")
● Python utiliza por convenção o padrão Snake_Case para
nomes de variáveis. Por exemplo: salario_bruto
14
Variáveis
15
Palavras reservadas
Tipos Básicos
●
Tipos Integrais
– Inteiro: (int)
●
Pode ter centenas de dígitos, limitado apenas pela memória do computador
●
O padrão é decimal, mas pode-se usar outras bases como binária (iniciada
com 0b), octal (iniciada com 0o) ou hexadecimal (iniciada com 0x).
●
Funções bin, hex e oct
17
Tipos Básicos
● Tipos de Ponto-Flutuante
– Número de Ponto-Flutuante: (float)
● Possuem problemas de precisão pois há uma quantidade limitada de
memória para armazenar um número real no computador
18
Conversão de Tipos
●
String, booleano ou ponto-flutuante para inteiro: int
●
String, booleano ou inteiro para ponto-flutuante: float
●
String, inteiro ou ponto-flutuante para booleano: bool
●
Booleano, inteiro ou ponto-flutuante para String: str
19
Comando de Atribuição
●
Comando mais importante de uma linguagem imperativa.
●
Em um comando de atribuição, uma variável recebe o resultado da
avaliação de uma expressão.
●
Atribuição simples e atribuição múltipla
●
Operadores de Atribuição compostos
+=, -=, /=, //=, %=, *=
20
Comando de Atribuição
x = y = z = "Orange"
print(x)
print(y)
print(z)
21
Expressão
22
Operando
23
Operador
24
Operadores Unários
• Operador numérico positivo (+)
– Operando deve ser numérico
25
Operadores Binários Aritméticos
• Soma (+)
• Subtração (-)
• Produto (*)
• Divisão de ponto flutuante (/)
• Divisão inteira (//)
• Resto da divisão inteira (%)
• Potenciação (**)
26
Operadores Binários Relacionais
• Igual a (==)
• Diferente de (!=)
• Maior que (>)
• Menor que (<)
• Maior ou igual a (>=)
• Menor ou igual a (<=)
27
Operadores Binários Relacionais
28
Operadores Binários Lógicos
• Negação (not)
• Conjunção (and)
• Disjunção (or)
•Avaliação curto-cirtuito
[Link]
29
Precedência dos Operadores (resumo)
1. Expressões entre Parênteses ( ) – Maior Prioridade;
2. Potenciação (**);
3. Unários (+, -);
4. Binários Multiplicativos (*, /, %, //);
5. Binários Aditivos (+, -);
6. Relacionais (==, !=, <, >, <=, >=);
7. Lógico not;
8. Lógico and;
9. Lógico or – Menor Prioridade.
30
Precedência dos Operadores
31
Comandos de Saída Padrão
• print()
– Pula para a próxima linha na saída padrão (vídeo).
• print(expressão)
– Escreve na saída padrão (vídeo) o resultado da avaliação da expressão;
– Ao final, pula para a próxima linha.
32
Comandos de Saída Padrão
• print(expressão, end = término)
– Escreve na saída padrão (vídeo) o resultado da avaliação
da expressão;
– Ao final, escreve a String de término
.
• print(exp1, exp2, ..., expN, sep = separador)
– Escreve na saída padrão (vídeo) o resultado da avaliação
da expressão;
– Coloca o separador entre as expressões
>>> nome="Maria"
>>> idade=20
>>> print(f'Nome = {nome} Idade = {idade}')
Nome = Maria Idade = 20
34
Expressões Formatadas (f-string)
A partir da versão 3.6 do Python
>>> nome="Ana"
>>> f'nome = {nome:10}'
'nome = Ana '
>>> n=12
>>> f'num = {n}'
'num = 12'
>>> raio = 2
>>> area = [Link] * raio * raio
>>> area
12.566370614359172
>>> f'a area do circulo com raio {raio} é : {area}'
'a area do circulo com raio 2 é : 12.566370614359172'
>>> f'a área do círculo com raio {raio} é : {area:.2f}'
'a área do círculo com raio 2 é : 12.57'
37
Comandos de Entrada Padrão
input()
•
Comando que aguarda o usuário fornecer, pela entrada padrão (teclado), um valor
expresso por uma sequência de caracteres, e o retorna. Este comando tem o efeito de
– suspender a execução do programa até que o usuário escreva sua entrada e
pressione a tecla <enter>.
Em conjunto com input() a função split() “quebra” uma string de acordo com os
espaços contidos nela.
–
Por exemplo:
b=input()
a=input().split()
38
Comandos de Entrada Padrão
input(mensagem)
•
Comando que escreve a expressão mensagem na saída padrão (vídeo) e aguarda, via
– interrupção, que o usuário escreva sua resposta, composta de uma sequência de
caracteres digitados, e pressione a tecla <enter>.
Exemplo:
–
39
Exemplo de programa Python
Elaborar um programa em Python para somar dois números
40
Exemplo de programa Python
Elaborar um programa em Python para somar dois números
41
Comentários
•
• Comentários simples são iniciados com o caractere #
•
• Comentários com múltiplas linhas podem ser
delimitados em seu início e término por:
•
– Três aspas simples, isto é: ‘‘‘ e ’’’
–
– Três aspas duplas, isto é: “““ e ”””
–
– 42
Estrutura de Seleção
Um estrutura de seleção permite decidir se um determinado
bloco de comandos deve ou não ser executado, a partir do
resultado de uma expressão relacional ou lógica.
if <condição>: condição
False
<comando(s)> True
43
Estrutura de Seleção
Exemplo:
numero = int(input())
if numero % 2 == 0:
print("par")
44
Estrutura de Seleção
Exemplo:
45
Estrutura de Seleção
if 10<=valor<= 20:
print(valor, “ocorre dentro do intervalo [10,20]”)
if ((valor >= 0) and (valor < 10)) or ((valor > 20) and (valor <= 30)):
print(valor, “ocorre dentro do intervalo [0,10) ou em (20,30]”)
46
Estrutura de Seleção (if-else)
A estrutura de seleção if-else é utilizada quando se deseja
executar uma entre duas suites, dependendo do resultado da
avaliação de uma condição.
True False
condição
if <condição>:
<suite1> suite1 suite2
else:
<suite2>
47
Estrutura de Seleção (if-else)
Exemplo:
numero = int(input())
if numero % 2 == 0:
print("PAR.")
else:
print("ÍMPAR")
48
Estrutura de Seleção Aninhadas
49
Estrutura de Seleção (if-elif ou if-elif-else)
if <expressao1>: if <expressao1>:
<suite1> <suite1>
elif <expressao2>: elif <expressao2>:
<suite2> <suite2>
... ...
elif <expressaoN>: elif <expressaoN>:
<suiteN> <suiteN>
else:
<suiteCasoContrário>
50
Estrutura de Seleção (if-elif ou if-elif-else)
valores = input(“Entre com dois inteiros positivos: ”).split()
x = int(valores[0]) # primeira substring da lista
y = int(valores[1]) # segunda substring da lista
op = input(“Informe o operador (+, -, *, / ou **): ”)
if op==“+”:
resultado = x + y
elif op==“-”:
resultado = x - y
elif op==“*”:
resultado = x * y
elif op==“/”:
resultado = x / y
elif op==“**”:
resultado = x ** y
print(x, op, y, “=”, resultado)
Estrutura de Seleção (match)
match <expressão>:
case <valor1>:
<instruções>
case <valor2>:
<instruções>
...
• case <valorN>:
<instruções>
52
Estrutura de Seleção (match)
numero = 5
match numero:
case 0:
print("O número é zero")
case 1:
print("O número é um")
case _:
print("O número não é nem zero nem um")
Estrutura de Seleção (match)
estado = input().upper()
match estado:
case "RJ":
print("Rio de Janeiro")
case "BA":
print("Bahia")
case "SP":
print("São Paulo")
case _:
print("Erro!")
Estrutura de Seleção (match)
dia = input()
match dia:
case "sabado" | "domingo":
print("Fim de semana")
case _:
print("Dia útil")
Estrutura de Repetição (while)
A estrutura de repetição while executa um bloco de
comando(s) enquanto a condição é verdadeira
False
condição
while <condição>:
True
<comando(s)>
comando(s)
56
Estrutura de Repetição (while)
Exemplo:
indice = 1 # inicializa variável
57
Exemplo: Fatorial
N ! = N * (N-1) * (N-2) * ... * 2 * 1, para N > 0.
N ! = 1, para N = 0.
58
Estrutura de Repetição (for)
É a estrutura de repetição mais usada no Python
59
Estrutura de Repetição (for)
Uma lista em Python é uma estrutura que armazena vários dados,que podem ser de um
mesmo tipo ou não. Uma lista é criada como a construção: [e1,e2,...,en].
60
Função range
•
A função range( ) retorna uma série numérica no intervalo enviado como argumento.
•
•
A série retornada é um objeto iterável do tipo range e os elementos contidos serão gerados sob demanda.
•
•
É comum o uso da função range com a estrutura de repetição for
•
•
range(valor limite)
• range(valor inicial, valor limite)
• range(valor inicial, valor limite, avanço)
•
61
–
Estrutura de Repetição (for)
for i in range(5):
• print(“i =”,i)
for _ in range(5):
• print(“#”)
62
Exemplo: Fatorial
N ! = N * (N-1) * (N-2) * ... * 2 * 1, para N > 0.
N ! = 1, para N = 0.
63
Exemplo de Laços aninhados
Imprimindo as tabuadas dos números de 1 até 10
64
Exemplo de Laços aninhados
Imprimindo todos os horários de um dia, no formato HH:MM (horas e minutos)
for h in range(24):
for m in range(60):
print(h, m, sep = ":")
65
Comando break
●
O comando break faz com que a execução de
um laço seja terminada, passando a execução
para o próximo comando depois do final do
laço.
66
Comando break
n=0
while True:
x = int(input("Entre com um número inteiro positivo: "))
if x <= 0:
break
n=n+1
print("Quantidade de números positivos fornecidos: ", n)
67
Comando continue
●
O comando continue faz com que a
execução de um laço seja alterada para o
final do laço
68
Comando continue
69
Comando pass
●
Todos os comandos precisam ter necessariamente um bloco indentado não vazio.
●
Apesar de poder ser evitado na maioria das situações, a linguagem Python oferece o
comando pass, que é uma instrução válida que não faz nada.
70
Funções
•
Trata-se de um grupo de sentenças, comando(s) e/ou estrutura(s) de controle (e funções
• internas), ao qual é atribuído um nome, que após a sua execução retorna um valor.
71
Declaração de Uma Função em Python
[Optional]
A lista de parâmetros pode ter zero ou mais parâmetros, separados por vírgulas.
O corpo da função deve possuir zero ou mais retornos de valores, expressos por
return <valor>
72
Esboço de Um Programa Contendo Funções
Sempre que possível, as funções devem ser declaradas antes de
serem utilizadas. Portanto, devem ficar acima do programa principal ou
de outras funções que as utilize.
def nomeFun1(<listaParametros1>):
... <corpo nomeFun1>
def nomeFunN(<listaParametrosN>):
<corpo nomeFunN>
73
Esboço de Um Programa Contendo Funções
def imprimir():
print("Curso de Python")
print("Algoritmos")
def circulo(raio):
return 3.14 * raio * raio
imprimir()
print(circulo(1.5))
74
Esboço de Um Programa Contendo Funções
Com a chamada da função main no final do código, não
precisamos nos preocupar com a ordem em que as outras
funções são definidas
def main():
função1()
função2()
def função2():
print("Execução da função 2")
def função1():
print("Execução da função 1")
main()
75
Funções com parâmetros variados
*args é usado para passar uma lista de argumentos variável sem palavras-
chave em forma de tupla, pois a função que o recebe não necessariamente
saberá quantos argumentos serão passados
def somar_numeros(*args):
soma = 0
for i in args:
soma += i
return soma
print(somar_numeros(4))
print(somar_numeros(4,3))
print(somar_numeros(4,3,2))
76
Funções com argumentos de palavras-chave
77
Funções com valor do parâmetro padrão
O exemplo a seguir mostra como usar um valor de parâmetro padrão.
my_function("EUA")
my_function("India")
my_function()
my_function("Argentina")
78
Funções aninhadas
Uma função aninhada é uma função definida dentro do corpo de outra função.
Essa função interna só é acessível dentro do escopo da função onde foi
definida, tornando-a invisível para o restante do código.
def somaquadrados(a,b):
def quadrado(x):
return x**2
p1 = quadrado(a)
p2 = quadrado (b)
return p1+p2
print(somaquadrados(3,4))
79
Recursividade
• Uma função é chamada recursiva quando possui no seu corpo
uma chamada a ela própria.
1 , se n = 0; {caso base}
n! =
n * (n-1)! , se n > 0. {expressão de recorrência}
1 , se n = 0; {caso base}
n! =
n * (n-1)! , se n > 0. {expressão de recorrência}
def fat(n):
if n == 0: # condição de parada
return 1
else:
return n*fat(n-1) # chamada recursiva
81
Implementação Iterativa para o Fatorial
1 , se n = 0;
n! =
1 * 2 * ... * n , se n > 0.
def fatorial_robusto(x):
if isinstance(x,int) and x>=0:
return fat(x)
else:
print("erro, argumento inválido")
82
Escopo de variáveis
83
Variáveis Globais
Variáveis que são criadas fora de uma função são conhecidas como variáveis
globais. Essa variável é visível por todas as funções.
x = "oi"
def myfunc():
print(x)
myfunc()
84
Variáveis Globais
Se você criar uma variável com o mesmo nome dentro de uma função, essa
variável será local e só pode ser usada dentro da função.
Ou seja, ao tentar alterar uma variável global o que ocorre é a criação de uma
variável local que ofusca completamente a variável global
x = "oi"
def myfunc():
x = "bye"
print(x)
myfunc()
print(x)
85
Variáveis Globais
Para alterar o valor de uma variável global dentro de uma função, consulte a
variável usando a palavra-chave global.
x = "awesome"
def myfunc():
global x
x = "fantastic"
myfunc()
print("Python is " + x)
86
Variáveis Locais
Uma varíavel criada dentro de uma função, só pode ser usada dentro desta
função onde foi criada. Fora desta função a variável é desconhecida.
Dizemos que uma variável criada dentro de uma função é uma variável local a
esta função.
nome da lista
4o elemento itens[3]
itens
7 19 4 10 8 1
0 1 2 3 98 99
88
Listas
itens
7 19 4 10 8 1
90
Função range
A função range gera uma sequência de inteiros. Uma sequência de inteiros pode ser
transformada numa lista usando a função list.
91
Listas
Suponha que se queira somar todos os elementos de uma lista.
–
soma = 0
for indice in range(0,100):
soma = soma + itens[indice]
soma = 0
for item in itens:
soma = soma + item
soma = 0
for indice in range(len(itens)):
soma = soma + itens[indice] 92
Listas
• Acesso a elementos da lista para uso:
93
Listas
• A combinação de uma lista vazia que vai sofrendo “appends” permite
ler dados e preencher uma lista com estes dados
94
Operações sobre Listas
• Concatenação, múltiplas concatenações e comparação
–
95
Operações sobre Listas
96
Operações sobre Listas
97
Slices sobre Listas
98
Listas
• A leitura de uma lista pode ser realizada:
– Elemento a elemento, ou
– Todas as informações podem ser lidas de uma vez, como uma linha de
caracteres, sobre a qual se aplica a operação split para separá-las.
99
Exemplos de Leitura
valores = [None]*10
for i in range(len(valores)):
valores[i] = input(“Digite um valor: ”)
100
Exemplos de Escrita
101
Listas multimensionais
103
Listas multimensionais
# Lista de funcionários: [ID, Nome, Cargo, Salário]
funcionarios = [
[1, "Alice", "Engenheira de Software", 8500],
[2, "Bob", "Analista de Dados", 7500],
[3, "Carlos", "Gerente de Projetos", 9500],
[4, "Diana", "Designer", 6500]
]
104
Listas multimensionais
def remover_funcionario(tabela, id):
for funcionario in tabela:
if funcionario[0] == id:
[Link](funcionario)
break
105
Listas multimensionais
def atualizar_salario(tabela, id, novo_salario):
pass
def exibir_tabela(tabela):
pass
106
String
107
String
• Funções embutidas
•
>>> chr(97)
'a'
>>> ord('a')
97
108
String
• Indexação de cada caractere
nome = “Ana”
109
String
1. replace(subStringProcurada, subStringNova)
Retorna uma cópia da String sendo consultada, substituindo todas as ocorrências da
subStringProcurada pela subStringNova. Por exemplo: [Link](“java”,”python”)
2. count(subStringProcurada)
Retorna a quantidade de ocorrências da subStringProcurada na String. Por exemplo:
[Link](“o”)
3. upper()
Retorna uma cópia da String, convertendo os eventuais caracteres alfabéticos
minúsculos para caracteres maiúsculos correspondentes. Por exemplo: [Link]()
4. lower()
Idem ao anterior, convertendo os maiúsculos para minúsculos. Por exemplo: [Link]()
110
String
5. strip()
Retorna uma cópia da String, removendo todos os eventuais caracteres brancos do
início e do final. Por exemplo: [Link]()
6. split()
Retorna uma lista de todas as palavras da String. Por exemplo: [Link]()
7. split(subStringSeparadora)
Retorna uma lista de todas as palavras da String, sendo o delimitador
procurado entre palavras aquele especificado em subStringSeparadora. Por exemplo:
[Link](“:”)
111
String
Comparação (==, !=, <, <=, >, >=): os operadores relacionais
também funcionam com valores Strings.
>>> s1 = "AAA"
>>> s2 = "ZZZ"
>>> s3 = "AAA"
>>> (s1 == s2), (s1 != s2), (s1 == s3)
(False, True, True)
>>> (s1 < s2), (s1 > s2), (s1 <= s3), (s1 >= s3)
(True, False, True, True)
String
Concatenação (+): concatena (ou junta) o conteúdo de variáveis ou
valores String.
>>> s = "U"
>>> result = s * 3
>>> print(result)
UUU
Tupla
• Tuplas são uma sequência de elementos separados por vírgulas,
representados ou não entre parênteses, isto é, os parênteses não são
obrigatórios
115
Exemplos de Declaração e Empacotamento
A função tuple() retorna uma tupla vazia.
vazio = tuple() # ou vazio = ( )
print(vazio)
Tuplas não vazias podem ser declaradas com ou sem parênteses.
valores = (“abacaxi”, 500, 4.99)
print(valores)
valores = “abacaxi”, 500, 4.99
print(valores)
Listas e Strings podem ser empacotados como tuplas através da função
tuple().
trio = tuple([1, 2, 3]) # ou trio = (1, 2, 3)
print(trio)
vogais = tuple(“aeiou”) # ou vogais = (“a”, “e”, “i”, “o”, “u”)
print(vogais)
116
Exemplo de Acesso a Items
O índice de um elemento de uma tupla pode ser uma
variável ou uma expressão.
>>> a = (1,"Carlos",1245.89)
>>> a[0]
1
>>> a[1]
'Carlos'
>>> a[2]
1245.89
>>> a[-1]
1245.89
117
Exemplo de Desempacotamento e Iteração
O conteúdo de tuplas pode ser facilmente atribuído a variáveis
isoladas por meio de desempacotamento.
nome, idade = (“Maria José”, 39)
print(nome)
print(idade)
119
Métodos Disponíveis sobre Tuplas
1. count(valor)
Retorna a quantidade de ocorrências de um determinado valor
na tupla.
valores = (“abacaxi”, 500, 4.99, 500)
print([Link](500)) # imprime 2
2. index(valor)
Retorna o índice da primeira ocorrência do valor informado
como argumento.
valores = (“abacaxi”, 500, 4.99, 500)
print([Link](500)) # imprime 1
120
Operadores sobre Tuplas
1. Concatenação: a + b
Operador infixado que gera uma nova tupla a partir do conteúdo da
primeira (a), seguido do conteúdo da segunda (b).
2. Replicação: a * n
Operador que gera uma nova tupla a partir do conteúdo da primeira (a), seguido pela
repetição do mesmo conteúdo n – 1 vezes.
121
Operadores sobre Tuplas
122
Conjunto
• Python inclui um tipo de dado chamado conjunto (set), que é uma estrutura
de dados mutável, desordenada e sem elementos repetidos.
123
Conjunto (set)
• Em Python, uma variável pode ser um conjunto contendo elementos
de tipo(s) imutável(áveis), tais como números inteiros e de ponto
flutuante, Strings e Tuplas.
124
As funções set(), add(), discard() e len()
A função set() associa um conjunto vazio a uma variável.
escolhidos = set()
print(escolhidos)
A função add() adiciona um elemento ao conjunto, caso o elemento ainda não
ocorra no conjunto.
escolhidos = set()
[Link](13)
print(escolhidos)
A função discard() retira um elemento do conjunto, caso o elemento esteja no
conjunto.
escolhidos = {20, 11, 68, 93}
[Link](68)
print(escolhidos)
A função len() retorna a cardinalidade do conjunto, isto é, seu tamanho.
escolhidos = {20, 11, 68, 93}
print(len(escolhidos)) 125
A função set()
Criando um conjunto a partir de uma lista ou string
lst = [3,3,4,3,1,1,3]
set(lst)
{1, 3, 4}
126
Criando um Conjunto de Nomes via Teclado
O programa abaixo faz a leitura de cinco nomes e cria um conjunto com até
cinco nomes distintos digitados pelo usuário. A impressão do conteúdo do
conjunto ocorre a cada tentativa de inclusão de nome.
escolhidos = set()
for i in range(5):
nome = input(“Digite nome: ”)
[Link](nome)
print(escolhidos)
127
Operadores para Conjuntos
UNIÃO: [Link](t) ou s | t
x ([Link](t)) x s ou x t
128
Operadores para Conjuntos
INTERSEÇÃO: [Link](t) ou s & t
x [Link](t) x s e x t
129
Operadores para Conjuntos
DIFERENÇA: [Link](t) ou s - t
x ([Link](t)) x s e x t
130
Operadores Relacionais para Conjuntos
IGUAL (==) e DIFERENTE (!=):
Seja s um conjunto.
x in s é verdadeiro x é um elemento de s.
3 in {1, 2, 3, 4} é verdadeiro
5 in {1, 2, 3, 4} é falso
1 in { } é falso 133
Exemplo: Este programa imprime o número de vogais, e
dígitos existentes em uma frase.
def contaVogaisDigitos (frase):
vogais = {“A”, “E”, “I”, “O”, “U”, “a”, “e”, “i”, “o”, “u”}
digitos = {“0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”}
nVogais = 0
nDigitos = 0
for letra in frase:
if letra in vogais:
nVogais += 1
elif letra in digitos:
nDigitos+= 1
print(“Quantidade de Vogais:”, nVogais)
print(“Quantidade de Dígitos:”, nDigitos)
return None
lida = input(“Diga a frase: ”)
contaVogaisDigitos(lida)
134
Dicionário
135
Dicionário
• Por exemplo:
136
Dicionário
• Uma variável pode ser um dicionário contendo chave de tipo
imutável, tal como números inteiros e de ponto flutuante, Strings
e Tuplas, e valor de qualquer tipo.
137
Dicionário
138
As funções dict(), del() e len()
A função dict() associa um dicionário vazio a uma variável.
pares = dict()
pares[13] = “Valor da Sorte”
print(pares)
139
As funções dict(), del() e len()
pares = {51: “Boa ideia”, 13: “Valor da Sorte”, 31: “Dia do Azar”}
del pares[13] # ou [Link](13)
print(pares)
140
Criando um Dicionário de nomes:fones
O programa abaixo faz a leitura de cinco nomes e telefones e cria um dicionário
com até cinco nomes distintos digitados pelo usuário. Ocorre uma escrita do
conteúdo do dicionário a cada tentativa de inclusão de nome:fone.
pares = dict() # ou pares = { }
for i in range(5):
nome = input(“Digite nome: ”)
fone = input(“Digite o telefone de ”+nome+ “: ”)
pares[nome] = fone
print(pares)
141
Visualizações sobre Dicionário
142
Iterando sobre Chaves ou Valores
pares = {51: “Boa ideia”, 13: “Valor da Sorte”, 31: “Dia do Azar”}
print(pares[51]) # escreve Boa Ideia
print(pares[52]) # aborta a execução com KeyError: 52
144
A Função get()
A função get(chave) retorna None se não existir aquela chave no
dicionário, caso contrário retorna o respectivo valor.
pares = { }
print([Link](44)) # escreve None
pares = {51: “Boa ideia”, 13: “Valor da Sorte”, 31: “Dia do Azar”}
print([Link](13)) # escreve Valor da Sorte
146
Arquivo Texto
• Há basicamente dois tipos de arquivo: texto e binário
147
Arquivo Texto
148
Abrindo um Arquivo Texto
• Em Python, antes de ser utilizado, um arquivo texto precisa ser associado a
um nome no diretório de arquivos e ser aberto, via operação open:
149
Abrindo um Arquivo Texto
dados = open(“[Link]”, “r”)
Caso o arquivo exista: abre para leitura o arquivo “[Link]”, e coloca a cabeça de leitura
sobre o primeiro caractere da primeira linha. Caso ele não exista: causa erro FileNotFoundError.
150
Fechando um Arquivo Texto
A operação close() permite que um arquivo texto seja
fechado. Sempre que não for mais ser utilizado, um arquivo deve
ser fechado.
dados = open(“[Link]”, “w”)
...
[Link]()
151
O Método read()
A operação read(), aplicada sobre um arquivo texto aberto,
retorna o conteúdo do arquivo em uma única string.
dados = [Link]()
print(dados)
[Link]()
152
O Método readline()
A operação readline(), aplicada sobre um arquivo texto
aberto, retorna uma linha completa do arquivo, incluindo o fim de
linha: “\n”. A cabeça de leitura avança para a próxima linha. Uma
string vazia é retornada quando o fim de arquivo é encontrado.
linha = [Link]()
print(linha, end=“”)
[Link]()
153
Lendo o Arquivo Texto com o Método readline()
O programa abaixo pede ao usuário que escolha um nome
de arquivo, existente em seu diretório, e exibe seu conteúdo na
tela.
nomeArquivo = input(“Digite o nome do arquivo que deseja visualizar: ”)
print(linha, end=“”)
linha = [Link]()
[Link]()
154
Lendo com o Iterador sobre o Arquivo
O programa abaixo pede ao usuário que escolha um nome
de arquivo, existente em seu diretório, e exibe seu conteúdo na
tela.
nomeArquivo = input(“Digite o nome do arquivo que deseja visualizar: ”)
print(linha, end=“”)
[Link]()
155
Lendo Todas as Linhas para uma Lista
O programa abaixo, que funciona apenas para pequenos
arquivos, pede ao usuário que escolha um nome de arquivo,
existente em seu diretório, e exibe seu conteúdo na tela.
156
Produzindo Arquivo Texto: o Método write()
Para escrever uma sequência de caracteres em um arquivo
texto, no modo “w” ou “a”, podemos utilizar o método
write(desejada). Que escreverá a String desejada a partir do
ponto em que a cabeça de escrita do arquivo estiver posicionada.
Ao final, a cabeça de escrita ficará posicionada após o último
caractere da String desejada.
157
Produzindo Arquivo Texto: write() com “\n”
Para escrever uma linha de texto, necessitamos colocar o
caractere que representa o fim de linha. Esse caractere é
o “\n”.
158
Estrutura With
A estrutura with do Python é utilizada para garantir a finalização
de recursos adquiridos. Utilizando with, o arquivo só fica aberto dentro
do bloco
159
Estrutura With
A estrutura with do Python é utilizada para garantir a finalização
de recursos adquiridos. Utilizando with, o arquivo só fica aberto dentro
do bloco
160
Copiando um Arquivo Texto
# Subprogramas
def mostra(nome):
infos = open(nome, “r”)
for linha in infos:
print([Link]())
[Link]()
return None
def copiar(nomeOrigem, nomeDestino):
orig = open(nomeOrigem,”r”)
dest = open(nomeDestino, “w”)
for linha in orig:
[Link](linha)
[Link]()
[Link]()
return None
# Programa Principal
nomes = input(“Escreva os nomes dos arquivos, original e destino: ”).split()
mostra(nomes[0])
copiar(nomes[0], nomes[1])
mostra(nomes[1]) 161
Exceções
Erros detectados durante a execução são chamados exceções.
Um exceção é algo inesperado, fora do planejado que ocorre
durante a execução de um programa.
>>> 10 * (1/0)
>>> 4 + x*3
>>> '2' + 2
162
Exceções
Erros detectados durante a execução são chamados exceções.
Um exceção é algo inesperado, fora do planejado que ocorre
durante a execução de um programa.
163
Tratamento de exceções
É possível escrever programas que tratam exceções específicas.
O método mais básico em Python para o tratamento de exceções
é o uso dos blocos try e except
try:
# código potencialmente problemático
except TipoDeErro:
# ação em caso de erro
164
Tratamento de exceções
É possível escrever programas que tratam exceções específicas.
O método mais básico em Python para o tratamento de exceções
é o uso dos blocos try e except
try:
resultado = 10 / 0
except ZeroDivisionError:
print("Divisão por zero não permitida.")
165
Tratamento de exceções
É possível escrever programas que tratam exceções específicas.
O método mais básico em Python para o tratamento de exceções
é o uso dos blocos try e except
try:
x = int(input("Digite o valor de x:"))
print(f"x = {x}")
except ValueError:
print("x não é um inteiro")
166
Tratamento de exceções
É possível escrever programas que tratam exceções específicas.
O método mais básico em Python para o tratamento de exceções
é o uso dos blocos try e except
try:
# código
except TipoDeErro:
# tratamento da exceção
else:
# executado se não houver exceção
167
Tratamento de exceções
É possível escrever programas que tratam exceções específicas.
O método mais básico em Python para o tratamento de exceções
é o uso dos blocos try e except
try:
x = int(input("Digite o valor de x:"))
except ValueError:
print("x não é um inteiro")
else:
print(f"x = {x}")
168
Tratamento de exceções
É possível escrever programas que tratam exceções específicas.
O método mais básico em Python para o tratamento de exceções
é o uso dos blocos try e except
while True:
try:
x = int(input("Digite o valor de x:"))
except ValueError:
print("x não é um inteiro")
else:
break
print(f"x = {x}")
169
Tratamento de exceções
É possível escrever programas que tratam exceções específicas.
O método mais básico em Python para o tratamento de exceções
é o uso dos blocos try e except
def main():
x = get_int()
print(f"x = {x}")
def get_int():
while True:
try:
x = int(input("Digite o valor de x:"))
except ValueError:
print("x não é um inteiro")
else:
return x
main()
170
Tratamento de exceções
É possível escrever programas que tratam exceções específicas.
O método mais básico em Python para o tratamento de exceções
é o uso dos blocos try e except
try:
dividendo = int(input("Digite o dividendo: "))
divisor = int(input("Digite o divisor: "))
resultado = dividendo/divisor
except ValueError:
print("Numero digitado inválido")
except ZeroDivisionError:
print("Divisão por zero não permitida")
171