Tiza Las materias del CBC
Practicar →

Pensamiento Computacional (090) · Unidad 2 — Datos, expresiones y funciones

Cadenas de texto

Un string es una secuencia de caracteres numerados desde cero. Se puede medir, cortar y recorrer, pero no modificar.

Practicar este tema →7 ejercicios que te corrigen paso a paso · gratis, sin cuenta

La explicación

Cada carácter tiene una posición

Un string es una fila de casillas numeradas. La primera es la 0, no la 1.

palabra = "python"

posición:   0   1   2   3   4   5
carácter:   p   y   t   h   o   n

palabra[0]  → "p"     palabra[5]  → "n"

Los índices negativos cuentan desde el final: palabra[-1] es el último carácter. Es mucho más cómodo que palabra[len(palabra)-1].

Rebanadas

palabra[1:4]   → "yth"   desde la 1 hasta la 4 sin incluirla
palabra[:3]    → "pyt"   desde el principio
palabra[3:]    → "hon"   hasta el final
palabra[::2]   → "pto"   de a dos
palabra[::-1]  → "nohtyp"  al revés
El límite de la derecha no entra. Es la fuente de la mitad de los errores con strings. La forma de acordarse: palabra[1:4] devuelve 4 − 1 = 3 caracteres. La resta de los dos números te da el largo del pedazo.

Los strings no se modifican

Esto da error:

palabra[0] = "P"   → TypeError

Un string es inmutable: una vez creado no se toca. Lo que se hace es armar uno nuevo:

palabra = "P" + palabra[1:]

Por eso todos los métodos de string devuelven uno nuevo en vez de modificar el original:

texto.upper()       → todo en mayúsculas
texto.lower()       → todo en minúsculas
texto.replace("a","")  → reemplaza (acá borra las "a")
texto.strip()       → saca los espacios de los bordes
texto.split(",")     → parte en una lista
len(texto)           → cuántos caracteres tiene
Ojo: texto.upper() por sí solo no cambia nada. Hay que guardar el resultado: texto = texto.upper(). Escribir la línea suelta y esperar que el texto cambie es un error clásico, y no avisa: simplemente no pasa nada.
Ejemplo resuelto

Escribir una función que reciba una palabra y devuelva True si se lee igual al derecho y al revés.

La idea. Una palabra es capicúa si es igual a sí misma dada vuelta. Y dar vuelta un string es [::-1]. Con eso, la función es una línea:

def es_capicua(palabra):
    return palabra == palabra[::-1]

Probemos:

es_capicua("neuquen")  → True
es_capicua("python")   → False

Por qué funciona [::-1]. Los tres números de una rebanada son desde : hasta : paso. Dejando los dos primeros vacíos se toma todo, y con paso −1 se recorre para atrás.

Una versión más completa ignoraría mayúsculas y espacios, porque "Anita lava la tina" es capicúa para una persona pero no para Python:
def es_capicua(frase):
    limpia = frase.lower().replace(" ", "")
    return limpia == limpia[::-1]
Fijate que hubo que guardar el resultado en limpia: si sólo escribieras frase.lower() sin asignar, no pasaría nada.

Control: probá siempre con un caso que dé True y otro que dé False. Una función que devuelve siempre lo mismo pasa desapercibida si sólo la probás con un caso.

Dónde se cae la mayoría

Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.

Practicar Cadenas de texto →

Ver todos los temas de Pensamiento Computacional