0% acharam este documento útil (0 voto)
2 visualizações171 páginas

Aula 00 - Python Procedural

O documento fornece uma introdução abrangente à linguagem de programação Python, abordando suas características, tipos de dados, variáveis, operadores, estruturas de controle e ambiente de desenvolvimento. Também discute a evolução do Python, desde sua criação até as versões mais atuais, além de apresentar exemplos práticos de uso. O conteúdo é estruturado para facilitar o aprendizado, incluindo comandos de entrada e saída, manipulação de dados e estruturas de seleção.

Enviado por

kaiazevdor
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações171 páginas

Aula 00 - Python Procedural

O documento fornece uma introdução abrangente à linguagem de programação Python, abordando suas características, tipos de dados, variáveis, operadores, estruturas de controle e ambiente de desenvolvimento. Também discute a evolução do Python, desde sua criação até as versões mais atuais, além de apresentar exemplos práticos de uso. O conteúdo é estruturado para facilitar o aprendizado, incluindo comandos de entrada e saída, manipulação de dados e estruturas de seleção.

Enviado por

kaiazevdor
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Python

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!

Simple is better than complex!


● Python

# [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

● Se uma variável for usada sem estar associada com


nenhum objeto, um erro ocorre.

● Em Python, não há necessidade de declarar variáveis


explicitamente, isto é feito implicitamente na hora de uma
atribuição (Tipagem dinâmica)
– type(identificador)

● Palavras reservadas são proibidas (if, while, etc)

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

– Lógico (ou Booleano): (bool)



0 é False e 1 é True

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

– Número Complexo: (complex)


● Representado por um par de números de ponto-flutuante
● [Link]
● String (str)
– Representada por uma sequência de caracteres Unicode, iniciada e terminada
por aspas simples ou duplas.
● None (NoneType)
– Representa a ausência de valor

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", "Banana", "Cherry"


print(x)
print(y)
print(z)

x = y = z = "Orange"
print(x)
print(y)
print(z)

21
Expressão

• Uma expressão especifica o cálculo de um valor

• É definida por operando(s) e operador(es)

• No modo interativo, a última expressão impressa é


atribuída à variável _

22
Operando

• Operando pode ser uma constante, uma variável ou um


resultado de função.

23
Operador

• Operador pode ser unário ou binário, dependendo se admite um


operando ou dois operandos, respectivamente.

24
Operadores Unários
• Operador numérico positivo (+)
– Operando deve ser numérico

• Operador numérico negativo (-)


– 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

• As comparações podem ser encadeadas arbitrariamente

• Qual é a expressão em Python para verificar se um número


armazenado na variável x está entre 0 e 5?
•0 <x<5
• x > 0 and x < 5

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

• Entre operadores de mesma classe, o que ocorre à esquerda


tem maior precedência.

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.

• print(exp1, exp2, ..., expN)


– Escreve na saída padrão (vídeo) o resultado da avaliação de cada expressão
expNum;
– Separamos múltiplos argumentos a serem impressos com uma vírgula
– Um espaço em branco é escrito entre cada par de expNum;
– 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

• print(exp1, exp2, ..., expN, end = término)


– Escreve na saída padrão (vídeo) o resultado da avaliação de cada expressão
expNum;
– Um espaço em branco é escrito entre cada par de expNum;
– Ao final, escreve a String de término.

Qualquer dúvida digite help(print)


33
Expressões Formatadas (f-string)
A partir da versão 3.6 do Python

>>> nome="Maria"
>>> idade=20
>>> print(f'Nome = {nome} Idade = {idade}')
Nome = Maria Idade = 20

>>> nome = 'Matheus'


>>> print(f'Meu nome é {[Link]()}')
Meu nome é matheus

34
Expressões Formatadas (f-string)
A partir da versão 3.6 do Python

>>> nome="Ana"
>>> f'nome = {nome:10}'
'nome = Ana '

>>> f'nome = {nome:<10}'


'nome = Ana '

>>> f'nome= {nome:>10}'


'nome= Ana'

>>> f'nome= {nome:^10}'


'nome= Ana '
35
Expressões Formatadas (f-string)
A partir da versão 3.6 do Python

>>> n=12
>>> f'num = {n}'
'num = 12'

>>> f'num = {n:8d}'


'num = 12'

