·

Engenharia de Alimentos ·

Linguagens de Programação

Send your question to AI and receive an answer instantly

Ask Question

Recommended for you

Preview text

Programação Computação Prof Joelmir José Lopes Programação Computação Esta aula tem por finalidade tratar o assunto Programação Computação usando a linguagem Python Python Python Strings Além dos tipos numéricos e Booleanos Python admite uma grande quantidade de outros tipos mais complexos O tipo de string em Python denominado str é usado para representar e manipular dados de texto ou em outras palavras uma sequência de caracteres incluindo espaços pontuação e diversos símbolos Um valor de string é representado como uma sequência de caracteres delimitada por apóstrofos Exemplo s hello prints Python Operadores de String Python oferece operadores para processar texto ou seja valores de string Assim como os números as strings podem ser comparadas usando operadores de comparação e assim por diante O operador por exemplo retorna True se as strings nos dois lados do operador tiverem o mesmo valor Exemplo s hello prints hello vai retornar True t world prints t Vai retornar False prints t vai retornar True Python Embora e testem se duas strings são iguais ou não os operadores de comparação e comparam strings usando os seus valores ASCII Python ASCII Por muitos anos a codificação padrão para caracteres no idioma inglês foi a codificação ASCII O American Standard Code for Information Interchange ASCII foi desenvolvido na década de 1960 Ele define um código numérico para 128 caracteres pontuação e alguns outros símbolos comuns no idioma inglês americano A Tabela abaixo mostra os códigos ASCII decimais para os caracteres imprimíveis Python Tabela de códigos ASCII Foto ReproduçãoAndré Sugai Foto TechTudo Python O código ASCII decimal para a letra a minúscula é 97 O símbolo é codificado com o código ASCII decimal 38 Os códigos ASCII de 0 até 32 e 127 incluem caracteres não imprimíveis como o retrocesso tecla back space código decimal 8 e mudança de linha código decimal 10 Você pode explorar as codificações ASCII usando a função ord em Python que retorna o código ASCII decimal de um caractere printorda retorna 97 Python A sequência de caracteres de um valor de string como dad é codificada como uma sequência de códigos ASCII 100 97 e 100 O que é armazenado na memória RAM é exatamente essa sequência de códigos Naturalmente cada código é armazenado em binário Existem outras codificações como UTF8 a qual é uma das codificações mais famosas junto com ASCII É capaz de codificar 1112064 caracteres Isso garante que você possa usar caracteres de praticamente qualquer idioma humano Python Os primeiros 128 caracteres UTF8 correspondem exatamente aos primeiros 128 caracteres ASCII numerados de 0 a 127 o que significa que o texto ASCII existente já é UTF8 válido Todos os outros caracteres usam dois a quatro bytes Em Python a função chr é o inverso da função ord Ela apanha um código numérico e retorna o caractere correspondente a ele Exemplo printchr97 mostra a Python Retornando s hello t world prints t vai me retornar True Pois se eu converter hello em números inteiros cada letra da string s e somar o resultado será 532 Se eu converter world em números inteiros cada letra da string t e somar o resultado será 552 Logo 532 552 é Verdadeiro prints t vai me retornar False pois 532 não é maior que 552 Python O operador quando aplicado a duas strings é avaliado como uma nova string que é a concatenação ou seja a junção das duas strings prints t Terá como resultado helloworld x s t printx Python No segundo exemplo os nomes s e t são avaliados como os valores de string hello e world respectivamente que são então concatenados com a string de espaço em branco Se podemos somar duas strings será que podemos multiplicálas hello world Traceback most recent call last File pyshell146 line 1 in module hello world TypeError cannot multiply sequence by nonint of type str Python Bem parece que não podemos Se você parar para pensar um pouco nisso não fica muito claro o significado de multiplicar duas strings de qualquer forma Somálas ou seja concatenálas faz mais sentido O que você acha que deveria acontecer quando uma string é multiplicada por um inteiro Vamos experimentar p 3 A printp O resultado é AAA printhello 2 o resultado é hello hello print30 o resultado é A multiplicação de uma string s por um inteiro k nos dá uma sequência obtida concatenando k cópias da string s Python Com o operador in podemos verificar se um caractere aparece em uma string s hello printh in s retorna True printg in s retorna False Python O operador in também pode ser usado para verificar se uma string aparece em outra s hello printll in s retorna True ou if ll in s printA string ll aparece em s Python Operador de Indexação Os caracteres individuais de uma string podem ser acessados usando o operador de indexação Python shello prints0 retorna h prints1 retorna e Índices negativos podem ser usados para acessar os caracteres do final lado direito da string Python Observação A maioria dos operadores de string que vimos pode ser usada em listas de formas semelhantes Python Listas São Mutáveis Strings Não Uma propriedade importante das listas é que elas são mutáveis O que isso significa é que o conteúdo de uma lista pode ser mudado como vimos na aula passada Por exemplo animais peixe gato cão Eu posso fazer animais1 gato siamês printanimais retornará peixe gato siamês cão Python Enquanto as listas são mutáveis as strings não são O que isso significa é que não podemos mudar os caracteres individuais de um valor de string Por exemplo suponha que tenhamos errado na digitação de um gato meuGato bato siamês Gostaríamos de corrigir o erro alterando o caractere no índice 0 de b para g Vamos experimentar meuGato0 g Traceback most recent call last File pyshell35 line 1 in module meuGato0 c TypeError str object does not support item assignment Python Representações de String Já sabemos que um valor de string é representado como uma sequência de caracteres delimitada por sinais de apóstrofo simples ou aspas duplas Hello World Hello World Se as aspas delimitarem um valor de string como construímos strings que já contêm aspas Se o texto a ser delimitado já contém um apóstrofo podemos usar delimitadores de aspas e viceversa desculpa Estou doente printdesculpa vai mostrar Estou doente material caixa dágua printmaterial vai mostrar caixa dágua Python Se o texto tiver os dois tipos de aspas então a sequência de escape ou é usada para indicar que o símbolo não é o delimitador de string mas faz parte do valor de string Assim se quiséssemos criar o valor de strings Caixa dágua escreveríamos o seguinte material Caixa d água a barra invertida dentro de uma string é interpretada como início de uma sequência de escape por exemplo printmaterial vai mostrar Caixa d água Python Valores de string definidos com delimitadores de aspas ou apóstrofos devem ser definidos em uma única linha Se a string tiver que representar texto de várias linhas temos duas opções Uma é usar apóstrofos triplos poema Para fazer uma campina Basta um só trevo e uma abelha Trevo abelha e fantasia Ou apenas fantasia Faltando a abelha printpoema se eu fizer printlenpoema vai retornar a quantidade de caracteres que há nesse poema Python Outra opção x Para fazer uma campina Basta um só trevo e uma abelha Trevo abelha e fantasia Ou apenas fantasia Faltando a abelha printx vai mostar Para fazer uma campina Basta um só trevo e uma abelha Trevo abelha e fantasia Ou apenas fantasia Faltando a abelha Temos outro exemplo de uma string que contém uma sequência de escape A sequência de escape significa um caractere de nova linha Quando ela aparece em um argumento de string da função print a sequência de escape de nova linha inicia uma nova linha Python Revisão do Operador de Indexação Já apresentamos o operador de indexação s hello prints0 exibirá h O operador de indexação também pode ser usado para obter um pedaço de uma string Por exemplo prints02 exibirá he Python A expressão s02 é avaliada como o pedaço da string s começando no índice 0 e terminando antes do índice 2 Em geral sij é a substring da string s que começa no índice i e termina no índice j1 Aqui estão mais alguns exemplos também ilustrados abaixo s hello prints34 exibirá l prints31 exibirá ll prints2 exibirá he prints3 exibirá llo Python Índice invertido 5 4 3 2 1 s h e l l o Índice 0 1 2 3 4 s02 h e s34 l o s31 l l Python Métodos de String A classe string aceita uma grande quantidade de métodos Esses métodos oferecem ao desenvolvedor um kit de ferramentas de processamento de textos que simplifica o desenvolvimento de aplicações que processam texto Vamos abordar alguns dos métodos mais utilizados Python método find mensagem Esta mensagem é secreta e não deverá ser divulgada a qualquer um que não tenha autorização secreta printmensagemfindsecreta retorna 16 O índice 16 é obtido pelo método find pois a string secreta aparece na string mensagem a partir do índice 16 Caso não encontre a string ele retorna 1 Python método count retorna o número de vezes que uma palavra aparece mensagem Esta mensagem é secreta e não deverá ser divulgada a qualquer um que não tenha autorização secreta printmensagemcountsecreta retorna 2 Python método replace mensagem Esta mensagem é secreta e não deverá ser divulgada a qualquer um que não tenha autorização secreta printmensagem x mensagemreplacesecreta confidencial printx Retorna Esta mensagem é confidencial e não deverá ser divulgada a qualquer um que não tenha autorização confidencial Python Assim a string mensagem não foi mudada pelo método replace Em vez disso uma cópia de mensagem com as substituições de substring apropriadas é retornada Lembrese de que as strings são imutáveis isto é elas não podem ser modificadas É por isso que o método de string replace retorna uma cópia modificada da string invocando o método em vez de alterando a string Python método capitalize torna o primeiro caractere da string maiúsculo mensagem secreta printmensagemcapitalize ou p mensagemcapitalize printp Python método upper torna o torna todos os caracteres maiúsculos mensagem secreta printmensagemupper ou p mensagemupper printp Python método split retorna uma lista de palavras na string mensagem este é o texto p mensagemsplitretorna uma lista este é o texto printp O método split usa os espaços em branco na string este é o texto para criar substrings de palavra que são colocadas em uma lista e retornadas Python método splitsep retorna uma lista de palavras na string O método split também pode ser chamado com uma string delimitadora como entrada a string delimitadora é usada no lugar do espaço em branco para quebrar a string Por exemplo para quebrar a string x 23571113para transformar em uma lista de números você usaria como delimitador p xsplit printp retorna uma lista 2 3 5 7 11 13 Python Resumo Uso Valor Retornado scapitalize Uma cópia da string s com o primeiro caractere em maiúscula se for uma letra no alfabeto scountalvo O número de ocorrências da substring alvo na string s sfindalvo O índice da primeira ocorrência da substring alvo na string s slower Uma cópia da string s convertida para minúsculas sreplaceantiga nova Uma cópia da string s em que cada ocorrência antiga quando a string s é lida da esquerda para a direita é substituída pela substring nova ssplitsep Uma lista de substrings strings s obtida usando a string delimitadora sep o delimitador padrão é o espaço em branco supper Uma cópia da string s convertida para maiúsculas Python Saída Formatada Nesta seção vamos aprender como formatar a saída usando recursos da função print e o método de string format Função print printn r nome mostra 5 166666666667 Ida O espaço em branco inserido entre os valores é simplesmente o separador padrão Se quisermos por exemplo inserir sinais de ponto e vírgula entre os valores em vez de espaços em branco também podemos printn r nome sep exibirá 5166666666667Ida Python A função print admite outro argumento de formatação end além de sep Por padrão cada chamada de função print sucessiva exibirá em uma linha separada Exemplo for nome in Joe Sam Tim Ann printnome exibirá Joe Sam Tim Ann Por padrão a instrução print acrescenta um caractere de nova linha aos argumentos a serem impressos Python Quando o argumento endalguma string é acrescentado aos argumentos a serem exibidos a string alguma string é exibida após todos os argumentos terem sido exibidos Se o argumento endalguma string não existir então a string padrão for nome in Joe Sam Tim Ann printnome end mostrará na mesma linha Joe Sam Tim Ann Python Método de String format Exemplo diasemana Quarta mês Outubro dia 9 ano 2013 hora 11 minuto 45 segundo 33 O que queremos é chamar a função print com as variáveis definidas como argumentos de entrada e obter algo do tipo Quarta 9 de outubro de 2013 às 114533 Python Um modo de conseguila seria usar a concatenação de strings para construir uma string no formato correto diasemana Quarta mês Outubro dia 9 ano 2013 hora 11 minuto 45 segundo 33 printdiasemana strdia de mês de strano às strhora strminutostrsegundo Python A técnica usada acima é bastante tediosa e passível de erros Há um modo mais fácil e bem mais flexível de formatar a saída A classe de string str oferece um método de classe poderoso format para essa finalidade diasemana Quarta mês Outubro dia 9 ano 2013 hora 11 minuto 45 segundo 33 print012formathora minuto segundo é exibido 114533 Python print201formathora minuto segundo é exibido331145 Quarta 9 de outubro de 2013 às 114533 print de de às formatdiasemana dia mês ano hora minuto segundo mostrará Quarta Outubro 10 2013 às 114533 Python A partir do Python 36 posso fazer fstrings way escolha 12 printfMeu número é escolha exibirá Meu número é 12 Anteriormente no Python 3 nas versões abaixo de 36 o modo de fazer era com a função format Python A partir do Python 36 posso fazer fstrings way diasemana Quarta mês Outubro dia 9 ano 2013 hora 11 minuto 45 segundo 33 printfdiasemana dia de mês de ano às horaminutosegundo exibirá Quarta 9 de Outubro de 2013 às 114533 Bibliografia Bibliografia PERKOVIC Ljubomir Introdução à Computação Usando Python Um foco no desenvolvimento de aplicações Editora LTC Livros Técnicos e Científicos Editora Ltda 2016