Programas Python em Operações de String
Publicados: 2022-04-26Neste tutorial, você escreverá programas em Python para resolver perguntas frequentes sobre operações de string .
Você aprenderá como verificar se as strings do Python são palíndromos , anagramas e estão no título .
Strings Python: Uma Revisão Rápida
Em Python, strings são poderosos tipos de dados integrados. Eles podem armazenar uma sequência de caracteres.
Indexação em Strings do Python: Como todos os iteráveis do Python, as strings também são indexadas a zero. Portanto, os índices válidos para uma string de comprimento N são 0, 1, 2 até N – 1.

Python também suporta indexação negativa para acessar elementos do final da string. Então -1 é o índice do último caractere na string, -2 é o índice do penúltimo caractere na string e assim por diante.
Imutabilidade das Strings do Python : Além disso, as strings do Python são imutáveis, portanto, você não pode modificá-las no local. No entanto, você pode chamar vários métodos de string neles e obter cópias de strings com o resultado desejado.
Agora que revisamos o básico das strings do Python, vamos resolver alguns problemas simples, mas interessantes.
Vamos começar.
Verifique se uma string Python é um palíndromo
Problema : Dada uma string Python, verifique se é ou não um palíndromo.
Se sim, retorne True; caso contrário, retorne False.
Portanto, nosso primeiro problema é verificar se uma determinada string é ou não um palíndromo.
Um palíndromo é uma string que lê o mesmo da esquerda para a direita, bem como da direita para a esquerda. Vamos listar alguns exemplos: carro de corrida, referência, nível, madame, radar e assim por diante.

Aqui estão os passos para resolver este problema:
- Obtenha uma cópia invertida da string e armazene-a em outra variável, se necessário.
- Compare os valores da string original e da string invertida.
- Se forem iguais, a string é um palíndromo. Então retorne True e pare.
- Se as cópias original e invertida não forem iguais, a string não é um palíndromo. Então devemos retornar False .
A operação de chave é obter uma cópia invertida da string. Em Python, existem algumas maneiras diferentes de fazer isso.
No entanto, vamos passar por duas abordagens:
- Usando fatiamento de string
- Usando a função reversed() e o método join()
Como reverter uma string Python usando Slicing
A sintaxe <any_str>[start: stop: step] retorna uma fatia da string <any_str> de start até mas sem incluir stop , com step size step .
- Se você omitir
start, a fatia começará no início da string. - Se você não especificar o índice de
stop, a fatia se estenderá até o final da string. - E valores negativos de
steppodem ser usados para retornar fatias a partir do final da string.
Então <any_str>[::-1] retorna uma cópia invertida da string.
A célula de código a seguir contém a definição da função is_palindrome() .
Ele recebe uma string como argumento e retorna True ou False dependendo se é ou não um palíndromo.
Aqui, usamos o fatiamento de string para obter uma cópia reversa da string.
def is_palindrome(this_str): rev_str = this_str[::-1] if (this_str == rev_str): return True else: return False️ Agora que definimos a função, podemos prosseguir e chamar com qualquer string válida como argumento.
is_palindrome("racecar") True Na célula de código acima, o carro de racecar é um palíndromo. Portanto, a função is_palindrome() retorna True conforme o esperado.
Agora, tente chamar a função com qualquer string que não seja um palíndromo, como river .
is_palindrome("river") False E como você pode ver, ele retorna False , o que está correto.
Como reverter uma string Python usando reversed() e join()
Em Python, você pode usar o método join() junto com a função reversed() para reverter uma string.
- A função
reversed()retorna um iterador reverso por meio dos caracteres na string. - O método
join()pode então ser usado para unir esses caracteres na ordem inversa.
Usando o método acima, você pode reescrever a função is_palindrome() como na célula de código abaixo.
def is_palindrome(this_str): rev_str = ''.join(reversed(this_str)) if (this_str == rev_str): return True else: return False Você também pode usar a função is_palindrome() dentro da compreensão da lista para coletar todos os palíndromos de uma lista mais longa de strings.
str_list = ["refer","blue","level","12321","dragon"] palindromes = [string for string in str_list if is_palindrome(string)] print(palindromes) # Output ['refer', 'level', '12321']Veja como o código acima funciona:
- Percorra
str_list, chameis_palindrome()em cada string. - Se
is_palindrome()retornarTrue, adicione a string à lista depalindromes.
Como você pode ver na saída acima, palindromes é uma lista de todas as strings palindrômicas em str_list .
Verifique se duas strings Python são anagramas
Outra pergunta popular que você pode encontrar em entrevistas é verificar se um par de strings str1 e str2 são ou não anagramas.
Duas strings são chamadas de anagramas se a contagem dos caracteres nas duas strings for exatamente a mesma. Isso significa que você pode obter uma das strings permutando ou reorganizando os caracteres na outra string.
Exemplos de anagramas incluem estado-gosto, salvar-vaso, cotovelo-abaixo e assim por diante.

Como verificar anagramas usando Counter Object em Python
Uma maneira simples e intuitiva é calcular o número de ocorrências de cada caractere nas duas strings. E, em seguida, verifique se as contagens são iguais.