>>> f'num = {n:8b}'


'num = 1100'
36
Expressões Formatadas (f-string)
A partir da versão 3.6 do Python

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

nome = input(“Digite o nome do aluno: ”)


idade = int(input(“Digite a idade do aluno: ”))

39
Exemplo de programa Python
Elaborar um programa em Python para somar dois números

x = int(input(“Digite o primeiro valor: ”))


y = int(input(“Digite o segundo valor: ”))
soma = x + y
print(“soma =”, soma)

40
Exemplo de programa Python
Elaborar um programa em Python para somar dois números

x = float(input(“Digite o valor de x:”))


y = float(input(“Digite o valor de y:”))
soma = round(x+y,2)
print(“soma =”,soma)

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

<condição> representa uma expressão booleana, ou comando(s)


seja, expressão cujo resultado é verdadeiro (True) ou
falso (False).

43
Estrutura de Seleção

Exemplo:

numero = int(input())

if numero % 2 == 0:
print("par")

44
Estrutura de Seleção

Exemplo:

salario = float(input(“Diga seu salário atual: ”))


if salario>10000:
inss = salario * 0.10
impostoRenda = salario * 0.15
print(“Valor do INSS:”, inss, “e do Imposto de Renda:”, impostoRenda)

45
Estrutura de Seleção

Exemplos de condições compostas:


if (valor >= 10) and (valor <= 20):
print(valor, “ocorre dentro do intervalo [10,20]”)

if 10<=valor<= 20:
print(valor, “ocorre dentro do intervalo [10,20]”)

if (valor < 0) or (valor > 30):


print(valor, “ocorre fora do intervalo [0,30]”)

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

salario = float(input(“Diga seu salário atual: ”))


tempo = int(input(“Diga quantos anos completos tem de serviço: ”))
if tempo<1:
print(“Seu salário se mantém o mesmo:”, salario)
else:
if tempo<10:
salario = salario * 1.10
else:
salario = salario * 1.25
print(“Seu novo salário, com abono:”, salario)

49
Estrutura de Seleção (if-elif ou if-elif-else)

Quando apenas uma de várias alternativas é verdadeira podemos


usar a construção if-elif-else que em Python é representado por:

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)

Estrutura condicional composta, a qual avalia a combinação de


múltiplas condições e executa apenas uma determinada expressão.

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

while indice <= 10: # testa condição

print(indice, end=“ ”) # escreve o valor da variável seguido de espaço “ ”

indice = indice + 1 # incrementa a variável que controla a repetição

print() # pula linha no vídeo

57
Exemplo: Fatorial
N ! = N * (N-1) * (N-2) * ... * 2 * 1, para N > 0.
N ! = 1, para N = 0.

num = int(input(“Digite um valor inteiro e positivo: ”))


i=1
fat = 1
while i <= num:
fat = fat * i
i=i+1
print(“O fatorial de”, num, “=”, fat)

58
Estrutura de Repetição (for)
É a estrutura de repetição mais usada no Python

for <var> in <lista de valores>:


<comando(s)>

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

for item in [3,4,5,6,7,8,9]:


print(item, end=“ ”)
print()

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.

num = int(input(“Digite valor inteiro e positivo: ”))


fat = 1
for i in range(1,num+1):
fat = fat * i
print(“O fatorial de”, num, “=”, fat)

63
Exemplo de Laços aninhados
Imprimindo as tabuadas dos números de 1 até 10

for i in range(1, 11):


• print("Tabuada do ", i, ":", sep = "")
• for j in range(1, 11):
• print(i, "x", j, "=", i * j)

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

for i in range(1, 11):


if i == 5:
continue
print(i)

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.

for i in range(1, 11):


if i == 5:
pass
else:
print(i)

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.

A utilização de funções permite modularizar o programa facilitando o reuso e a manutenção.




Sua ativação se dá através de seu nome ou de expressões que o contenha.


Python permite que o programador crie suas próprias funções


Funções internas (built-in functions) já estudadas: int, float, input, sqrt, print,...

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>

Caso nenhum valor seja retornado, corresponde a return ou return None

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>

utiliza nomeFun1(...) ou/e 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

É possível enviar argumentos com a sintaxe chave=valor

Desta forma, a ordem dos argumentos não importa

def my_function(child3, child2, child1):


print("The youngest child is " + child3)

