Você está na página 1de 124

1

Introdução à Programação
Python
Professor:

Denílson C Oliveira
Conteúdo
2
 Unidade 1: Estruturas de Dados Homogêneos –
 1.1 Vetores. 1.2 Métodos de pesquisa, classificação e ordenação de vetores. 1.3
Matrizes.
 Unidade 2: Ponteiros e Alocação Dinâmica de Memória.
 Unidade 3: Estruturas de Dados Heterogêneas –
 3.1 Registros ou Uniões. 3.2 Arrays de Registros.
 Unidade 4: Arquivos –
 4.1 Rotina para manipulação de arquivos. 4.2 Arquivos texto. 4.3 Arquivos Binários.
4.4 Arquivos de Registros.
 Unidade 5: Introdução a Estrutura de Dados
 5.1 Tipos abstratos de dados e especificações formais.
 5.2 Listas encadeadas.
 5.3 Pilhas.
 5.4 Filas.
A linguagem
 O que é Python?: Python é uma linguagem de programação criada por
3 Guido van Rossum em 1991. Os objetivos do projeto da linguagem eram:
produtividade e legibilidade. Em outras palavras, Python é uma linguagem
que foi criada para produzir código bom e fácil de manter de maneira
rápida. Entre as características da linguagem que ressaltam esses objetivos
estão:
 baixo uso de caracteres especiais, o
que torna a linguagem muito
parecida com pseudo-código
executável;
 o uso de identação para marcar
blocos;
 quase nenhum uso de palavras-chave
voltadas para a compilação;
 coletor de lixo para gerenciar
automaticamente o uso da memória;
 etc.
A linguagem
4
Plataformas de Desenvolvimento
5 Liclipse:
 Download: https://www.liclipse.com/download.html
 Instalando: Material do Professor
 Criando Projeto: Material do Professor
Plataformas de Desenvolvimento
6

 Spyder + Anaconda: O Anaconda é uma iniciativa que tem como


objetivo agregar todas as ferramentas para análise de dados em um
único arquivo. Resumidamente, é um arquivo que irá instalar em seu
computador todas as bibliotecas e recursos necessários para você
começar seus projetos de Data Science e Machine Learning, como o
Python em si, Jupyter Notebook, a IDE Spyder, além de famosas
bibliotecas, como NumPy, Pandas, Scikit-learn, etc. Se interessou?
Aprenda abaixo como baixar e instalar o Anaconda.
Plataformas de Desenvolvimento
7

 Spyder + Anaconda:
 Porque usar Anaconda? Praticidade. Essa é a resposta. Imagine que,
para começar a utilizar as ferramentas para realizar seus projetos e
estudos de Data Science você precisasse baixar e instalar o Python e
cada uma de suas bibliotecas. A menos que você esteja procurando
configurar seu computador especificamente, ou instalar as bibliotecas
a medida que progride, utilizar o Anaconda é a forma mais rápida e
eficaz para dar o pontapé inicial.
 Spyder + Anaconda:
 O que Vem no Pacote?
Jupyter Notebook: Essa é uma das ferramentas mais poderosas
8
e importantes que vem com o Anaconda. O Jupyter Notebook é
uma aplicação de código aberto que permite você criar e
compartilhar documentos com código dinâmico, visualizações de
gráficos, limpeza de dados e até textos explicatórios. O melhor
de tudo é que ele tem suporte a elementos HTML, o que vai
deixar sua apresentação mais linda.
 Spyder + Anaconda:
 O que Vem no Pacote?
IDE Spyder: O Spyder é uma IDE — Integrated Development
9
Environment, ou Ambiente de Desenvolvimento Integrado, em
tradução livre — de Python perfeita para quem está começando na
área. Embora seja utilizado por muitos usuários experientes
também, o Spyder é uma IDE bem simples, mas que possui
vários elementos úteis para você, como visualização de variáveis,
debug, editor e executor.
 Spyder + Anaconda:
 O que Vem no Pacote?
PIP: O Pip é um instalador e gerenciador de pacotes no Python
10
que vai deixar sua vida mais fácil. Instalar uma nova biblioteca
com o Pip é tão simples quanto tocar o céu da boca com a língua.
Por exemplo, imagine que você quer instalar a biblioteca
Selenium em seu computador. Tudo que você precisa fazer é
digitar no prompt de commando
 pip + biblioteca + install, ou, no caso do
 exemplo: pip selenium install.
Plataformas de Desenvolvimento
11

https://www.spyder-ide.org/
Operadores
12

Operadores Aritiméticos Operadores de Comparação

Operadores Lógicos
Variáveis
13

 Variáveis são pequenos espaços de memória, utilizados para armazenar e


