Variables y tipos de datos
Las variables son un contenedor de información que se utiliza para almacenar datos. Los datos pueden ser de varios tipos: cadenas, números, booleanos, listas, diccionarios, etc. En Python, al declarar una variable, no es obligatorio especificar el tipo de dato que almacena:
>>> mensaje = "Hola, mundo!"
y por supuesto, no podría faltar:
>>> mensaje = "hola mundo"
>>> print(mensaje)
hola mundo
>>>
Observa la sencillez de la sintaxis. En este caso la variable es una cadena (string) y no necesitamos terminar con ningun caracter especial tras las comillas, como en otros lenguajes.
En el ejemplo anterior puedes ver tu primera variable, mensaje. En Python las variables son sensibles a mayúsculas y minúsculas. También puedes ver tu primera función, print. Como función que es, va seguida de paréntesis. La función admite argumentos: en este caso una variable que contiene una cadena. Podrías haber utilizado (print("hola mundo")), y en ese caso, al pasar como argumento una cadena, el valor tiene que estar entrecomillado.
En este tema veremos como trabajar con variables, y que tipo de datos puedes almacenar en ellas.
Tipos de datos: str (string, cadena)
los datos tipo string son una cadena de carácteres. Una palabra, una frase, un texto, etc. En Python, las cadenas se escriben entre comillas.
Escapando comillas
Mas temprano que tarde te encontrarás con la necesidad de usar comillas dentro de una cadena. En Python, puedes hacerlo bien utilizando comillas simples, bien escapando las comillas dobles con la barra invertida:
>>> mensaje1 = "hola usuario"
>>> mensaje2 = "El filósofo Descartes dijo \"pienso luego insisto\""
>>> mensaje3 = "Nos vemos en Max's Bar"
>>> mensaje4 = 'El filósofo Descartes dijo "pienso luego insisto"'
>>> print(mensaje1)
hola usuario
>>> print(mensaje2)
El filósofo Descartes dijo "pienso luego insisto"
>>> print(mensaje3)
Nos vemos en Max's Bar
>>> print(mensaje4)
El filósofo Descartes dijo "pienso luego insisto"
>>>
Añadiendo espacios o nueva línea
Podemos usar la barra invertida (\) para anadir tabulación (\t) o saltos de linea (\n) al final de una cadena:
>>> mensaje1 = "El filósofo Descartes dijo \n'pienso luego insisto'"
>>> mensaje2 = '\tEl filósofo Descartes dijo "pienso luego insisto"'
>>> print(mensaje1)
El filósofo Descartes dijo
'pienso luego insisto'
>>> print(mensaje2)
El filósofo Descartes dijo "pienso luego insisto"
>>>
concatenando cadenas
Podemos concatenar (añadir) cadenas con el operador +. Este operador une los strings en una sola secuencia de caracteres antes de enviarlos a la consola.
Nota: + no añade espacios a la cadena resultante, si los necesitas, tienes que añadirlos tú a una de las cadenas
>>> name = "cristina"
>>> print(name)
cristina
>>> mensaje = "hola " + name + " ¿cómo estas?"
>>> print(mensaje)
hola cristina ¿cómo estas?
>>>
Nota: La concatenación solo funciona si todos los elementos son strings. Si intentas sumar un entero ("Edad: " + 25), Python lanzará un TypeError.
Nota: Existe una forma más moderna y legible de combinar variables y texto: los f-strings. Con ellos puedes escribir directamente f"hola {name} ¿cómo estás?" sin necesidad de + ni conversiones. Los veremos en detalle más adelante.
La coma , (Argumentos de print)
Puedes pasar varios argumentos a la funcion print, separados por comas. Al no tratarse de una sola cadena, el tratamiento de los datos es distinto al que vimos con +:
print()por defecto asigna un espacio en blanco entre cada argumento.- Como son argumentos distintos, puedes pasar tipos de datos distintos, sin convertirlos manualmente a string;
print()se encarga de representarlos. - Puedes cambiar ese espacio automático usando el parámetro sep. Por ejemplo:
print("A", "B", sep="-")imprimirá A-B.
>>> print("hola",name,"¿como estás?")
hola cristina ¿como estás?
# pasando distintos tipos:
>>> print("edad:",25)
edad: 25
>>> print("edad: " + 25) # daría error
>>>
El símbolo # marca un comentario: Python ignora todo lo que viene después en esa línea. Se usa para aclarar el código sin que afecte a su ejecución.
Observa como en el primer print() hemos pasado tres cadenas, añadiendo la función un espacio entre argumentos. En el segundo print() hemos pasado una cadena y un entero, y en el tercer print() si intentamos concatenar un string y un entero, produciría un error de tipo (TypeError).
Los métodos de string
Las cadenas son objetos de Python, y por tanto tienen muchos métodos que podemos usar. Los métodos son acciones a realizar sobre el objeto. Se invocan con la sintaxis objeto.método().
>>> print("hola " + name.title())
Hola Cristina
>>> print(name)
cristina
en este caso, el método de cadena .title transforma la primera letra de cada palabra de la cadena a mayúscula. Observa como la variable name no ha cambiado.
Nota: Los strings en Python son inmutables. Los métodos no modifican la variable original, sino que devuelven una copia nueva con los cambios aplicados. Si quieres guardar el cambio, debes reasignar la variable: name = name.title()
Algunos de los métodos de cadenas son:
>>> saludo = "hola cristina"
>>> print(saludo.capitalize()) # primera letra en mayúscula
Hola cristina
>>> print(saludo.title()) # primera letra de cada palabra en mayúscula
Hola Cristina
>>> print(saludo.upper()) # todas las letras en mayúscula
HOLA CRISTINA
>>> saludo = "HOLA CRISTINA"
>>> print(saludo.lower()) # todas las letras en minúscula
hola cristina
Otros métodos sirven para eliminar espacios en blanco al principio de la cadena (lstrip), al final (rstrip), o de ambos lados (strip):
>>> texto = " hola mundo "
>>> print(texto.lstrip()) # elimina espacios al principio
hola mundo
>>> print(texto.rstrip()) # elimina espacios al final
hola mundo
>>> print(texto.strip()) # elimina espacios en ambos lados
hola mundo
Con .replace() podemos sustituir una subcadena por otra. Recibe dos argumentos: lo que queremos reemplazar y por qué lo reemplazamos:
>>> frase = "me gusta el café con leche"
>>> print(frase.replace("leche", "oat milk"))
me gusta el café con oat milk
>>> print(frase)
me gusta el café con leche
Con .find() podemos buscar una subcadena dentro de otra. Devuelve la posición (índice) donde empieza la primera coincidencia, o -1 si no la encuentra. Con .count() podemos contar cuántas veces aparece una subcadena:
>>> frase = "el gato y el perro"
>>> print(frase.find("gato"))
3
>>> print(frase.find("pez"))
-1
>>> print(frase.count("el"))
2
Por último, .split() divide una cadena en una lista de partes, usando como separador el argumento que le pasemos (por defecto, el espacio en blanco):
>>> frase = "hola cristina ¿cómo estás?"
>>> print(frase.split())
['hola', 'cristina', '¿cómo', 'estás?']
>>> csv = "manzana,pera,naranja"
>>> print(csv.split(","))
['manzana', 'pera', 'naranja']
El resultado de .split() es una lista, un tipo de dato que veremos en detalle más adelante.
Métodos is*: comprobar el contenido de una cadena
Existe un grupo de métodos que devuelven True o False según el contenido de la cadena. Son útiles para validar datos antes de procesarlos:
>>> "123".isdigit() # solo dígitos (0-9)
True
>>> "abc".isdigit()
False
>>> "hola123".isalpha() # solo letras
False
>>> "hola".isalpha()
True
>>> "hola123".isalnum() # letras y/o números, sin espacios ni símbolos
True
>>> "HOLA".isupper() # todas las letras en mayúscula
True
>>> "hola".islower() # todas las letras en minúscula
True
>>> " ".isspace() # solo espacios en blanco
True
Un uso habitual es comprobar antes de hacer casting. Si el usuario introduce un valor y quieres convertirlo a entero sin que el programa explote:
>>> entrada = "42"
>>> if entrada.isdigit():
... numero = int(entrada)
... print("Número válido:", numero)
... else:
... print("Eso no es un número")
Número válido: 42
Nota: isdigit() solo devuelve True para enteros positivos sin espacios. Para validar números negativos o decimales necesitarías otro enfoque (como try/except, que veremos más adelante).
Aunque no es un método de cadena sino una función integrada de Python, len() se usa constantemente con strings: devuelve el número de caracteres de una cadena. La diferencia de sintaxis es notable - se pasa la cadena como argumento en lugar de invocarla con punto:
>>> nombre = "cristina"
>>> print(len(nombre))
8
>>> print(len("hola"))
4
En la próxima lección: formato de cadenas con f-strings y lectura de datos del teclado con input().