my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")

77
Funções com valor do parâmetro padrão
O exemplo a seguir mostra como usar um valor de parâmetro padrão.

Se chamarmos a função sem argumento, ela usará o valor padrão

def my_function(country = "Brasil"):


print(country)

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.

• Um exemplo comum de utilização de recursividade é o cálculo


da função fatorial de um número natural.

1 , se n = 0; {caso base}
n! =
n * (n-1)! , se n > 0. {expressão de recorrência}

3! = 3*2! = 3*2*1! = 3*2*1*0! = 3*2*1*1 = 6


80
Recursividade

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

O escopo de uma variável determina de quais partes do código ele pode


ser acessada, ou seja, de quais partes do código a variável é visível.

Python utiliza escopo estático

A regra de escopo em Python:

• Variáveis globais são visíveis por todas as funções

• Variáveis locais são visíveis apenas na função onde foram criadas

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.

Uma variável global pode ser acessada em qualquer lugar do programa ou


função, mas não pode ser alterada pela função

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.

Podemos então criar variáveis com mesmo nome em funções diferentes e


serão variáveis diferentes

Dizemos que uma variável criada dentro de uma função é uma variável local a
esta função.

Os argumentos ou parâmetros de uma função também agem com variáveis


locais.
87
Listas
Uma lista em Python é uma estrutura que armazena vários dados. Listas são
ordenadas, mutáveis e heterogêneas.

nome da lista
4o elemento itens[3]
itens
7 19 4 10 8 1
0 1 2 3 98 99

posição dos elementos itens é uma lista de 100 elementos

88
Listas
itens
7 19 4 10 8 1

itens[0] representa o primeiro elemento e possui o valor 7.


itens[1] representa o segundo elemento e possui o valor 19.

itens[99] representa o centésimo elemento e possui o valor 1.


itens[i-1] representa o i-ésimo elemento.
O índice do elemento indica sua ordem (posição). Índices negativos
(a partir do -1) percorrem a lista de trás para frente. 89
Listas
– Suponha que desejamos guardar notas de alunos. Com o que sabemos, como
armazenarı́amos 3 notas?
nota1 = float(input("Entre com a nota 1: "))
nota2 = float(input("Entre com a nota 2: "))
nota3 = float(input("Entre com a nota 3: "))

– Como armazenarı́amos 40 notas?

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.

>>> list(range(5, 10))


[5, 6, 7, 8, 9]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(-10, -100, -30))
[-10, -40, -70]

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

A função len(nome da lista) que retorna o tamanho de uma lista.


soma = 0
for indice in range(len(itens)):
soma = soma + itens[indice] 92
Listas
• Acesso a elementos da lista para uso:

– O acesso deve acontecer dentro dos limites do índice.

nomes = [‘Gal’, ‘Bethania’, ‘Chico’, ‘Caetano’, ‘Gil’]


i = 200
artista = nomes[i] # Exceção - IndexError: index out of range

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.

• A escrita de uma lista pode ser feita:

– Toda de uma vez, ou

– Pode ser realizada elemento a elemento.

99
Exemplos de Leitura

valores = input(“Digite os valores na mesma linha: ”).split()

valores = [None]*10
for i in range(len(valores)):
valores[i] = input(“Digite um valor: ”)

100
Exemplos de Escrita

numeros = [4, 13, 8, 4, 5, 2, 2, 1, 55, 27]


print(numeros) # todos de uma vez

numeros = [4, 13, 8, 4, 5, 2, 2, 1, 55, 27]


for x in numeros:
print(x, end=“ ”) # um de cada uma vez
print() # pula de linha

101
Listas multimensionais

Listas multidimensionais em Python são listas que contêm outras


listas como elementos, permitindo a criação de estruturas de dados
em mais de uma dimensão, como matrizes (listas de listas) ou até
mesmo estruturas com três ou mais dimensões.

Listas multidimensionais são muito úteis em vários contextos:


Matrizes em álgebra linear
Grids em jogos e visualizações de dados
Representação de imagens (matriz de pixels)
Dados de tabelas (linhas e colunas)
102
Listas multimensionais
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]

# Acessando o elemento da terceira linha, segunda coluna


print(matriz[2][1]) # Saída: 8

for linha in matriz:


for elemento in linha:
print(elemento, end=" ")
print()

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

