AED_04_Strings_parte_1

Propaganda
2/3/17
Algoritmos e Estrutura de Dados
Aula 04 – Strings em Python – parte 1
Profa. Alana Oliveira e Prof. Davi Viana
[email protected] e [email protected]
Se não entender, pergunte!
Profa. Alana O liveira, EC P / UFM A
2
1
2/3/17
Slides adaptados de:
• Prof. Davi Viana (UFMA)
• Prof. Leandro Galvão (UFAM) e
• Bruno Feres (UFMA)
Profa. Alana O liveira, EC P / UFM A
3
Na aula anterior..
Profa. Alana O liveira, EC P / UFM A
4
2
2/3/17
Dados e Tipos de Dados
Tipos de dados atômicos:
• Tipos de dados de coleção:
• int (ex: 1; 36; 2017)
• Listas
• float (ex: 3,1416)
• Tuplas
• bool (ex: True; False)
• String
• Dicionários
Profa. Alana O liveira, EC P / UFM A
5
Conteúdo – Strings
! Introdução
! Operações com strings
! Função ’is’ para string
! Conversão de strings p/ números
! Alguns Problemas
Profa. Alana O liveira, EC P / UFM A
6
3
2/3/17
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.
m o
A
Profa. Alana O liveira, EC P / UFM A
o
n
o
t h
y
P
7
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.
texto = "Amo o Python"
texto = 'Amo o Python'
• Você pode usar espaços em uma string de
caracteres.
Profa. Alana O liveira, EC P / UFM A
8
4
2/3/17
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".
9
Profa. Alana O liveira, EC P / UFM A
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.
ord()
Mostra código ASCII do
caractere informado
chr()
Mostra caractere ASCII
correspondente ao
código informado
Profa. Alana O liveira, EC P / UFM A
10
5
2/3/17
Strings de caracteres
• A função ord() devolve o código
numérico do caractere passado como
parâmetro. Veja os exemplos a seguir:
56
63
65
67
94
97
11
Profa. Alana O liveira, EC P / UFM A
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
Profa. Alana O liveira, EC P / UFM A
12
6
2/3/17
Tabela ASCII
• Escreva um programa que imprima todos
os caracteres ASCII de 32 a 127.
for i in range(32,128):
print("Caracter '%s' tem código ASCII
%d"%(chr(i), i))
13
Profa. Alana O liveira, EC P / UFM A
Tabela ASCII
….
….
Profa. Alana O liveira, EC P / UFM A
14
7
2/3/17
Acesso a caracteres
• Strings são indexadas e o primeiro caractere é o de
índice 0
0
P
1
y
2
t
3
4
5
h
o
n
str1
str1[0]
str1[5]
str1[6]
# primeiro caractere: 'P'
# ultimo caractere: 'n'
# ERRO
15
Profa. Alana O liveira, EC P / UFM A
Acesso a caracteres
• Índices também podem ser números negativos
0
1
2
3
4
5
P
y
t
h
o
n
-6
-5
-4
-3
-2
-1
str1
str1[-1]
str1[-2]
str1[-6]
str1[-7]
Profa. Alana O liveira, EC P / UFM A
#
#
#
#
ultimo caractere: 'n'
penultimo caractere: 'o'
primeiro caractere : 'P'
ERRO
16
8
2/3/17
Acesso a partes da string
0
1
2
3
4
5
P
y
t
h
o
n
-6
-5
-4
-3
-2
-1
str1
str1[0:2]
str1[:2]
str1[2:6]
str1[2:]
#
#
#
#
carac.
carac.
carac.
carac.
da
da
da
da
posição
posição
posição
posição
0 a 1: 'Py'
inicial até a 1:'Py'
2 a 5: 'thon'
2 até o final: 'thon'
Profa. Alana O liveira, EC P / UFM A
17
Operações com strings
:: Tamanho, Primeiro, Último
• Quantidade de caracteres da string
>> len(string)
• Primeiro caractere da string
>> string[0]
• Último caractere da string
>> string[-1]
Profa. Alana O liveira, EC P / UFM A
18
9
2/3/17
Conteúdo – Strings
! Introdução
! Operações com strings
! Função ’is’ para string
! Conversão de strings p/ números
! Alguns Problemas
19
Profa. Alana O liveira, EC P / UFM A
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()
str1.lower()
Profa. Alana O liveira, EC P / UFM A
# ISSO É UM TESTE!
# isso é um teste!
20
10
2/3/17
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'
21
Profa. Alana O liveira, EC P / UFM A
Operações com strings
:: Cópias repetidas de strings
• Caso queira concatenar cópias repetidas de
strings, utilize o operador *.
str1 = ‘UFMA'
str1 * 3
(str1 + ' ') * 3
# ‘UFMAUFMAUFMA'
# ‘UFMA UFMA UFMA '
3 * str1
3 * (str1 + ' ')
# 'UFMAUFMAUFMA'
# ‘UFMA UFMA UFMA '
Profa. Alana O liveira, EC P / UFM A
22
11
2/3/17
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()
#
str1.split(' ')
#
str1.split(',')
#
'1,2,3'.split(',')
#
['Fulano', 'de', 'Tal']
['Fulano', 'de', 'Tal']
['Fulano de Tal']
['1', '2', '3']
23
Profa. Alana O liveira, EC P / UFM A
Operações com strings
:: Busca de strings
• A função find retorna o menor índice da
ocorrência da string2 na string1.
str1 = 'Fulano de Tal'
str2 = 'de'
str1.find(str2)
# 7
• Para checar se a string2 está na string1,
utilize o operador in.
'de' in 'Fulano de Tal'
Profa. Alana O liveira, EC P / UFM A
# True
24
12
2/3/17
Operações com strings
:: Substituição de strings
• A função replace realiza uma operação
padrão de localizar e substituir.
• substitui strings para criar uma nova string
S1 = 'um aluno, dois alunos, tres alunos.'
S2 = S1.replace('aluno','estudante')
print(S1)
print(S2)
Profa. Alana O liveira, EC P / UFM A
25
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)
Profa. Alana O liveira, EC P / UFM A
26
13
2/3/17
Operações com strings
:: Iteração entre strings
• Percorre cada caractere uma string
S = 'algoritmos'
for x in S:
print(x)
Profa. Alana O liveira, EC P / UFM A
27
Exercício rápido
• Faça um programa que peça ao usuário que
digite o nome e a idade de uma pessoa e
imprima:
• Fulano tem tantos anos.
Profa. Alana O liveira, EC P / UFM A
28
14
2/3/17
Exercício rápido
• Faça um programa que peça ao usuário que
digite o nome e a idade de uma pessoa e
imprima:
• Fulano tem tantos anos.
#uma possivel solução seria:
nome = input('Digite um nome: ')
idade = input('Digite uma idade: ')
print(nome + ' tem ' + str(idade) + ' anos.')
Profa. Alana O liveira, EC P / UFM A
29
Conteúdo – Strings
! Introdução
! Operações com strings
! Função ’is’ para string
! Conversão de strings p/ números
! Alguns Problemas
Profa. Alana O liveira, EC P / UFM A
30
15
2/3/17
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:
True
• Verdadeiro
False
• Falso
Profa. Alana O liveira, EC P / UFM A
31
Testes Lógicos sobre Strings
Exemplos de funções
isalpha()
Verifica se todos os caracteres
na string são letras do alfabeto.
isnumeric() Verifica se todos os caracteres na
string são numéricos
isalnum()
Verifica se todos os caracteres na
string são alfanuméricos.
Profa. Alana O liveira, EC P / UFM A
32
16
2/3/17
Testes Lógicos sobre Strings
Exemplos de funções
str1 = 'Fulano'
str2 = '123'
str3 = str1 + str2
str1.isalpha()
str3.isalpha()
# True
# False
str2.isnumeric()
str3.isnumeric()
# True
# False
str1.isalnum()
str2.isalnum()
str3.isalnum()
# True
# True
# True
33
Profa. Alana O liveira, EC P / UFM A
Testes Lógicos sobre Strings
Exemplos de funções
islower() Verifica se todos os caracteres
na string são letras minusculas.
isupper() Verifica se todos os caracteres
na string são letras maisculas.
Str1, str2, str3 = 'fulano’, FULANO’, 'Fulano'
str1.islower()
str3.islower()
str2.isupper()
str3.isupper()
Profa. Alana O liveira, EC P / UFM A
#
#
#
#
True
False
True
False
34
17
2/3/17
Problema 1
Contagem de ocorrência
• A partir de um texto fornecido pelo usuário,
conte o número de caracteres e quantos deles
são vogais.
Profa. Alana O liveira, EC P / UFM A
35
Problema 1
Contagem
de ocorrência
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)
Profa. Alana O liveira, EC P / UFM A
36
18
2/3/17
Problema 1
Contagem
de ocorrência
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 in ("A" ,"E" ,"I" ,"O”,"U”):
cont = cont + 1
# Impressao das informacoes
print(len(texto))
print(cont)
Profa. Alana O liveira, EC P / UFM A
37
Conteúdo – Strings
! Introdução
! Operações com strings
! Função ’is’ para string
! Conversão de strings p/ números
! Alguns Problemas
Profa. Alana O liveira, EC P / UFM A
38
19
2/3/17
Conversão de strings para números
str()
• Converte números em
strings
int()
• Converte strings em
números inteiros
float()
• Converte strings em
números reais
39
Profa. Alana O liveira, EC P / UFM A
Conversão de strings para números
str1 = '123'
num1 = 123
str(num1)
int(str1)
float(str1)
# '123'
# 123
# 123.0
int(str1) + num1
float(str1) + num1
str(num1) + str1
# 246
# 246.0
# '123123'
str1 + num1
# ERRO
Profa. Alana O liveira, EC P / UFM A
40
20
2/3/17
Conteúdo – Strings
! Introdução
! Operações com strings
! Função ’is’ para string
! Conversão de strings p/ números
! Alguns Problemas
Profa. Alana O liveira, EC P / UFM A
41
Problema 1
:: Separação de string
• Elabore um script que leia o nome
completo de uma pessoa e imprima o
prenome e o sobrenome.
Profa. Alana O liveira, EC P / UFM A
42
21
2/3/17
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])
Profa. Alana O liveira, EC P / UFM A
43
Exercícios Complementares
• Faça um programa que permita ao usuário digitar o
seu nome e em seguida mostre o nome do usuário
de trás para frente utilizando somente letras
maiúsculas.
• Dica: lembre−se que ao informar o nome o usuário
pode digitar letras maiúsculas ou minúsculas.
• Exemplo:
• Entrada de dados: Davi
• Saída de dados: IVAD
Profa. Alana O liveira, EC P / UFM A
44
22
2/3/17
Exercícios Complementares
Nome invertido maiúsculo
:: Script em Python
(utilizando manipulação de string)
nome = "Davi"
print nome[::-1].upper()
Profa. Alana O liveira, EC P / UFM A
45
Nome invertido maiúsculo
:: Script em Python (“maneira braçal”)
# Leitura do nome
nome = input("digite seu nome ---> ")
# Declaração de uma string
nomeInvert = "“
# Processo de inversão da string
i = len(nome) - 1
while i >= 0:
nomeInvert = nomeInvert+nome[i:i+1]
i = i – 1
# Impressão da string invertida e em maiúsculo
print nomeInvert.upper()
Profa. Alana O liveira, EC P / UFM A
46
23
2/3/17
Exercícios Complementares
• Nome na vertical. Faça
um programa que solicite o
nome do usuário e
imprima-o na vertical.
• Nome na vertical em
escada. Modifique o
programa anterior de forma
a mostrar o nome em
formato de escada.
Exemplo de
resultado:
F
U
L
A
N
O
Exemplo de
resultado:
F
FU
FUL
FULA
FULAN
FULANO
47
Profa. Alana O liveira, EC P / UFM A
Exercícios Complementares
• Nome na vertical em
escada invertida. Altere
o programa anterior de
modo que a escada seja
invertida.
Profa. Alana O liveira, EC P / UFM A
Exemplo de
resultado:
FULANO
FULAN
FULA
FUL
FU
F
48
24
2/3/17
Material Complementar
http://www3.ifrn.edu.br/~jurandy/fdp/doc/
aprenda-python/capitulo_07.html#id1
http://www.tutorialspoint.com/python/pyth
on_strings.htm
http://openbookproject.net/thinkcs/python
/english3e/strings.html
Profa. Alana O liveira, EC P / UFM A
49
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.
Profa. Alana O liveira, EC P / UFM A
50
25
Download