Buscar

calc_num_00_python

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 70 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 70 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 70 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Instituto Federal Minas Gerais - Campus Bambuí
Departamento de Engenharia e Computação - DEC
Curso de Engenharia de Computação - ENGCOMP
Cálculo Numérico
00 – Introdução a Python
Marcos Roberto Ribeiro
2021
IFMG - Campus Bambuí - DEC - ENGCOMP 1/69
Introdução
A linguagem Python foi criada na década de 1990
Atualmente, é uma das linguagens mais utilizadas no mundo
Uma das grandes vantagens da linguagem é sua extensa variedade de bibliotecas disponíveis
IFMG - Campus Bambuí - DEC - ENGCOMP 2/69
Tipos básicos de dados
Python Descrição
int valores numéricos inteiros
float valores numéricos fracionários
bool valores lógicos (verdadeiro ou falso)
str Valores textuais (ou string)
IFMG - Campus Bambuí - DEC - ENGCOMP 3/69
Variáveis e literais
Variáveis: representa uma posição de memória no computador cujo conteúdo pode ser lido e
alterado durante a execução do código
Literais : dados informados literalmente no código
IFMG - Campus Bambuí - DEC - ENGCOMP 4/69
Atribuições
A atribuição de valores a variáveis é feita com o operador de igualdade (=)
Além de valores literais, podemos atribuir o valor de outras variáveis, resultados de
expressões e valores retornados por funções
O tipo da variável é o tipo do valor atribuído a ela
Exemplo
1 n1 = 10
2 n2 = 2.5
3 nome = 'José'
4 teste = True
IFMG - Campus Bambuí - DEC - ENGCOMP 5/69
Códigos legíveis
Um dos principais cuidados na escrita de códigos é a legibilidade
Um código escrito por você deve ser facilmente entendido por outra pessoa que vá estudá-lo
ou usá-lo
Alguns fatores que influenciam diretamente o entendimento de códigos são:
Nomes sugestivos: usar nomes sugestivos para variáveis e outras estruturas
Endentação: alinhamento correto de blocos de código
Comentários: textos não executáveis com a finalidade de explicar o código
IFMG - Campus Bambuí - DEC - ENGCOMP 6/69
Comentários
Os comentário começam com #
O texto após o # é desconsiderado
Exemplo
1 n1 = 10 # Número inteiro
2 n2 = 2.5 # Número fracionário
3 nome = 'José' # Textual (sempre entre aspas)
4 teste = True # Variável lógica
IFMG - Campus Bambuí - DEC - ENGCOMP 7/69
Entrada e saída de dados
Em muitas situações práticas, precisamos receber dados do usuário e também mostrar
mensagens
Quando o código recebe dados do usuário, dizemos que ocorre uma entrada de dados
De forma análoga, quando o código exibe mensagens para o usuário, acontece uma saída de
dados
IFMG - Campus Bambuí - DEC - ENGCOMP 8/69
Entrada de dados
A entrada de dados é feita com a função input()
A função pode receber um texto como parâmetro que pode ser informado para o usuário
antes da entrada dos dados
Normalmente, usamos uma variável para receber a resposta digitada
Essa função sempre retorna o valor textual digitado pelo usuário, se precisarmos de outro
tipo de dado, temos que fazer uma conversão1
1Podem ocorrer erros nessa conversão, mas trataremos disso mais tarde
IFMG - Campus Bambuí - DEC - ENGCOMP 9/69
Saída de dados
No caso da saída de dados, temos a função print()
Essa função recebe como parâmetro as informações a serem mostradas para o usuário
Se usarmos uma variável como parâmetro, será mostrado o valor dessa variável
IFMG - Campus Bambuí - DEC - ENGCOMP 10/69
Exemplo de entrada e saída de dados
1 print('Bem vindo!')
2 nome = input('Informe seu nome: ') # Nome do usuário
3 idade = int(input('Informe sua idade: ')) # Idade convertida para inteiro
4 print() # Escreve uma linha em branco
5 # Escreve mensagem usando as variáveis
6 print('Olá,', nome, 'sua idade é', idade)
7 print('Até mais!')
IFMG - Campus Bambuí - DEC - ENGCOMP 11/69
Operadores aritméticos
+ adição
- subtração
* multiplicação
/ divisão
fracionária
** potenciação
// divisão inteira
% resto de divisão
A ordem precedência dos operadores aritméticos é a mesma ordem precedência da
matemática
Também podem ser usados parênteses para alterar a ordem de precedência
IFMG - Campus Bambuí - DEC - ENGCOMP 12/69
Exemplo com expressões matemáticas
1 ni = 10 // 3
2 print('10 // 3 =', ni)
3 ni = 10 % 3
4 print('10 % 3 =', ni)
5 nr = 2.34 * 3.58
6 print('2.34 * 3.58 =', nr)
7 nr = 2.99 / 4.1
8 print('2.99 / 4.1 =', nr)
9 nr = (10.5 - 7.8) * (3.2 + 200.43)
10 print('(10.5 - 7.8) * (3.2 + 200.43) =', nr)
IFMG - Campus Bambuí - DEC - ENGCOMP 13/69
Exemplo de calculadora simples
1 print('Informe dois números')
2 n1 = float(input('Primeiro número: '))
3 n2 = float(input('Segundo número: '))
4 r = n1 + n2
5 print(n1, '+', n2, '=', r)
6 r = n1 - n2
7 print(n1, '-', n2, '=', r)
8 r = n1 * n2
9 print(n1, '*', n2, '=', r)
10 r = n1 / n2
11 print(n1, '/', n2, '=', r)
IFMG - Campus Bambuí - DEC - ENGCOMP 14/69
Exercícios (entrada e saída)
1 No exemplos anteriores, mais especificamente nas instruções input(), qual a diferença entre
escrever a expressão matemática com aspas e sem aspas?
2 Reescreva o código da calculadora sem usar a variável r
IFMG - Campus Bambuí - DEC - ENGCOMP 15/69
Concatenação de texto
Variáveis e literais de textuais podem ser concatenados através do operador +
Dados não textuais devem ser convertidos para texto antes de serem concatenados
Exemplo
1 print('Informe os dados')
2 nome = input('Nome: ')
3 sobrenome = input('Sobrenome: ')
4 idade = int(input('Idade: '))
5 mensagem = nome + ' ' + sobrenome + ', ' + str(idade)
6 print(mensagem)
IFMG - Campus Bambuí - DEC - ENGCOMP 16/69
Operadores relacionais
Os operadores relacionais são utilizados para comparar dois valores
== Igual
!= Diferente
> Maior
>= Maior ou igual
< Menor
<= Menor ou igual
Exemplo considerando a = 10 e b = 5
a == b Falso
a != b Verdadeiro
a > b Verdadeiro
a >= b Verdadeiro
a < b Falso
a <= b Falso
IFMG - Campus Bambuí - DEC - ENGCOMP 17/69
Operadores lógicos
Os operadores lógicos são equivalentes aos operadores da lógica proposicional
Em muitas situações, esses operadores são usados para combinar as comparações relacionais
Operador Descrição
not Negação (tem a maior precedência entre os operadores lógicos)
or ou lógico (verdadeiro quando um dos seus operandos lógicos for verdadeiro)
and e lógico (verdadeiro somente se seus dois operandos lógicos forem verdadeiros)
IFMG - Campus Bambuí - DEC - ENGCOMP 18/69
Exercício (operadores lógicos)
1 n1 = 5
2 n2 = n1 * 2 - 6
3 p = (n1 > n2)
4 q = (n1 != n2)
5 r = not (n2 <= n1)
6 g = not (p or q) and (not p or not r)
Qual o valor de cada variável ao final da execução do código?
IFMG - Campus Bambuí - DEC - ENGCOMP 19/69
Exercício (operadores lógicos)
1 n1 = 5
2 n2 = n1 * 2 - 6
3 p = (n1 > n2)
4 q = (n1 != n2)
5 r = not (n2 <= n1)
6 g = not (p or q) and (not p or not r)
Qual o valor de cada variável ao final da execução do código?
g: Falso (False)
n1: 5
n2: 4
p: Verdadeiro (True)
q: Verdadeiro (True)
r: Falso (False)
IFMG - Campus Bambuí - DEC - ENGCOMP 19/69
Desvio condicional
Para resolver diversos tipos de problemas, muitas vezes, precisamos de desvios condicionais
(também chamados de estruturas de decisão ou estruturas condicionais)
Os desvios condicionais são testes feitos para decidir se uma determinada ação deve ou não
deve ser realizada.
IFMG - Campus Bambuí - DEC - ENGCOMP 20/69
Desvio condicional simples
O desvio condicional mais simples é feito com a instrução if
Fluxograma
N ≥ 60
escreva(’Aprovado’)
sim
não
Código
1 if N >= 60:
2 print('Aprovado')
Basicamente, podemos dizer que se a condição N ≥ 60 for verdadeira, a instrução
print(’Aprovado’) é executada
A condição do se (if) pode ser qualquer expressão lógica que retorne um valor Verdadeiro
(True) ou Falso (False)
IFMG - Campus Bambuí - DEC - ENGCOMP 21/69
A importância da endentação
A endentação deve ser feita corretamente para especificar quais instruções estão dentro da
estrutura condicional
Utilizamos quatro espaços para endentar um bloco de instruções
Endentação em Python
1 N␣=␣int(input('Informe␣sua␣nota:␣'))
2 if␣N␣>=␣60:
3 ␣␣␣␣print('Aprovado')
4 ␣␣␣␣print('Parabéns')
5 print('Boas␣férias')
Nos exemplos acima as mensagens’Aprovado’ e ’Parabéns’ são mostradas apenas se a
condição N >= 60 for verdadeira
Por outro lado, a mensagem ’Boas férias’ é mostrada incondicionalmente
IFMG - Campus Bambuí - DEC - ENGCOMP 22/69
Desvio condicional composto
No código anterior, consideramos apenas a possibilidade da nota maior ou igual a 60
Porém, seria interessante informar a mensagem de reprovado para notas menores que 60
N ≥ 60
escreva(’Aprovado’) escreva(’Reprovado’)
sim não
Para tratar a situação da condição não ser atendida, usamos as instrução else
IFMG - Campus Bambuí - DEC - ENGCOMP 23/69
Exemplo de desvio condicional composto
1 N = int(input('Informe sua nota: '))
2 if N >= 60:
3 print('Aprovado')
4 print('Parabéns')
5 else:
6 print('Reprovado')
7 print('Boas férias')
Agora, as mensagens ’Aprovado’ e ’Parabéns’ são mostradas se a condição N >= 60 for
verdadeira
Caso contrário, a mensagem ’Reprovado’ é mostrada
Já a mensagem ’Boas Férias’, continua aparecendo incondicionalmente
IFMG - Campus Bambuí - DEC - ENGCOMP 24/69
Desvios condicionais aninhados
Em muitas situações, precisamos colocar desvios condicionais aninhados (dentro) de outros
desvios condicionais
Como exemplo, considere o caso da nota inferior a 60
Nesse cenário, se a nota for menor que 40, o aluno está reprovado
Entretanto, se a nota for maior ou igual a 40, o aluno está de reavaliação
N ≥ 60
escreva(’Aprovado’)
N ≥ 40
escreva(’Reavaliação’)escreva(’Reprovado’)
nãosim
simnão
IFMG - Campus Bambuí - DEC - ENGCOMP 25/69
Exemplo de desvios condicionais aninhados
1 N = int(input('Informe sua nota: '))
2 if N >= 60:
3 print('Aprovado')
4 print('Parabéns')
5 else:
6 if N >= 40:
7 print('Reavaliação')
8 else:
9 print('Reprovado')
10 print('Boas férias')
IFMG - Campus Bambuí - DEC - ENGCOMP 26/69
Desvios condicionais aninhados com múltiplos testes
Quando precisamos fazer diversos testes sobre uma mesma variável, o aninhamento de
desvios condicionais pode ficar menos legível
Nesses casos, podemos utilizar a instrução elif para tratar os múltiplos casos
Como exemplo, vamos escrever um código para simular uma calculadora
IFMG - Campus Bambuí - DEC - ENGCOMP 27/69
Exemplo com desvios condicionais aninhados com múltiplos testes
1 print('Informe os dados')
2 n1 = float(input('Número 1: '))
3 n2 = float(input('Número 2: '))
4 op = input('Operação (+, -, *, /): ')
5 if (op == '+'):
6 r = n1 + n2
7 elif (op == '-'):
8 r = n1 - n2
9 elif (op == '*'):
10 r = n1 * n2
11 else:
12 r = n1 / n2
13 print(n1, op, n2, '=', r)
IFMG - Campus Bambuí - DEC - ENGCOMP 28/69
Estruturas de repetição
Repetição while
Indicado para situações nas quais não se sabe o número de repetições a serem executadas
As repetições ocorrem enquanto uma determinada condição for verdadeira
É importante garantir que a condição de parada realmente aconteça e o código não entre
em um laço infinito
Repetição for
Indicado quando se sabe o número de repetições a serem feitas
Utiliza uma variável contadora que é incrementada automaticamente
IFMG - Campus Bambuí - DEC - ENGCOMP 29/69
Exemplo com repetição while
1 n = int(input('Informe um número: '))
2 print(0)
3 x = 2
4 while x <= n:
5 print(x)
6 x = x + 2
IFMG - Campus Bambuí - DEC - ENGCOMP 30/69
Exemplo com repetição for
início
S ← 0
C ∈ {1, ..., 10}
leia N
S ← S + N
escreva S
fim
Código
1 s = 0
2 for c in range(10):
3 n = float(input('Informe um número: '))
4 s = s + n
5 print(s)
IFMG - Campus Bambuí - DEC - ENGCOMP 31/69
Intervalo de números da repetição for
No exemplo anterior utilizamos a função range para gerar o intervalo de números da
repetição
Essa função recebem um número inteiro N e gera o intervalo de números de 0 a N − 1
Além do parâmetro N, podemos incluir outros parâmetros para definir o início e a
periodicidade dos números do intervalo
IFMG - Campus Bambuí - DEC - ENGCOMP 32/69
A instrução break
início S ← 0
(Verdadeiro)
leia N
N = 0
S ← S + N
escreva Sfim
sim
não
A instrução break permite interromper o laço de
repetição a qualquer momento
Exemplo
1 s = 0
2 while True:
3 n = float(input('Informe um número: '))
4 if n == 0:
5 break
6 s = s + n
7 print('Soma dos números:', s)
IFMG - Campus Bambuí - DEC - ENGCOMP 33/69
A instrução continue
início S ← 0
C ∈ {1, ..., 10}
leia N
N % 5 = 0
S ← S + N
escreva S fim
não
sim
A instrução continue “pula” para a próxima
iteração da repetição, ignorando as demais
instruções da iteração atual
Exemplo
1 s = 0
2 for c in range(10):
3 n = float(input('Informe um número: '))
4 if n % 5 == 0:
5 continue
6 s = s + n
7 print('Soma dos números:', s)
IFMG - Campus Bambuí - DEC - ENGCOMP 34/69
A ferramenta Spyder
O Spyder é uma ferramente livre e multiplataforma para desenvolvimento Python
Página oficial: http://www.spyder-ide.org
Seus principais recursos são:
Editor: editor de código integrado com explorador de código e auto-complemento
Console IPython: console que permite a execução de comandos individuais
Explorador de variáveis: permite visualizar e modificar as variáveis em tempo de execução
Depurador: permite executar códigos passo-a-passo
Ajuda: fornece documentação de comandos da linguagem
IFMG - Campus Bambuí - DEC - ENGCOMP 35/69
http://www.spyder-ide.org
Tela do Spyder
IFMG - Campus Bambuí - DEC - ENGCOMP 36/69
Bibliotecas, pacotes, módulos e funções
Funções são partes de códigos prontas para serem usadas
As funções podem ter parâmetros de entrada e retornar algum resultado
Em nossos códigos já usamos as funções input() e print()
As funções podem ser agrupadas em arquivos chamados de módulos
Os pacotes, por sua vez, são coleções de um ou mais módulos
Por fim, uma biblioteca pode ser considerada uma coleção de pacotes, módulos e funções
A linguagem Python possui uma biblioteca padrão de funções (como input() e print())
prontas para serem usadas
Além disso, podemos importar bibliotecas com diversos tipos de funções específicas
IFMG - Campus Bambuí - DEC - ENGCOMP 37/69
Principais funções da biblioteca padrão Python
abs(x): retorna o valor absoluto de x
chr(i): retorna o caractere representado Unicode pelo número i
input(prompt): exibe a mensagem prompt e retorna o conteúdo digitado pelo usuário
ord(c): retorna o código Unicode correspondente ao caractere c
print(x1, ..., xn, sep=’ ’, end=’\n’): escreve os parâmetros x1, ..., xn na tela separados por sep e
com end no final
range(start=0, stop, step=1): gera uma sequência de valores de start até (stop− 1) com
incremento de step
round(number, ndigits): Arredonda number considerando ndigits casas decimais
type(object): retorna o tipo de object
IFMG - Campus Bambuí - DEC - ENGCOMP 38/69
Exemplos com funções
1 n = -123.456
2 na = abs(n)
3 nr = round(n, 2)
4 c = chr(68)
5 m = input('Informe um caractere: ')
6 cm = m[0] # Pega primeiro caractere de m
7 u = ord(cm)
8
9 for i in range(2, 15, 3):
10 print('i =', i)
11
12 print('n =', n, ', na =', na, ', nr =', nr)
13 print('c =', c)
14 print('m =', m , 'cm =', cm, ', u =', u)
15 print('n = ', n , ', type: ', type(n))
16 print('na = ', na , ', type: ', type(na))
17 print('nr = ', nr , ', type: ', type(nr))
18 print('c = ', c , ', type: ', type(c))
19 print('m = ', m , ', type: ', type(m))
20 print('cm = ', cm , ', type: ', type(cm))
21 print('u = ', u , ', type: ', type(u))
22 print('i = ', i , ', type: ', type(i))
IFMG - Campus Bambuí - DEC - ENGCOMP 39/69
Principais funções para tipos textuais
Na linguagem Python, o tipo de dado textual (str) possui diversas funções prontas para usar
Por serem funções associadas ao tipo str, é preciso usá-las junto com o dado desse tipo
Por exemplo, se tempos uma variável x do tipo str, podemos chamar uma função y com o
código x.y()
Alguns exemplos de funções são:
find(sub, start, end): retorna o início de sub na string, começando a busca em start e
terminando em end. Retorna −1, se sub não for encontrada
format(x1, ..., xn): Retorna uma nova string com x1, ..., xn incorporados e formatados
lower(): Retorna a string com todas asletras minúsculas
replace(old, new, count): Retorna a string substituindo old por new count vezes
upper(): Retorna a string com todas as letras maiúsculas
IFMG - Campus Bambuí - DEC - ENGCOMP 40/69
Exemplo com funções textuais
1 nome_completo = input('Informe seu nome completo: ')
2 sobrenome = input('Informe seu sobrenome: ')
3
4 pos = nome_completo.find(sobrenome)
5
6 if pos != -1:
7 print('Seu sobrenome começa na posição ', pos)
8 else:
9 print('Sobrenome não encontrado')
10
11 n = float(input('Informe um número: '))
12
13 print('{n:.8f}'.format(n=n))
IFMG - Campus Bambuí - DEC - ENGCOMP 41/69
Outras bibliotecas
Além da biblioteca padrão, a linguagem Python possui diversas bibliotecas que podem ser
usadas
Para usar as demais bibliotecas, precisamos importá-las através da instrução import
Um exemplo interessante é a biblioteca math que possui funções matemáticas, algumas
delas são:
ceil(x): Retorna o teto de x
floor(x): Retorna o piso de x
trunc(x): Retorna a parte inteira de x
exp(x): Retorna ex
log(x , base): Retorna o logaritmo de x em uma base. Se a base não for especificada,
retorna o logaritmo natural de x
sqrt(x): Retorna a raiz quadrada de x
pi: Retorna o valor de π
IFMG - Campus Bambuí - DEC - ENGCOMP 42/69
Exemplo com funções matematicas
1 import math
2
3 n = float(input('Informe um número: '))
4 x = n * math.pi
5 print('x = n * pi = ', n)
6 print('Teto de x =', math.ceil(x))
7 print('Piso de x =', math.floor(x))
8 print('Log de x na base 10 =', math.log(x, 10))
9 print('Raiz de x =', math.sqrt(x))
IFMG - Campus Bambuí - DEC - ENGCOMP 43/69
Tratamento de exceções
Mesmo se um código estiver correto, podem ocorrer erros durante a execução
Um exemplo comum de erro ocorre quando o usuário digita um número inválido
Esses erros são chamados de exceções
Podemos, tratar essas exceções para evitar que a execução seja interrompida
Em Python, podemos utilizar a instrução try para lidar com as exceções
IFMG - Campus Bambuí - DEC - ENGCOMP 44/69
Exemplo de tratamento de exceções
1 while True:
2 try:
3 quant = int(input('Informe a quantidade de números: '))
4 break
5 except:
6 print('Número inválido! Tente novamente.')
7
8 soma = 0
9 for cont in range(quant):
10 while True:
11 try:
12 n = float(input('Informe um número: '))
13 soma = soma + n
14 break
15 except:
16 print('Número inválido! Tente novamente.')
17
18 print('A média é', soma/quant)
IFMG - Campus Bambuí - DEC - ENGCOMP 45/69
Listas
Os tipos de dados básicos permitem armazenar um único valor de um tipo de dado
Entretanto, em muitas situações, precisamos de listas para agrupar diversos dados
A grande vantagem das listas é a facilidade de acesso por meio de posições indexadas
Dessa maneira, cada posição da lista pode armazenar um valor diferente
Por exemplo, na lista de inteiros representada abaixo, a posição 1 possui o valor 35, já a
posição 5 possui o valor 52.
Posição: 0 1 2 3 4 5
Valor: 40 35 61 89 10 52
IFMG - Campus Bambuí - DEC - ENGCOMP 46/69
O problema dos preços acima da média
Considere o seguinte código para calcular o preço médio de uma lista de produtos:
1 soma = 0
2 print('Informe o preço dos produtos')
3 for cont in range(10):
4 mensagem = 'Produto ' + str(cont+1) + ': '
5 preco = float(input(mensagem))
6 soma = soma + preco
7 media = soma / 10
8 print('A média de preço é {m:.2f}'.format(m=media))
Agora imagine que fosse necessário listar os produtos com preço acima da média
Como fazer isto de uma forma eficiente?
IFMG - Campus Bambuí - DEC - ENGCOMP 47/69
Possíveis soluções
O problema dos preços acima da média é que usamos os preços dos produtos para calcular a
média e depois precisamos novamente do preço de cada produto
Uma solução seria declarar 10 variáveis uma para cada produto
Porém, imagine uma lista de 50 produtos ou mais
A declaração de variáveis individuais não é viável na prática
Outra solução seria pedir para o usuário para informar os preços, realizar o cálculo da média
e solicitar os preços novamente
Essa solução também não é eficiente, pois o usuário precisa digitar a lista de preços duas vezes
Além disso, o usuário que pode digitar algum dado errado na segunda vez
A melhor solução para o problema é a utilização de um vetor
IFMG - Campus Bambuí - DEC - ENGCOMP 48/69
Listas em Python
Em muitas linguagens de programação, é preciso declarar uma variável do tipo vetor
Já na linguagem Python declaramos uma lista vazia onde podemos incluir e remover
elementos
As principais funções de dados do tipo lista são:
append(x): adiciona x no final da lista
insert(i , x): insere x na posição i da lista
pop(i): remove e retorna o elemento na posição i da lista, se i não for informado, a
última posição é considerada
clear(): remove todos os elementos da lista
IFMG - Campus Bambuí - DEC - ENGCOMP 49/69
Exemplo com lista
1 soma = 0
2 lista_precos = []
3 print('Informe o preço dos produtos')
4 for cont in range(10):
5 mensagem = 'Produto ' + str(cont+1) + ': '
6 preco = float(input(mensagem))
7 soma = soma + preco
8 lista_precos.append(preco)
9 media = soma / 10
10 print('A média de preço é {m:.2f}'.format(m=media))
11 print('Os produtos com preço acima da média são:')
12 for cont in range(10):
13 if lista_precos[cont] > media:
14 print('Produto', cont+1, ', preço: ', lista_precos[cont])
IFMG - Campus Bambuí - DEC - ENGCOMP 50/69
Inicialização de listas
Em algumas situações, precisamos inicializar listas com certos valores ou com um
determinado número de posições
Podemos fazer isso com a função range() e com o operador *
Exemplo de inicialização de listas
1 # Lista inicializada com números de 0 a 9
2 lista = list(range(10))
3 print(lista)
4 # Lista de 10 posições com valores 0
5 lista = [0]*10
6 print(lista)
IFMG - Campus Bambuí - DEC - ENGCOMP 51/69
Listas comprimidas e leitura de listas
Outra maneira de inicializar listas é utilizando a compressão
Também podemos ler um string e quebrá-lo em lista
Nessa caso, podemos usar a função len() para obter o tamanho da lista
Exemplo de compressão e quebra de string
1 # Lista inicializada com números de 0 a 9
2 lista = [n for n in range(9)]
3 print(lista)
4 # Leitura de string e com split
5 texto = input('Informe uma lista de números (separado com espaços): ')
6 lista = [int(x) for x in texto.split()]
7 print(lista)
8 print(len(lista))
IFMG - Campus Bambuí - DEC - ENGCOMP 52/69
Seleção de elementos
As listas permitem diversos tipos de seleções de elementos
Exemplo
1 # Lista com números de 1 a 10
2 lista = list(range(1, 11))
3 # Último elemento
4 print(lista[-1])
5 # Segundo ao terceiro elemento
6 print(lista[1:3])
7 # Até o quinto elemento
8 print(lista[:5])
9 # Do terceiro elemento até o final
10 print(lista[2:])
IFMG - Campus Bambuí - DEC - ENGCOMP 53/69
Cópia e o operador in
Podemos copiar listas usando a seleção com :
Também podemos testar se um elemento existe na lista com o operador in
Exemplo
1 # Lista com números de 1 a 10
2 lista = list(range(1, 11))
3 # Copia do sexto ao último elemento
4 lista2 = lista[5:]
5 print(lista2)
6 # Copia a lista completa
7 lista2 = lista[:]
8 print(lista2)
9 # Testa se 5 está na lista
10 print(5 in lista)
11 # Testa se 20 está na lista
12 print(20 in lista)
IFMG - Campus Bambuí - DEC - ENGCOMP 54/69
Modularização
A modularização consiste em dividir um algoritmo em partes menores chamadas de
sub-rotinas ou funções
A modularização facilita o desenvolvimento e a manutenção de softwares
As funções representam pequenos problemas do programa principal e portanto possuem uma
complexidade menor
Além disso, as funções podem ser trabalhadas de forma independente e a localização de
erros se torna mais fácil
Um programa deve ser desenvolvido de forma modular sempre que possível
Isto significa que se um mesmo código é executado em pontos diferentes do programa,
então devemos criar uma função para executar esse código
IFMG - Campus Bambuí - DEC - ENGCOMP 55/69
Vantagens da modularização
Evita a reescrita desnecessária de códigos similaresMelhor legibilidade do código
Um programa pode ser desenvolvido em equipe (cada programador cuida de uma parte)
As sub-rotinas podem ser testadas isoladamente na verificação de erros
A manutenção do programa é facilitada, apenas algumas partes podem precisar de
manutenção.
IFMG - Campus Bambuí - DEC - ENGCOMP 56/69
Chamada de funções
Funções são trechos de código que executam determinada tarefa ao serem chamados e
depois retornam o controle para o ponto em que foram chamados
Apesar de ainda não termos criados nossas próprias funções, já escrevemos diversos códigos
utilizando funções prontas como input() e print()
Quando chamamos uma função devemos informar os parâmetros necessários
Isto significa que se vamos usar uma função teste() que recebe um parâmetro int e outro
str, então devemos usar o código teste(a,b), onde a é do tipo int e b é do tipo str
IFMG - Campus Bambuí - DEC - ENGCOMP 57/69
Criando funções
A estrutura básica de uma função é a seguinte:
1 def <nome_função>(<parâmetros>):
2 # Instruções da função
3 return <resultado> # Se a função retornar um resultado
Exemplo de função (sem retorno de resultado)
1 def saudacao():
2 print('*****************************')
3 print('* BEM VINDO *')
4 print('*****************************')
5
6 saudacao()
IFMG - Campus Bambuí - DEC - ENGCOMP 58/69
Múltiplas funções e variáveis locais
Em nosso exemplo, criamos apenas uma função, mas um programa pode ter várias funções
Além disso, uma função pode chamar outras funções
Uma função pode declarar variáveis para serem utilizadas apenas internamente
Estas variáveis são chamadas de variáveis locais enquanto as variáveis do programa principal
são chamadas de variáveis globais2.
2O uso de variáveis globais deve ser evitado sempre que possível.
IFMG - Campus Bambuí - DEC - ENGCOMP 59/69
Passagem de parâmetros
As função saudacao() desempenha sempre a mesma ação, pois ela não recebe parâmetros
externos
Os parâmetros são como variáveis inicializadas que possibilitam personalizar as ações das
funções
Exemplo
1 def calcula_cubo(num):
2 cubo = num * num * num
3 print(num, 'ao cubo é', cubo)
4
5 n = float(input('Informe um número: '))
6 calcula_cubo(n)
IFMG - Campus Bambuí - DEC - ENGCOMP 60/69
Função com retorno
Quando uma função retorna um resultado, podemos utilizá-la em expressões como se fosse
uma variável
Exemplo
1 def cubo(num):
2 return num * num * num
3
4 n = float(input('Informe um número: '))
5 print(n, 'ao cubo é', cubo(n))
IFMG - Campus Bambuí - DEC - ENGCOMP 61/69
Recursão
Em certas situações, as funções podem usar recursividade
A recursividade permite que uma função chame a si mesma
Nesses casos, é importante ter uma condição de parada para não entrar em uma recursão
infinita
Exemplo
1 def fatorial(num):
2 if num <= 1:
3 return 1
4 else:
5 return num * fatorial(num - 1)
6
7 n = int(input('Informe um número: '))
8 print('O fatorial de', n, 'é', fatorial(n))
IFMG - Campus Bambuí - DEC - ENGCOMP 62/69
Módulos e bibliotecas
Podemos criar nossos próprios módulos contendo nossas funções
Dependendo da quantidade de código, pode ser interessante a criação de vários módulos
agrupando as funções correlacionadas
IFMG - Campus Bambuí - DEC - ENGCOMP 63/69
Exemplo com módulo I
mat.py
1 # -*- coding: utf-8 -*-
2
3 def cubo(num):
4 return num * num * num
5
6
7 def fatorial(num):
8 if num <= 1:
9 return 1
10 else:
11 return num * fatorial(num - 1)
IFMG - Campus Bambuí - DEC - ENGCOMP 64/69
Exemplo com módulo II
principal.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3
4 from mat import cubo, fatorial
5
6 n = int(input('Informe um número: '))
7 print(n, 'ao cubo é', cubo(n))
8 print('O fatorial de', n, 'é', fatorial(n))
IFMG - Campus Bambuí - DEC - ENGCOMP 65/69
Chamada com nomes de parâmetros e parâmetros opcionais
Na chamada de funções é possível, especificar os parâmetros em ordem diferente da
especificada, desde que hajam atribuições aos nomes dos parâmetros
Também podemos criar funções com parâmetros opcionais
Os parâmetros opcionais devem ser os últimos e devem ter um valor padrão já atribuído
IFMG - Campus Bambuí - DEC - ENGCOMP 66/69
Exemplo com parâmetro opcional
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3
4 def juros(capital, taxa, tempo=12):
5 return (capital * taxa * tempo) / 100
6
7 print('Cálculo de juros')
8 cap = float(input('Capital: '))
9 tax = float(input('Taxa: '))
10 escolha = input('Tempo diferente de 12 meses? (S/N)')
11 if escolha.lower() == 's':
12 temp = int(input('Tempo: '))
13 jur = juros(taxa=tax, capital=cap, tempo=temp)
14 else:
15 jur = juros(cap, tax)
16 print('O valor dos juros é', jur)
IFMG - Campus Bambuí - DEC - ENGCOMP 67/69
Executáveis
Também é possível converter módulos em scripts executáveis
No Linux, isso é feito incluindo o seguinte conteúdo na primeira linha do arquivo
#!/usr/bin/env python3
Também é necessário dar permissão de execução ao arquivo
No Windows, é preciso associar o executável pythonw.exe à extensão de arquivos Python
Assim, os scripts podem ser executados diretamente através do gerenciador de arquivos ou
linha de comando
IFMG - Campus Bambuí - DEC - ENGCOMP 68/69
Referências
PYTHON SOFTWARE FOUNDATION. Python.org: our documentation. 2021. Disponível em:
<https://www.python.org/doc/>.
WIKIPÉDIA. Python. 2021. Disponível em: <https://pt.wikipedia.org/wiki/Python>.
IFMG - Campus Bambuí - DEC - ENGCOMP 69/69
https://www.python.org/doc/
https://pt.wikipedia.org/wiki/Python
	Introdução
	Tipos básicos de dados
	Variáveis e literais
	Atribuições
	Códigos legíveis
	Entrada e saída de dados
	Operadores aritméticos
	Concatenação de texto
	Operadores relacionais
	Operadores lógicos
	Desvio condicional
	Estruturas de repetição
	A ferramenta Spyder
	Bibliotecas, pacotes, módulos e funções
	Tratamento de exceções
	Listas
	Modularização
	Chamada de funções
	Passagem de parâmetros
	Recursão
	Módulos e bibliotecas
	Chamada com nomes de parâmetros e parâmetros opcionais
	Referências

Continue navegando