def adicionar_funcionario(tabela, id, nome, cargo, salario):


[Link]([id, nome, cargo, salario])

adicionar_funcionario(funcionarios, 5, "Elias", "Administrador", 7000)


print(funcionarios)

104
Listas multimensionais
def remover_funcionario(tabela, id):
for funcionario in tabela:
if funcionario[0] == id:
[Link](funcionario)
break

remover_funcionario(funcionarios, 2) # Remove Bob (ID 2)


print(funcionarios)

105
Listas multimensionais
def atualizar_salario(tabela, id, novo_salario):
pass

def exibir_tabela(tabela):
pass

106
String

• Um objeto do tipo str representa uma sequência de caracteres, de


tamanho e valor imutáveis.

• Ordenadas, imutáveis e homogêneas

• Strings são representadas por sequências de caracteres entre aspas


simples ou entre aspas duplas

• Seu comprimento pode ser consultado pela função len(String)

107
String
• Funções embutidas

>>> chr(97)
'a'

>>> ord('a')
97

108
String
• Indexação de cada caractere

• Considere a declaração e atribuição:

nome = “Ana”

Temos então que:


• print(nome[0])
• “A”

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.

>>> parte1 = "Omero"


>>> parte2 = "Francisco"
>>> parte3 = "Bertol"
>>> nome = parte1 + parte2 + parte3
>>> print(nome)
OmeroFranciscoBertol
String
Repetição (*): repete 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

• Suportam o mesmo fatiamento, o mesmo acesso por iteradores e o mesmo


desempacotamento que Listas e Strings.

• Tuplas são imutáveis e heterogêneas.



• A tupla pode ser vazia.

• Tuplas são úteis para representar registros (mas sem atribuir nomes aos
campos). Um registro é uma coleção de valores relacionados

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)

(nome, idade) = (“Maria José”, 39)


print(nome)
print(idade)
É possível iterar sobre os itens de uma tupla.
olhos = (“castanhos”, “verdes”, “azuis”, “pretos”)
for cor in olhos :
print(cor)
118
Exemplo de Desempacotamento e Iteração
O conteúdo de tuplas pode ser facilmente atribuído a variáveis
isoladas por meio de desempacotamento.
usuarios = [ ("Carlos",20), ("Rita",18), ("Fabio",23) ]

for nome, idade in usuarios:


print(nome,idade)

for nome,_ in usuarios:


print(nome)

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.

3. Fatiamento: a[posição inicial : posição final + 1]


Operador que gera uma nova tupla a partir de um subconjunto de elementos contidos
na tupla original (a).

121
Operadores sobre Tuplas

4. Operadores de atribuição incremental: a += b ou a *= n


Equivale aos operadores de concatenação e replicação, porém é atribuído à variável
(a) a referência para a nova tupla gerada.

5. Operadores de comparação: <, <=, ==, !=, > ou >=


Comparação item a item e, recursivamente, para itens aninhados.

6. Teste de associação: in e not in


Verifica a pertinência de um valor em uma tupla.

122
Conjunto
• Python inclui um tipo de dado chamado conjunto (set), que é uma estrutura
de dados mutável, desordenada e sem elementos repetidos.

• O uso básico deste tipo de dado se dá quando se necessita de teste de


pertinência de um elemento em um conjunto ou eliminação de dados
duplicados.

• Estruturas do tipo conjunto suportam as operações matemáticas:


– A pertinência de um elemento a um conjunto,
– A união de dois conjuntos,
– A interseção de dois conjuntos,
– A diferença de dois conjuntos,
– etc.

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.

• Diferentemente das listas, conjuntos não têm seus elementos


acessados por índice.

• No entanto, conjuntos são iteráveis, podendo seus elementos serem


acessados por uma estrutura for.

• Além disso, um conjunto pode ser escrito diretamente no vídeo via


comando print.

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}

lst = “texto texto texto”


set([Link]())

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)

Criando um Conjunto de Nomes Diretamente


escolhidos = {“Maria”, “Ana”, “Giovanna”, “Leandro”, “Dante”}
print(escolhidos)

127
Operadores para Conjuntos
UNIÃO: [Link](t) ou s | t

Retorna um novo conjunto resultante da união de dois conjuntos s


e t é formado por todo elemento que pertence a s ou que pertence
a t (ou a ambos).

