🐍 Strings en Python

Monitoría de Lógica y Algoritmia

Autor/a

Catalina Gómez

Fecha de publicación

15 de agosto de 2026

👋 Bienvenidos

¿Qué vamos a aprender?

Los strings (str) son cadenas de caracteres. En Python aparecen constantemente: nombres, correos, contraseñas, archivos, mensajes, códigos, etc.

En esta monitoría vamos a aprender a:

  • crear y explorar strings;
  • acceder a caracteres mediante índices y slicing;
  • transformar y limpiar texto;
  • buscar información;
  • separar y unir cadenas;
  • validar datos;
  • combinar strings con if, operadores lógicos y input();
  • resolver retos sin depender de memorizar una lista de métodos.
Tip💡 Idea clave

No se trata de memorizar 30 métodos. Se trata de reconocer qué problema tengo y elegir la herramienta adecuada.


1. ¿Qué es un str?

Un string es una cadena de caracteres.

nombre = "Catalina"
universidad = "UPB"
carrera = "Ingeniería Industrial"

Podemos comprobar el tipo:

type(nombre)

También podemos tener números representados como texto:

edad_numero = 22
edad_texto = "22"

print(type(edad_numero))
print(type(edad_texto))
Advertencia

22 y "22" no son lo mismo. El primero es un int; el segundo es un str.

🎯 Mini reto 1

¿Qué tipo tiene cada variable?

a = "2026"
b = 2026
c = "UPB"
d = True

2. Conociendo nuestros strings

len()

len() cuenta cuántos caracteres tiene un string.

texto = "Python"

print(len(texto))

Resultado:

6

Los espacios también cuentan:

texto = "Hola mundo"

print(len(texto))

Resultado:

10

🎯 Reto

¿Cuántos caracteres tiene?

frase = "Ingeniería Industrial"

¿El espacio cuenta?

💡 Ver respuesta

Sí. El espacio también es un carácter.


3. Índices y slicing

Python empieza a contar desde 0.

Para:

texto = "PYTHON"

tenemos:

 P   Y   T   H   O   N
 0   1   2   3   4   5

Podemos acceder a una posición:

print(texto[0])
print(texto[2])
print(texto[5])

También podemos usar índices negativos:

print(texto[-1])  # N
print(texto[-2])  # O

Slicing

print(texto[0:3])

Resultado:

PYT

La posición final no se incluye.

Otros ejemplos:

print(texto[1:4])
print(texto[:3])
print(texto[3:])
print(texto[::-1])
Nota🧠 Regla mental

En texto[inicio:fin], Python toma desde inicio y se detiene antes de fin.

🎯 Reto 2

Dado:

palabra = "ALGORITMO"

Obtén:

  1. La primera letra.
  2. La última letra.
  3. "ALGO".
  4. "RITMO".
  5. La palabra invertida.

4. Transformar texto

upper()

Convierte las letras a mayúsculas.

texto = "hola mundo"

print(texto.upper())

Resultado:

HOLA MUNDO

Los números y símbolos no cambian:

print("Python 2026!".upper())

⚠️ Importante

Los strings son inmutables. Esto:

nombre = "catalina"
nombre.upper()

print(nombre)

sigue mostrando:

catalina

Para guardar el cambio:

nombre = nombre.upper()

🎯 Reto

¿Qué imprime?

texto = "PyThOn 3.14"
print(texto.upper())

lower()

Convierte las letras a minúsculas.

texto = "HOLA MUNDO"

print(texto.lower())

Una aplicación muy común es normalizar datos recibidos con input():

respuesta = input("¿Desea continuar? ").lower()

if respuesta == "si":
    print("Continuamos")
Advertencia

"Sí".lower() sigue teniendo tilde: "sí". Si quieres aceptar "si" y "sí", debes contemplar ambas posibilidades.

🎯 Reto

Haz que cualquiera de estas entradas se convierta en "python":

PYTHON
Python
PyThOn

capitalize()

Pone en mayúscula la primera letra y convierte el resto a minúsculas.

texto = "hOLA MUNDO"

print(texto.capitalize())

Resultado:

Hola mundo

Compara:

texto = "hOLA MUNDO"

print(texto.upper())
print(texto.capitalize())

title()

Pone en mayúscula la primera letra de cada palabra.

nombre = "cAtAlInA góMeZ"

print(nombre.title())

Resultado:

Catalina Gómez

Muy útil para nombres:

nombre = input("Nombre completo: ")

nombre = nombre.strip().title()

print(nombre)

swapcase()

Intercambia mayúsculas y minúsculas.

texto = "Hola Mundo"

print(texto.swapcase())

Resultado:

hOLA mUNDO

🎯 Reto 3

¿Qué imprime?

texto = "PyThOn 2026!"
print(texto.swapcase())

5. Limpiar texto

strip()

Elimina espacios al principio y al final.

nombre = "   Catalina   "

print(nombre.strip())

Resultado:

Catalina

No elimina los espacios internos:

texto = "   Hola    Mundo   "

print(texto.strip())

Resultado:

Hola    Mundo

Una aplicación real:

correo = "   ESTUDIANTE@UPB.EDU.CO   "

correo = correo.strip().lower()

print(correo)

Resultado:

estudiante@upb.edu.co

lstrip()

Elimina espacios de la izquierda.

texto = "     Hola     "

print(texto.lstrip())

rstrip()

Elimina espacios de la derecha.

texto = "     Hola     "

print(texto.rstrip())
Nota

lstrip() → izquierda
rstrip() → derecha
strip() → ambos lados

🎯 Reto 4

¿Qué muestra cada línea?

texto = "   Python   "

print(repr(texto.lstrip()))
print(repr(texto.rstrip()))
print(repr(texto.strip()))

Usamos repr() para poder ver los espacios.


6. Reemplazar texto

replace()

Sintaxis:

texto.replace(viejo, nuevo)

Ejemplo:

frase = "Me gusta Java"

nueva_frase = frase.replace("Java", "Python")

print(nueva_frase)

Resultado:

Me gusta Python

También podemos eliminar caracteres:

telefono = "300-123-4567"

telefono = telefono.replace("-", "")

print(telefono)

Podemos limitar cuántos reemplazos hacemos:

texto = "banana"

print(texto.replace("a", "o", 1))

Resultado:

bonana

🎯 Reto 5

Transforma:

texto = "Python es difícil. Python requiere práctica."

en:

programación es difícil. programación requiere práctica.

7. Buscar información

count()

Cuenta cuántas veces aparece algo.

texto = "banana"

print(texto.count("a"))

Resultado:

3

También podemos contar palabras:

frase = "Python es genial y Python es poderoso"

print(frase.count("Python"))

🎯 Reto

¿Cuántas veces aparece "o"?

frase = "Hola, ¿cómo estás?"

find()

Busca la posición donde aparece un texto.

texto = "Python"

print(texto.find("t"))

Resultado:

2

Recuerda:

P  y  t  h  o  n
0  1  2  3  4  5

Si no encuentra el texto:

print(texto.find("z"))

Resultado:

-1

Una aplicación:

correo = "estudiante@upb.edu.co"

if correo.find("@") != -1:
    print("Tiene @")

Aunque normalmente es más claro:

if "@" in correo:
    print("Tiene @")

rfind()

Busca desde la derecha.

texto = "banana"

print(texto.find("a"))
print(texto.rfind("a"))

Resultado:

1
5

index()

Es parecido a find(), pero hay una diferencia importante.

texto = "Python"

print(texto.index("t"))

2

Si no encuentra el texto, index() produce un ValueError, mientras find() devuelve -1.

Advertencia

Si no estás seguro de que el texto exista, find() puede ser más conveniente.


8. ¿El texto comienza o termina así?

startswith()

archivo = "reporte_final.pdf"

print(archivo.startswith("reporte"))

True

print(archivo.startswith("tesis"))

False

endswith()

archivo = "datos.xlsx"

print(archivo.endswith(".xlsx"))

True

Aplicación:

archivo = input("Nombre del archivo: ")

if archivo.endswith(".csv"):
    print("Es un CSV")
elif archivo.endswith(".xlsx"):
    print("Es un Excel")
else:
    print("Formato diferente")

🎯 Reto 6

Haz un programa que reciba un nombre de archivo y diga si es:

  • .pdf
  • .csv
  • .xlsx
  • otro formato

9. Separar información

split()

Convierte un string en una lista.

frase = "Python es muy interesante"

palabras = frase.split()

print(palabras)

Resultado:

['Python', 'es', 'muy', 'interesante']

Podemos usar un separador específico:

datos = "Catalina,Gómez,Industrial,9"

print(datos.split(","))

Resultado:

['Catalina', 'Gómez', 'Industrial', '9']

Y luego acceder a cada elemento:

datos = "Catalina,Gómez,Industrial,9"

partes = datos.split(",")

print(partes[0])
print(partes[1])
print(partes[2])
print(partes[3])

🎯 Reto 7

Dado:

datos = "Ana|22|Ingeniería|UPB"

separa la información y muestra:

Nombre: Ana
Edad: 22
Carrera: Ingeniería
Universidad: UPB

10. Unir información

join()

Hace el proceso contrario a split().

palabras = ["Python", "es", "genial"]

frase = " ".join(palabras)

print(frase)

Resultado:

Python es genial

También:

numeros = ["2026", "08", "18"]

fecha = "-".join(numeros)

print(fecha)

Resultado:

2026-08-18
Tip🧠 Recuerda

split():

string → lista

join():

lista → string

🎯 Reto 8

Dada:

palabras = ["Ingeniería", "Industrial", "UPB"]

obtén:

Ingeniería - Industrial - UPB

11. Validar información

Los métodos que empiezan con is... normalmente devuelven True o False.

isdigit()

Comprueba si todos los caracteres son dígitos.

print("123".isdigit())
print("123a".isdigit())

Resultado:

True
False

Muy útil con input():

edad = input("Edad: ")

if edad.isdigit():
    edad = int(edad)
    print("Edad registrada:", edad)
else:
    print("Debes ingresar un número")
Advertencia

input() devuelve un str, incluso si el usuario escribe un número.


isdecimal()

También valida caracteres decimales.

print("123".isdecimal())
print("abc".isdecimal())

Para esta monitoría, basta con entender que es una validación más específica relacionada con caracteres decimales.


isnumeric()

Comprueba si los caracteres representan valores numéricos.

print("123".isnumeric())
print("Hola".isnumeric())

Pregunta:

"12.5".isnumeric()

¿Será True?

No. El punto . hace que no sea una cadena formada únicamente por caracteres numéricos.


isalpha()

Comprueba si todos los caracteres son letras.

print("Hola".isalpha())
print("Hola123".isalpha())
print("Hola Mundo".isalpha())

Los dos últimos son False.

¿Por qué?

  • Hola123 contiene números.
  • Hola Mundo contiene un espacio.

isalnum()

Comprueba si contiene únicamente letras y números.

print("ABC123".isalnum())
print("ABC 123".isalnum())

Resultado:

True
False

isspace()

Comprueba si todos los caracteres son espacios.

print("   ".isspace())
print(" Hola ".isspace())

islower() e isupper()

print("hola".islower())
print("HOLA".isupper())

También:

print("Hola".islower())
print("Hola".isupper())

Ambos serán False.


istitle()

Comprueba si el texto está en formato título.

print("Hola Mundo".istitle())
print("hola mundo".istitle())

isidentifier()

Comprueba si un string puede tener la forma de un identificador válido de Python.

print("nombre".isidentifier())
print("nombre_123".isidentifier())
print("123nombre".isidentifier())
print("mi nombre".isidentifier())

Resultado:

True
True
False
False

Esto conecta directamente con las reglas para nombrar variables.


12. in: comprobar si algo está dentro

No necesitamos escribir __contains__() directamente.

Usamos:

texto = "Python"

print("Py" in texto)
print("Java" in texto)

Resultado:

True
False

Aplicación:

correo = "estudiante@upb.edu.co"

if "@" in correo:
    print("El correo contiene @")

También podemos usar not in:

if " " not in usuario:
    print("No contiene espacios")
Nota

in es una herramienta fundamental para preguntar si un elemento está contenido en otro.


13. Métodos especiales: los __dunder__

En dir() también aparecen elementos como:

__add__
__class__
__contains__
__eq__
__getitem__
__len__
__str__

Estos son métodos especiales.

Por ejemplo:

texto = "Hola"

len(texto)

está relacionado internamente con:

texto.__len__()

Y:

texto[0]

está relacionado con:

texto.__getitem__(0)
Advertencia

No necesitas memorizar ni usar directamente estos métodos en esta monitoría. Lo importante es reconocer que Python los utiliza para definir el comportamiento de los objetos.


14. 🧩 Retos de integración

Ahora dejamos de preguntar:

“¿Qué hace strip()?”

y empezamos a preguntar:

“Tengo este problema. ¿Qué herramientas necesito?”

🟢 Reto 1 — Nombre

nombre = "   mARia jOsE pEReZ   "

Obtén:

Maria Jose Perez

Pistas:

  • necesitas eliminar espacios;
  • necesitas transformar el formato.

🟢 Reto 2 — Correo

correo = "   ESTUDIANTE@UPB.EDU.CO   "

Obtén:

estudiante@upb.edu.co

Después verifica si termina en:

@upb.edu.co

🟡 Reto 3 — Usuario

Solicita un usuario:

usuario = input("Ingrese su usuario: ")

Debe ser válido si:

  • tiene mínimo 5 caracteres;
  • contiene únicamente letras y números.
Tip

¿Qué dos herramientas necesitas?


🟡 Reto 4 — Teléfono

Solicita:

telefono = input("Ingrese su teléfono: ")

El programa debe comprobar que contiene únicamente números.

Si es válido:

Teléfono válido

Si no:

Teléfono no válido

🟡 Reto 5 — Frase

Dado:

frase = "Python es fácil y Python es poderoso"

El programa debe mostrar:

  1. número de palabras;
  2. número de veces que aparece "Python";
  3. primera palabra;
  4. última palabra.

15. 🏆 Reto final

Construye un pequeño programa de registro:

nombre = input("Nombre completo: ")
correo = input("Correo: ")
telefono = input("Teléfono: ")

El programa debe:

  • limpiar espacios innecesarios;
  • convertir el nombre a formato título;
  • convertir el correo a minúsculas;
  • comprobar que el correo contiene @;
  • comprobar que el teléfono contiene únicamente números;
  • mostrar la longitud del nombre;
  • mostrar todos los datos organizados.

💭 No hay una única solución

La meta no es copiar un código.

La meta es que puedas responder:

¿Qué problema tengo y qué herramienta de Python me ayuda a resolverlo?


16. 🧠 Mapa rápido de herramientas

Necesito… Uso…
Mayúsculas upper()
Minúsculas lower()
Primera letra mayúscula capitalize()
Cada palabra con mayúscula inicial title()
Intercambiar mayúsculas/minúsculas swapcase()
Quitar espacios extremos strip()
Reemplazar texto replace()
Contar apariciones count()
Buscar una posición find()
Buscar desde la derecha rfind()
Saber si empieza con algo startswith()
Saber si termina con algo endswith()
Separar texto split()
Unir elementos join()
Comprobar números isdigit()
Comprobar letras isalpha()
Letras + números isalnum()
Comprobar espacios isspace()
Comprobar minúsculas islower()
Comprobar mayúsculas isupper()
Buscar contenido in
Contar caracteres len()

🚀 ¿Qué sigue?

Ya conoces varias herramientas. Ahora viene la parte verdaderamente importante:

PROBLEMA
   ↓
¿QUÉ INFORMACIÓN TENGO?
   ↓
¿QUÉ NECESITO OBTENER?
   ↓
¿QUÉ HERRAMIENTA PUEDO USAR?
   ↓
CÓDIGO
   ↓
PRUEBA
   ↓
¿FUNCIONA?

🎓 Recuerda

Programar no es memorizar funciones.

Programar es descomponer un problema y elegir las herramientas adecuadas para resolverlo.

📚 Referencias

Las siguientes fuentes fueron consultadas para complementar los conceptos de strings y métodos de cadenas en Python:

  1. Python Software Foundation. Built-in Types — Text Sequence Type — str. Python Documentation.
    https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str

  2. Python Software Foundation. Built-in Functions. Python Documentation.
    https://docs.python.org/3/library/functions.html

  3. Python Software Foundation. The Python Tutorial — Data Structures. Python Documentation.
    https://docs.python.org/3/tutorial/datastructures.html

  4. Python Software Foundation. The Python Tutorial — More Control Flow Tools. Python Documentation.
    https://docs.python.org/3/tutorial/controlflow.html


📝 Nota sobre el material

Este recurso fue elaborado como material de apoyo para la Monitoría de Lógica y Algoritmia.

Los ejemplos y retos fueron diseñados con fines educativos y buscan complementar la documentación oficial de Python mediante explicaciones prácticas y ejercicios progresivos.

Fuente principal: Python Software Foundation, documentación oficial de Python.