Cadeias de Caracteres

Transcrição

Cadeias de Caracteres
Cadeias de Caracteres
Jurandy Soares
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
O Tipo Cadeia de Caracteres
• Uma cadeia de caracteres (string em Inglês e str em Python) é uma sequência de
caracteres
• O tipo str é associado a variáveis que armazenam cadeias de caracteres
• A tipo str em Python funciona como se fosse um tipo primitivo
• Uma constante de cadeia de caracteres é constituída de um ou mais caracteres
separados por aspas simples (') ou duplas(") ou por três aspas simples (''') ou duplas
(""")
• As aspas triplas são utilizadas para representar cadeias de caracteres com quebras
de linha
Exemplos:
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
escola = 'Instituto Federal do Rio Grande do Norte'
estado = "Rio Grande do Norte"
temperatura = '36º C'
cidades_grandes = '''Natal-RN
Parnamirim-RN
Mossoró-RN'''
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Variáveis Cadeias de Caracteres
Criar e associar um valor a uma variável do tipo cadeia de caracteres:
saudacoes = "Olá"
Usar a variável como um argumento do tipo cadeia de caracteres em um comando:
print(saudacoes)
faz com que a cadeia Olá! seja exibida na tela
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Indexando Caracteres Dentro de uma Cadeia de
Caracteres
• O índice de um caractere em uma cadeia de caracteres é um inteiro que começa
com 0 para o primeiro caracter e indica a posição do caracter. Por exemplo:
cadeia = 'Esta é uma cadeia'
E
s
t
a
0
1
2
3
é
4
5
6
u
m
a
7
8
9
-8
-17 -16 -15 -14 -13 -12 -11 -10 -9
c
a
d
e
i
a
10
11
12
13
14
15
16
-7
-6
-5
-4
-3
-2
-1
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Funções
• Uma função é uma operação com um nome e uma lista de argumentos
(possivelmente vazia)
• Uma função pode simplesmente executar uma ação ou ela pode retornar um valor
• A chamada de uma função que não retorna valor é um comando, por exemplo:
print('Olá quem quer que esteja aí!')
A chamada de uma função que retorna um valor é uma expressão, por exemplo:
n = input()
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Métodos
• Um método é uma operação com um nome e uma lista de argumentos
(possivelmente vazia) aplicada a um determinado objeto
• A invocação de um método é feita da seguinte maneira:
nomeDoObjeto.nomeDoMetodo(argumentos)
• A invocação de um método pode simplesmente executar uma ação ou ela pode
retornar um valor
• A invocação de um método que não retorna valor é um comando, por exemplo:
nomes = []
nomes.append('Maria')
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
A invocação de um método que retorna um valor é uma expressão, por exemplo:
nome = 'maria emília'
nome.upper()
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Alguns Métodos para Cadeias de Caracteres
• O tipo str tem muitos métodos que nos permitem manipular valores e variáveis do
tipo cadeias de caracteres
• Métodos de str são invocados com a seguinte sintaxe:
varCadeia.nomeMétodo(argumentos)
Exemplos:
# ...
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Função Aplicável a Cadeias de Caracteres
• len
retorna o número de caracteres de uma dada cadeia, por exemplo:
cadeia = 'Esta é uma cadeia'
print(len(cadeia))
Qual é a saída?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Obtenção do Elemento de uma Dada Posição
varCadeia[pos] -> caracter da posição
retorna o caracter na posição pos na cadeia dada, por exemplo:
cadeia = 'Esta é uma cadeia'
print(cadeia[0])
print(cadeia[1])
print(cadeia[5])
Qual é a saída?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Obtenção do Elemento de uma Dada Posição
(cont.)
Lembrando...
E
s
t
a
0
1
2
3
é
4
5
6
u
m
a
7
8
9
-8
-17 -16 -15 -14 -13 -12 -11 -10 -9
c
a
d
e
i
a
10
11
12
13
14
15
16
-7
-6
-5
-4
-3
-2
-1
A posição pode ser dada como um número positivo ou negativo.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Entrada de um Único Caracter
cadeia = input()
caracter = cadeia[0]
Nota:
De fato, entra-se com uma linha inteira
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Fatiando Cadeias de Caracteres
varCadeia[ini:fim] -> subcadeia
retorna a cadeia que começa na posição ini e termina na posição (fim-1) da cadeia
dada.
varCadeia[ini:] -> subcadeia
retorna uma cadeia que começa na posição ini e vai até o último caractere da cadeia
dada.
varCadeia[:fim] -> subcadeia
retorna uma cadeia que começa na posição 0 e termina na posição (fim-1) da cadeia
dada.
varCadeia[ini:fim:passo] -> subcadeia
retorna uma cadeia que começa na posição ini e termina na posição (fim-1) da
cadeia dada, usando passo caracteres.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Observação:
ini, fim ou passo podem ser omissos quando os valores padrões
forem assumidos: 0, len(varCadeia)-1 e 1, respectivamente.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Exemplo de Fatiamento de Cadeias de
Caracteres
cadeia = 'Esta é uma cadeia'
print(cadeia[0:4])
print(cadeia[5:7])
print(cadeia[0:16])
nome = 'Juliana Kelly'
print(nome[:3])
print(nome[4:])
print(nome[1:6:2])
print(nome[:])
print(nome[::-1])
Qual é a saída do programa acima?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Em Que Posição Encontra-se Subcadeia
varCadeia.index(subcadeia) -> int
retorna a posição da primeira ocorrência de subcadeia na cadeia dada ou apresenta
um erro em tempo de execução, caso contrário
varCadeia.find(subcadeia) -> int
retorna a posição da primeira ocorrência de subcadeia na cadeia dada ou -1 se não
encontrada, por exemplo:
cadeia = 'Esta é uma cadeia'
print(cadeia.index('Esta'))
print(cadeia.index(' Esta'))
print(cadeia.index('é'))
print(cadeia.find(' é'))
print(cadeia.find('ou'))
print(cadeia.find(' ou'))
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Qual é a saída?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Concatenando (Anexando) Cadeias
O operador + pode ser usado para concatenar valores do tipo cadeia de caracteres, por
exemplo:
nome = 'Cíntia'
saudacoes = 'Oi, ' + nome + '!'
print(saudacoes)
Atenção ao adicionar números à cadeia. Primeiro é necessário transformá-los em
cadeias de caracteres.
nome = 'Cíntia'
idade = 15
saudacoes = 'Olá, ' + nome + '! Você tem ' + str(idade) + ' anos'
print(saudacoes)
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Qual é a saída?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Formatação de Cadeia de Caracteres
varCadeia.format(arg1, arg2, argN) -> str
Devolve uma cadeia de caracteres, substituindo "{0}" pelo valor de arg1, "{1}" pelo
valor de arg2 e "{n}" pelo valor de argN, todos convertidos para sua representação
como cadeia de caracteres.
Os exemplos acima ficariam da seguinte maneira:
nome = 'Cíntia'
saudacoes = 'Oi, {0}!'.format(nome)
print(saudacoes)
nome = 'Cíntia'
idade = 15
saudacoes = 'Olá, {0}! Você tem {1} anos'.format(nome, idade)
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
print(saudacoes)
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Fazendo Mala-Direta com Cadeia de Caracteres
Aquecimento:
>>> convite = '''Olá {0}! Você está convidado(a) ao meu aniversário,
que acontecerá no dia 07 de junho, às 21h00, no Hotel Thermas.
(RSVP) Favor confirmar presença!
Abraços,
O aniversariante.
'''
>>> print(convite.format('Manoel'))
Encaixando a ideia acima em um laço:
>>> convidados = 'Fulano', 'Beltrano', 'Cicrano'
>>> for c in convidados:
print(convite.format(c))
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Caracteres de Fuga
Como exibimos a seguinte cadeia?
A palavra 'cobra'
Isto produziria esse resultado?
print('A palavra 'cobra'')
Resposta:
Não, isto daria um error de sintaxe -- o compilador veria 'A palavra '
entre o primeiro conjunto de aspas e ficaria confuso pelo que vem
depois.
Usa-se a barra invertida, "\", para fugir do significado especial das aspas simples:
print('A palavra \'cobra\'')
# ou
print('A palavra "cobra"')
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Programa cadeiaCaracteres
# Arquivo: cadeiacaracteres.py
saudacao = "Olá turma!"
comprimento = len(saudacao)
print("O comprimento é", comprimento)
caracter = saudacao[3]
print("O caracter na posição 3 é", caracter)
subcadeia = saudacao[1:3]
print("Subcadeia[1..3] é", subcadeia)
indice1 = saudacao.find("lá")
print("O índice de \"lá\" é", indice1)
indice2 = saudacao.find("lápis")
print("O índice de \"lápis\" é", indice2)
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Qual é a Saída do Programa CadeiaCaracteres?
• Análise os comandos de cadeiacaracteres e determine a saída produzida pelo
programa.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Sua Vez, Novamente!
• Escreva um programa chamado quebranome, que pergunta ao usuário seu nome na
forma Nome Sobrenome1 Sobrenome2 e exiba Nome, Sobrenome1 e Sobrenome1
em três linhas diferentes.
• Em outras palavras, após o nome ser lido pela entrada, o programa precisa
quebrá-lo em três pedados (Nome, Sobrenome1 e Sobrenome2) e exibir um por
linha.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Quebra Nome
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Listagem dos Principais Métodos da Classe str
capitalize
encode
format
isalnum
isdecimal
islower
isprintable
istitle
join
partition
split
startswith
swapcase
upper
count
endswith
index
isalpha
isdigit
isnumeric
isspace
isupper
lower
replace
splitlines
strip
title
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Módulo string
Use import string para utilizar o módulo string da biblioteca padrão de Python. Este
módulo define algumas cadeias úteis:
>> string.ascii_letters
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
>> string.ascii_lowercase
abcdefghijklmnopqrstuvwxyz
>> string.ascii_uppercase
ABCDEFGHIJKLMNOPQRSTUVWXYZ
>> string.capwords('o dia está ensolarado')
'O Dia Está Ensolarado'
>> string.digits
0123456789
>> string.hexdigits
0123456789abcdefABCDEF
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
>> string.maketrans
<function maketrans at 0xb73d20ec>
>> string.octdigits
01234567
>> string.printable
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
>> string.punctuation
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
>> string.whitespace
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Referências
Estas transparências são adaptações para Python 3 de materiais de programação pegos
da Internet. * http://www.cse.ohio-state.edu/cse201
© Jurandy Soares, 2011 -- http://bit.ly/jurandy

Documentos relacionados