Sintaxis Básica II: Tipos de datos, operadores y variables en Python
En este capitulo vemos los tipos de datos, operadores y variables en Python.
Hola, bienvenidos a otra entrega de este curso de programación en python en el que nos estamos introduciendo poco a poco en la sintaxis básica del lenguaje poco a poco y desde cero.
Después de ver la sintaxis básica de python en el anterior post, vamos ver en este aspectos tan básicos pero a la vez tan importantes como los tipos de datos que podemos manejar en python, operadores podemos utilizar, qué es una variable y cómo definir una variable en este lenguaje de programación.
Tipos de datos en Python
Si recordáis en post anteriores hemos mencionado que una de las características principales de python es su simplicidad y esto se traduce también en los tipos de datos que podemos manejar.
Aquellos que vengáis de otros lenguajes de programación veréis que el listado de tipos de datos pues es bastante más largo. En python fundamentalmente vamos a manejar tres tipos de datos: los numéricos, los textos y los booleanos.
Cadenas de texto
Los datos de tipo texto, que como ya hemos mencionado anteriormente han de ir entre comillas. Esas comillas pueden ser doble o pueden ser simples. Veremos a lo largo del curso cuándo utilizar las dobles, las simples, las dos a la vez, etcétera. En el lenguaje de programación python los textos pueden llevar comillas triples, y eso es algo que veremos ahora. Una característica que otros lenguajes no tienen.
En python un texto puede llevar una triple comilla. Eso nos va a ser útil cuando queramos incluir saltos de línea dentro de un texto.
Por ejemplo, vamos a crear una variable la cual puede llamarse otra_variable
y aquí introducimos tres comillas y a continuación un texto en el que puede haber saltos de línea y se cierran las tres comillas.
>>> otra_variable = """Este texto tiene
... varios saltos
... de linea"""
>>> print(otra_variable)
Este texto tiene
varios saltos
de linea
Bueno pues aquí viene la utilidad del uso de las tres comillas cuando quieres crear un texto largo y quieres incluir saltos de línea. Ahora podemos utilizar la función print()
para imprimir en consola lo que hay almacenado dentro de la variable.
Números
Tipos de datos numéricos en Python:
- Números enteros: números enteros (negativos, cero y positivos) Ejemplo: … -3, -2, -1, 0, 1, 2, 3 …
- Números de coma flotante: números decimales como por ejemplo: … -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 …
- Números complejos: 1 + j, 2 + 4j, 1 – 1j
Booleano
Un tipo de datos booleano representa uno de los dos valores: True o False . El uso de estos tipos de datos quedará claro una vez que comencemos a usar el operador de comparación. La primera letra T para Verdadero y F para Falso debe ser mayúscula a diferencia de JavaScript.
Ejemplo de valores booleanos
print(True)
print(False)
Hay varios tipos de datos en Python. Para identificar el tipo de datos, usamos la función incorporada type()
. Me gustaría pedirle que se concentre en comprender muy bien los diferentes tipos de datos. Cubriremos los tipos de datos con más detalle en sus respectivas secciones.
Comprobación de tipos de datos y casting (conversión)
Verificar tipo de datos: para verificar el tipo de datos de ciertos datos/variables, usamos type()
. Ejemplo:
# Diferentes types de datos python
# Declaremos variables con distintos types de datos
nombre = 'Alejandra' # str
apellido = 'Palomo' # str
pais = 'Brasil' # str
ciudad= 'Río de Janeiro' # str
edad = 250 # int, no es mi edad real, no te preocupes por ello
# Imprimir types
print(type('Alejandra')) # str
print(type(nombre)) # str
print(type(10)) # int
print(type(3.14)) # float
print(type(1 + 1j)) # complejo
print(type(True)) # bool
print(type([1, 2, 3, 4])) # lista # lista
print(type({'nombre':'Alejandra','edad':250, 'está_casado':250})) # dict
print(type((1,2))) # tupla
print(type(zip([1,2],[3,4]))) # conjunto
Casting: convertir un tipo de datos a otro tipo de datos. Usamos int()
, float()
, str()
, list
y set
. Cuando hacemos operaciones aritméticas, los números de cadena deben convertirse primero a int
o float
; de lo contrario, devolverá un error.
Si concatenamos un número con una cadena, el número debe convertirse primero en una cadena. Hablaremos sobre la concatenación en la sección String.
Ejemplo:
# entero a flotante
numero_entero = 10
print('numero_entero',numero_entero) # 10
numero_flotante = float(numero_entero)
print('numero_flotante:', numero_flotante) # 10.0
# de flotante a entero
gravedad = 9.81
print(int(gravedad)) # 9
# entero a string
numero_entero = 10
print(numero_entero) # 10
numero_string = str(numero_entero)
print(numero_string) # '10'
# de string a entero o flotante
numero_string = '106.3'
print('numero_entero', int(float(numero_string))) # 10
print('numero_flotante', float(numero_string)) # 10.6
# string a lista
nombre = 'Alejandra'
print(nombre) # 'Alejandra'
nombre_a_lista = list(nombre)
print(nombre_a_lista) # ['A', 's', 'a', 'b', 'e', 'n', 'e', 'h']
Operadores en Python
Exploraremos a continuación los operadores disponibles en Python. Aunque esta lista no incluye algunos operadores menos utilizados, he optado por no abrumarlos con una enumeración exhaustiva. En su lugar, me he centrado en los operadores principales.
El lenguaje Python admite varios tipos de operadores. En esta sección, nos centraremos en algunos de ellos.
Operadores aritméticos
Los aritméticos, creo que todos los conocemos porque son operadores con los que vamos a poder realizar operaciones matemáticas fundamentales en los lenguajes de programación, como por ejemplo la operación suma, resta, multiplicación, división, módulo, exponente y división entera.
Operadores | Nombre | Ejemplo |
---|---|---|
+ | Suma | x + y |
– | Resta | x – y |
* | Multiplicación | x * y |
/ | División | x / y |
% | Módulo | x % y |
** | Exponente | x ** y |
// | División entera | x // y |
Ejemplo: Enteros
# Operaciones aritméticas en Python
# Números enteros
print('Suma: ', 1 + 2) # 3
print('Resta: ', 2 - 1) # 1
print('Multiplicación: ', 2 * 3) # 6
print ('División: ', 4 / 2) # 2.0 La división en Python da un número flotante
print('División: ', 6 / 2) # 3.0
print('División: ', 7 / 2) # 3.5
print('División sin el resto: ', 7 // 2) # 3, da sin el número flotante o sin el resto
print ('División sin resto: ',7 // 3) # 2
print('Módulo: ', 3 % 2) # 1, da el resto
print('Exponenciación: ', 2 ** 3) # 9 significa 2 * 2 * 2
Ejemplo: Números Flotantes
# Números flotantes
print('Número en coma flotante, PI', 3.14)
print('Número en coma flotante, gravedad', 9.81)
Ejemplo: Números complejos
# Números complejos
print('Número complejo: ', 1 + 1j)
print('Multiplicación de números complejos: ',(1 + 1j) * (1 - 1j))
Declaremos una variable y asignemos un tipo de dato numérico. Voy a usar una variable de un solo carácter, pero recuerde que no desarrolle el hábito de declarar este tipo de variables. Los nombres de las variables deben ser siempre mnemotécnicos.
Ejemplo:
# Declarando primero la variable en la parte superior
a = 3 # a es un nombre de variable y 3 es un tipo de dato entero
b = 2 # b es un nombre de variable y 3 es un tipo de dato entero
# Operaciones aritméticas y asignación del resultado a una variable
suma = a + b
diferencia = a - b
producto = a * b
division = a / b
resto = a % b
division_entera = a // b
exponencial = a ** b
print(suma) # si no etiquetas tu impresión con alguna cadena, nunca sabrás de dónde viene el resultado
print('a + b = ', suma)
print('a - b = ', diferencia)
print('a * b = ', producto)
print('a / b = ', division)
print('a % b = ', resto)
print('a // b = ', division_entera)
print('a ** b = ', exponencial)
Ejemplo:
print('== Suma, Resta, Multiplicación, División, Módulo ==')
# Declarar valores y organizarlos
num_uno = 3
num_dos = 4
# Operaciones aritméticas
suma = num_uno + num_dos
diferencia = num_dos - num_uno
producto = num_uno * num_dos
division = num_dos / num_uno
resto = num_dos % num_uno
# Imprimir valores con etiqueta
print('suma: ', suma)
print('diferencia: ', diferencia)
print('producto: ', producto)
print('división: ', division)
print('resto: ', resto)
Empecemos a conectar los puntos y empecemos a hacer uso de lo que ya sabemos para calcular (área, volumen, densidad, peso, perímetro, distancia, fuerza).
Ejemplo:
# Cálculo del área de un círculo
radio = 10 # radio del círculo
area_del_circulo = 3.14 * radio ** 2 # dos * el signo significa exponente o potencia
print('Área del círculo:', area_del_circulo)
# Calcular el área de un rectángulo
longitud = 10
anchura = 20
area_del_rectangulo = longitud * anchura
print('Área del rectángulo:', area_del_rectangulo)
# Calcular el peso de un objeto
masa = 75
gravedad = 9.81
peso = masa * gravedad
print(peso, 'N') # Añade la unidad al peso
# Calcular la densidad de un líquido
masa = 75 # en Kg
volumen = 0.075 # en metros cúbicos
densidad = masa / volumen # 1000 Kg/m^3
Operadores de comparación
En programación comparamos valores, usamos operadores de comparación para comparar dos valores. Comprobamos si un valor es mayor o menor o igual a otro valor. La siguiente tabla muestra los operadores de comparación de Python:
Operadores de Comparación | Nombre | Ejemplo |
---|---|---|
== | Igual que | x == y |
!= | Diferente que | x != y |
> | Mayor que | x > y |
< | Menor que | x < y |
>= | Mayor o igual que | x >= y |
<= | Menor o igual que | x <= y |
Ejemplo: Operadores de comparación
print(3 > 2) # True, porque 3 es mayor que 2
print(3 >= 2) # True, porque 3 es mayor que 2
print(3 < 2) # False, porque 3 es mayor que 2
print(2 < 3) # True, porque 2 es menor que 3
print(2 <= 3) # True, porque 2 es menor que 3
print(3 == 2) # False, porque 3 no es igual a 2
print(3 != 2) # True, porque 3 no es igual a 2
print(len('mango') == len('aguacate')) # False
print(len('mango') != len('aguacate')) # True
print(len('mango') < len('aguacate')) # True
print(len('leche') != len('carne')) # False
print(len('leche') == len('carne')) # True
print(len('tomate') == len('patata')) # True
print(len('pitón') > len('dragón')) # False
# Al comparar algo se obtiene True o False
print('True == True: ', True == True)
print('True == False: ', True == False)
print('False == False:', False == False)
Además del operador de comparación anterior, Python usa:
is
: Devuelve True si ambas variables son el mismo objeto (x es y)is not
: Devuelve True si ambas variables no son el mismo objeto (x no es y)in
: Devuelve True si la lista consultada contiene un determinado elemento (x en y)not in
: Devuelve True si la lista consultada no tiene un determinado elemento (x en y)
Operadores de identidad de Python | Descripción | Ejemplo |
---|---|---|
is | Devuelve True si ambas variables son el mismo objeto | x is y |
is not | Devuelve True si ambas variables no son el mismo objeto | x is not y |
Operadores de membresía de Python | Descripción | Ejemplo |
---|---|---|
in | Devuelve True si una secuencia con el valor especificado está presente en el objeto | x is y |
not in | Devuelve True si una secuencia con el valor especificado NO está presente en el objeto | x is not y |
print('1 is 1', 1 is 1) # True - porque los valores de los datos son los mismos
print('1 is not 2', 1 is not 2) # True - porque 1 no es 2
print('A in Alejandra', 'A' in 'Alejandra') # True - A encontrada en la cadena
print('B in Alejandra', 'B' in 'Alejandra') # False - no hay B mayúscula
print('codificación' in 'codificación para todos') # True - porque codificación para todos tiene la palabra codificación
print('a in an:', 'a' in 'an') # True
print('4 is 2 ** 2:', 4 is 2 ** 2) # True
Operadores lógicos
A diferencia de otros lenguajes de programación, Python usa palabras clave y , o y no para los operadores lógicos. Los operadores lógicos se utilizan para combinar sentencias condicionales:
Operadores Lógicos | Descripción | Ejemplo |
---|---|---|
and | Devuelve True si ambas afirmaciones son verdaderas | x < 5 and x < 10 |
or | Devuelve True si una de las afirmaciones es cierta | x < 5 or x < 4 |
not | Invierte el resultado, devuelve False si el resultado es verdadero | not(x < 5 and x < 10) |
print(3 > 2 and 4 > 3) # True - porque ambas afirmaciones son verdaderas
print(3 > 2 and 4 < 3) # False - porque la segunda afirmación es falsa
print(3 < 2 and 4 < 3) # False - porque ambas afirmaciones son falsas
print('True y True: ', True and True)
print(3 > 2 or 4 > 3) # True - porque ambas afirmaciones son verdaderas
print(3 > 2 or 4 < 3) # True - porque una de las afirmaciones es verdadera
print(3 < 2 or 4 < 3) # False - porque ambas afirmaciones son falsas
print('True o False:', True or False)
print(not 3 > 2) # False - porque 3 > 2 es True, entonces not True da False
print(not True) # False - Negación, el operador not convierte True en False
print(not False) # True
print(not not True) # True
print(not not False) # False
Operadores de asignación
Los operadores de asignación se utilizan para asignar valores a las variables. Tomemos =
como ejemplo. El signo igual en matemáticas muestra que dos valores son iguales, sin embargo, en Python significa que estamos almacenando un valor en una determinada variable y lo llamamos asignación o asignación de valor a una variable. La siguiente tabla muestra los diferentes tipos de operadores de asignación de Python:
Operadores de asignación | Ejemplo | Igual que |
---|---|---|
= | x = 5 | x = 5 |
+= | x += 3 | x = x + 3 |
-= | x -= 3 | x = x – 3 |
*= | x *= 3 | x = x * 3 |
/= | x /= 3 | x = x / 3 |
%= | x %= 3 | x = x % 3 |
//= | x //= 3 | x = x // 3 |
**= | x **= 3 | x = x ** 3 |
&= | x &= 3 | x = x & 3 |
|= | x |= 3 | x = x | 3 |
^= | x ^= 3 | x = x ^ 3 |
>>= | x >>= 3 | x = x >> 3 |
<<= | x <<= 3 | x = x << 3 |
Variables de Python
Las variables almacenan datos en la memoria de una computadora. Se recomienda el uso de variables mnemotécnicas en muchos lenguajes de programación. Una variable mnemotécnica es un nombre de variable que se puede recordar y asociar fácilmente. Una variable se refiere a una dirección de memoria en la que se almacenan los datos. Número al principio, carácter especial, guión no están permitidos al nombrar una variable. Una variable puede tener un nombre corto (como x, y, z), pero se recomienda enfáticamente un nombre más descriptivo (nombre, apellido, edad, país).
Reglas de nombres de variables de Python
- Un nombre de variable debe comenzar con una letra o el carácter de subrayado
- Un nombre de variable no puede comenzar con un número
- Un nombre de variable solo puede contener caracteres alfanuméricos y guiones bajos (Az, 0-9 y _)
- Los nombres de las variables distinguen entre mayúsculas y minúsculas (firstname, Firstname, FirstName y FIRSTNAME) son variables diferentes)
Veamos nombres de variables válidos
nombre
apellido
edad
pais
ciudad
nombre
apellido
ciudad_capital
_if # si queremos usar la palabra reservada como variable
ano_2023
ano2023
ano_actual_2023
ano_nacimiento
num1
num2
Nombres de variables no válidos
primer-nombre
primer@nombre
primer$nombre
num-1
1num
Usaremos el estilo estándar de nomenclatura de variables de Python que ha sido adoptado por muchos desarrolladores de Python. Los desarrolladores de Python usan la convención de nomenclatura de variables de caja de serpiente (snake_case). Usamos un carácter de subrayado después de cada palabra para una variable que contiene más de una palabra (p. ej., nombre, apellido, velocidad de rotación del motor). El siguiente ejemplo es un ejemplo de nomenclatura estándar de variables, se requiere guión bajo cuando el nombre de la variable es más de una palabra.
Cuando asignamos un determinado tipo de datos a una variable, se llama declaración de variable. Por ejemplo, en el siguiente ejemplo, mi nombre se asigna a una variable first_name. El signo igual es un operador de asignación. Asignar significa almacenar datos en la variable. El signo igual en Python no es la igualdad como en Matemáticas.
Ejemplo:
# Variables en Python
nombre = 'Alejandra'
apellidos = 'Palomo'
pais = 'USA'
ciudad = 'San Diego'
edad = 250
esta_casado = True
habilidades = ['HTML', 'CSS', 'JS', 'React', 'Python']
persona_info = {
'nombre':'Alejandra',
'apellido':'Palomo',
'pais':'USA',
ciudad: 'San Diego'
}
Usemos las funciones integradas print()
y len()
. La función de impresión toma un número ilimitado de argumentos. Un argumento es un valor que se puede pasar o poner dentro del paréntesis de la función, vea el ejemplo a continuación.
Ejemplo:
print('¡Hola, Mundo!') # El texto ¡Hola, Mundo! es un argumento
print('Hola',',', 'Mundo','!') # puede tomar múltiples argumentos, se han pasado cuatro argumentos
print(len('¡Hola, Mundo!')) # sólo tiene un argumento
Imprimamos y también encontremos la longitud de las variables declaradas en la parte superior:
Ejemplo:
# Imprimir los valores almacenados en las variables
print('Nombre:', nombre)
print('Longitud del nombre:', len(nombre))
print('Apellidos: ', apellidos)
print('Longitud del apellidos: ', len(apellidos))
print('País: ', pais)
print('Ciudad: ', ciudad)
print('Edad: ', edad)
print('Casado: ', esta_casado)
print('Habilidades: ', habilidades)
print('Información de la persona: ', persona_info)
Declarar múltiples variables en una línea
También se pueden declarar múltiples variables en una línea:
Ejemplo:
nombre, apellidos, pais, edad, esta_casado = 'Alejandra', 'Palomo', 'USA', 250, True
print(nombre, apellidos, pais, edad, esta_casado)
print('Nombre:', nombre)
print('Apellidos: ', apellidos)
print('País: ', pais)
print('Edad: ', edad)
print('Casado: ', esta_casado)
Obtener la entrada del usuario usando la función incorporada input() . Asignemos los datos que obtenemos de un usuario a las variables first_name y age.
Ejemplo:
nombre = input('Cómo te llamas: ')
edad = input('¿Cuántos años tienes? ')
print(nombre)
print(edad)
Seguiremos manejando a lo largo del curso el resto de tipos de datos, el resto de operadores de comparación, los operadores de especiales también bien los utilizaremos bastante y el resto de cosas que hemos visto. Vamos a dejar este post en el punto en el que nos encontramos y os digo lo de siempre, os invito a continuar con la próxima entrega donde veremos las Funciones en Python. Hasta entonces, que vaya bien.