manipular dados. Em Python, os tipos de dados básicos são:
 inteiro (armazena números inteiros),
 float (armazena números em formato decimal), e
 string (armazena um conjunto de caracteres). Cada variável pode
armazenar apenas um tipo de dado a cada instante.

 Em Python, diferentemente de outras linguagens de programação, não é


preciso declarar de que tipo será cada variável no início do programa.
 Ex:
 Em C: int a, b, c, d, V[10];
 float media, me, nota, V[5];
Variáveis
14
 Nomes:
 Em Python, os nomes das variáveis devem ser iniciados com uma letra, mas
podem possuir outros tipos de caracteres, como números e símbolos. O
símbolo sublinha ( _ ) também é aceito no início de nomes de variáveis.
Variáveis
15

 Uma string é uma sequência de caracteres simples. Na linguagem Python, as


strings são utilizadas com aspas simples ('... ') ou aspas duplas ("...").
 Para exibir uma string, utiliza-se o comando print().

 Para concatenar strings, utiliza-se o operador +.


Variáveis
16

 Mais informações sobre encoding? Click Aqui ou Aqui


Variáveis
17
 Em Python, quando se faz uma atribuição de valor, automaticamente a
variável se torna do tipo do valor armazenado, como apresentado nos
exemplos a seguir:
 a = 10
 b = “Olá mundo”
 A atribuição de valor para uma variável pode ser feita utilizando o comando
input(), que solicita ao usuário o valor a ser atribuído à variável.
 Adciona-se o int (string) para converter para o tipo inteiro, ou float (string)
para converter para o tipo float.
Variáveis
18
 Tabela Verdade (Operadores Lógicos)
 No Python, também é possível especificar operadores lógicos, que são: not
(não), and (e) e or (ou), conhecidos também como negacão (∼ ou ¬),
conjuncão (∧) e disjuncão (∨), respectivamente.
 Sejam 𝑝𝑝 e 𝑞𝑞 proposicões quaisquer. Pode-se formar outras proposições
envolvendo 𝑝𝑝, 𝑞𝑞 e os operadores lógicos.
 Por exemplo: ¬𝑝𝑝 (not 𝑝𝑝), 𝑝𝑝 ∧ 𝑞𝑞 (𝑝𝑝 and 𝑞𝑞) e 𝑝𝑝 ∨ 𝑞𝑞 (𝑝𝑝 or 𝑞𝑞).
Variáveis
19
 Tabela Verdade (Operadores Lógicos)

 Mais ?
 Tópico 1.4 em: Aritmética com Python “Rogério da Silva Cavalcante”
Variáveis
20
 MDC (Máximo Divisor Comum): Dados dois naturais 𝑎𝑎 e 𝑏𝑏 ambos não
nulos, diremos que 𝑑𝑑 e um divisor comum de 𝑎𝑎 e 𝑏𝑏 se 𝑑𝑑|𝑎𝑎 e 𝑑𝑑|𝑏𝑏.
 Quando o mdc(𝑎𝑎,𝑏𝑏)=1, 𝑎𝑎 e 𝑏𝑏 são ditos primos entre si.

=
Funções Aritméticas
21
 Se criamos programas para esses tipos de tarefas, como estudar a
movimentação periódica ou simulação de circuitos elétricos, precisaremos de
funções trigonométrica assim como números complexos. Embora não
possamos usá-las diretamente, podemos fazê-los através de dois módulos
matemáticos. Eles são o math e cmat.

 Essas funções realizam várias operações aritiméticas, como calcular o piso,


teto ou valor absoluto de um número usando floor(x), ceil(x) e fabs(x),
respectivamente.
 A função ceil(x) retornará o maior número inteiro ou igual a x.
Similarmente, floor(x) retornará o menor número inteiro menor ou igual
a x. A função fabs(x) retona o valor absoluto de x.
Funções Aritméticas
22

 Ceil () & floor ():

 Factorial (x):
Funções Aritméticas
23
 GDC(x,y): Outra função útil no módulo math é gcd(x, y) que dá o Maior
Divisor Comun (GDC, no inglês) de dois números x e y.
 Quando x e y são diferentes de zero, essa função retorna o maior inteiro
positivo que divide ambos.
 Tambem podemos usá-la indiretamente para calcular o menor múltiplo
comum de dois números usando essa fórmula:
math.sqrt( x )

Funções Aritméticas
24
 sqrt(x,y): Devolve a raiz quadrada de um número.
 Sintaxe: math.sqrt( x )

Função chamando outra !!


Funções Aritméticas
25
 math.exp ( ): Este método é usado para calcular o poder de ey ou podemos
