
Después de aprender a solicitar datos al usuario mediante input(), es el momento de trabajar con uno de los tipos de datos más utilizados en programación: las cadenas de texto. En este capítulo aprenderemos cómo crear textos, acceder a sus caracteres, comprobar si contienen determinadas palabras y utilizar algunos de sus métodos más habituales.
1. ¿Qué es una cadena de texto?
Una cadena de texto, o string, es un conjunto de caracteres utilizado para almacenar información textual.
Por ejemplo:
nombre = "Andrea"
También podemos almacenar frases completas.
mensaje = "Bienvenido al curso de Python"
Las cadenas pueden contener letras, números, espacios y muchos otros caracteres.
codigo = "A123"
¿Sabías que…? En Python el tipo de dato de las cadenas de texto se llama str, abreviatura de string.
2. Crear cadenas de texto
Las cadenas pueden escribirse utilizando comillas simples o dobles.
nombre = "Andrea" ciudad = 'Elche'
Ambas formas son equivalentes.
Si necesitamos incluir comillas dentro del texto, normalmente utilizaremos el otro tipo de comillas.
frase = 'Ella dijo "Hola".'
También podemos crear cadenas vacías.
texto = ""
Consejo: Utiliza siempre el mismo tipo de comillas dentro de un proyecto para mantener un estilo uniforme.
3. Concatenar y repetir cadenas
Podemos unir varias cadenas mediante el operador +.
nombre = "Andrea" apellido = "Lluch" print(nombre + " " + apellido)
Resultado:
Andrea Lluch
También podemos repetir una cadena utilizando *.
print("-" * 20)
Resultado:
--------------------
4. Obtener la longitud de una cadena
La función len() devuelve el número de caracteres de una cadena.
texto = "Python" print(len(texto))
Resultado:
6
También cuenta los espacios.
print(len("Hola mundo"))
Resultado:
10
5. Acceder a los caracteres mediante índices
Cada carácter ocupa una posición.
P y t h o n 0 1 2 3 4 5
Podemos acceder a cada uno mediante su índice.
texto = "Python" print(texto[0]) print(texto[3])
Resultado:
P h
También podemos utilizar índices negativos.
P y t h o n 0 1 2 3 4 5 -6 -5 -4 -3 -2 -1
print(texto[-1])
Resultado:
n
Advertencia: Si intentamos acceder a una posición que no existe se producirá un IndexError.
6. Comprobar si un texto contiene otro
Podemos comprobar si una cadena aparece dentro de otra utilizando in.
texto = "Python"
print("Py" in texto)
print("Java" in texto)
Resultado:
True False
También podemos utilizar not in.
print("Java" not in texto)
Resultado:
True
¿Sabías que…? Los operadores in y not in devuelven siempre un valor lógico (True o False).
Más adelante utilizaremos estos operadores junto con las estructuras condicionales (if) para comprobar si un texto contiene una palabra antes de tomar una decisión y con los bucles (for) para recorrer los caracteres de una cadena uno a uno.
Por ejemplo, en próximos capítulos podremos escribir instrucciones como estas:
# Comprueba si el texto contiene el carácter @
if "@" in correo:
print("El correo parece válido.")
o
# Recorre uno a uno los caracteres de una cadena
for letra in "Python":
print(letra)
No te preocupes si todavía no entiendes estas instrucciones. Las aprenderemos paso a paso en los próximos capítulos.
7. Métodos básicos de las cadenas
Las cadenas disponen de numerosos métodos que permiten modificarlas o analizarlas.
Convertir a mayúsculas.
El método upper() convierte todos los caracteres de la cadena en mayúsculas.
texto = "Python" print(texto.upper())
Resultado:
PYTHON
Convertir a minúsculas.
El método lower() convierte todos los caracteres de la cadena en minúsculas.
print(texto.lower())
Resultado:
python
Eliminar espacios al principio y al final.
El método strip() elimina los espacios que aparecen al principio y al final de una cadena.
texto = " Python " print(texto.strip())
Resultado:
Python
Buscar y reemplazar texto.
El método replace() sustituye un texto por otro.
texto = "Hola mundo"
print(texto.replace("mundo", "Python"))
Resultado:
Hola Python
Buscar la posición de un texto.
El método find() devuelve la posición en la que comienza un texto dentro de otro.
texto = "Programación"
print(texto.find("gra"))
Resultado:
3
Si no encuentra el texto devuelve -1.
Por ejemplo:
texto = "Programación"
print(texto.find("Python"))
Resultado:
-1
¿Sabías que…? En Python las posiciones comienzan en 0, por eso "gra" empieza en la posición 3 dentro de "Programación".
Advertencia: Los métodos no modifican la cadena original, sino que devuelven una nueva cadena con el resultado. Si quieres conservar el cambio, debes guardarlo en una variable
8. Errores habituales
| Error | Solución |
|---|---|
| Olvidar cerrar las comillas | Comprobar que la cadena empieza y termina con el mismo tipo de comillas. |
| Acceder a una posición inexistente | Comprobar el índice o utilizar len(). |
Escribir Upper() o LOWER() | Los nombres de los métodos distinguen entre mayúsculas y minúsculas. |
Pensar que upper() modifica la variable | Guardar el resultado en una variable si queremos conservarlo. |
Pensar que len() solo cuenta letras | Recuerda que también cuenta espacios y otros caracteres. |
Consejo: Si aparece un IndexError, revisa que la posición indicada exista realmente dentro de la cadena.
Al finalizar este capítulo ya sabemos trabajar con cadenas de texto, acceder a sus caracteres y utilizar algunos de sus métodos más habituales. En el siguiente capítulo aprenderemos a utilizar las estructuras condicionales if, elif y else para que nuestros programas reaccionen de forma diferente según los datos introducidos por el usuario.
9. Actividad
Crea un archivo llamado cadenas.py.
- Crea una variable con tu nombre completo.
- Muestra:
- El texto original.
- El texto en mayúsculas.
- El texto en minúsculas.
- El número de caracteres.
- La primera letra.
- La última letra.
- Comprueba si tu nombre contiene la letra a.
- Sustituye todos los espacios por guiones utilizando
replace().
10. Prácticas resueltas
Los siguientes ejercicios permiten practicar las operaciones más habituales con cadenas de texto. Intenta resolverlos antes de consultar la solución.
10.1. Mostrar las iniciales de un nombre
Crea un archivo llamado iniciales.py.
Solicita al usuario su nombre y su primer apellido. Muestra las iniciales de ambos.
Ejemplo:
Nombre: Andrea Apellido: Lluch Iniciales: A L
Solución
nombre = input("Nombre: ")
apellido = input("Apellido: ")
print("Iniciales:", nombre[0], apellido[0])
10.2. Contar caracteres
Crea un archivo llamado longitud.py.
Solicita una frase y muestra cuántos caracteres contiene utilizando len().
Ejemplo:
Introduce una frase: Hola mundo Número de caracteres: 10
Solución
frase = input("Introduce una frase: ")
print("Número de caracteres:", len(frase))
10.3. Convertir un texto a mayúsculas
Crea un archivo llamado mayusculas.py.
Solicita una frase y muéstrala completamente en mayúsculas.
Ejemplo:
Introduce una frase: Hola Python HOLA PYTHON
Solución
frase = input("Introduce una frase: ")
print(frase.upper())
10.4. Comprobar si una palabra aparece en una frase
Crea un archivo llamado buscar.py.
Solicita una frase y comprueba si contiene la palabra Python.
Muestra el resultado de la comprobación.
Ejemplo 1:
Introduce una frase: Estoy aprendiendo Python ¿Contiene la palabra Python?: True
Ejemplo 2:
Introduce una frase: Me gusta programar ¿Contiene la palabra Python?: False
Solución
frase = input("Introduce una frase: ")
print("¿Contiene la palabra Python?:", "Python" in frase.lower())
10.5. Crear un nombre de usuario
Crea un archivo llamado usuario.py.
Solicita el nombre y el primer apellido del usuario.
Genera un nombre de usuario uniendo ambos textos en minúsculas y sin espacios.
Ejemplo:
Nombre: Andrea Apellido: Lluch Nombre de usuario: andrealluch
Solución
nombre = input("Nombre: ")
apellido = input("Apellido: ")
usuario = nombre.lower() + apellido.lower()
print("Nombre de usuario:", usuario)
Sí. Mantendría exactamente el mismo formato que en los capítulos anteriores: 15 preguntas, mezclando teoría, interpretación de código y errores frecuentes.
11. Test de autoevaluación
Comprueba si has comprendido los conceptos principales de este capítulo respondiendo al siguiente test. Si alguna respuesta no es correcta, revisa el apartado correspondiente antes de continuar con el siguiente tema.
11.1. ¿Qué tipo de dato representa una cadena de texto en Python?
a) int
b) float
c) str ✅
d) bool
Retroalimentación: En Python las cadenas de texto pertenecen al tipo str (string).
11.2. ¿Cuál de las siguientes instrucciones crea correctamente una cadena de texto?
a) nombre = Andrea
b) nombre = «Andrea» ✅
c) nombre = 123
d) nombre = True
Retroalimentación: Los textos deben escribirse entre comillas simples o dobles.
11.3. ¿Qué mostrará este programa?
nombre = "Ana" print(nombre + " López")
a) AnaLópez
b) Ana López ✅
c) Ana + López
d) Error
Retroalimentación: El operador + permite concatenar cadenas de texto.
11.4. ¿Qué resultado produce esta instrucción?
print("*" * 5)
a)
*****
✅
b)
* * * * *
c)
**
d) Error
Retroalimentación: El operador * repite una cadena el número de veces indicado.
11.5. ¿Qué devuelve la función len()?
a) El primer carácter.
b) La longitud de una cadena. ✅
c) La última letra.
d) El tipo de dato.
Retroalimentación: len() devuelve el número de caracteres de una cadena.
11.6. ¿Qué mostrará este programa?
texto = "Python" print(texto[0])
a) y
b) P ✅
c) n
d) Error
Retroalimentación: Los índices comienzan en 0.
11.7. ¿Qué carácter devuelve texto[-1]?
texto = "Python"
a) P
b) y
c) n ✅
d) Error
Retroalimentación: El índice -1 corresponde al último carácter de la cadena.
11.8. ¿Qué operador permite comprobar si un texto contiene otro?
a) ==
b) +
c) in ✅
d) %
Retroalimentación: El operador in devuelve True si una cadena aparece dentro de otra.
11.9. ¿Qué mostrará este programa?
texto = "Python"
print("Py" in texto)
a) False
b) True ✅
c) Python
d) Error
Retroalimentación: "Py" forma parte de la cadena "Python".
11.10. ¿Qué hace el método upper()?
a) Convierte la cadena a minúsculas.
b) Convierte la cadena a mayúsculas. ✅
c) Elimina espacios.
d) Cuenta caracteres.
Retroalimentación: upper() devuelve una nueva cadena escrita completamente en mayúsculas.
11.11. ¿Qué hace el método strip()?
a) Elimina espacios al principio y al final de la cadena. ✅
b) Convierte el texto en mayúsculas.
c) Busca una palabra.
d) Sustituye un texto por otro.
Retroalimentación: strip() elimina únicamente los espacios iniciales y finales.
11.12. ¿Qué método sustituye una palabra por otra?
a) upper()
b) replace() ✅
c) len()
d) find()
Retroalimentación: replace() devuelve una nueva cadena con el texto sustituido.
11.13. ¿Qué devuelve find() cuando no encuentra el texto buscado?
a) 0
b) None
c) False
d) -1 ✅
Retroalimentación: Si el texto no existe dentro de la cadena, find() devuelve -1.
11.14. ¿Cuál de estos fragmentos producirá un error?
a)
texto = "Python" print(texto[2])
b)
texto = "Python" print(texto[10])
✅
c)
texto = "Python" print(len(texto))
d)
texto = "Python" print(texto.upper())
Retroalimentación: Intentar acceder a una posición que no existe produce un IndexError.
11.15. ¿Cuál de las siguientes afirmaciones es correcta?
a) Los métodos como upper() modifican siempre la cadena original.
b) len() devuelve el tipo de dato.
c) Los métodos de las cadenas devuelven una nueva cadena con el resultado. ✅
d) Los índices comienzan en 1.
Retroalimentación: Los métodos como upper(), lower() o replace() no modifican la cadena original; devuelven una nueva cadena con el resultado.
12. Actividad de ampliación
Descubre más métodos para trabajar con cadenas
En este capítulo hemos aprendido algunos de los métodos más utilizados para manipular cadenas de texto, como upper(), lower(), strip(), replace() y find(). Sin embargo, Python dispone de muchos más.
Investiga dos métodos diferentes de los que no aparecen en este capítulo y responde a las siguientes cuestiones:
- ¿Cómo se llama cada método?
- ¿Para qué sirve?
- Escribe un ejemplo de utilización.
- ¿En qué situación podría resultar útil?
Puedes consultar la documentación oficial de Python.
Objetivo: descubrir que las cadenas de texto disponen de numerosos métodos y aprender a consultar la documentación oficial de Python para ampliar conocimientos de forma autónoma.