x  ([Link](t))  x  s ou x  t

{1, 3, 4}.union({1, 2, 4}) = {1, 2, 3, 4}


{1, 3}.union({2, 4}) = {1, 2, 3, 4}

128
Operadores para Conjuntos
INTERSEÇÃO: [Link](t) ou s & t

Retorna um novo conjunto resultante da interseção de dois


conjuntos s e t é formado por todo elemento que pertence a s e
que pertence a t.

x  [Link](t)  x  s e x  t

{1, 3, 4}.intersection({1, 2, 4}) = {1, 4}


{1, 3}.intersection({2, 4}) = { }

129
Operadores para Conjuntos
DIFERENÇA: [Link](t) ou s - t

Retorna um novo conjunto resultante da diferença entre dois


conjuntos s e t. O resultado é formado por todo elemento que
pertence a s e que não pertence a t.

x  ([Link](t))  x  s e x  t

{1, 3, 4}.difference({1, 2, 4}) = {3}


{1, 3, 4} - {1, 2, 4} = {3}

130
Operadores Relacionais para Conjuntos
IGUAL (==) e DIFERENTE (!=):

Sejam s e t dois conjuntos:

s == t é verdadeiro  s e t contêm os mesmos elementos


s != t é verdadeiro, em caso contrário.

{1, 3} == {1, 3} é verdadeiro {1, 3} != {1, 3} é falso


{1, 3} == {3, 1} é verdadeiro {1, 3} != {3, 1} é falso
{1, 3} == {1, 2} é falso {1, 3} != {1, 2} é verdadeiro
{1, 3} == { } é falso {1, 3} != { } é verdadeiro 131
Operadores Relacionais para Conjuntos
CONTÉM (>= ou issubset) e
ESTÁ CONTIDO (<= ou issuperset):

Sejam s e t dois conjuntos:

s <= t é verdadeiro  todo elemento de s está em t.


s >= t é verdadeiro  todo elemento de t está em s.

{1, 3} <= {1, 2, 3, 4} é verdadeiro {1, 3} >= {1, 2, 3, 4} é falso


{1, 3} <= {1, 3} é verdadeiro {1, 3} >= {1, 3} é verdadeiro
{ } <= {1, 3} é verdadeiro { } >= {1, 3} é falso
132
Operadores Relacionais para Conjuntos
PERTINÊNCIA (in):

Seja s um conjunto.

Seja x um elemento imutável.

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

• Dicionários (ou mapas) são estrutura de dados que associam


uma chave com um valor. Por exemplo: palavra-significado

• Não ordenados, mutáveis, heterogêneas

• O tipo de dado dicionário, é uma estrutura de dados eficiente e


mutável, acessada por uma chave não repetida, que pode ser
de qualquer tipo imutável, tal como número, String ou Tupla.

135
Dicionário

• O uso básico deste tipo de dado se dá quando se necessita de


uma estrutura eficiente para armazenamento de pares
chave:valor.

• Para se recuperar um valor, basta informar sua chave.

• Por exemplo:

d = {chave1: valor1, ..., chaveN: valorN}

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.

• Dicionários tem pares, compostos de chave:valor, iteráveis


sobre a chave, podendo seus elementos serem acessados por
uma estrutura for.

• Além disso, um dicionário pode ser escrito diretamente no vídeo


via comando print.

137
Dicionário

>>> d = { "one" : "um", "two": "dois", "three":"três" }


>>> d["one"]
'um'
>>> d["four"]
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
d["four"]
KeyError: 'four'
>>> d["four"] = "quatro"
>>> d["four"]
'quatro'

138
As funções dict(), del() e len()
A função dict() associa um dicionário vazio a uma variável.

pares = dict() # ou pares = { }


print(pares)

Para adicionar um novo par ao dicionário, por exemplo um par número:string,


basta atribuir o valor ao nome do dicionário seguido pela chave entre colchetes.
Caso já exista esta chave, o valor é atualizado.

pares = dict()
pares[13] = “Valor da Sorte”
print(pares)

139
As funções dict(), del() e len()

A função del nomeDict[chave] retira o par chave:valor do dicionário. Caso a


chave não esteja no dicionário um erro ocorre - KeyError.