dizer exponencial de y. O valor de e é aproximadamente igual a 2,71828…
 Sintaxe: math.exp(y)
 Obs: também temos a constante constante τ = 6.283185

Quando usamos?
Funções Trigonométricas
26
 O que são: essas funções relacionam ângulos e lados de um triângulo. Elas
tem muitas aplicações, incluindo o estudo dos triângulos e a modelagem de
fenômenos periódicos como ondas de som e luz. Lembremo-nos que o
ângulo provido é em radiano.

 Podemos calcular sin(x), cos(x) e tan(x) diretamente usando esse módulo.


Contudo, não há fórmula direta para calcular cosec(x), sec(x) e cot(x), mas
seus valores são recíprocos aos retornos de sin(x), cos(x), tan(x),
respectivamente.
 Ao invés de calcular o valor das funções trigonométricas em um certo
ângulo, também podemos fazer o inverso e calcular o ângulo que gerou um
valor, usando asin(x), acos(x) e atan(x)
Funções Trigonométricas
27
Funções Trigonométricas
28
 Hipotenusa: ele diz que o quadrado da hipotenusa (o lado oposto ao ângulo
reto) é igual à soma dos quadrados dos outros dois lados.
 fhypot(a, b)

Significado
Variáveis
29
 Mantissa: Normalmente, toda calculadora científica possui a função que
permite calcular o valor do logaritmo decimal ou de base 10 de um número
n. A figura abaixo exibe a calculadora do Windows XP no modo científico,
com o resultado do logaritmo decimal de 127.
 Observe que estão assinalados a característica do logaritmo (a parte inteira),
a mantissa (a parte decimal) com 31 casas e a função log que efetua o
cálculo. O objetivo é obter esse resultado, com menos casas decimais, a
partir dos conceitos de característica e mantissa do logaritmo decimal.
Variáveis
30
 Mantissa:

 Vamos aprender mais?


 Quando usamos?

 Mais:
 https://www.colegioweb.com.br/funcao-logaritma/como-obter-a-mantissa.html
 https://www.blogviche.com.br/2006/06/25/caracteristica-mantissa-e-tabela-
logaritmica/comment-page-1/
Variáveis
31
 math.log(x[, base]): Log de X em uma determinada base;
 math.log2(x): Retorna o log de X especificamente na base 2. O
resultado é mais específico que se ultilizar a função anterior.
 math.log10(x): Retorna o log de X especificamente na base 10. O
resultado é mais específico também.
Exercícios
32

1. Faça um programa que possa devolver se um determinado número é primo


ou não. Resp: primo1.py / primo2.py (usando função)
2. Faça um programa que apresente quais são seus divisores e retorne se é
um número perfeito ou não.
3. Faça um programa para calcular o fatorial de um número sem a função
factorial (). Resp: Factorial2.py
If
33

 O IF é uma estrutura de condição que permite avaliar uma expressão


e, de acordo com seu resultado, executar uma determinada ação.
 Sintaxe if <condição> :
<Bloco de comandos >

 Como podemos notar, essa estrutura é formada pela


palavra reservada if, seguida por uma condição e por
dois pontos (:)
If
34
 Adicionalmente, se existir mais de uma condição alternativa que precisa ser
verificada, devemos utilizar o elif para avaliar as expressões intermediárias
antes de usar o else.
If
35
Exercícios
36

1. Um dos índices para mensurar nossas saúde é o IMC, o qual é calculado


usando Peso/Altura². Faça um programa que peça estes dados ao usuário
e retorne o IMC dele.
2. g.
3. g.
Laço - For
37
 O laço for nos permite percorrer os itens de uma coleção e, para cada um
deles, executar o bloco de código declarado no loop. Sua sintaxe é a
seguinte:
 Sintaxe
for variavel in lista
comandos

A variável definida na linha 3 é uma lista inicializada com uma sequência de valores do
tipo string. A instrução for percorre todos esses elementos, um por vez e, em cada caso,
atribui o valor do item à variável n, que é impressa em seguida. O resultado, então, é a
impressão de todos os nomes contidos na lista.
Laço - For
38

 fff
Laço - While
39
 O comando while, por sua vez, faz com que um conjunto de instruções seja
executado enquanto uma condição for atendida. Quando o resultado passa
a ser falso, a execução é interrompida, saindo do loop, passa para o
próximo bloco.
 Sintaxe
while condição:
comandos
Laço - While
40

 A linguagem Python define a instrução else como uma estrutura


dependente da instrução while cujo funcionamento novamente é
análogo ao estudado na instrução if. Desta forma, em Python, há 4
estruturas em que a instrução else pode ser utilizado para definirmos o
bloco de instrução a ser executando quando a condição verificada
deixar de ser verdadeiro.

 No caso, temos a instrução if, a instrução while a instrução for que será
estudado na sequência e a estrutura de tratamento de exceção try
except que estudaremos futuramente.
Laço - While
41
Laço – While & Break
42

A instrução break finaliza abruptamente a execução das estruturas de


repetição e assim, quando essa instrução for executada, o cursor de execução
irá interromper a execução das instruções definidas pela Estrutura de Repetição
e irá saltar para a linha seguinte após o Laço de Repetição.

 Em outras palavras, temos que quando a instrução break for utilizada,


o cursor de execução não irá passar por dentro do bloco definido
pela instrução else, até porque, a instrução break encerra,
imediatamente a execução da Estrutura de Repetição.
Exercícios
43

1. Escreva um programa para encontrar a soma S = 3 + 6 + 9 + …. + 333.


2. Escreva um programa que leia 10 notas e informe a média dos alunos.
3. Escreva um programa que leia um número de 1 a 10, e mostre a tabuada
desse número.
Biblioteca
44

As bibliotecas armazenam funções pré-definidas, que podem ser utilizados em


qualquer momento do programa. Em Python, muitas bibliotecas são instaladas
por padrão junto com o programa. Para usar uma biblioteca, deve-se utilizar o
comando import:

A tabela a seguir, mostra algumas das bibliotecas padrão de Python.


Biblioteca
Precisão com os números
Agora que podemos realizar várias operações em decimais, queremos
45
controlar a precisão ou arredondamento das operações. Isso pode ser feito
usando a função getcontext(). Essa função permite-nos tanto obter quando
configurar o valor da precisão e arredondamento, e outras coisas.
Tenhamos em mente que tanto arredondamento e precisão entram em jogo
durante operações aritiméticas e não apenas quando criamos decimais em si.
Biblioteca

46
Biblioteca
Precisão com os números
47
Fraction()
Fraction() # Calculos matemáticos
Biblioteca
Precisão com os números
48 round()
Fraction() # comparações
O Python possui uma função
chamada round(). Ela recebe dois
parâmetros. O primeiro é o número que você
quer arredondar, e o segundo, a quantidade
de casas.
Se o número flutuante estiver igual distância
entre o inteiro de cima e o inteiro de baixo,
ela arredonda pro número par mais próximo!

 E quisermos transformar este “.” em


“,” ?
Resp: Teríamos um problema pq aqui
temos um inteiro. Teremos que
transformar em String pra fazer isso.
Então como ? Veremos nas próximas
aulas.
Biblioteca
Outras funções
49
Sqrt() / prec() / log10()

Separamos funções
por vírgula;
String: Len ( )
50

 len() : Retorna o tamanho da string. Vem de Length =


Tamanho

 O vetor/Lista é uma estrutura de dados linear que necessita de somente um


índice para que seus elementos sejam endereçados.
String: Len ()
51
String: capitalize ( )
52

 capitalize ( ) : Retorna a string com a primeira letra maiúscula


String: capitalize ( ) & formate ()
53

 Formate ( ): ela permite, como o nome sugere, formatar textos. Então


eu posso colocar um texto em itálico? - Não estamos falando deste
tipo de formatação.
 Neste contexto a função format permite que você misture um texto
livre com variáveis ou valores, veja um exemplo!
 O que a função format faz é substituir no texto a formatação "{N}"
pelo parâmetro N. Onde N é a ordem dos parâmetros, começando
por zero (0). Veja outro exemplo:
String: capitalize ( ) & formate ()
54
String: lower()
55

 lower ( ): Retorna uma cópia da string trocando todas as letras para


minúsculo.
String: lower()
56

 lower ( ): Retorna uma cópia da string trocando todas as letras para


minúsculo.
 Obs (raw_input): no Python 3, a função raw_input( ) foi
simplesmente renomeada para input( ). Já no Python 2, em vez da
função input( ), utilizamos a função raw_input( ) para pegar a
entrada do usuário como string.
String: lower()
57

 Raw_input ( ): Se quisermos dar uma volta nessa incompatibilidade, é


possível checar a versão do Python através do atributo
version_info.major do módulo sys, o que nos dá a possibilidade de
criar uma condição if e ficar em cima do muro, como no exemplo:

import sys

if sys.version_info.major == 2:
usuario = raw_input(‘Insira seu login: ‘)
elif sys.version_info.major == 3:
usuario = input(‘Insira seu login: ‘)
String: lower( ) & capitalize ( )
58
String: upper() & swapcase()
59
 upper ( ): Retorna uma cópia da string trocando todas as letras para
maiúsculo.

 swapcase( ): Inverte o conteúdo da string (Minúsculo/Maiúsculo).


