Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução à Computação com Python Aula 05 – Vetores e Strings CNCCC 2016 Conteúdo – Vetores Introdução a vetores Inicialização de vetores Operações com vetores Gráficos 2 Conteúdo – Strings Introdução a strings Operações com strings Funções “is” para strings Conversão de strings para números Alguns problemas Conteúdo – Vetores Introdução a vetores Inicialização de vetores Operações com vetores Gráficos 4 Vetores Em muitos programas, precisamos manipular um grande número de valores: Folha de pagamento Medições ao longo do tempo Um vetor é um conjunto de dados organizados em ordem sequencial. 5 Vetores Vetores são posições da memória: identificadas por um único nome individualizadas por índices com conteúdo de um mesmo tipo 6.1 2.3 9.4 5.1 8.9 9.8 10 7.0 6.3 4.4 0 1 2 3 4 5 6 7 8 9 Notas: Posição: 6 Vetores em Python Para a manipulação de vetores, utilizar o módulo (biblioteca) numpy from numpy import * NumPy é o pacote essencial para computação científica com Python. Para maiores informações: www.numpy.org Para funções de criação e manipulação de vetores: docs.scipy.org/doc/numpy/reference/ 7 vetor = linspace(10, 19, 10, dtype=int) Índices: 10 0 11 1 12 2 13 3 14 4 ... ... 19 9 vetor Índice do primeiro elemento: 0 Índice do último elemento: 9 Quantidade de elementos: 10 Vetores em Python 8 Retorna um vetor com 10 valores igualmente espaçados dentro de um determinado intervalo. Índices fora dos limites causam erro. Índices podem ser negativos, permitindo o acesso na ordem inversa. Vetores em Python vetor = array([3, 6, 9, 12, 15, 18]) vetor[0] # O primeiro elemento da lista: 3 vetor[-1] # O ultimo elemento da lista: 18 vetor[6] # ERRO 3 6 9 12 15 18 0 1 2 3 4 5 vetor -6 -5 -4 -3 -2 -1 9 Vetores em Python :: Atribuição de valores Exemplos: <nome_vetor> = array([<valor1>, <valor2>, <valor3>,...]) array1 = array([1, 2 , 3 , 4]) array2 = array([1, 2, 3, 4]) notas = array([10, 9.5, 5, 7.75, 10]) vazio = array([]) 10 Operações com Vetores :: Selecionando parte de um vetor Código Objetivo vec[i] Seleciona o elemento de índice i do vetor vec vec[i:j] Seleciona os elementos do vetor vec cujos índices estão compreendidos entre i e j-1 vec[i:] Seleciona os elementos do vetor vec do índice i até o final do vetor. 11 Conteúdo – Vetores Introdução a vetores Inicialização de vetores Operações com vetores Gráficos 12 Vetores em Python :: Inicialização de valores Podemos iniciar um vetor apenas com 0s: Ou apenas com 1s: >> vet1 = zeros(5, dtype=int) >> vet1 array([0, 0, 0, 0, 0]) >> vet2 = ones(5, dtype=int) >> vet2 array([1, 1, 1, 1, 1]) 13 Vetores em Python :: Inicialização de valores Colocar os números de 10 a 15 em um vetor: Colocar os números de 5 a 1 em um vetor: Cinco valores linearmente espaçados entre 3 e 15: vetor = linspace(5, 1, 5, dtype=int) vetor = linspace(10, 15, 6, dtype=int) vetor = linspace(3, 15, 5, dtype=int) 14 Os elementos de um vetor podem ser lidos a partir de uma das seguintes fontes: Corpo do script Teclado Arquivo (mais tarde) Vetores em Python :: Inicialização de valores v = array(eval(input("Informe o vetor: "))) v = [11, 22, 33, 44, 55] Informe os elementos do vetor separando-os por vírgula 15 Elementos do vetor devem ser separados por vírgula Conteúdo – Vetores Introdução a vetores Inicialização de vetores Operações com vetores Gráficos 16 Operações com Vetores :: Concatenação Para concatenar (unir) dois ou mais vetores em um só, relacione-os entre colchetes: Também funciona com números: <novo_vetor> = [vetor1, vetor2, vetor3,...] <novo_vetor> = [vetor1, 4, -7, 0,...] 17 Operações com Vetores :: Mínimo, Máximo, Tamanho, Soma Encontrar o menor elemento de um vetor: Encontrar o maior elemento de um vetor: Encontrar o tamanho de um vetor: Encontrar a soma dos elementos de um vetor: >> min(vetor) >> max(vetor) >> size(vetor) >> sum(vetor) 18 Operações com Vetores :: Busca Problema de busca Dado um vetor v, e um valor x, encontrar um índice k tal que v[k] == x. 0 n-1 456 222 555 111 333 111 ... 777 x v i = 0 while (i < size(v)): if (v[i] == x): n = i i = i + 1 19 Operações com Vetores :: Busca from numpy import * # Leitura do vetor v = array(eval(input("Informe o vetor: "))) # Leitura do valor a ser encontrado x = int(input("Informe o valor a ser encontrado: ")) i = 0 n = -1 # indica que elemento não foi encontrado while (i < size(v)): if (v[i] == x): n = i i = i + 1 if (n == -1): print("O valor não foi encontrado no vetor") else: print("O valor foi encontrado na posicao", n) 20 Operações com Vetores :: Média Calcular a média dos elementos de um vetor. 8 4 2 6 (0) (1) (2) (3) soma = 0 n = 0 8 4 2 6 (0) (1) (2) (3) soma = 8 n = 1 8 4 2 6 (0) (1) (2) (3) soma = 12 n = 2 8 4 2 6 (0) (1) (2) (3) soma = 20 n = 4 ... media = soma/n 21 Operações com Vetores :: Média from numpy import * # Leitura do vetor v = array(eval(input("Informe o vetor: "))) i = 0 # variavel contadora soma = 0 # variavel acumuladora while (i < size(v)): soma = soma + v[i] i = i + 1 print("A media é:", round(soma/size(v)),2) 22 Exemplos :: Média ponderada Calcule o coeficiente de rendimento de um aluno de graduação, que é baseado na média ponderada entre as notas de cada disciplina e seus respectivos números de créditos. Escreva um script que leia as notas e os créditos e armazene em vetores distintos e, ao final, exiba o coeficiente do aluno na tela. Exemplo Definir entradas e saídas Grandeza Unidade de medida Faixa de valores Entradas Saídas Grandeza Unidade de medida Faixa de valores Entradas Notas --- [0, 10] Créditos --- [0, 10] Saídas Coeficiente --- [0, 10] Exemplo Projetar algoritmo Leitura dos vetores Notas e Creditos Qual a condição para repetição? Enquanto o contador não atingir o número de notas 0 1 2 3 4 5 6 7 8 9 6.1 2.3 9.4 5.1 8.9 9.8 10 7.0 6.3 4.4Notas Posição: 4 3 4 4 4 3 6 2 6 4Creditos Coeficiente: 7.09 Problema 3 Codificar em Python from numpy import * # Leitura do vetor notas n = array(eval(input("Informe as notas: "))) # Leitura do vetor créditos c = array(eval(input("Informe os créditos: "))) i = 0 # Variavel contadora soma_acum = 0 # Variavel acumuladora soma das notas soma_c = 0 # Variavel acumuladora dos créditos while (i < size(n)): soma_acum = soma_acum + n[i] * c[i] soma_c = soma_c + c[i] i = i + 1 coeficiente = soma_acum/soma_c print(round(coeficiente,2)) Conteúdo – Vetores Introdução a vetores Inicialização de vetores Operações com vetores Gráficos 27 Gráficos em Python Para apresentar dados de forma gráfica, utilizar o framework matplotlib.pyplot from matplotlib.pyplot import * matplotlib.pyplot é uma coleção de funções que fazem o matplotlib funcionar como o MATLAB Para maiores informações: matplotlib.org/api/pyplot_api.html matplotlib.org/users/pyplot_tutorial.html 28 Gráficos em Python Desenhar o gráfico da função y = x2 – 10x + 15 para valores de x entre 0 e 10. 1. Definir um polinômio a partir do vetor de coeficientes. 2. Criar um vetor de valores de x entre 0 e 10. 3. Calcular o valor do polinômio em cadaponto x. 4. Desenhar o gráfico. 29 Gráficos em Python Função Objetivo poly1d(vet) Define um polinômio a partir de um vetor vet contendo seus coeficientes roots(p) Determina as raízes de um polinômio p. A saída desta função também é um vetor. polyval(p, x) Calcula o valor de um polinômio p no ponto x. polyder(p) Determina a 1ª derivada de um polinômio p. 30 Gráficos em Python from numpy import * from matplotlib.pyplot import * # Cria polinomio a partir do vetor de coeficientes poli = poly1d([1,-10,15]) # Cria um vetor de 10 valores para x x = linspace(0, 10, 10) # Calcula o valor do polinômio para o vetor x y = polyval(poli, x) # Abre uma figura figure() 31 Gráficos em Python # Plota o polinomio V(x) em funcao de x plot(x, y) # Especifica os limites do eixo Y exibidos na tela ylim(-10,15) # Poe um nome no eixo X xlabel("x", fontsize='large') # Poe um nome no eixo Y ylabel("y", fontsize='large') # Exibe linhas de grade grid(True) 32 Gráficos em Python 33 Gráficos em Python Gráficos podem ser salvos como figura Podem ser adicionados: Linhas de grade Título do gráfico Rótulos para os eixos etc. title("Plot de x^2 - 10*x + 15") xlabel("eixo x") ylabel("eixo y") grid(True) savefig("polinomio.png") 34 Conteúdo – Strings Introdução a strings Operações com strings Funções “is” para strings Conversão de strings para números Alguns problemas Strings de caracteres Uma string (= corda) é uma cadeia de caracteres. Uma cadeia de caracteres é um sequência de símbolos, tais como letras, números, sinais de pontuação, etc., que formam textos em geral. A m o o P y t h o n Strings de caracteres O início e o fim de uma string são indicados por aspas duplas (") ou aspas simples ('), de modo a separar o conteúdo da string do restante do texto do programa. Você pode usar espaços em uma string de caracteres. texto = "Amo o Python" texto = 'Amo o Python' Strings de caracteres Se você quiser incluir o símbolo de aspas em uma string, use a expressão \". >> texto2 = "Amo o \"Python\"." >> texto2 Amo o "Python". Strings de caracteres Os caracteres de uma string são codificados no padrão ASCII. Cada caractere do teclado é representado por um código numérico. Mostra código ASCII do caractere informadoord() Mostra caractere ASCII correspondente ao código informado chr() Tabela ASCII 0 1 2 3 4 5 6 7 8 9 0 nul soh stx etx eot enq ack bel bs ht 1 nl vt ff cr so si dle dc1 dc2 dc3 2 dc4 nak syn etb cam em sub esc fs gs 3 rs us sp ! " # $ % & ´ 4 ( ) * + , - . / 0 1 5 2 3 4 5 6 7 8 9 : ; 6 < = > ? @ A B C D E 7 F G H I J K L M N O 8 P Q R S T U V W X Y 9 Z [ \ ] ^ _ ` a b c 10 d e f g h i j k l m 11 n o p q r s t u v w 12 x y z { | } ~ del Acesso a caracteres Strings são indexadas e o primeiro caractere é o de índice 0 str1 = 'Python' str1[0] # primeiro caractere: 'P' str1[5] # ultimo caractere: 'n' str1[6] # ERRO P y t h o n 0 1 2 3 4 5 str1 Não usar str como identificador, pois é uma classe nativa Acesso a caracteres Índices também podem ser números negativos P y t h o n 0 1 2 3 4 5 str1 -6 -5 -4 -3 -2 -1 str1[-1] # ultimo caractere: 'n' str1[-2] # penultimo caractere: 'o' str1[-6] # primeiro caractere : 'P' str1[-7] # ERRO Acesso a partes da string # carac. da posição 0 a 1: 'Py' str1[0:2] # carac. da posição inicial até a 1:'Py' str1[:2] # carac. da posição 2 a 5: 'thon' str1[2:6] # carac. da posição 2 até o final: 'thon' str1[2:] P y t h o n 0 1 2 3 4 5 str1 -6 -5 -4 -3 -2 -1 Conteúdo – Strings Introdução a strings Operações com strings Funções “is” para strings Conversão de strings para números Alguns problemas Operações com strings :: Tamanho, Primeiro, Último Quantidade de caracteres da string Primeiro caractere da string Último caractere da string >> len(string) >> string[0] >> string[-1] Operações com strings :: Conversão maiúsculas/minúsculas As funções upper e lower convertem todos os caracteres alfabéticos de uma string em letras maiúsculas ou minúsculas, respectivamente. str1 = 'Isso é um teste!' str1.upper() # ISSO É UM TESTE! str1.lower() # isso é um teste! Operações com strings :: Concatenação de strings Para a concatenação de duas ou mais strings, utilize o operador +. primeira = 'Auto' ultima = 'escola' primeira + ultima # 'Autoescola' primeira + ' ' + ultima # 'Auto escola' Operações com strings :: Cópias repetidas de strings Caso queira concatenar cópias repetidas de strings, utilize o operador *. str1 = 'UFAM' str1 * 3 # 'UFAMUFAMUFAM' (str1 + ' ') * 3 # 'UFAM UFAM UFAM ' 3 * str1 # 'UFAMUFAMUFAM' 3 * (str1 + ' ') # 'UFAM UFAM UFAM ' Operações com strings :: Separação de strings A função split retorna os caracteres antes da primeira ocorrência de um caractere separador em uma string de entrada. O caractere separador default é o espaço em branco. str1 = 'Fulano de Tal' str1.split() # ['Fulano', 'de', 'Tal'] str1.split(' ') # ['Fulano', 'de', 'Tal'] str1.split(',') # ['Fulano de Tal'] '1,2,3'.split(',') # ['1', '2', '3'] Operações com strings :: Busca de strings A função find retorna o menor índice da ocorrência da string2 na string1. Para checar se a string2 está na string1, utilize o operador in. str1 = 'Fulano de Tal' str2 = 'de' str1.find(str2) # 7 'de' in 'Fulano de Tal' # True Operações com strings :: Substituição de strings A função replace realiza uma operação padrão de localizar e substituir. Retorna uma cópia da string1 com todas as ocorrências da string2 substituídas pela string3. str1 = 'Na minha família há vários médicos. Meu avô, meu pai, minha mãe e eu somos médicos.' str2 = 'médicos' str3 = 'engenheiros' str1.replace(str2,str3) Conteúdo – Strings Introdução a strings Operações com strings Funções “is” para strings Conversão de strings para números Alguns problemas Testes Lógicos sobre Strings O Python oferece diversas funções cujo nome começa com “is”. Todas elas retornam um dos seguintes valores lógicos: •VerdadeiroTrue •FalsoFalse Testes Lógicos sobre Strings :: Exemplos de funções Função isalpha() Verifica se todos os caracteres na string são letras do alfabeto. Função isnumeric() Verifica se todos os caracteres na string são numéricos. Função isalnum() Verifica se todos os caracteres na string são alfanuméricos. Testes Lógicos sobre Strings :: Exemplos de funções str1 = 'Fulano' str2 = '123' str3 = str1 + str2 str1.isalpha() # True str3.isalpha() # False str2.isnumeric() # True str3.isnumeric() # False str1.isalnum() # True str2.isalnum() # True str3.isalnum() # True Testes Lógicos sobre Strings :: Exemplos de funções Função islower() Verifica se todos os caracteres na string são minúsculos. Função isupper() Verifica se todos os caracteres na string são maiúsculos. str1 = 'fulano' str2 = 'FULANO' str3 = 'Fulano' str1.islower() # True str3.islower() # False str2.isupper() # True str3.isupper() # False Conteúdo – Strings Introdução a strings Operações com strings Funções "Is" para strings Conversão de strings para números Alguns problemas Conversão de strings para números • Converte números em stringsstr() • Converte strings em números inteirosint() • Converte strings em números reaisfloat() Conversão de strings para númerosstr1 = '123' num1 = 123 str(num1) # '123' int(str1) # 123 float(str1) # 123.0 int(str1) + num1 # 246 float(str1) + num1 # 246.0 str(num1) + str1 # '123123' str1 + num1 # ERRO Conteúdo – Strings Introdução a strings Operações com strings Funções "Is" para strings Conversão de strings para números Alguns problemas Problema 1 :: Separação de string Elabore um script que leia o nome completo de uma pessoa e imprima o prenome e o sobrenome. Separação de string :: Script em Python # Leitura do nome nome = input("Informe o nome: ").split(' ') # Imprime prenome print('Prenome:', nome[0]) # Imprime primeiro sobrenome print('Sobrenome:', nome[1]) # Imprime lista de sobrenomes print('Sobrenome:', nome[1:]) # Imprime ultimo sobrenome print('Sobrenome:', nome[-1]) Problema 2 :: Contagem de ocorrências A partir de um texto fornecido pelo usuário, conte o número de caracteres e quantos deles são vogais. Separação de string :: Script em Python from numpy import * # Inicialização do contador de vogais cont = 0 # Leitura do texto a ser analisado texto = input("Digite o texto: ").upper() # Percorre a string contando as vogais for ch in texto: if ch == "A" or ch == "E" or ch == "I" or ch == "O" or ch == "U": cont = cont + 1 # Impressao das informacoes print(len(texto)) print(cont) Referências bibliográficas Menezes, Nilo Ney Coutinho (2010). Introdução à Programação com Python. Editora Novatec. Hetland, Magnus Lie (2008). Beginning Python: From Novice to Professional. Springer eBooks, 2ª edição. Disponível em: http://dx.doi.org/10.1007/978-1-4302-0634-7. Horstmann, Cay & Necaise, Rance D. (2013). Python for Everyone. John Wiley & Sons. 65 Dúvidas?66
Compartilhar