A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA

Apresentações semelhantes


Apresentação em tema: "EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA"— Transcrição da apresentação:

1 EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA
STRINGS EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA

2 Uma string Uma string não é como inteiros, reais e booleanos. String é uma sequência, ou seja, é uma coleção ordenada de outros valores. Para acessar os caracteres de uma string um a um, você pode utilizar colchetes os quais especificam posição (neste caso, quantos recuos em relação ao início da string): O segundo comando seleciona o caractere de número 1 da string fruta e atribui este valor à variável letra. Este número entre colchetes é chamado de índice. Que valor você esperava que estivesse na variável letra e qual você obteve? ‘m’ é a letra 0 de fruta, ‘e’ é a letra 1, ‘l’ é a letra 2 e assim em diante. >>> fruta = ‘melancia’ >>> letra = fruta[1]

3 Uma string No lugar do índice você pode utilizar expressões e variáveis: Agora tente executar: Um índice deve ser um número inteiro! >>> i = 1 >>> letra = fruta[ i ] >>> letra = fruta[ i+1] >>> letra = fruta[ 1.5 ]

4 len len é uma função que já vem no Python. Pra quê ela serve?
Esta função serve para saber o tamanho de uma string Assim, para obter o último valor de uma string, você pode tentar fazer algo do tipo: Algo errado? Lembre-se que os índices de uma string começam do 0! Outra forma de se conseguir o último elemento de uma string: Para penúltimo elemento, você pode usar “-2”, e etc... >>> len(‘banana’) >>> len(‘melancia’) >>> tamanho = len(fruta) >>> letra = fruta[tamanho] >>> letra = fruta[-1]

5 Percorrer uma string com um loop
Um caminho para se percorrer os caracteres de uma string é utilizar um loop while: O comando em destaque é equivalente a: indice = indice +1 Escreva uma função que recebe uma string como argumento e imprime cada caractere dela em uma linha diferente. >>> indice = 0 >>> while indice < len(fruta): >>> letra = fruta[indice] >>> print(letra) >>> indice += 1 fruta -> ‘m e l a n c i a’ Índice ->

6 Percorrer uma string com um loop
Outro caminho é utilizar um loop for: Na estrutura de repetição acima, a variável letra assumirá, a cada iteração, o valor de um caractere da string, até que chegue ao último No caso de fruta = ‘melancia’, quantas vezes a estrutura irá rodar? >>> for letra in fruta: >>> print(letra) fruta -> ‘m e l a n c i a’

7 Percorrer uma string com um loop
No livro “Abrir caminho para patinhos” de Robert McCloskey, os nomes dos patos são: Jack, Kack, Lack, Mack, Nack, Ouack, Pack, e Quack. O loop a seguir imprime os nomes em ordem: O processo a partir do qual duas ou mais strings são “somadas” é chamado concatenação Note que os nomes Ouack e Quack saíram diferente do nome correto. Modifique este código para imprimir os nomes corretos >>> prefixos = 'JKLMNOPQ' >>> sufixo = 'ack' >>> for letra in prefixos: >>> print(letra + sufixo)

8 Exercícios Crie uma função que recebe uma string como argumento e imprime as suas letras, uma por vez, de trás para frente

9 Fatias de strings Agora suponha que queremos acessar apenas uma porção da string: Para acessar apenas o primeiro termo (Engenharia), podemos usar o comando: O operador [n : m] retorna a parte da string contida no intervalo que vai do caractere de índice “n” ao caractere de índice “m-1” Se omitirmos o primeiro índice (n), a fatia começará do início da string e se omitirmos o segundo índice (m), a fatia irá até o fim da string. Teste esses comandos! >>> curso = ‘Engenharia Ambiental’ >>> curso [0:10]