String: count()
60

 count ( ): Informa quantas vezes um caractere ou, uma sequência de


caracteres, aparece na string.
String: startswith()
61
 startswith (): é utilizada para verificar se a string é especificado sub-
string no início, se ele retorna True, caso contrário, False. Se o
argumento implorar e terminar o valor especificado, verifique dentro
da faixa especificada.
 Str: caracteres detectados.
 Strbeg: parâmetro opcional é usado para definir a posição inicial da
detecção string.
 Strend: parâmetro opcional é usado para definir a detecção posição final
string.

str.startswith(str, beg=0,end=len(string));
String: startswith()
62
 startswith ():
String: endswith()
63
 endswith(): é usado para determinar se uma seqüência termina com o
sufixo especificado, se terminam com o sufixo especificado retorna
True, caso contrário, False. Parâmetros opcionais "start" e "fim" para a
posição de início e fim da seqüência de pesquisa.
 Sufixo: O parâmetro pode ser uma string ou um elemento.
 Começar: a posição de início da cadeia.
 Final: posição final dos personagens.

str.endswith(suffix[, start[, end]])


String: endswith()
64
 endswith()
String: isalnum ( )
65
 isalnum ():Verifica se todos os caracteres são ou não alfanuméricos,
retornando:
 True: Se todos os caracteres na string são
 False: Se ao menos um caractere não for alfanumérico
String: isalpha ( )
66
 isalpha ( ): Verifica se a string possui apenas conteúdo alfabético,
devolvento:
 True: Se todos os caracteres na string são alfanuméricos (upper ou não)
 False: Se ao menos um caractere não for alfanumérico
String: islower( ) & isupper()
67
 islower( ): Verifica se todas as letras de uma string são minúsculas.
 Isupper (): Verifica se todas as letras de uma string são maiúsculas.
 As duas devolvem:
 True: Se todos os caracteres na string são minúsculos/ maiúsculos
 False: Se ao menos um caractere não for minúsculo/ maiúsculo
String: title( )
68
 title( ): Converte para maiúsculo todas as primeiras letras de cada
palavra da string.
String: split( )
69
 split( ): Transforma a string em uma lista, utilizando os espaços como
referência.
 separador (opcional): O é um delimitador. A string é dividida no
separador especificado. Se o separador não for especificado,
qualquer espaço em branco (espaço, nova linha, etc.) será um
separador.
 maxsplit (opcional): O maxsplit define o número máximo de divisões.
O valor padrão de maxsplit é -1, ou seja, nenhum limite no número de
divisões.
String: split( )
70
 split( ):
String: split( )
71
String: split( )
72

 STRFTIME: (Questão do slide anterior)


 %m: O mês representado por um número decimal (de 01 a 12)
 %Y: O ano representado por um número decimal incluindo o século
 %H: A hora representada por um número decimal usando um relógio
de 24 horas (de 00 a 23)
 %M: O minuto representado por um número decimal (de 00 a 59)
 Vários outros:
 http://man7.org/linux/man-pages/man3/strftime.3.html
String: split( )
73

Novidades
String: replace( )
74

 split( ):Substitui na string o trecho S1 pelo trecho S2.


 Sintaxe: str.replace(old, new [, count])
 Parâmetros:
 Old (antiga): é a string antiga a qual você quer substituir
 New (nova): é a nova string a qual será utilizada para substituir
 Count: é optional e diz respeito à quantidade de vezes que você quer
substituir a string antiga pela nova
String: replace( )
75

 split( ):Substitui na string o trecho S1 pelo trecho S2.


 Sintaxe: str.replace(old, new [, count])
 Parâmetros:
 Old (antiga): é a string antiga a qual você quer substituir
 New (nova): é a nova string a qual será utilizada para substituir
 Count: é optional e diz respeito à quantidade de vezes que você quer
substituir a string antiga pela nova
String: find( )
76

 find( ): X=
String: ljust()
 ljust ( ): Ajusta a string para um tamanho mínimo, acrescentando
77 espaços à direita se necessário.

 Sintaxe: str.ljust(width[, fillchar])


 Parâmetros:
 Width: Este é o tamanho da string no total após o preenchimento. Ele
considera o tamnho atual d string + preenchimento.
 Fillchar: Esse é o caractere de preenchimento, o padrão é um espaço.
String: rjust()
 rjust( ):Ajusta a string para um tamanho mínimo, acrescentando espaços à
78 direita se necessário.

 Sintaxe: str.rjust(width[, fillchar])


 Parâmetros:
 Width: Este é o tamanho da string no total após o preenchimento. Ele
