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

Curso Introdutoì Rio de Python2024 - Part2

O documento é um curso introdutório sobre a linguagem de programação Python, abordando suas características, como ser uma linguagem de código aberto e orientada a objetos, e sua popularidade na Ciência de Dados. Ele inclui tópicos sobre instalação, tipos de dados, entrada e saída, operações com strings, comentários, operadores lógicos e condicionais, além de exercícios práticos para reforçar o aprendizado. O curso também discute estruturas de controle como laços e condicionais, proporcionando uma base sólida para iniciantes em programação.

Enviado por

alves.weslley
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)
11 visualizações124 páginas

Curso Introdutoì Rio de Python2024 - Part2

O documento é um curso introdutório sobre a linguagem de programação Python, abordando suas características, como ser uma linguagem de código aberto e orientada a objetos, e sua popularidade na Ciência de Dados. Ele inclui tópicos sobre instalação, tipos de dados, entrada e saída, operações com strings, comentários, operadores lógicos e condicionais, além de exercícios práticos para reforçar o aprendizado. O curso também discute estruturas de controle como laços e condicionais, proporcionando uma base sólida para iniciantes em programação.

Enviado por

alves.weslley
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
Você está na página 1/ 124

Curso introdutório de Python

Almir Fernandes
IFSP
Python?
• Python é uma linguagem de código aberto,
orientada a objetos, interpretada e que tem
se consolidado como a principal linguagem
para o campo conhecido como Ciência de
Dados – ou Data Science
• Código aberto -> qualquer um que deseje,
pode ter acesso ao código original da
linguagem
Monty Python!
• Linguagem Python →
criada por Guido Van
Rossum em 1991!

• O nome vem do grupo


