Hasta ahora hemos trabajado con muchos conceptos nuevos sobre cadenas de texto. Para finalizar su estudio básico veremos algunos temas interesantes. Podemos comenzar por contar el número de letras en una cadena de texto, para ello bastará con recorrer cada letra de dicha cadena e ir sumando una unidad en una variable inicializada en cero:
texto0 = "Hola"
# inicializamos una variable en cero
contador = 0
# recorremos la cadena con un bucle for
for letra in texto0:
contador += 1
print(f'El número de letras en \'{texto0}\' es: {contador}')
El número de letras en 'Hola' es: 4
y si tenemos espacios en blanco bastará con implementarse un condicional if
texto0 = "Hoy es lunes"
# inicializamos una variable en cero
contador = 0
# recorremos la cadena con un bucle for
for letra in texto0:
if letra != " ":
contador += 1
print(f'El número de letras en \'{texto0}\' es: {contador}')
El número de letras en 'Hoy es lunes' es: 10
Alguna vez hemos realizado un trabajo en microsoft word. En él podemos notar como son contadas las palabras que vamos escribiendo. A continuación escribiremos un código para contar las palabras que ingresemos. Antes, notemos la siguiente oración:
la cual contine 14 palabras. Podemos contar las palabras de acuerdo al número de espacios en blanco; de la oración anterior tenemos 13 espacios en blanco. En general, tendremos que el número total de palabras es igual al número total de espacios en blanco más 1.
Veamos algunos otros ejemplos
# una oración con dos palabras y un espacio en blanco
texto1 = "Hola, bienvenido"
# una oración con tres palabras y dos espacios en blanco
texto2 = "Hoy es lunes"
Para contar el número de palabras bastará con contar el número de espacios en blanco. De tal manera, primero creamos una variable inicializada en cero (que servirá para contar los espacios en blanco), después recorreremos cada letra de la cadena de texto e implementaremos un if
para saber cuando tenemos un espacio en blanco, luego, cada que el if
localice un espacio en blanco sumaremos un 1 a la variable inicializada en cero. Esto es
# número de palabras en "Hola, bienvenido"
contador = 0
for i in texto1:
if i == " ":
contador += 1
print("El número de palabras en texto1 es:", contador + 1)
El número de palabras en texto1 es 2
# número de palabras en "Hoy es lunes"
contador = 0
for i in texto2:
if i == " ":
contador += 1
print("El número de palabras en texto2 es:", contador + 1)
El número de palabras en texto2 es: 3
# creamos la cadena de texto:
texto3 = "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."
# número de palabras en texto3
contador = 0
for i in texto3:
if i == " ":
contador += 1
print("El número de palabras en texto3 es:", contador + 1)
El número de palabras en texto3 es: 14
Si tenemos la cadena de texto "hola"
nuestro objetivo será conseguir imprimir la cadena al revés, esto es tener la cadena de texto "aloh"
. Lo que haremos será declarar una variable tipo string (vacía) auxiliar para "voltear" la cadena de texto, en otras palabras el comportamiento será el siguiente en cada iteración:
h + " "
lo cual nos da la letra h.o + h
lo cual nos da la palabra oh.l + oh
lo cual nos da la palabra loh.a + loh
lo cual nos da la palabra buscada aloh.Para ello
# declaramos la variable vacía
auxiliar = " "
# declaramos la cadena de texto
texto = "hola"
# implementamos un bucle for
for letra in texto:
auxiliar = letra + auxiliar
print(auxiliar)
aloh
Podemos jugar un poco y ver algunos palíndromos:
auxiliar2 = " "
texto2 = "Amad a la dama"
for letra in texto2:
auxiliar2 = letra + auxiliar2
print(auxiliar2)
amad al a damA
Dada una cadena, las subcadenas estarán conformadas por carácteres de la cadena principal. Por ejemplo, de la cadena "Jueves negro"
podemos considerar las subcadenas "eves neg"
, "es ne"
, etcétera. Para ello trabajaremos con dos índices para indicar la primer letra de la subcadena y un segundo índice para indicar la última letra de dicha subcadena.
# definimos una variable vacía (de tipo string) auxiliar
subcadena = " "
# definimos nuestra cadena de texto
texto3 = "Jueves negro"
# definimos los números del inicio y final del rango para la subcadena
i = 2
j = 10
# efectuamos un bucle for
for k in range(i,j):
subcadena = subcadena + texto3[k]
print(subcadena)
eves neg
Finalmente, dado que es muy usual trabajar con subcadenas Python nos brinda una forma más sencilla de hacerlo, para ello utilizaremos el operador de corte :
. En vez de utilizar el código anterior bastará con emplear
print(texto3[2:10])
eves neg
El operador de corte admite un tercer parámetro para indicar el patrón de avance, por defecto el patrón de avance es de uno en uno, por ello en texto3[2:10]
se mostrarán todos los carácteres comprendidos entre el índice 2 y el 10 de la cadena de texto "Jueves negro"
. En cambio, podemos tener el patrón de avance de dos en dos, de tres en tres, etcétera, lo cual conseguiremos usando texto3[2:10:2]
o texto3[2:10:3]
respectivamente. Veamos por ejemplo el resultado de
print(texto3[::-1])
orgen seveuJ
Hemos logrado la inmersión de una cadena de manera mucho más sencilla. Lo que ocurre es que el patrón de avance es negativo y lo que pasa es que seleccionamos la letra cuyo índice es -1 (la cual sabemos que es la última letra), después seleccionamos la letra cuyo índice es -2 (la cual sabemos que es la penúltima letra) y así consecutivamente.