considera o tamnho atual d string + preenchimento.
 Fillchar: Esse é o caractere de preenchimento, o padrão é um espaço.
String: center( )
 center( ):Ajusta a string para um tamanho mínimo, acrescentando espaços à
79
direita se necessário.
 Sintaxe: center( len, fillchr)
 Parâmetros:
 len: Este é o tamanho da string no total após o preenchimento. Ele
considera o tamnho atual da string + preenchimento.
 Fillchar: Esse é o caractere de preenchimento, o padrão é um espaço.
String: lstrip() rstrip() strip ()
 lstrip( ): Remove todos os espaços em branco do lado esquerdo da
80 string.
 Rsstrip( ): Remove todos os espaços em branco do lado direito da
string.
 Strip( ): Remove todos os espaços em branco da string.
 Sintaxe: str.lstrip([chars])
 Parâmetros:
 Chars: : Você pode fornecer os caracteres que devem ser aparados.
String: lstrip() rstrip() strip ()
81
Exercícios
82

1. No tópico “Bibliotecas” trabalhamos com números seguidos de “.” (Ex:


1.45). Faça um programa que receba um número, arredonde e troque “.”
por “,”: Professor “FormatNumeros1.py”
2. ;.
Trabalhando com Números
83
 Questão base: FormatNumeros1.py
 O Python nos oferece um módulo inteiro dedicado a serviços de
internacionalização, permitindo que nós, programadores, consigamos lidar
facilmente com possíveis problemas culturais em uma aplicação – o módulo
locale.
 A partir desse módulo temos diversas funções que podem nos auxiliar na
conversão de formatações de certas especificidades, como tempo e
dinheiro.
 No nosso caso, podemos usar a função locale.currency(), passando o nosso
valor que queremos formatar como parâmetro:
 Sintaxe: currency(val, symbol=True, grouping=False,
international=False)
Trabalhando com Números
84

 O C é o locale mais simples, sem as definições específicas para realizarmos


a operação que queremos.
 Precisamos, então, definir um locale em nosso programa, para passar por
cima do padrão. Para isso, usaremos a função locale.setlocale(), que
necessita de dois argumentos:
Trabalhando com Números
85

 Função locale.setlocale(): Precisa dos seguintes argumentos


 category: A categoria que define o tipo de operação que será alterado
para o locale especificado;
 locale: Uma string que representa o locale que queremos.
 Sintaxe: setlocale(category, locale)

 Vamos dar uma olhada nas possibilidades de uso desses dois parâmetros.
Em primeiro lugar, as categorias permitidas são:
 locale.LC_MONETARY: Formatação de valores monetários
Ex: locale.setlocale(locale. LC_MONETARY, “depende do sistema”)

Importante: No caso do parâmetro locale, as strings aceitas dependem do sistema em que o código está
rodando. Por exemplo, em sistemas baseados em UNIX, podemos ver uma lista dos locales registrados em
nossa máquina com o seguinte comando no Terminal: locale -a
Trabalhando com Números
86

Vimos esta
Trabalhando com Números
87

 Notemos que o programa anterior, se colocarmos o valor 150000, ele


devolverá R$ 150000,00. E se quisermos R$ 150.000,00
 Também temos o parâmetro grouping, o qual espera receber um Boolean
(= true/felse), que, por padrão, é False. Para agruparmos, então, basta
indicar como True:
 Sintaxe: currency(val, symbol=True, grouping=False,
international=False)
 Ainda podemos definir
 Symbol: que define se queremos o símbolo da moeda (como por exemplo
o $) e é True por padrão;
 International: que define se queremos usar o símbolo internacional da
moeda (como por exemplo USD) e é por padrão False.
Trabalhando com Números
88
Coleções de Informações
89
 Em Python temos os seguintes conjuntos de informações:
 Lista (List): é uma coleção ordenada e modificável. Permite membros
duplicados.
 Tuplas (Tuple): é uma coleção que é ordenada e imutável. Permite
membros duplicados.
 Conjunto (Set): é uma coleção desordenada e não indexada. Nenhum
membro duplicado.
 Dictionary (Dicionário): é uma coleção que é desordenada, alterável e
indexada. Nenhum membro duplicado.
String: Fatiamento
90

 Fatiamento de Strings): é uma ferramenta usada para extrair apenas


uma parte dos elementos de uma string.
 Sintaxe: Nome_String [Limite_Inferior : Limite_Superior]
Listas: O que é?
91

 Lista é um conjunto sequencial de valores, onde cada valor é


identificado através de um índice. O primeiro valor tem índice 0. Uma
lista em Python é declarada da seguinte forma:
 Nome_Lista = [ valor1, valor2, ..., valorN]
 Uma lista pode ter valores de qualquer tipo, incluindo outras listas.
Listas: Modificando
92

 Lista

Usando um Loop (Um for) para passar por todos os elementos e imprimir.
Claro que podemos fazer outro elementos
Listas: Imprimindo
93
 Lista
 Obs: No programa abaixo é impresso até uma posição antes (ou uma
depois) do segundo número (X:Y)
Listas: Verificando elemento
94

 Aqui vamos ver um exemplo de um programa que verifica se um


determinado elemento existe em uma lista.
Funções para Manipular Listas:
95
Funções para Manipular Listas: len ()
96

 Len (): retorna o tamanho da lista.


Listas: Min () e Max ()
97
 Min ( ): retorna o menor valor de uma lista

 Max ( ): retorna o maior valor de uma lista

 Mais quem é maior?


 Trabalhando com números: não há novidades;

 Trabalhando com strings: Ele considerará a maior palavra de acordo com o


avançar das letras, ou seja: Palavr que começar com ‘F’ é maior que se iniciar
com ‘C’;

Obs: A comparação é feita letra por letra.


Listas: Min () e Max ()
98
Funções para Manipular Listas:
99
Append() ; extend () ; insert ()
 lista
Listas: Deletando elemento / del ( )
100

 Lista
 Deletando por posições
Listas: Deletando elemento
101

 Lista
 Deletando por elementos

 Pop(): Remove e mostra o ultimo


elemento caso o index não seja
utilizado. Uso? Podemos querer
saber qual foi o ultimo elemento
adicionado.

 Clear (): apaga toda a lista


Listas: IN ( )
102
 IN ( ): O operador in verifica se o operando a sua esquerda, está
contido na lista a sua direita, da mesma forma que o operador not in
que verifica o contrário.
 Estes, são 2 operadores nativo para verificar se um determinado
objeto está contido numa lista. A palavra in, do Inglês, significa,
"contido em".
Listas: IN ( )
103
Listas: IN ( )
a104= 10
b = 25
c = 66

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


if(x == a or x == b or x == c):
print("Está contido") a = 10
b = 25
c = 66

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


# if(x == a or x == b or x == c):
if(x in [a,b,c]):
print("Está contido.")
else:
print("Não está contido.")
Listas: IN ( )
105
TUPLAS
106
 Tuplas: assim como a Lista, é um conjunto sequencial de valores, onde
cada valor é identificado através de um índice. A principal diferença
entre elas é que as tuplas são imutáveis, ou seja, seus elementos não
podem ser alterados.
 Dentre as utilidades das tuplas, destacam-se as operações de
empacotamento e desempacotamento de valores.
 Uma tupla em Python é declarada da seguinte forma:
sitaxe: tupla = (a, b, …, z)

 Para criar uma tupla com um único elemento, é preciso incluir uma
vírgula final:
t1 = 'a',
Print t1
TUPLAS
107

 Um único valor entre parênteses não é uma tupla:


