AnteriorPosterior

09 - Contacto con las cadenas de texto

Por: Nacho Cabanes
Actualizado: 09-08-2020 17:32
Tiempo de lectura estimado: 10 min.

 

Versión en video (8:14 min):

Fund.Prog con Python 2020

09 - Contacto con las cadenas de texto

Esta va a ser nuestra toma de contacto con las cadenas de texto usando Python.

Las ideas básicas de las cadenas ya las conoces:

Podíamos darle valores con cosas como: "nombre =" y, entre comillas simples o entre comillas dobles, un valor.

nombre = 'Nacho'

Eso de que puedan ser comilla simples comillas dobles da juego, sobre todo si tenemos que escribir cosas con comillas. Por ejemplo, yo puedo poner, "frase =" y entre comillas simples, 'Nacho dijo "hola"'

frase = 'Nacho dijo "hola"'

O puedo poner la "frase2 =" y, usando el posesivo inglés, la casa de Peter, "Peter's house", porque si quiero usar comillas simples dentro, no hay problema en usar comillas dobles fuera, y al contrario, si quiero usar comillas dobles dentro, no hay problema, en usar comillas simples fuera:

frase2 ="Peter's house"

Yo generalmente tiendo a usar las comillas dobles, en las expresiones sencillas al menos, pero son intercambiables en general.

¿Qué haríamos si quisiéramos pedir algo al usuario? Pues decirle "el nombre va a ser el resultado de que me introduzca algo como dime tu nombre".

nombre = input("Dime tu nombre")

Ya habíamos comentado que el resultado de "input", si no forzamos que se convierta otra cosa, es una cadena de texto. Y ahora las cadenas de texti las manejaremos igual que si fueran arrays, por lo menos en sus ideas principales.

Por ejemplo, yo podría poner que la inicial va a ser, de ese nombre, lo que haya en la posición cero, la primera letra. O podría poner que la tercera letra sea lo que tiene ese nombre en la posición 2. Ya sabes que se empieza a contar desde cero.

nombre = input("Dime tu nombre ")
inicial = nombre[0]
tercera = nombre[2]

Y podría saber la longitud, usando "len", igual que habíamos hecho por los arrays, diciendo "quiero saber con la longitud de ese nombre".

longitud = len(nombre)

Pero hay más cosas, además de hacer esto, además de aplicar funciones a una cierta cadena, podemos pedir que hagan ciertas operaciones. Eso es algo que se llama "métodos", es algo que veremos más adelante, es algo bastante más avanzado. Pero la idea está en que puedo, por ejemplo, decir "quiero que me escribas la longitud". Y luego decir "Quiero que me escribas el nombre convertido a mayúsculas" y ese "convertido en mayúsculas" será ".upper()":

longitud = len(nombre)
print(longitud)
print( nombre.upper() )

El formato es distinto para saber la longitud o para saber la equivalencia en mayúsculas. Hablaremos de funciones dentro de poco, pero esto ("len") es una función que se puede aplicar a distintos tipos de objetos, mientras que ésto (".upper()") es algo específico de las cadenas. Insisto, esto se llaman métodos pero es algo que veremos mucho más adelante o quizás incluso lo saltemos, es más avanzado.

Igual que puedo convertir en mayúsculas, puedo convertir a minúsculas, y eso lo haré en vez de con .upper, con .lower.

print( nombre.lower() )

También puede extraer subcadenas, igual que podía sacar la inicial... por cierto, vamos a mostrarla...

print(inicial)

puedo sacar las dos primeras letras. Y eso lo haré diciendo, quiero "que me muestres, de mi nombre, no sólo la posición cero, sino hasta llegar a la 2": nombre[0] es la primera posición. Nombre[0:2] son las dos primeras letras.

print(nombre[0:2])

Los rangos, el decir "desde aquí y hasta aquí" da mucho más juego. Por ejemplo, yo puedo hacer que me muestre la última letra y para hacer la última, una peculiaridad. Algo que permite Python, y no permiten la mayoría de lenguajes y que resulta comodísimo, es el emplear índices negativos.

Yo podría decir de mi nombre quiero que me digan lo que hay en la posición "menos uno", que es la primera desde el final.

print(nombre[-1])

Al igual que ocurría en los rangos, también puede indicar un tercer dato, que es el incremento.

print(nombre[4:0:-1])

El incremento tiene un uso especialmente curioso. Es que yo puedo hacer algo como esto, puedo decir quiero que me escribas mi nombre, pero no te voy a indicar el nombre, pero no te voy a indicar en qué valor quiero empezar, con lo cual empezará por el primero, no te voy a indicar en cual quiero terminar, con lo cual acabará en el último. Y quiero que vayas descendiendo:

print(nombre[::-1])

Ahora lo que ocurre con esa última orden lo lanzó. Y verás que desde el principio hasta el final con incremento menos 1, lo que hará es mostrar toda la cadena al revés.

Como alternativa, yo podría haber hecho también decir quiero que me escribas de mi nombre desde la posición 3 hasta la posición -1, ya sabes, sin alcanzarla, con incremento menos 1.

print(nombre[3:1:-1])

Si lanzamos eso y ponemos el nombre Nacho, verás que aparece desde la posición 3, que es la cuarta, la H; aparece la siguiente, que sería la 2, una C, y no se llega a alcanzar la segunda, que es la posición 1 y, y además las escribe al revés. Es un uso bastante más avanzado.

nombre = input("Dime tu nombre ")
inicial = nombre[0]
tercera = nombre[2]
longitud = len(nombre)
print(longitud)
print( nombre.upper() )
print( nombre.lower() )
print(inicial)
print(nombre[0:2])
print(nombre[-1])
print(nombre[3:1:-1])

Su resultado sería:

Dime tu nombre Nacho
5
NACHO
nacho
N
Na
o
hc

Se pueden hacer muchas más cosas con cadenas, pero no vamos a avanzar por ahora.

Sí que me interesa, por ejemplo, que sepas que las cadenas se pueden sumar, se pueden. Lo que llamaremos concatenar, yo puedo decir: frase3 va a ser igual a "Hola". Y frase4 va a ser igual a " Qué tal?". Y la frase5 va a ser igual a la frase3 más la frase4. Eso me crea una cadena formada por la concatenación de esas dos: primero frase3 y luego inmediatamente a continuación frase4, con lo cual estará formada por "Hola" y luego, inmediatamente después, espacio, "que tal", interrogación:

frase3 = "Hola"
frase4 = " que tal?"
frase5 = frase3 + frase4
print(frase5)

vamos a mostrarla para comprobarlo. Esa será nuestra frase 5 o la que tal vamos a hacerlo, pero vamos a poner nombre. Y verás que la frase ha resultado de sumar esas dos de concatenarlas es:

Hola que tal?

Se puede hacer muchas más cosas: Se puede reemplazar un fragmento por otro, se puede reemplazar una cierta letra por otra letra, aparezca donde aparezca, pero no vamos a profundizar más por ahora. Con esto que hemos visto me sirve para que hagamos unos cuantos ejercicios reales de manejo de textos.

Ejercicio propuesto 9.1. Pregunta su nombre al usuario y responde:

  • Su inicial
  • La cantidad de letras
  • La última letra
  • Su nombre en mayúsculas
  • Su nombre al revés
  • La cantidad de vocales que contiene

38 visitas desde el 09-08-2020

AnteriorPosterior