• Nenhum resultado encontrado

Cadeias de Caracteres Jurandy Soares

N/A
N/A
Protected

Academic year: 2021

Share "Cadeias de Caracteres Jurandy Soares"

Copied!
33
0
0

Texto

(1)

Cadeias de Caracteres

Jurandy Soares

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(2)

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

(3)

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

(4)

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

(5)

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 é u m a c a d e i a

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

-17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

Obtenção do Elemento de uma Dada Posição (cont.)

Lembrando...

E s t a é u m a c a d e i a

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

-17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

Qual é a saída?

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(19)

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

(20)

Qual é a saída?

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(21)

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

(22)

print(saudacoes)

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(23)

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

(24)

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(25)

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

(26)

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

(27)

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

(28)

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

(29)

Quebra Nome

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(30)

Listagem dos Principais Métodos da Classe str

capitalize count encode endswith format index isalnum isalpha isdecimal isdigit islower isnumeric isprintable isspace istitle isupper join lower partition replace split splitlines startswith strip swapcase title upper

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(31)

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

(32)

>> string.maketrans

<function maketrans at 0xb73d20ec>

>> string.octdigits 01234567

>> string.printable

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

>> string.punctuation

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

>> string.whitespace

© Jurandy Soares, 2011 -- http://bit.ly/jurandy

(33)

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

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Participar ou já ter participado, na UFU, de projetos de extensão, de estágios em órgãos administrativos ou acadêmicos da universidade, representação em conselhos (colegiados

A Pró-reitoria de Extensão, Cultura e Assuntos Estudantis da Universidade Federal de Uberlândia, no uso de suas atribuições, torna pública a abertura de

• Um vetor de caracter chamado nomePai, com 80 posicoes, que indica o nome completo do pai, que possui caracteres que pertencem a tabela

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Os resultados deste estudo mostram que entre os grupos pesquisados de diferentes faixas etárias não há diferenças nos envoltórios lineares normalizados das três porções do

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron &amp; Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)