t2 = ('aʼ)
 Outra forma de criar uma tupla é com a função integrada tuple. Sem
argumentos, cria uma tupla vazia:
t = tuple()
Print t
 Se os argumentos forem uma sequência (string, lista ou tupla), o
resultado é uma tupla com os elementos da sequência:
t = tuple('lupins')
Print t # aparecerá assim ('l', 'u', 'p', 'i', 'n', 'sʼ)
TUPLAS
108

 A maior parte dos operadores de lista também funciona em tuplas. O


operador de colchetes indexa um elemento:
t = ('a', 'b', 'c', 'd', 'e')
print t[0] # Ficaria assim 'aʼ
 E o operador de fatia seleciona vários elementos:
t = tuple()
print t[1:3] # apareceria assim ('b', 'cʼ)
TUPLAS
109

 Entretanto, se tentar alterar um dos elementos da tupla, vai receber


um erro:
t[0] = 'A’ # aparceria TypeError: object doesn't support item
assignment

 Como tuplas são imutáveis, você não pode alterar os elementos, mas
pode substituir uma tupla por outra:
TUPLAS & zip ()
110

 Zip (): é
uma função integrada que recebe duas ou mais
sequências e devolve uma lista de tuplas onde cada tupla
contém um elemento de cada sequência
O resultado é um objeto zip que sabe como percorrer os
pares. O uso mais comum de zip é em um loop for:
Um objeto zip é um tipo de iterador,
ou seja, qualquer objeto que
percorre ou itera sobre uma
sequência. Iteradores são
semelhantes a listas em alguns
aspectos, mas, ao contrário de listas,
TUPLAS & zip ()
111

Um objeto zip é um tipo de iterador, ou seja, qualquer


objeto que percorre ou itera sobre uma sequência.
Iteradores são semelhantes a listas em alguns aspectos,
mas, ao contrário de listas, não é possível usar um índice
para selecionar um elemento de um iterador.
TUPLAS
112

 Atribuindo Valores
 É possível atribuirmos valores diferentes a diferentes variáveis, as quais se
comportem como uma tupla.
 A única obrigação é que a quantidade de variáveis que tenhamos de uma
lado deve ser igual à quantidade de resultados do outro.
 A função integrada divmod toma dois argumentos e devolve uma
tupla de dois valores: o quociente e o resto. Você pode guardar o
resultado como uma tupla:
TUPLAS: atribuindo nomes
113

 Namedtuple(): Já que as tuplas se baseiam na estrutura dos nosso


dados, seria interessante poder nomeá-los. Pensando nisso, no Python,
já existe uma maneira para implementarmos nossas tuplas com campos
nomeados – com a função namedtuple(), localizada no módulo
collections da biblioteca padrão da linguagem.
 Com ela, podemos dar um nome para cada elemento da nossa tupla.
 Sintaxe: collections.namedtuple (typename, field_names)
 Typename: nome da namedtuple que vamos criar
 Field_names: nome dos campos (cadeia de caracteres, sendo cada
campo separado por vírgula)
TUPLAS: atribuindo nomes
114

 Namedtuple():
TUPLAS: atribuindo nomes
115

 Namedtuple():
TUPLAS: atribuindo nomes
116

 Namedtuple():
Conjunto
117
 Conjunto: Um conjunto (set) é um tipo de dados de coleção, suportando o
operador de associação in, a função len() e é iterável. Conjuntos não
possuem noção de ordem por isso seus elementos não podem ser acessados
com colchetes [ ] nem podem ser fatiados.
 Os conjuntos (set) não aceitam valores repetidos ao tentar criar um conjunto
com valores repetidos eles serão descartados só sobrando um valor do
mesmo.
 Para criar um conjunto basta colocar os valores entre chaves {} :
c = {‘Paulo’, ‘Claudio’, ‘Marcio’, ‘Erica’}
 Podemos ainda criar conjuntos a partir de uma lista ou tupla com set, uma
grande vantagem é por exemplo limpar os dados repetidos em uma lista:
li='Maçã','Laranja','Uva','Abacaxi','Maçã',
'Abacate', 'Laranja'] >>>
c = set(li)
Dicionários
118
 Dicionários: Dicionário é um conjunto de valores, onde cada valor é
associado a uma chave de acesso. Um dicionário em Python é
declarado da seguinte forma:
Nome_dicionario = { chave1 : valor1,
chave2 : valor2, chave3 : valor3,
......
chaveN : valorN}
 Os valores do dicionário não possuem ordem, por isso a ordem de
impressão dos valores não é sempre a mesma.
Dicionários (operações)
119
 Del (): Exclui um item in- formando a chave.
 In (): Verificar se uma chave existe no dicionário.
 Keys (): Obtém as chaves de um dicionário.
 values (): Obtém os valores de um dicionário.
Dicionários (operações)
120

 Hum… uma exceção de tipo KeyError indicando que a chave 'João' não foi
encontrada. Mas é um pouco estranho imprimir toda essa mensagem para o
usuário, não é? Pode ser confuso… Será que não podemos substituir isso?
 Os dicionários possuem um método específico para busca de valores, o get(),
no qual podemos passar como parâmetros a chave que queremos e um valor
padrão para retornar caso essa chave não seja encontrada:
Dicionários (operações)
121

 Deletando
Dicionários (operações)
122

 Caso queiramos juntar dois dicionários em um só?


 Para isso, temos um método próprio – o update(). Podemos substituir o loop
pela chamada do método:
Dicionários (operações)
123

 Pesquisei e descobri que os números de celular precisam ter o prefixo 9 hoje


em dia, e eu tinha esquecido de atualizar isso! Mas e agora? Será que vou
precisar usar o método update() para mudar todos os valores?
 O ideal seria ter uma lógica mais objetiva, que simplesmente copiasse todo
o dicionário de contatos, mas adicionasse um 9 a cada valor. A princípio,
uma ideia é fazer isso com um for, o que deve funcionar, mas será que não
tem forma mais simples?
Exercícios
124

1. Dada a tabela a seguir, crie um dicionário que a represente:


Lanchonete
Produtos Preços R$
Salgado R$ 4.50
Lanche R$ 6.50
Suco R$ 3.00
Refrigerante R$ 3.50
Doce R$ 1.00

2. Considere um dicionário com 5 nomes de alunos e suas notas. Escreva um


programa que calcule a média dessas notas.

Você também pode gostar