En este tutorial, escribirá programas en Python para resolver preguntas frecuentes sobre operaciones con cadenas.
Aprenderá a comprobar si las cadenas de Python son palíndromos, anagramas y están en mayúsculas y minúsculas.
Cadenas en Python: Un repaso rápido
En Python, las cadenas son potentes tipos de datos incorporados. Pueden almacenar una secuencia de caracteres.
Indexación en Python Strings: Como todos los iterables de Python, las cadenas también tienen índice cero. Así, los índices válidos para una cadena de longitud N son 0, 1, 2 hasta N - 1.

Python también admite la indexación negativa para acceder a los elementos desde el final de la cadena. Así, -1 es el índice del último carácter de la cadena, -2 es el índice del penúltimo carácter de la cadena, y así sucesivamente.
Inmutabilidad de las cadenas en Python: Además, las cadenas en Python son inmutables, por lo que no puede modificarlas in situ. Sin embargo, puede llamar a varios métodos de cadenas sobre ellas y obtener copias de cadenas con el resultado deseado.
Ahora que hemos repasado los fundamentos de las cadenas de Python, procedamos a resolver algunos problemas sencillos pero interesantes.
Empecemos.
Comprobar si una cadena Python es un palíndromo
Problema: Dada una cadena Python, compruebe si es o no un palíndromo.
En caso afirmativo, devuelva True; en caso contrario, devuelva False.
Así que nuestro primer problema es comprobar si una cadena dada es o no un palíndromo.
Un palíndromo es una cadena que se lee igual tanto de izquierda a derecha como de derecha a izquierda. Enumeremos algunos ejemplos: coche de carreras, refer, nivel, señora, radar, etc.

He aquí los pasos para resolver este problema:
- Obtenga una copia invertida de la cadena y guárdela en otra variable, si es necesario.
- Compare los valores de la cadena original y de la cadena invertida.
- Si son iguales, la cadena es un palíndromo. Entonces devuelva True y deténgase.
- Si las copias original e invertida no son iguales, la cadena no es un palíndromo. Entonces debemos devolver Falso.
La operación clave es obtener una copia invertida de la cadena. En Python, hay varias formas de hacerlo.
Sin embargo, vamos a repasar dos enfoques:
- Utilizando el troceado de cadenas
- Utilizando la función invertido() y el método join()
Cómo invertir una cadena en Python utilizando el rebanado
La sintaxis <cualquier_cadena>
[inicio: parada: paso]
devuelva una rebanada de la cadena <cualquier_cadena>
desde el inicio
hasta la parada
, pero sin incluirla, con el tamaño de paso paso
.
- Si omite
inicio
, la rebanada comienza al principio de la cadena. - Si no especifica el índice
stop
, la rebanada se extiende hasta el final de la cadena. - Y se pueden utilizar valores negativos de
paso
para devolver rebanadas que empiecen desde el final de la cadena.
Así, <cualquier_cadena>[::-1]
devuelve una copia invertida de la cadena.
La siguiente celda de código contiene la definición de la función is_palindrome()
.
Toma una cadena como argumento y devuelve Verdadero
o Falso
dependiendo de si es o no un palíndromo.
Aquí hemos utilizado el troceado de cadenas para obtener una copia inversa de la cadena.
def is_palindrome(this_str):
rev_str = this_str[::-1]
if (this_str == rev_str):
return True
else:
return False
▶️ Ahora que hemos definido la función, podemos seguir adelante y llamarla con cualquier cadena válida como argumento.
is_palindrome("racecar")
True
En la celda de código anterior, racecar
es un palíndromo. Así que la función is_palíndromo ()
devuelva True
como se esperaba.
Ahora, intente llamar a la función con cualquier cadena que no sea un palíndromo, como río
.
is_palindrome("river")
False
Y como puede ver, devuelve False
, lo cual es correcto. ✅
Cómo invertir una cadena en Python utilizando reversed() y join()
En Python, puede utilizar el método join (
) junto con la función invertida (
) para invertir una cadena.
- La función
reversed
() devuelve un iterador inverso a través de los caracteres de la cadena. - A continuación, puede utilizar el método
join
() para unir esos caracteres en el orden inverso.
Utilizando el método anterior, puede reescribir la función is_palindrome (
) como en la celda de código siguiente.
def is_palindrome(this_str):
rev_str = ''.join(reversed(this_str))
if (this_str == rev_str):
return True
else:
return False
También puede utilizar la función is_palindrome()
dentro de la comprensión de listas para recoger todos los palíndromos de una lista más larga de cadenas.
str_list = ["refer", "azul", "nivel", "12321", "dragón"]
palíndromos = [cadena para cadena en str_list if is_palíndromo(cadena)]
print(palíndromos)
# Salida
['refer', 'nivel', '12321']
Así es como funciona el código anterior
- Recorra
str_list
, llame a is_palindrome(
) en cada cadena. - Si
is_palindrome
() devolverTrue
, añada la cadena a la lista depalíndromos
.
Como puede ver en la salida anterior, palíndromos
es una lista de todas las cadenas palindrómicas de str_list
.
Comprobar si dos cadenas de Python son anagramas
Otra pregunta popular que puede encontrarse en las entrevistas es comprobar si un par de cadenas str1
y str2
son o no anagramas.
Se dice que dos cadenas son anagramas si los recuentos de los caracteres de las dos cadenas son exactamente iguales. Esto significa que se puede obtener una de las cadenas permutando o reordenando los caracteres de la otra cadena.
Algunos ejemplos de anagramas son estado-gusto, guardar-vaso, codo-abajo, etc.

Cómo buscar anagramas utilizando el objeto contador en Python
Una forma sencilla e intuitiva es calcular el número de apariciones de cada carácter en las dos cadenas. Y luego comprobar si los recuentos son iguales.
Esto puede hacerse más fácilmente utilizando el objeto Contador
del módulo itertools
. El objeto Contador devuelve un diccionario Python: con los caracteres como claves y los recuerdos correspondientes como valores.
Considere las cadenas "guardar"
y "jarrón
" como se muestra a continuación.
str1 = "save"
str2 = "vase"
Aquí, c1
y c2
son objetos contadores que contienen los recuentos de caracteres de las cadenas str1
y str2
respectivamente.
from colecciones import Contador
c1 = Contador(cadena1)
c2 = Contador(cadena2)
print(c1)
print(c2)
c1 == c2
# Salida
Contador({'s': 1, 'a': 1, 'v': 1, 'e': 1})
Contador({'v': 1, 'a': 1, 's': 1, 'e': 1})
Verdadero
c1 == c2
devuelva Verdadero
ya que str1
y str2
son anagramas.
Utilizando esta lógica, ahora podemos seguir adelante y definir la función are_anagrams()
con dos parámetros word1
y word2
. En el cuerpo de la función, comprobamos si Contador(palabra1) == Contador(palabra2)
.
def are_anagrams(palabra1, palabra2):
if Contador(palabra1) == Contador(palabra2):
return Verdadero
else:
return Falso
▶️ Para verificarlo, llame a are_anagrams()
con str1
, str2
como argumentos. Como str1
y str2
son anagramas ("guardar" y "jarrón"), la función devuelve True
, lo que es correcto.
are_anagrams(str1, str2)
True
Cómo comprobar si hay anagramas utilizando copias ordenadas de cadenas
Hay otra forma de hacerlo.
Si dos cadenas son anagramas, entonces sus copias ordenadas son iguales.
Así que podemos reescribir la función are_anagrams()
para comprobar si la versión ordenada de str1
es la misma que la copia ordenada de str2
. Si son iguales, entonces las dos cadenas son anagramas; en caso contrario, no lo son.
Utilizando el método anterior para comprobar la igualdad de las copias ordenadas, podemos reescribir la función are_anagrams()
como sigue.
def are_anagrams(palabra1, palabra2):
if ordenada(palabra1) == ordenada(palabra2):
return True
else:
return False
Hagamos ahora algunas llamadas a funciones.
- Las cadenas "codo" y "abajo" son anagramas y la función
are_anagrams()
devuelvaTrue
. - Y "estado" y "probado" no son anagramas y la función devuelve
False
.
are_anagrams("below", "elbow")
True
are_anagrams("state", "tasted")
False
Comprobar si una cadena Python está en mayúsculas y minúsculas
He aquí nuestra última pregunta para este tutorial.
Problema: Dada una cadena: el nombre y apellidos de una persona.
Tiene que comprobar si la primera letra tanto del nombre como del apellido están en mayúsculas.
Este tipo de mayúsculas en el que la primera letra de cada palabra está en mayúscula se denomina mayúsculas y minúsculas.
Así que tiene que comprobar si el nombre está en mayúscula inicial:
1. En caso afirmativo, emita un mensaje indicando que el formato está en mayúsculas y minúsculas.
2. Si no, devuelva una copia de la cadena formateada en el title case

- Python tiene un método incorporado para cadenas,
istitle(
), que comprueba si una cadena está en el caso del título.
<str>.istitle()
devuelvaTrue
si la cadena<str>
está formateada en el caso del título, de lo contrario devuelveFalse
.
- Y el método de Python para cadenas
title
() devuelve una copia de la cadena formateada en el caso del título.
Así que ahora puede utilizar estos dos métodos para resolver el problema.
Define una función check_titlecase
() que acepte nombre
como argumento.
- Puede llamar al método
istitle
() sobre la cadena de entrada para comprobar si está formateada en mayúsculas y minúsculas. - Si
es True
, puede imprimir que la cadena ya está en mayúsculas y minúsculas. - Si no, puede llamar al método
title
() y devolver una copia de la cadena en el caso del título.
La siguiente celda de código muestra la definición de la función check_titlecase ()
.
def comprobar_titular(nombre):
if nombre.estitular():
print(f"'{nombre}' ya está formateado en mayúsculas y minúsculas.")
else:
return nombre.titular()
Llamemos ahora al método check_titlecase (
) con un argumento.
check_titlecase("jane smith")
# Salida
Jane Smith
En la salida anterior, puede ver que la cadena "Jane Smith" está ahora en mayúsculas y minúsculas.
▶️ Veamos otro ejemplo.
check_titlecase("agatha Christie")
# Salida
Agatha Christie
Esta vez, llamemos a la función con una cadena en mayúsculas y minúsculas.
check_titlecase("Grace Hopper")
# Salida
'Grace Hopper' ya está formateada en mayúsculas y minúsculas.
Se nos notifica que la cadena está formateada en el caso del título, y la función funciona como se esperaba.
Conclusión 👩🏫
Ahora vamos a resumir los problemas que hemos discutido hasta ahora.
- Para comprobar si una cadena es un palíndromo, compruebe si la cadena y su versión invertida son iguales. Puede utilizar el troceado de cadenas o métodos incorporados para invertir cadenas.
- Para comprobar si dos cadenas son anagramas, compruebe si sus copias ordenadas son iguales. Y para ordenar una cadena, utilice la función incorporada ordenado().
- Para comprobar si un nombre está en mayúsculas y minúsculas, utilice el método . istitle () para comprobarlo y el método .title() para obtener una copia en mayúsculas y minúsculas de la cadena.
Espero que haya disfrutado de este tutorial sobre cadenas en Python. Como siguiente paso, aprenda a utilizar las comprensiones de listas en Python o aprenda sobre el operador no igual en Python.
Feliz aprendizaje y codificación!🎉