Programas Python em Operações de String

Neste 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 na caixa do 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.
  Corrigir Liga Restauramos este erro de instalação

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 [start: stop: step] retorna uma fatia da string desde o início até a parada, mas sem incluir, 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 parada, a fatia se estenderá até o final da string.
  • E valores negativos de step podem ser usados ​​para retornar fatias a partir do final da string.

Então [::-1] retorna uma cópia invertida da string.

A seguinte célula de código 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 corrida é 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, chame is_palindrome() em cada string.
  • Se is_palindrome() retornar True, adicione a string à lista de palindromes.

Como você pode ver na saída acima, palindromes é uma lista de todas as strings palindrômicas em str_list.

  Corrigir Daemon Tools incapaz de acessar o arquivo de imagem MDF

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 Contador object retorna um dicionário Python: com os caracteres como as chaves e as contagens correspondentes como os valores.

Considere as strings “save” e “vase” conforme 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)
True

Como 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 ordenada de str1 é a mesma que a cópia ordenada 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 False

Vamos agora fazer algumas chamadas de função.

  • As strings “elbow” e “below” são anagramas e a função are_anagrams() retorna True.
  • E “state” e “tasted” não são anagramas, e a função retorna False.
are_anagrams("below","elbow")
True

are_anagrams("state","tasted")
False

Verifique se uma string Python está em maiúsculas

Aqui está nossa pergunta final para este tutorial.

  Como excluir uma conta de jogo permanentemente

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

  • Python tem um método de string embutido istitle(), que verifica se uma string está na caixa do título.

.istitle() retorna True se a string for formatada em maiúsculas, senão retorna 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 Smith

Na saída acima, você pode ver que a string “Jane Smith” agora está no título.

▶️ Tomemos outro exemplo.

check_titlecase("agatha Christie")

# Output
Agatha Christie

Desta 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.

Feliz aprendizagem e codificação!🎉