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