10 Fatias de strings Agora experimente a instrução a seguir:
Se o primeiro índice for maior ou igual ao segundo, o resultado será uma string vazia representada por aspas Uma vez que a string vazia não contém caracteres, seu tamanho será sempre 0 E quanto ao comando abaixo? Pra que serve? Teste e descubra >>> fatia = curso [5:5] >>> len(fatia) >>> curso [:]

11 Strings são imutáveis Para alterar o valor de um caractere de uma string, somos tentados a fazer: O motivo do erro encontrado é que não é possível alterar uma string existente O que podemos fazer é criar uma nova string a partir da original e modificá-la a partir de uma concatenação, como é mostrado a seguir: >>> eng = ‘Engenheiro’ >>> eng [9] = ‘a’ >>> novo_eng = eng [0:9] +’a’ >>> novo_eng Engenheira

12 Rastreando Considere a função abaixo:
Você consegue descrever o que essa função faz? Execute-a e tente entender >>> def indice (palavra,letra): >>> ind = 0 >>> while ind < len(palavra): >>> if (palavra[ind]==letra): >>> return ind >>> ind += 1 >>> return -1

13 Rastreando Se pensarmos bem, iremos perceber que essa função realiza o processo inverso ao do operador [ ]. Ao invés de receber um índice e retornar o caractere correspondente, ela recebe o caractere e encontra o índice referente a sua posição na string Quando “palavra [ind]==letra”, a função para o loop e retorna o valor encontrado imediatamente Quando o caractere procurado não aparece na string, o programa retorna o valor -1 Esse processo é denominado “procura”

14 Contando a partir de um loop
Observe a código a seguir: O que esse código faz é contar quantas vezes uma determinada letra aparece na palavra fornecida Analise e tente entender, em detalhes, como esse processo ocorre O código acima representa outro processo bastante comum, denominado “contagem” >>> palavra = ‘melancia’ >>> contador = 0 >>> for letra in palavra: >>> if (letra==‘a’): >>> contador += 1 >>> print(contador)

15 Exercícios Encapsule o código anterior em uma função denominada contagem(p,l) que recebe duas strings como argumento (uma palavra e uma letra) Modifique a função índice(palavra,letra) do slide 13 para que ela receba um terceiro argumento referente ao índice a partir do qual ela deveria começar a procurar a letra na string fornecida

16 Métodos de Strings As strings fornecem alguns métodos a partir dos quais podemos realizar várias tarefas úteis Por exemplo: Como podemos perceber, o método upper pega a string fornecida e retorna uma nova string com todas as letras maiúsculas Note também que, por estarmos utilizando um método e não uma função, a sintaxe de chamada é diferente: palavra.upper() ao invés de upper(palavra) >>> palavra = ‘banana’ >>> nova_palavra = palavra.upper() >>> nova_palavra BANANA

17 Métodos de Strings Ao chamarmos um método como foi mostrado anteriormente, realizamos o que se chama de invocação Um outro método comum de strings funciona de forma semelhante à função que criamos para localizar letras em palavras Diferentemente do método anterior, o método find deve receber um argumento para funcionar corretamente Neste caso, nós invocamos o método find sobre a variável palavra e fornecemos a letra procurada como parâmetro >>> palavra = ‘banana’ >>> indice = palavra.find(‘a’) >>> indice 1

18 Métodos de Strings Agora experimente executar:
Assim, utilizando esse método, é possível encontrar não só caracteres, como também substrings Ao fornecer um segundo argumento, determinamos o índice a partir do qual a procura será iniciada Se fornecermos um terceiro argumento, podemos determinar o índice até onde a procura será realizada >>> palavra = ‘banana’ >>> indice = palavra.find(‘na’) >>> palavra = ‘banana’ >>> indice = palavra.find(‘na’,2) >>> palavra = ‘banana’ >>> indice = palavra.find(‘na’,2,5)

