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.
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.
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[:3] → "pyt" desde el principio
palabra[3:] → "hon" hasta el final
palabra[::2] → "pto" de a dos
palabra[::-1] → "nohtyp" al revés
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:
Un string es inmutable: una vez creado no se toca. Lo que se hace es armar uno nuevo:
Por eso todos los métodos de string devuelven uno nuevo en vez de modificar el original:
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
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.
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:
return palabra == palabra[::-1]
Probemos:
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.
limpia = frase.lower().replace(" ", "")
return limpia == limpia[::-1]
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
- Contar desde 1. El primer carácter es el 0, y el último es len−1.
- Incluir el límite derecho de una rebanada: palabra[1:4] llega hasta la 3, no hasta la 4.
- Llamar a un método y no guardar el resultado. Los strings no se modifican, se reemplazan.
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 →