pares = {51: “Boa ideia”, 13: “Valor da Sorte”, 31: “Dia do Azar”}
del pares[13] # ou [Link](13)
print(pares)

A função len() retorna o tamanho do dicionário.

pares = {51: “Boa ideia”, 13: “Valor da Sorte”,31:”Dia do Azar}


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

Criando um Dicionário Diretamente


pares = {“Maria”:“3456-7922”, “Ana”:“3214-2211”, “Giovanna”:“4564-1234”}
print(pares)

141
Visualizações sobre Dicionário

[Link](): retorna uma visualização de todos os pares (chave, valor) de um


dicionário d.

[Link](): retorna uma visualização de todas as chaves de um dicionário d.

[Link](): retorna uma visualização de todos os valores de um dicionário d.

142
Iterando sobre Chaves ou Valores

for chave in pares:


print(chave, “:”, pares[chave])

for chave, valor in [Link]():


print(chave, “:”, valor)

for valor in [Link]():


print(valor)
143
Consultando Dicionários
Se consultarmos diretamente uma chave inexistente em um
dicionário, obteremos uma exceção e uma respectiva mensagem
de erro: KeyError. Veja o exemplo abaixo:

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

Para se evitar este tipo de erro durante a consulta podemos utilizar


a função get, descrita a seguir.

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

A função get(chave,default) retorna default se não existir aquela


chave no dicionário, caso contrário retorna o respectivo valor.
pares = {51: “Boa ideia”, 13: “Valor da Sorte”, 31: “Dia do Azar”}
print([Link](22, “Vazia”)) # escreve Vazia
print([Link](51, “Vazia”)) # escreve Boa Ideia
145
Arquivos
• Os programas apresentados neste curso até o momento são
chamados interativos.
– Programas interativos leem os dados de entrada do teclado e apresentam os
dados de saída na tela.
– Este tipo de programação é utilizada quando poucos dados são processados
ou quando necessitam de interação humana.

• Quando grandes quantidades de dados são processadas, arquivos


são utilizados para armazenar os dados de entrada e os de saída.
– Estes são chamados, respectivamente, arquivos de entrada e arquivos de
saída.

146
Arquivo Texto
• Há basicamente dois tipos de arquivo: texto e binário

• Um arquivo texto é uma sequência de caracteres, organizada


em linhas, que reside em uma área de armazenamento sob um
mesmo nome.

• Arquivos texto podem ser criados, visualizados e alterados por


editores ou processadores de texto.

147
Arquivo Texto

• Um arquivo texto é armazenado em disco como uma sequência


de caracteres.

• O caractere “\n” indica fim de linha e o caractere “\0” indica fim


do arquivo.

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:

variável = open(caminho do arquivo)


ou
variável = open(caminho do arquivo, modo)

• Os modos de operação de um arquivo são:


“r” : apenas leitura (se omitido = “r”);
“w” : apenas escrita;
“a” : escrita no final do arquivo;

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.

dados = open(“[Link]”, “w”)


Caso o arquivo exista: apaga seu conteúdo antigo e coloca a cabeça de escrita no início
do arquivo. Caso ele não exista: cria o arquivo no diretório e coloca a cabeça de escrita no início do
arquivo.

dados = open(“[Link]”, “a”)


Caso o arquivo exista: abre o arquivo para escrita e coloca a cabeça de escrita no fim do
arquivo. Isto é: pronto a anexar novas informações no seu final. Caso ele não exista: cria o arquivo
no diretório e coloca a cabeça de escrita no fim do arquivo, que neste caso é igual ao início.

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.

arquivo = open(“[Link]", “r”)

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.

dados = open(“[Link]", “r”)

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

dados = open(nomeArquivo, “r”)


linha = [Link]()

while linha != “”:

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

dados = open(nomeArquivo, “r”)

for linha in dados:

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.

dados = open(“[Link]”, “w”)


[Link](“qualquer dado pode ser escrito.”)
[Link]()

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

dados = open(“[Link]”, “w”)


[Link](“qualquer dado\n”)
[Link]()

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

with open(“[Link]”,”w”) as arquivo:


• [Link](“Maria”)

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

with open(“[Link]”,”r”) as arquivo:


• linhas = [Link]()

for linha in linhas:


• print([Link]())

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.

x = int(input("Digite o valor de x:"))


print(f"x = {x}")

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

Você também pode gostar