19 O operador in Execute os comandos abaixo:
A palavra in é um operador booleano que compara duas strings e retorna True se a primeira aparece na segunda como uma substring Perceba que podemos comparar tanto caracteres (‘a’) como strings completas (‘fruta’) a uma outra string qualquer(‘abacaxi’) >>> ‘a’ in ‘abacaxi’ >>> ‘fruta’ in ‘abacaxi’

20 O operador in Observe a função a seguir: Agora execute:
Tente descrever como a função funciona quando fornecemos as strings acima como argumentos O loop utilizado dentro da função pode ser lido da seguinte forma: Para cada letra na primeira palavra, se a letra aparecer na segunda palavra, imprima a letra >>> def em_ambos(palavra1,palavra2): >>> for letra in palavra1: >>> if letra in palavra2: >>> print(letra) >>> em_ambos(‘abacaxi’,’banana’)

21 Comparação de Strings >>> palavra = ‘chocolate’
Os operadores relacionais funcionam com strings. Execute os seguintes comandos e tente entender o que acontece. O operador ‘==‘ verifica se uma palavra é exatamente igual a outra. Os operadores ‘<’, ‘>’, ‘<=‘ e ‘>=‘ são muito úteis para organizar palavras em ordem alfabética. O Python segue o código ASCII onde maiúsculas antecedem minúsculas. Assim, ‘P’ < ‘a’ resulta em True >>> palavra = ‘chocolate’ >>> palavra == ‘chocolate’ >>> palavra == ‘Chocolate’ >>> palavra < ‘abacaxi’ >>> palavra > ‘morango’

22 Depurando código A Função a seguir serve para comparar 2 palavras e retorna True se as palavras forem uma o inverso da outra e retorna False caso contrário. Porém, o código possui dois erros. def eh_reversa(palavra1, palavra2): if len(palavra1) != len(palavra2): return False i = 0 j = len(palavra2) while j > 0: if palavra1[i] != palavra2[j]: i = i+1 j = j-1 return True

23 Depurando código A primeira condição checa se as palavras são do mesmo tamanho. Caso as palavras não tenham o mesmo tamanho, já podemos retornar False imediatamente. i e j são índices. O incide i percorre a palavra do começo ao fim, enquanto j percorre a palavra de trás pra frente. Se testarmos a função com “arar” e “rara”, que esperamos obter True, temos um “IndexError” Para depurar este tipo de erro vamos ao Python Tutor. Percebemos que o primeiro valor de j deveria ser: j = len(palavra2)-1

24 Depurando código Se executarmos eh_reversa(‘pots’, ‘stop’), obtemos a resposta certa. Agora se você perceber no Python Tutor, para este caso, há apenas 3 iterações, mas temos 4 letras, o que é um pouco suspeito. Ainda há um erro, tente descobrir qual é e o conserte.

25 Outra alternativa para a função eh_reversa
No slide 12, foi visto como obter um pedaço de uma string. Note que esta sintaxe é parecida com a função range(). Então podemos escrever o “passo”. Veja outro exemplo. Se você definir o tamanho do passo como -1, você obterá a palavra ao contrário. Com isso, crie uma função eh_reversa(), que retorna True se as palavras passadas como argumento forem reversas e False caso contrário. >>> palavra = “pre-vestibular” >>> prefixo = palavra [0:4] >>> palavra = “banana” >>> consoantes = palavra [0:5:2]

26 Exercícios Leia a documentação de métodos de strings do Python, lá há muita coisa interessante que pode ser útil. Os métodos strip() e replace(), por exemplo, são muito úteis. A documentação usa uma sintaxe que pode ser confusa. Por exemplo find(sub[, start[, end]]), os colchetes indicam argumentos opcionais, ou seja, sub é um argumento obrigatório e start e end são argumentos opcionais. Existe um método de strings chamado count(), que é similar à função criada no slide 16. Leia a documentação e tente utilizar este método para fazer o mesmo que a função.


Carregar ppt "EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA"

Apresentações semelhantes


Anúncios Google