cômico inglês Monty
Python
Python?
Python!
• Python é uma linguagem de código aberto,
orientada a objetos, interpretada e de uso
geral, mas que tem se consolidado como a
principal linguagem para o campo conhecido
como Ciência de Dados – ou Data Science
• Orientada a objetos -> segue o paradigma da
OO (assim como C++, Java, C#): tudo na
linguagem é um objeto, com propriedades e
métodos
Python!
• Interpretada -> O programa é “traduzido”
comando a comando no momento da
execução; C/C++ é compilada (todo o
programa é traduzido “de uma vez”)
– Vantagem: mais simples para encontrar erros e
desenvolver de modo iterativo, sendo mais rápida
no ciclo de desenvolvimento.
– Desvantagem: é mais lenta na hora de executar
Python!
• Data Science -> conhecida como a profissão
mais charmosa do século XXI: estudo
disciplinado dos dados e como transforma-los
em informação. Fortemente baseada em
matemática, estatística, computação e
conhecimento do negócio que queremos
analisar.
Python!
• IOT e IIOT/Indústria 4.0/Smart Cities
Python!
• Python: bibliotecas.
• Gratuito
• Diferentes versões
2.7 x 3.x
Python!
• Instalação -> distribuições
– Anaconda
• Bibliotecas (Numpy, Pandas, ...)

• Ambientes interativos:
– python → padrão
– iPython → Anaconda, mais recursos
Python!
• Ao instalar, você terá acesso a um ambiente
interativo onde desenvolverá seus programas.
Vamos aqui começar do básico, no shell do
Python.
• Inicie o seu ambiente Python interativo
– digite “python” diretamente na linha de comando
(Mac e Linux)
– ou (no caso de utilizar Windows) vá em
Iniciar→Python→Python 3.7 (ou outra versão)
Python
Python
• First things first (plagiando a AA):
– Vamos ao tradicional “alo mundo”
Python
• A linguagem Python é interativa → podemos
escrever trechos do programa e testa-los
diretamente na linha de comando.
• A linguagem também permite que utilizemos
nosso editor de textos favorito para escrever
nosso programa para depois executá-lo.
– Neste caso, escreva o programa utilizando, por
exemplo, o bloco de notas (mas jamais o Word) e
execute no prompt de comando.
Python
• Se você tiver instalado o Anaconda, poderá
executar diretamente na linha de comando:
Ipython (Interactive Python):

Para sair, digite exit ou quit e dê enter


Python
• Caso ainda não tenha instalado o Anaconda,
você deve digitar na linha de comando:
python:

Para encerrar digite quit() ou exit()


Python
• Crie seu primeiro programa utilizando o bloco
de notas, e dê o nome meuteste.py
• Coloque o código a seguir no programa:
(PARENTESIS)
• Mencionamos o bloco de notas no slide
anterior. Mas sugerimos fortemente que você
adote um editor mais avançado como
Notepad++ por exemplo:
Python – tipos de dados simples
• Estes são os os tipos de dados mais simples
em Python:
– Numéricos:
int, float, complex
– Caracteres
str
– Booleanos
bool
Python - entrada e saída
• Entrada e saída
– Para imprimir uma informação ou dado na tela,
utilizamos o comando print:
print ("Bom dia! ")
– Para entrada de dados, utilizamos (há outras
opções) input:
nome = input('Entre com seu nome')
Python – entrada e saída
• Faça agora alguns exercícios em Python:
1. Faça um programa que leia o nome e em
seguida a cidade e imprima o resultado em uma
única saída
2. Faça um programa que peça a entrada do nome
e idade do usuário e imprima seu resultado em
uma única linha
3. Faça um programa que leia dois números
inteiros e imprima sua soma
Python – entrada e saída
Você deve ter notado que o comando input
entra com dados caractere, portanto, a sua
saída do programa anterior pode ter sido um
pouco estranha:
Python – entrada e saída
• Para converter um tipo em outro, podemos
utilizar uma operação conhecida por
“casting”:

x = int( input( “entre com um valor inteiro: “))

• Levando isto em consideração, corrija seu


programa anterior
Python –Cuidado nas concatenações!!!

• Ao concatenar 2 strings, utilizamos + ou ,


• Para concatenar 1 string com um inteiro (ou
float) em um comando como um print, devemos
separar por vírgulas:
print ("Seu nome é: " + nome) # correto
print ("Seu nome é: " , nome) # correto
print ("sua idade é: " + idade) # ERRADO (idade int)
print ("sua idade é: " , idade) #correto (idade int)
Python – conversões
• Em geral, podemos converter um tipo em
outro fazendo uma referência ao tipo de
destino:
Python – conversões
• Nem todas as conversões são válidas. O código
abaixo dará erro:

X = "bom dia"
Y = int(X)
Python – conversões
• Faça alguns exercícios: leia dois números
inteiros e imprima o valor de sua soma,
subtração, multiplicação e divisão.
• Execute com vários valores de entrada
• O que você conclui a respeito da divisão?
– A divisão simples de inteiros pode levar a um float
• E se você quiser um resultado inteiro?
– Utilizamos o operador //, que será visto adiante
Python – algumas operações sobre strings

Função Objetivo / exemplo


capitalize Altera a letra inicial da string para maiúscula.

count Retorna quantas vezes determinado caractere ou


sequência de caracteres aparece em nossa string.
len Quantas letras temos em nossa string ***
upper Altera todas as letras para maiúsculas.

lower Altera todas as letras para minúsculas.

find Localiza a primeira ocorrência de um caracter ou


string na frase.
replace Substitui uma string por outra na frase.
Python – algumas operações sobre strings

Capitalize, count, len, upper, lower, find e replace, seguem


o método abaixo, conforme o exemplo:

a = 'abacate'
t = a.capitalize()
print(t)

# capitalize() é tratado como um método, por isso não é


escrito na cor reservada para funções.
Exercício
Faça um programa que leia uma frase fornecida
pelo usuário e:
• Imprima quantas letras há na frase
• Quantas letras ‘a’ há na frase
• Quantas ocorrências de ‘de’ há na frase
• Imprima a frase toda em letras maiúsculas
• Conte quantas palavras há na frase fornecida
Python – Comentários
• Ao programar em Python ou qualquer outra
linguagem é importante incluir comentários
em nosso código
• Comentários são textos (linhas) que não serão
compiladas/interpretadas pelo compilador,
mas são importantes para tornar o código
mais legível, ou durante a realização de testes
com nossos programas
Python – Comentários
• Em Python, comentários são iniciados pelo
símbolo #
# Meu primeiro programa teste
print ("bom dia!") # mais um comentário

Adicione comentários em seus programas, é


uma boa prática!
Python – Tipos booleanos
• Os tipos booleanos, que só aceitam dois
valores basicamente (true/false, 0/1, ...) são
muito importantes nas linguagens de
programação.
Python – Tipos booleanos
Digite e execute o seguinte código no modo iterativo
(Google Colab, por exemplo) e veja os resultados:

print (1 > 2)
print (2 > 1)
print ("amarelo" == 'verde') # note o ==
print("azul" == 'azul')
a = int(input('Entre um valor inteiro'))
b = float(input("entre com um valor real")
print (a == b) # qual resultado você tem aqui???
Python – tipos booleanos
• Veja o código abaixo. O que você conclui?
Python – Operadores
Operador Significado exemplo
+ Soma X+Y
– Subtração X–Y
* Multiplicação X*Y
/ Divisão real X/Y
// Divisão inteira X // Y
% Resto da divisão X%Y
** Exponenciação X ** Y

Faça um programa que leia um inteiro X e calcule: o dobro de x,


a metade de x, a parte inteira da metade de x, o resto da divisão
de x por 2, x elevado ao quadrado e a raiz quadrada de x.
Python – Atribuição
Operador exemplo Mesmo que
= X=5 X=5
+= X += 3 X =X+3
–= X –= 1 X =X–1
*= X *= 2 X = 2* X
/= X /= 2 X=X/2
%= X %= 5 X=X%5
//= X //= 2 X = X // 2
**= X**=0.5 X = X**0.5
++ X++ X=X+1
...
Python – Comparação
Operador Descrição Exemplo
== Igualdade X == Y
!= Diferente X != 3
> Maior que X >3
< Menor que X < 18
>= Maior ou igual a X >= Y
<= Menor ou igual a X <= 3
Python – Operadores Lógicos
Operador Descrição Exemplo
and Retorna true se os dois X < 5 and Y > 2.15
comandos são verdadeiros
or Retorna true se um dos X < 18 or X > 65
comandos for verdadeiro
not Retorna true se o comando not (X > 18 and Y < 20)
original for falso
Python – tomada de decisão
• O comando if é utilizado para tomada de
decisão em Python. A grande diferença para
outras linguagens é que a indentação é quem
define o escopo (ao contrário das chaves, na
maioria das demais linguagens):
if a > b:
print("a maior que b")
Python – tomada de decisão
• O comando pode ter uma sequencia como:
if a > b:
print("a maior que b")
else:
print("a não é maior que b")
Python – tomada de decisão
• Que, neste caso, até pode estar em uma única
linha:
print("a maior que b") if a > b else print("a não é
maior que b")

Você consegue fazer um programa que lê 3


valores e os imprime em ordem, do menor para
o maior?
Em uma única linha?
Python – tomada de decisão
• Exercício: faça um programa que leia um
número inteiro. Em seguida, imprima se o
número é par ou ímpar.
• Exercício: Faça um programa em Python que lê
o nome e a idade do usuário e, de acordo com
a idade, imprime o nome e se ele pode ou não
tirar carteira de motorista.
Solução - pares
x = int(input("Entre com um valor numérico: "))
if x % 2 == 0: # se o resto for 0, o numero eh par
print("O valor", x, " eh par")
else:
print("O valor", x, " eh impar")

# veja que não preciso perguntar se o resto não eh 0,


pois só passarei pela segunda linha se isto ocorrer.
Solução - idade
nome = input("Por favor, seu nome: ")
idade= int(input(f"{nome}, sua idade: "))

if idade >= 18:


print("Parabens, voce ja pode se matricular")
else:
print("Puxa, que pena, voce precisa aguardar
um pouco.")
Python – múltiplas condições
• Em vários cenários temos mais que uma condição
necessária para que algo seja verdadeiro.
• Para ser aprovado em determinado curso, você
precisa de uma média maior ou igual a 6 e
frequência superior a 75% por exemplo.
– Em casos assim, utilizamos o operador and no nosso
condicional:
if nota >= 6 and freq >= 75 :
print("Aprovado!")
Python – múltiplas condições
• Também podemos ter o caso de que ou uma
condição ou outra seja verdadeira para que a
condição esteja satisfeita. Por exemplo, se a
nota for menor que 4 ou se a frequência for
inferior a 50%, o aluno já está reprovado.
if nota < 4 or freq < 50 :
print(”Reprovado!")
Python - Exercício
• Utilizando a tabela abaixo, monte agora o caso
completo, lendo o nome, média e frequência
do aluno e imprimindo seu resultado final.
Nota Frequencia Resultado
nota >= 6 freq >= 75 Aprovado
nota >= 6 50 <= freq. < 75 Exame
4 <= nota < 6 freq >= 75 Exame
nota < 4 Qualquer freq Reprovado
Qualquer nota freq < 50 Reprovado
Python – condicionais aninhados
É comum termos uma sequencia de “ifs”
aninhados em programas. Imagine que após ler
a idade, você queira saber se a pessoa pode ou
não votar em uma eleição.
As regras no Brasil indicam que o voto:
– É facultativo se 16 ≤ idade < 18
– É obrigatório se 18 ≤ idade < 65
– É facultativo se idade ≥ 65
– É proibido se idade < 16
Python – condicionais aninhados
• Uma primeira solução poderia ser por meio de
várias perguntas:
if idade
Python – tomada de decisão
• Exercício: de acordo com a legislação brasileira, uma
pessoa pode (é facultativo) votar em uma eleição se
ela tem mais que 16 anos e menos que 18, ou se ela
tem mais que 65 anos. Ele é obrigado a votar se tem
entre 18 e 65, e não pode se tiver menos que 16.
• Altere seu programa anterior para que ele imprima,
além do nome e se ele pode tirar carteira de
motorista, em que cenário ele se enquadra (não
pode votar, pode mas não é obrigatório ou é
obrigado a votar).
Python – laços
• A linguagem Python possui dois laços ou
“loops” para repetir uma sequencia de
comandos:
– while
• Executa uma sequencia de comandos se determinada
condição é verdadeira
– for
• Executa uma sequencia de comandos um determinado
número de vezes
Python – laço while
Veja o exemplo abaixo:
i=1
while (i < 6):
print("i = ", i)
i += 1
print ("\n encerrando... ")
Python – laço while
Execute também com uma pequena alteração:
i=1
while (i < 6):
print("i = ", i)
i += 1
print ("\n encerrando... ")
Python – laço while
Veja este outro exemplo:
teste = True
while (teste==True):
x = int(input("entre com um numero par: "))
if (x%2 == 0):
teste = False
else:
print(" voce entrou com um numero impar...\n\n")
print ("\n Pronto. Agora foi um numero par. \nObrigado...")
Python – Exercício
• Faça um programa que leia um número inteiro
n e calcule o enésimo termo da sequência de
Fibonacci -> lembrando que a sequencia de
Fibonacci tem como primeiro número 1,
segundo número 1, e a partir daí, cada
número é a soma dos dois anteriores.
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
• Se n = 8, o programa deve retornar 21.
# Programa Fibonacci: retorna o enesimo termo da sequencia
n = int(input("Entre com um numero inteiro: "))
if n == 1:
print("n=1, o primeiro elemento da sequencia de Fibonacci eh 1")
elif n == 2:
print("n=2, o segundo elemento da sequencia de Fibonacci eh 1")
else:
ultimo = penultimo = 1
i=3
while i <= n:
novo = ultimo + penultimo
(penultimo, ultimo) = (ultimo, novo)
i += 1
a = f'\n O {n} elemento da sequencia de Fibonacci eh {novo}'
print (a)
Python – laço for
• Exemplo:
for i in (1, 2, 3):
print (i)

Deste jeito é bem


sem graça...
Python – laço for
• Melhorando um pouco:
total = int(input("Entre com o total de notas: "))
soma = 0 Agora eu gostei!!!!

for i in (range(0, total)):


nota = float(input("entre com a nota: "))
soma += nota
media = soma / total
print (f'A media das {total} notas foi {media}')
Python – laço for
• Também posso iterar por uma string!!!
frase = "Bom dia, turma!!"
for letra in frase:
print (letra)
Python – laço for
• E se eu quiser usar uma lista???

legumes = [“alface”, “cenoura”, “tomate”]


for item in legumes:
print (item + “ é um legume”)
Laços - revisão
• while → repito enquanto condição verdadeira
i=1
while (i < 6):
print("i = ", i)
i+=1

• for → repito a sequencia


for i in (range(0, n)):
nota = float(input("entre com a nota: "))
soma += nota
media = soma / n
Python – laço for
• Exercício: utilizando o que foi visto até aqui,
faça um programa que leia um número inteiro
e imprima se ele é primo e/ou perfeito*

• *número perfeito é aquele que equivale à


soma dos seus divisores, exceto o próprio
número. Exemplo: 28 = 1 + 2 + 4 + 7 + 14
• Você vai precisar do resto da divisão (%)
n = int(input("entre com n "))
pr = True
for i in (range (2,n//2 +1)) :
if (n % i == 0):
pr = False
break
if (pr == True):
print (n, " eh primo!")
else:
print (n, " nao eh primo")
perf = True
soma = 1
for i in (range (2, n//2 +1)):
if ( n % i == 0): # se i eh um divisor de n
soma += i
if (n != soma):
perf = False
if (perf == True):
print (n, " eh perfeito!")
else:
print (n, " nao eh nao eh perfeito")
n = int(input("entre com n "))
pr = True
for i in (range (2,n//2 +1)) : n = int(input("entre com n "))
if (n % i == 0): pr = True
pr = False
break
for i in (range (2,n//2 +1)) :
if (pr == True): if (n % i == 0):
print (n, " eh primo!") pr = False
else:
break
print (n, " nao eh primo")
perf = True
soma = 1
for i in (range (2, n//2 +1)):
if ( n % i == 0): # se i eh um divisor de n
soma += i
if (n != soma):
perf = False
if (perf == True):
print (n, " eh perfeito!")
else:
print (n, " nao eh nao eh perfeito")
n = int(input("entre com n "))
pr = True
for i in (range (2,n//2 +1)) :
if (n % i == 0):
pr = False if (pr == True):
break
if (pr == True):
print (n, " eh primo!")
print (n, " eh primo!") else:
else: print (n, " nao eh primo")
print (n, " nao eh primo")
perf = True
soma = 1
for i in (range (2, n//2 +1)):
if ( n % i == 0): # se i eh um divisor de n
soma += i
if (n != soma):
perf = False
if (perf == True):
print (n, " eh perfeito!")
else:
print (n, " nao eh nao eh perfeito")
n = int(input("entre com n "))
pr = True
for i in (range (2,n//2 +1)) :
if (n % i == 0):
pr = False
perf = True
break soma = 1
if (pr == True): for i in (range (2, n//2 +1)):
print (n, " eh primo!")
else:
if ( n % i == 0): # se i eh um divisor de n
print (n, " nao eh primo") soma += i
perf = True if (n != soma):
soma = 1
for i in (range (2, n//2 +1)):
perf = False
if ( n % i == 0): # se i eh um divisor de n
soma += i
if (n != soma):
perf = False
if (perf == True):
print (n, " eh perfeito!")
else:
print (n, " nao eh nao eh perfeito")
n = int(input("entre com n "))
pr = True
for i in (range (2,n//2 +1)) :
if (n % i == 0):
pr = False
break
if (pr == True):
print (n, " eh primo!")
else:
print (n, " nao eh primo")
perf = True
soma = 1
for i in (range (2, n//2 +1)): if (perf == True):
if ( n % i == 0): # se i eh um divisor de n print (n, " eh perfeito!")
soma += i
else:
if (n != soma):
perf = False print (n, " nao eh nao eh
if (perf == True): perfeito")
print (n, " eh perfeito!")
else:
print (n, " nao eh nao eh perfeito")
Python
• Altere o programa anterior para que o usuário
entre com o valor de n inteiro, e calcule
TODOS os números primos e perfeitos entre 1
e n. Encontre todos os primos e perfeitos
menores que 1.000.000 por exemplo ☺
Python – vamos dar um break!
• Imagine que em um laço, por qualquer
motivo, você precise “quebrar” a sequência –
por exemplo, porque encontrou o que
buscava.
• Imagine, por exemplo, que você queira saber
se uma das letras da frase é a letra “m” e, se
for, interromper a busca (há formas mais
inteligentes ou “pythonicas” de fazer isto, mas
serve como exemplo aqui)
Python – vamos dar um break!
• Primeiro, nosso laço que recebe uma frase e
imprime letra a letra:
frase = "Bom dia, turma!!"
for letra in frase:
print (letra)
Python – vamos dar um break!
• Agora, vamos dar um break ao encontrarmos
a primeira letra “m”
frase = "Bom dia, turma!!"
for letra in frase:
if (letra == "m"):
break
print (letra)
Python – funções
• Aproveitando ainda o exercício anterior
(primo e perfeito), vamos extrair uma função
para o cálculo do primo, e fica como exercício
transformar o perfeito em uma função
também.
Python – funções
• O cálculo do primo é basicamente executado
por este trecho:
pr = True def primo (n):
for i in (range (2,n//2 +1)) : pr = True
if (n % i == 0): for i in (range (2,n//2 +1)) :
pr = False if (n % i == 0):
pr = False
break
break
if (primo(n) == True): return (pr)
print (n, " eh primo!")
else:
print (n, " nao eh primo")
Python – trabalhando com arquivos

• Após nossos cálculos, podemos salvar os


dados em um arquivo texto:

nome_arq_primo = "primos.txt"
arq_primo = open(nome_arq_primo, "w")
arq_primo.write(f"Numeros primos entre 1 e {lim}\n")
arq_primo.close()

Arquivo aberto para escrita!


Python – trabalhando com arquivos

• Também podemos abrir o arquivo para leitura:

nome_arq_primo = "primos.txt"
arq_primo = open(nome_arq_primo, "r")
dados = arq_primo.read( )
print(dados)
arq_primo.close()
Python – trabalhando com arquivos
• 3 formas de abrir arquivos:
– Leitura ("r")
– Gravação completa ("w") (sobrescreve se existir)
– Adicionar no final → append ("a")
Métodos Leitura Gravação Append
Abertura X=open(arq, "r") Y=open(arq, "w") Z=open(arq, "a")
Lendo dados X.read( ) ---- ----
Gravando dados ---- Y.write("Dia!!") Z.write("Dia!!")
Posicionando X.seek(0) Sem efeito Sem efeito
Contando caract X.tell( ) Y.tell( ) Z.tell( )
Legível? X.readable( ) → T Y.readable( ) → F Y.readable( ) → F
Gravável? X.writeable( ) → F Y.writeable( ) → T Z.writeable( ) → T
Python trabalhando com
módulos e pacotes
• Módulos são scripts python com funções úteis
para os desenvolvedores
• Nós adicionamos módulos com o comando
import:
import math
import datetime as dt
import os
import pandas as pd
Python trabalhando com
módulos e pacotes
• Após importarmos um pacote, podemos
utilizar suas funções:
import math
import datetime as dt

x = math.sqrt(36)
agora = dt.datetime.now( )
Python trabalhando com
módulos e pacotes
• Para saber quais os métodos temos em nossos
pacotes, podemos fazer:
import math
dir (math)
• Para obter ajuda sobre os métodos, podemos
fazer:
import math
help (math.sqrt)
Python trabalhando com
módulos e pacotes
• Podemos construir nossos próprios módulos –
basta criar um script com extensão .py
• Adicione suas funções especiais neste módulo
e os importe quando necessitar futuramente!
• Encontrando uma área de grande interesse e
com uma solução inovadora, poderão incluir
no site oficial do Python Package Index:
pypi.org
Python – trabalhando com arquivos

• Faça um programa que leia n notas e calcule e


imprima: a média.
• Assuma que as notas possam ter valores
decimais (float)
• Dica para imprimir as notas: f-strings
print (f'A media das {n} notas foi {media:.1f}’)
print (f"A media das {n} notas foi {media:.2f}")
Python – trabalhando com arquivos

n = int(input("Entre com o total de notas: "))


soma = 0
for i in (range(0, n)):
nota = float(input("entre com a nota: "))
soma = soma + nota
media = soma / n
print (f'A media das {n} notas foi {media}’)
print (f'A media das {n} notas foi {media:.1f}’)
Python – trabalhando com arquivos

• Altere o programa anterior para ler um


arquivo com as notas ao invés de entra-las
uma a uma.
Python – trabalhando com arquivos

• Altere o programa anterior para, além de


calcular a média, informar qual a maior e a
menor nota!!
Python – trabalhando com arquivos
n = int(input("Entre com o total de notas: "))
soma = maior = 0
menor = 10000
for i in (range(0, n)):
nota = float(input("entre com a nota: "))
soma = soma + nota
if (nota > maior):
maior = nota
if (nota < menor):
menor = nota
media = soma / n
print (f'A media das {n} notas foi {media}')
print (f'A maior nota foi {maior}')
print (f'A menor nota foi {menor}')
Python – Estruturas
Estruturas de dados em Python
• A linguagem Python possui 4 estruturas de
dados principais:
– Listas
– Dicionários
– Tuplas
– Sets
Estruturas de dados em Python
Estrutura → Lista Tupla Set Dicionário

Identificador [] () {} {:}

Modificável Sim Não Sim Sim

Indexado Sim Sim Não Sim*

l1 = [1, 3.1415, "livros"]


t1 = (1, 3.1415, "livros")
s1 = {1, 3.1415, "livros"}
d1 = {1: 1, 2: 3.1415, 5: "livros"}
Listas
• Imagine que estamos montando uma lista de
frutas. Podemos armazenar, em Python, da
seguinte forma:
frutas = ["laranja", "pera", "uva", "abacaxi"]
• Esta nossa lista contém elementos do tipo string,
mas também poderia conter valores numéricos, e
poderia até ter uma mistura de tipos de dados:
lista_mista = ["verde", "42", "Pedro", "aluno",
3.141592, 77]
Listas
• Nossa lista é indexada, o que significa que posso lidar
com elementos individuais da lista:
a = frutas [1]
# frutas = ["laranja", "pera", "uva", "abacaxi"]

• Se imprimirmos o valor de a, teremos:


print ("a=", a)
a=pera
• Porque isto ocorre???? Porque em Python, nossa
indexação começa pela posição 0!
Listas
• Também posso acessar vários itens da lista:
print(frutas[2:3])

Este tipo de operação se chama fatiamento


(slicing), e é extremamente importante em
Python!
print(frutas[1:3])
print(frutas[2:])
print(frutas[:2])
Listas
• Também posso acessar itens do final para o
começo da lista, indicando com um valor
negativo:
print(frutas[-1])
print(frutas[-3:4])
print(frutas[-10:10])
Listas
• Podemos acrescentar elementos no final da nossa
lista:
frutas.append("ameixa")
print(frutas)
print(frutas[2:4])

• Podemos inserir um valor em determinada posição:


• frutas.insert(2, "manga")
• print (frutas)
Listas
• Podemos alterar um valor da nossa lista:
print(frutas)
frutas[2] = ”banana"
print(frutas)
Listas
• Podemos verificar se um item existe em nossa
lista:
if "pessego" not in frutas:
frutas.append("pessego")

• Podemos iterar em nossa lista:


for x in frutas:
print (f"{x} eh uma fruta da lista")
Listas
• Podemos remover elementos de nossa lista:
frutas.pop(2) # removemos o terceiro elemento
frutas.remove("banana") # removemos “banana”
del (frutas [1]) # remove segundo elemento

frutas.clear() # apaga todos elementos da lista


del (frutas) # apaga todos elementos da lista
Listas
• Podemos ordenar uma lista:
notas = [10, 7, 3, 5, 8, 5]
notas.sort()
print(notas)

• Podemos contar quantas ocorrências há de certo valor


na lista
x = notas.count(5)
print(f"Ha {x} notas 5 na lista”)
Listas
• Imagine que representemos dois vetores por duas
listas. Por exemplo:
x1 = [1, 1, 1]
x2 = [2, 3, 4]

Podemos calcular a multiplicação destes vetores como:


soma = 0
for i in range(0,2):
soma += x1[i] *y[i]
Estruturas de dados em Python
Estrutura → Lista Tupla Set Dicionário

Identificador [] () {} {:}

Modificável Sim Não Sim Sim

Indexado Sim Sim Não Sim*

l1 = [1, 3.1415, "livros"]


t1 = (1, 3.1415, "livros")
s1 = {1, 3.1415, "livros"}
d1 = {1: 1, 2: 3.1415, 5: "livros"}
Tuplas
• As tuplas são estruturas Python indexadas,
porém não modificáveis
• Por este motivo, elas são mais rápidas que as
listas quando manipulamos grandes
quantidades de dados
• Há cenários em que realmente não queremos
que nossos dados sejam alterados, por
exemplo, uma tabela de preços fornecida a um
cliente
Tuplas
• Criando uma tupla:
tup1 = (1, 2, 3)
tup2 = tuple("bom dia")

• Posso saber o tamanho da tupla:


tamanho = len(tup2)

• Posso fazer uma quebra diferente na tupla:


• tup2 = tuple("bom dia, turma").split(" ")
Tuplas
• Posso fatiar e recuperar uma parte de uma tupla:
print (tup2[0:5]) # veja que iremos imprimir os 5
# primeiros elementos da tupla
• Posso saber quantas ocorrências de determinado
valor há na tupla:
tup3 = (1, 2, 3, 0, 3, 2, 1)
print(f"há {tup3.count(2)} ocorrências do valor 2 em
tup3")
Tuplas
• Posso determinar o índice da primeira
ocorrência de determinado valor na tupla:
indice = tup3.index(3)

• Posso recuperar uma posição indexada da


tupla:
segundo_valor = tup3[1]
Tuplas
• Porém....
eu não posso alterar uma tupla...

tup4 = (1, 2, 4)
tup4[2] = 3 <<< ERRO!
(lambda funcion & map)
• Funções lambda ou anônimas: são funções
escritas em uma linha e que podem, mas não
precisam, ter um nome definido. Veja o
seguinte exemplo:
tc = lambda tf: (tf – 32) * 5 /9
print(tc(50))
(lambda funcion & map)
• A função map mapeia determinada função a
uma estrutura (lista, tupla, set, ...):

tupf = (50, 59, 68, 77, 86, 95, 104)


tupc = tuple(map(tc, tupf))
print(tupc)
Tuplas
• Agora eu posso ler um arquivo de dados e atribuir
valores como um float a uma tupla (poderia ser a uma
lista):
arq = open("alturas.txt", "r")
valores = arq.readlines()
print(valores)
#Usando a map:
val_num = (map(lambda x: float(x), valores))
alturas = tuple(val_num)
print (alturas)
Estruturas de dados em Python
Estrutura → Lista Tupla Set Dicionário

Identificador [] () {} {:}

Modificável Sim Não Sim Sim

Indexado Sim Sim Não Sim*

l1 = [1, 3.1415, "livros"]


t1 = (1, 3.1415, "livros")
s1 = {1, 3.1415, "livros"}
d1 = {1: 1, 2: 3.1415, 5: "livros"}
Sets
• Os sets (conjuntos) são estruturas Python
ordenadas, modificáveis, porém não são
indexadas
• Permitem operações com conceitos de
conjuntos: união, intersecção, complemento
• Há muitas situações em que queremos saber
quais itens existem, mas não nos interessamos
por quantos. Por exemplo: quais são as cidades
de onde vêm nossos alunos?
Sets
• Vamos inicialmente criar uma lista e um set com um
comando semelhante:

list1 = [1, 5, 2, 3, 2]
set1 = {1, 5, 2, 3, 2}

• E vamos imprimir nosso resultado:


print (list1)
print (set1)
Sets
• Nossa execução anterior retorna:
lista: [1, 5, 2, 3, 2]
conjunto: {1, 2, 3, 5}

• Notamos 3 diferenças entre nossa lista e nosso conjunto:


– o qualificador de cada estrutura eh diferente, colchetes para
a lista e chave para o conjunto
– a lista contem todos os elementos adicionados; o conjunto
nao aceita repeticoes
– o conjunto eh ordenado automaticamente
Sets
• Vamos inicialmente ver o que não podemos
fazer com os sets:
– sets nao sao indexados!!
print(set1[2]) << ERRO
– Não posso ordenar os sets
set1.sort() << ERRO
Sets
• Quando inserimos novos valores, eles são
ordenados automaticamente:
– set1.add(8)
– print (set1)
• Também posso remover elementos do
conjunto:
– set1.remove(8)
– print(set1)
Sets
• Quando inserimos um valor que já existe, ele não
altera o conjunto:
len1= len(set1)
set1.add(2)
len2 = len(set1)
• Mas um novo valor reordena e altera o tamanho do
conjunto:
len1= len(set1)
set1.add(0)
len2 = len(set1)
Sets
• Vamos confirmar o tipo da variável set e criar
um segundo set
print(f"tipo de set={type (set1)}")
set2 = {3, 4, 8, 2}
set2
• E realizar operações de intersecção e união:
print(set1.intersection(set2))
set3 = set1.union(set2)
Estruturas de dados em Python
Estrutura → Lista Tupla Set Dicionário

Identificador [] () {} {:}

Modificável Sim Não Sim Sim

Indexado Sim Sim Não Sim*

l1 = [1, 3.1415, "livros"]


t1 = (1, 3.1415, "livros")
s1 = {1, 3.1415, "livros"}
d1 = {1: 1, 2: 3.1415, 5: "livros"}
Dicionário
• Dicionários são estruturas compostas por
elementos compostos por pares de chave-
valor.
• Em outras palavras, ao contrário das
estruturas anteriores, cada elemento do
dicionário é composto por 2 valores,
separados por :
dic1 = {"aluno": 10, "nome": "maria"}
Dicionário
• Posso imprimir as chaves, os valores, ou
ambos:

print("chaves: ", dic1.keys())


print("valores:", dic1.values())
print("completo:", dic1.items())
Dicionário
• Posso recuperar um valor por uma chave
print(dic1["nome"])

• Mas nao posso fazer uma busca indexada


pelos valores!!
print(dic1["maria"])
Dicionário
• A indexação é pelas chaves. Se o valor 0 (zero) não é
uma chave, não faz sentido fazer uma indexação por
ele
print(dic1[0])

• # se inserimos um novo valor a uma chave existente,


ela eh sobreescrita:
print(dic1)
dic1["aluno"] = 8
print(dic1)
Dicionário
• Posso adicionar ou remover elementos ao
dicionário:

dic1["curso"]="engenharia"
print (dic1)
dic1.pop("curso")
print(dic1)
Dicionário
• Posso adicionar mais alguns elementos:

dic1["dia"] = "segunda-feira"
dic1[5] = "cinco"
print(dic1)

• E posso remover o último item:


dic1.popitem()
print (dic1)
Dicionario
• Posso inserir uma tupla como valor:

dic1["frutas"] = "pera", "laranja", "uva"


print (dic1)

• Posso ver uma ajuda sobre os dicionários.


help (dic1)

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy