CON · Concepto 6 · Estructuras de datos

27.Cadenas de texto

Secuencias de caracteres que representan texto; se pueden medir, recorrer, cortar, buscar, transformar y unir.

¿Qué es?

Una cadena de texto (string) es una secuencia de caracteres: letras, números, espacios y símbolos, en orden. Un nombre, una contraseña, una línea de un archivo o un mensaje son cadenas.

Imagínala como un collar de cuentas: cada cuenta es un carácter y tiene una posición. Puedes contar las cuentas, ver cuál está en cierta posición o tomar un pedazo del collar.

Posiciones (índices) en Python

 S   o   l   u   t   i   o   n   s
 0   1   2   3   4   5   6   7   8
-9  -8  -7  -6  -5  -4  -3  -2  -1
  • El primer carácter está en la posición 0.
  • Los índices negativos cuentan desde el final: -1 es el último.

Sintaxis (pseudocódigo / Python)

Operación PSeInt Python Resultado
Longitud Longitud(s) len(s) 9
Un carácter Subcadena(s, 1, 1) s[0] "S"
Un pedazo Subcadena(s, 1, 3) s[0:3] "Sol"
Mayúsculas Mayusculas(s) s.upper() "SOLUTIONS"
Minúsculas Minusculas(s) s.lower() "solutions"
Unir Concatenar(a, b) o a + b a + b —
¿Contiene? — "tion" in s True

(En PSeInt, Subcadena cuenta las posiciones desde 1 con la configuración por defecto.)

PSeInt

Algoritmo Cadenas
	Definir s Como Caracter
	s <- "Solutions"
	Escribir "Longitud: ", Longitud(s)
	Escribir "Primeras tres letras: ", Subcadena(s, 1, 3)
	Escribir "En mayúsculas: ", Mayusculas(s)
FinAlgoritmo

Python

s = "Solutions"
print("Longitud:", len(s))            # 9
print("Primera letra:", s[0])         # S
print("Última letra:", s[-1])         # s
print("Primeras tres:", s[:3])        # Sol
print("Al revés:", s[::-1])           # snoituloS
print("Mayúsculas:", s.upper())       # SOLUTIONS

Métodos más usados en Python

Método Ejemplo Resultado
.strip() " hola ".strip() "hola"
.replace(a, b) "2026-10-29".replace("-", "/") "2026/10/29"
.split(sep) "Ana,Luis,Sofía".split(",") ["Ana", "Luis", "Sofía"]
sep.join(lista) ", ".join(["a", "b"]) "a, b"
.find(t) "Solutions".find("u") 3 (o -1 si no está)
.count(t) "banana".count("a") 3
.startswith(t) "python.py".endswith(".py") True
.title() "ana lópez".title() "Ana López"

Ejemplo guiado

Problema: generar el usuario de correo de un alumno a partir de su nombre completo: primera letra del nombre + apellido, en minúsculas y sin acentos.

def quitar_acentos(texto):
    reemplazos = {"á": "a", "é": "e", "í": "i", "ó": "o", "ú": "u", "ü": "u", "ñ": "n"}
    for con_acento, sin_acento in reemplazos.items():
        texto = texto.replace(con_acento, sin_acento)
    return texto

nombre_completo = "  María Fernanda Núñez  "
partes = nombre_completo.strip().lower().split()
usuario = quitar_acentos(partes[0][0] + partes[-1])
print("Usuario:", usuario)
print("Correo:", usuario + "@escuela.example")

Salida esperada:

Usuario: mnunez
Correo: mnunez@escuela.example

Paso a paso: se quitan los espacios de los extremos (strip), se pasa a minúsculas (lower), se separa en palabras (split), se toma la primera letra de la primera palabra y la última palabra completa, y se quitan acentos.

Errores comunes

# ✗ Incorrecto
s = "Hola"
print(s[4])
IndexError: string index out of range
# ✗ Incorrecto
s = "hola"
s[0] = "H"
TypeError: 'str' object does not support item assignment

Buenas prácticas

  • Usa f-strings para combinar texto y variables: f"Hola, {nombre}".
  • Normaliza antes de comparar: respuesta.strip().lower() == "si".
  • Para unir muchas cadenas, usa "".join(lista) en lugar de sumar dentro de un ciclo.
  • Comillas consistentes: elige " o ' y úsalas siempre igual.
  • Cuidado con los acentos al comparar o generar usuarios y nombres de archivo.

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

© solutions_ · Fundamentos de programación · 27 Cadenas de texto