View
0
Download
0
Category
Preview:
Citation preview
Programação de Computadores
Instituto de Computação UFFDepartamento de Ciência da Computação
Otton Teixeira da Silveira Filho
Conteúdo
● Caracteres e Cadeia de Caracteres
● Cadeia de Caracteres e listas
● Operações específicas para cadeias de caracteres:
funções e métodos
● Uma outra compreenção sobre o for
● Uso do del()
● Exercícios
str-cadeias de caracteres
O tipo str em Python reserva espaço na memória do computador e permite atribuirmos os caracteres que estão definidos na tabela ASCII e suas extensões
Tabela ASCII
Caracteres - 1 B
Exemplos com caracteres
Observe que temos um número inteiro associado a cada caracter. Por reconhecer o tipo da variável como str (e se referenciar ao número associado na tabela) é que os programas que estejam executando no computador reagem a estas variáveis de forma conveniente.
Exemplos com caracteres
As atribuições de caracteres são feitas de forma similar aos outros tipos já apresentados, como no fragmento abaixo
…
a = '/'
b = 'B'
c = a
...
Exemplos com caracteres
Podemos fazer comparações entre caracteres nos lembrando de que as referências serão sempre os valores da tabela ASCII
Mais um exemplo com caracteres
...
Exemplos com caracteres
Experimente teclar algo como a letra S e a letra s e depois olhe a correspondência na tabela ASCII
Exemplos com caracteres
Podemos acessar os elementos do tipo str pelo seus índices
Exemplos com caracteres
...
Cadeia de caracteres
Outra maneira é trabalharmos nossa entrada como lista
Exemplos com cadeias de caracteres
...
Cadeias de caracteres
Experimente usar type() para verificar se temos realmente uma lista como saída do input()
● Isto é devido ao split()
Cadeias de caracteres
Observe que Python faz umas gentilezas para o programador mas é bom ser explícito sempre que possível e conveniente para não haver mal entendidos
Tipos mutáveis e imutáveis
Temos formas diferentes de trabalhar ao usarmos um tipo ou outro, cada um com suas vantagens e desvantagens
Há uma grande diferença entre o tipo str e list:
Enquanto list é mutável str é imutável, ou seja, podemos alterar diretamente os valores de uma lista mas o mesmo não pode ser feito com uma cadeia de caracteres
Tipos mutáveis e imutáveis
Temos formas diferentes de trabalhar ao usarmos um tipo ou outro, cada um com suas vantagens e desvantagens
Há uma grande diferença entre o tipo str e list:
Enquanto list é mutável str é imutável, ou seja, podemos alterar diretamente os valores de uma lista mas o mesmo não pode ser feito com uma cadeia de caracteres
● Numa lista constituída de elementos do tipo cadeia de caracteres (str), podemos mudar o conteúdo da lista mas não a cadeia de caracter
Tipos simples e compostos
É bom observar novamente que diferente dos tipos como int, float, bool, ditos tipos simples ou primitivos, str é um tipo composto, ou seja, ele é constituído de “partes menores”.
Por exemplo, uma frase é constituída de ‘palavras’ (sub cadeias) e estas por caracteres (sub cadeias das ‘palavras’)
Operador in
Vejamos um operador que será útil no momento, embora ele já tenha sido apresentado informalmente
Operador in
Vejamos um operador que será útil no momento, embora ele já tenha sido apresentado informalmente
● in
Este operador retorna se falso ou verdadeiro se dada uma subcadeia (substring) se encontra em outra cadeia de caracteres
Operador in
Exemplos:
● ‘o‘ in “Tom“ retornará True
● ‘t‘ in “Tom“ retornará False
Operador in
Exemplos com cadeias de caracteres
Aqui vemos que temos uma autêntica operação lógica que pode simplificar operações com cadeias de caracteres
Exemplos com cadeias de caracteres
Aqui vemos que temos uma autêntica operação lógica que pode simplificar operações com cadeias de caracteres
Vejamos um uso do for de outra forma
Exemplos com cadeias de caracteres
Mais sobre o for
Aqui vemos mais sobre as possibilidades do for. Relembre que ele é descrito como
for elemento_do_iterador in iterador: comandos
onde iterador não se limita ao gerado pelo range() mas também pode ser lista, cadeia de caracteres e outros tipos compostos
Cadeias de caracteres
Podemos fazer uma lista se “transformar“ numa cadeia de caracteres
De quebra no próximo exemplo faremos uso de uma função já apresentada len() e também de uma sobrecarga do operador + que já vimos anteriormente
Cadeias de caracteres
Exemplos com cadeias de caracteres
Observe que criamos uma cadeira de caracteres vazia introduzindo nenhum caracter
O “problema” que temos está na impressão sem espaços em branco da cadeia de caracteres.
Mas, é claro, foi precisamente o que pedimos para ser feito...
Vamos adicionar espaços em branco para nosso conforto...
Cadeia de caracteres
Cadeia de caracteres
Ficou mais legível e ganhamos um pouco mais de conhecimento de manipulação de cadeia de caracteres
Cadeia de caracteres
Vejamos mais algumas operações que podemos fazer diretamente com o tipo str
● count(item_a) – conta o número de ocorrências de item_a da cadeia
● replace(item_a, item_b) – substitui todas as ocorrências de item_a por item_b
● find(item_a) – retorna o índice mais a esquerda onde item_a foi encontrado
Todos estes são métodos...
Cadeia de caracteres
...
Cadeia de caracteres
Mas aqui temos uma questão:
Se uma cadeia de caracteres é um tipo imutável, o que aconteceu quando usamos o replace?
Cadeia de caracteres
Mas aqui temos uma questão:
Se uma cadeia de caracteres é um tipo imutável, o que aconteceu quando usamos o replace?
Geramos uma outra cadeia de caracteres, ou seja, alocamos um espaço de memória diferente daquela cadeia original
Cadeia de caracteres
Um exercício:
Faça um programa em Python no qual se lê uma frase dada numa única cadeia de caracteres e que gere outra cadeia de caracteres sem os espaços em branco.
Cadeia de caracteres
Vamos introduzir mais algumas operações com cadeias de caracteres. Se cad é uma cadeia de caracteres:
● Fatiamento:
cad[n:m] gera uma cadeia do n-ésimo caracter ao m-ésimo caracter
cad[n:m:p] gera uma cadeia do n-ésimo caracter ao m-ésimo caracter deslocando de p em p
● min(cad) – retorna o menor elemento da cadeia
● max(cad) – retorna o maior elemento da cadeia
Cadeia de caracteres
...
Cadeia de caracteres
Observe que maior e menor aqui estão referidos aos valores da tabela ASCII e que o 'menor' caracter encontrado é o caracter espaço em branco, indicado na tabela ASCII como SP
Cadeia de caracteres
Vejamos como examinar uma cadeia de caracteres de várias maneiras, o que será útil para futuros exemplos e exercícios.
Aqui novamente suporemos estar trabalhando com uma cadeia de caracteres de nome cad
● cad.isnumeric() – retorna True se a cadeia é constituída de apenas caracteres numéricos
● cad.isspace() – retorna True se há somente espaços em branco
● cad.isalpha() – retorna True se há somente caracteres do alfabeto
● cad.isalnum() – retorna True se há somente caracteres alfanuméricos
Cadeia de caracteres
Observe que tais métodos podem ser, por exemplo, muito úteis em filtragem de dados de entrada
Cadeia de caracteres
● Este programa emitirá uma mensagem errada em algumas situações
Exercício
Este programa emitirá uma mensagem errada em algumas situações
Descubra quais e corrija
Cadeia de caracteres
Repare que encontramos uma maneira pela qual podemos manipular o conteúdo de uma cadeia de caracteres. Basta criar uma nova cadeia ou usar o recurso do
● list()
que cria uma lista a partir do colocado como seu argumento
Cadeia de caracteres
Cadeia de caracteres
Repare a forma com a qual imprimimos os elementos da lista antes e depois de modificarmos.
Em geral a operação do print() faz com que ao terminar a impressão solicitada, haja um salto para a próxima linha. Este salto é dado pelo uso de um caracter não imprimível.
Aqui substituímos o caracter padrão pelo espaço em branco numa impressão e por nenhum caracter para a outra impressão
Cadeia de caracteres
Também usamos uma gambiarra:
usamos o print() sem argumentos para forçar um salto de linha, já que, seja lá o que você pedir para imprimir, o print() saltará para a próxima linha
Cadeia de caracteres
Mas esta história de ficar criando cadeia de caracteres fica enchendo a memória do computador.
Para programas como estes do curso, isto não é um grande problema mas, se você estiver trabalhando com uma massa de dados maior, podemos aí ter problemas
● O próprio Python faz o que é chamado Coleta de Lixo mas um programador organizado age diretamente
Cadeia de caracteres
Python permite você liberar o espaço de memória ocupado por uma variável de maneira direta usando o
● del()
Cadeia de caracteres
Exercício
Crie um programa em Python que, dada uma cadeia de caracteres, gere outra cadeia de caracteres na qual não há vogais. Imprima as duas cadeias.
Exercício
Faça um programa em Python no qual se lê uma cadeia de caracteres com letras minúsculas e depois ordene as letras em ordem alfabética. Imprima o resultado.
Recommended