Isso pode ser feito ainda mais facilmente usando o objeto Counter do módulo itertools . O objeto Counter retorna um dicionário Python: com os caracteres como as chaves e as contagens correspondentes como os valores .
Considere as strings "save" e "vase" como mostrado abaixo.
str1 = "save" str2 = "vase" Aqui, c1 e c2 são objetos de contador contendo as contagens de caracteres das strings str1 e str2 respectivamente.
from collections import Counter c1 = Counter(str1) c2 = Counter(str2) print(c1) print(c2) c1 == c2 # Output Counter({'s': 1, 'a': 1, 'v': 1, 'e': 1}) Counter({'v': 1, 'a': 1, 's': 1, 'e': 1}) True c1 == c2 retorna True como str1 e str2 são anagramas.
Usando essa lógica, agora podemos seguir em frente e definir a função are_anagrams() com dois parâmetros word1 e word2 . No corpo da função, verificamos se Counter(word1) == Counter(word2) .
def are_anagrams(word1, word2): if Counter(word1) == Counter(word2): return True else: return False ️ Para verificar, chame are_anagrams() com str1 , str2 como argumentos. Como str1 e str2 são anagramas (“save” e “vase”), a função retorna True , o que está correto.
are_anagrams(str1, str2) TrueComo verificar anagramas usando cópias classificadas de strings
Existe outra maneira de fazer isso.
Se duas strings são anagramas, suas cópias ordenadas são iguais.
Assim, podemos reescrever a função are_anagrams() para verificar se a versão classificada de str1 é a mesma que a cópia classificada de str2 . Se forem iguais, então as duas strings são anagramas; caso contrário, eles não são.
Usando o método acima para verificar a igualdade de cópias ordenadas, podemos reescrever a função are_anagrams() da seguinte forma.
def are_anagrams(word1, word2): if sorted(word1) == sorted(word2): return True else: return FalseVamos agora fazer algumas chamadas de função.
- As strings “elbow” e “below” são anagramas e a função
are_anagrams()retornaTrue. - E “state” e “tasted” não são anagramas, e a função retorna
False.
are_anagrams("below","elbow") True are_anagrams("state","tasted") FalseVerifique se uma string Python está em maiúsculas
Aqui está nossa pergunta final para este tutorial.
Problema : Dada uma string: o nome de uma pessoa—com nome e sobrenome.
Você deve verificar se a primeira letra do nome e do sobrenome estão em maiúscula.
Esse tipo de caixa em que a primeira letra de cada palavra é maiúscula é chamada de caixa de título .
Então você tem que verificar se o nome está em maiúsculas:
1. Se sim, emita uma mensagem informando que a formatação está em maiúsculas e minúsculas.
2. Caso contrário, retorne uma cópia da string formatada em maiúsculas e minúsculas

- O Python tem um método de string
istitle(), que verifica se uma string está na caixa do título.
<str>.istitle()retornaráTruese a string<str>for formatada em maiúsculas, caso contrário retornaráFalse.
- E o método de string
title()do Python retorna uma cópia da string formatada em maiúsculas e minúsculas.
Então agora você pode usar esses dois métodos para resolver o problema.
Defina uma função check_titlecase() que aceite name como argumento.
- Você pode chamar o método
istitle()na string de entrada para verificar se ela está formatada em maiúsculas e minúsculas. - Se
True, você pode imprimir que a string já está em maiúsculas. - Caso contrário, você pode chamar o método
title()e retornar uma cópia da string no título.
A célula de código a seguir mostra a definição da função check_titlecase() .
def check_titlecase(name): if name.istitle(): print(f"'{name}' is already formatted in title case.") else: return name.title() Vamos agora chamar o método check_titlecase() com um argumento.
check_titlecase("jane smith") # Output Jane SmithNa saída acima, você pode ver que a string “Jane Smith” agora está no título.
️ Vamos dar outro exemplo.
check_titlecase("agatha Christie") # Output Agatha ChristieDesta vez, vamos chamar a função com uma string em maiúsculas.
check_titlecase("Grace Hopper") # Output 'Grace Hopper' is already formatted in title case.Somos notificados de que a string está formatada em maiúsculas e a função funciona conforme o esperado.
Conclusão
Agora vamos resumir os problemas que discutimos até agora.
- Para verificar se uma string é um palíndromo, verifique se a string e sua versão invertida são iguais. Você pode usar o fatiamento de strings ou métodos integrados para reverter strings.
- Para verificar se duas strings são anagramas, verifique se suas cópias ordenadas são iguais. E para classificar uma string, use a função integrada sorted() .
- Para verificar se um nome está em maiúsculas e minúsculas, use o método .istitle() para verificação e o método .title() para obter uma cópia em maiúsculas e minúsculas da string.
Espero que você tenha gostado deste tutorial sobre strings Python. Como próximo passo, aprenda a usar compreensões de lista em Python ou aprenda sobre o operador não igual em Python.
Boa aprendizagem e codificação!
