Professional Documents
Culture Documents
2016/2
Aula 05 Vetores e Strings
Atualizao: 10/01/2017
Introduo a vetores
Inicializao de vetores
Introduo a strings
Introduo a vetores
Inicializao de vetores
Introduo a strings
Alguns problemas
manipulam uma grande
quantidade de valores:
Folha de pagamento
Medies ao longo do
tempo
Um vetor um conjunto
de dados de mesmo tipo
organizados em ordem
sequencial.
Vetores
Vetores so posies da memria:
identificadas por um nico nome
individualizadas por ndices
com contedo de um mesmo tipo (int, floats)
Exemplo:
6
ndices referenciam elementos do
vetor
Cada elemento de um vetor pode ser individualmente
manipulado por meio da sua posio.
Imprime todos os
print(notas) elementos do vetor
Imprime apenas o 1
print(notas[0]) elemento do vetor
7
ndice elemento
ndice (i):
uma referncia
Elemento (vet[i]):
o valor guardado em
memria
ndice
0 1 2 3
81 42 23 64
Valor do elemento
ndices
:: Limites
ndices fora dos limites
causam erro. from numpy import *
vet = array([3,6,9,12,15])
ndices podem ser
# Primeiro elemento
negativos, permitindo o print(vet[0])
# Ultimo elemento
acesso na ordem inversa. print(vet[-1])
# ERRO
0 1 2 3 4 print(vet[5])
3 6 9 12 15 3
15
-5 -4 -3 -2 -1 IndexError: index 5 is
out of bounds for axis
ndices 0 with size 5
ndice 5 est fora dos limites
Contedo Vetores e Strings
Introduo a vetores
Inicializao de vetores
Introduo a strings
nome array( )
Funo que Vrgulas separam
cria o vetor um elemento de
outro no conjunto
[11 22 33]
[]
Iniciando vetor via teclado
v = array(eval(input("v:
")))
A funo eval trata
Ser a forma mais colchetes e vrgulas;
comum de entrar com print(v) As funes int e float, no.
casos de correo no
No input, separe os
CodeBench. elementos por vrgula
v: [11,22,33]
[11 22 33]
Na sada, o Python
remove as vrgulas
Iniciando vetor
:: zeros ou uns
Quantidade de
elementos no vetor
[0 0 0 0 0] [1 1 1 1]
Iniciando vetor
:: sequncia de inteiros
A funo arange(N) gera
um vetor com N from numpy import *
elementos inteiros.
v = arange(5)
Os elementos vo de
zero a N-1. print(v)
[0 1 2 3 4]
Contedo Vetores e Strings
Introduo a vetores
Inicializao de vetores
Introduo a strings
Alguns problemas
Operaes com Vetores
:: Mnimo, Mximo, Tamanho, Soma
18
Problema 1
Projetar algoritmo
Quantos votos teve o candidato mais votado?
max(votos)
Qual o total de votantes?
sum(votos)
Quantos candidatos participaram da eleio?
size(votos)
Qual o percentual de votos recebidos?
votos/sum(votos) * 100
Problema 1
Codificar em Python
from numpy import *
# Leitura de dados
votos = array(eval(input("Qtde de votos: ")))
No se
esquea de # Resultados
mandar print(max(votos))
imprimir
print(sum(votos))
print(size(votos))
print(votos/sum(votos) * 100)
Problema 2
:: Qual o nome do vencedor?
Leia dois vetores:
Nomes de candidatos
Quantidade de votos RESULTADOS
Determine:
Qual o nome do
candidato mais
votado?
21
Problema 2
Projetar algoritmo (1/2)
Vetores de entrada:
nomes Vetor com os nomes dos candidatos
votos Vetor com os votos recebidos
0 1 2 3 4 5
81 42 23 64 95 67
Contador:
Valor inicial: zero (primeiro ndice do vetor)
Condio de parada: chegar ao final do vetor ou
encontrar o mximo
Incremento: 1
Problema 2
Codificar em Python
from numpy import *
# Leitura de dados
nomes = array(eval(input("Nomes dos candidatos: ")))
votos = array(eval(input("Qtde de votos: ")))
# Primeiro indice
Quando a condio for violada, ento o
i = 0 valor mximo foi encontrado
print(nomes[i])
Selecionando partes de um vetor
Cdigo Objetivo
Seleciona o elemento de ndice i do vetor
vec[i]
vec
Seleciona os elementos do vetor vec cujos
vec[i:j]
ndices esto compreendidos entre i e j-1
Seleciona os elementos do vetor vec do
vec[i:]
ndice i at o final do vetor
Seleciona os elementos do vetor vec desde o
vec[:i]
primeiro at o de ndice i-1
Problema 3
:: Votos vlidos
Leia um vetor contendo a
quantidade de votos, com trs
posies a mais:
Votos nulos
Votos brancos
N de eleitores ausentes
Determine:
Quantos eleitores
presentes?
Quantos votos vlidos?
Qual o percentual de votos
vlidos do vencedor?
26
Problema 3
Projetar algoritmo
Eleitores presentes?
Seleciona at o elemento
sum(votos[:-1]) anterior ao ltimo (-1)
Votos vlidos?
max(votos[:-3])/sum(votos[:-3]) * 100
Evita erros devido a uma situao invlida ser mais numerosa
Problema 3
Codificar em Python
from numpy import *
# Leitura de dados
votos = array(eval(input("Qtde de votos: ")))
# Resultados
print(sum(votos[:-1]))
print(sum(votos[:-3]))
print(max(votos[:-3])/sum(votos[:-3])) * 100
Problema 4
:: Problema da Busca
Escreva um programa
que leia:
Um vetor v
Um valor x
v[i] == x
i >= size(v)
Problema 4
Codificar em Python
from numpy import *
# Leitura de dados
v = array(eval(input("Vetor: ")))
x = int(input("Valor a ser encontrado: "))
1 1 + 2 2 + 3 3 +
=
1 + 2 + 3 +
i = 0 # Variavel contadora
numerador = 0 # Acumula produto notas * creditos
denominador = 0 # Acumula os creditos
i = 0 # Variavel contadora
danos = 0 # Acumula o dano total
print(danos)
Contedo Vetores e Strings
Introduo a vetores
Inicializao de vetores
Introduo a strings
m o
A n
o h o
t
P y
Acesso aos caracteres
Cada caractere
indexado pela sua s = "Python"
posio, semelhante a # Primeiro caractere
um vetor. print(s[0])
# Ultimo caractere
print(s[5])
print(s[-1])
0 1 2 3 4 5 # ERRO
print(s[6])
P y t h o n
-5 -4 -3 -2 -1 P
-6 n
n
No use str como identificador,
TypeError: 'type' object
pois nome de funo is not subscriptable
Erro relativo aos ndices
Seleo de partes da string
Alm de caracteres
individuais, voc print(s[0:2])
tambm pode selecionar
substrings, ou seja, print(s[:2])
fatias da string. print(s[3:6])
0 1 2 3 4 5 print(s[2:])
P y t h o n Py
-6 -5 -4 -3 -2 -1 Py
hon
thon
String vetor de caracteres
print(vet)
print(vet)
s = "Tolkien" s = "Tolkien"
Rolkien Rolkien
Contedo Vetores e Strings
Introduo a vetores
Inicializao de vetores
Introduo a strings
s1 + s2 Concatena as strings s1 e s2
float() int()
str() str()
Problema 7
:: Copiando o DNA
O DNA formado por uma
longa sequncia de bases
nitrogenadas, de quatro tipos:
Adenina (A), Citosina (C),
Guanina (G), Timina (T).
Durante a duplicao de uma
molcula de DNA:
A se une com T
C se une com G
Vice-versa
Leia uma sequncia de DNA e
determine a sequncia-cpia
correspondente.
49
Problema 7
Projetar algoritmo
Vetores so criados com tamanho fixo, que no pode ser
mudado ao longo do programa.
Strings podem mudar de tamanho ao longo do programa.
Basta usar a concatenao (+)
0 1 2 3 4 5
G A T A C A
C T A T G T
Problema 7
Script em Python
dna = input("Sequencia DNA: ").upper()
print(copia)
Problema 8
:: De trs pra frente
Elabore um programa
que leia uma string.
Como sada, imprima a
string na ordem inversa.
52
Problema 8
Projetar algoritmo
0 1 2 3 4 5 6 7 8 9 10 11
A d a L o v e l a c e
-12 -11 -12 -9 -8 -7 -6 -5 -4 -3 -2 -1
len(s) ...
i
Contador (i):
Valor inicial: -1 (ltimo ndice da string)
Valor final: -len(s)
Incremento: -1 (decremento)
Problema 8
Script em Python
s = input("Digite uma string: ")
# String vazia
inv = ""
55
Problema 9
Projetar algoritmo fatiando a string
0 1 2 3 4 5 6 7 8 9
d d / m m / a a a a
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1
'JanFevMarAbrMaiJunJulAgoSetOutNovDez'
fim = ini + 3
ini = 3 * (mes 1)
Problema 9
Script em Python
nome_meses = 'JanFevMarAbrMaiJunJulAgoSetOutNovDez'
# Indices do fatiamento
ini = 3 * (mes - 1)
fim = ini + 3
print(nova_data)
Problema 9
Testes
60
Problema 10
Projetar algoritmo
0 1 2 3 4 5 ...
D A E A C B ...
D B E D C B ...
Dois contadores: