Operadores¶
Definición de variable¶
Una variable es un espacio dentro de nuestro código que nos permite almacenar y acceder a ciertos datos en el momento que lo necesitemos
Los nombres de variables en Python se definen de la siguiente forma:
- Cualquier cantidad de letras (A-Z, a-z), dígitos (0-9) and el símbolo _ (guión bajo).
- Una variable no puede empezar con un dígito.
- Se sigue la norma snake_case.
Ejemplos válidos:
- fecha_matriculacion, nombre_usuario
Ejemplos no válidos:
- 1aaaa, _*?
Operador de asignación¶
Se corresponde con el símbolo =.
Sirve para asignar datos a variables.
En la actualizad, cuando definimos una variable (no siempre hay que hacerlo) aplicamos un concepto llamado Type Hint.
Este nos permite indicar qué dato debe guardar una variable concreta.
Recordemos que Python es dinámicamente tipado, por lo que en una variable podemos meter lo que queramos, el Type Hinting simplemente es una buena práctica para hacer nuestro código más legible. No obliga a que una variable tenga un dato concreto.
entero : int = 1
entero
1
decimal : float = 1.0
decimal
1.0
cierto : bool = True
cierto
True
cadena_texto : str = 'cadena'
cadena_texto
'cadena'
lista : list = [1, 2, '1']
lista
[1, 2, '1']
tupla : tuple = (1, 2, 3)
conjunto : set = {1, 2, 3, 3, 3, 3, 3}
conjunto
{1, 2, 3}
diccionario : dict = {'persona' : 23}
diccionario
{'persona': 23}
nada : None = None
nada
Operadores aritméticos¶
En python existen 7 operaciones aritméticas a nuestra disposición por defecto.
Operaciones:
- Suma: +
- Resta: -
- Producto: *
- División: /
- Potencia: **
- División Entera: //
- Módulo o resto: %
Números (Int y Float)¶
1 + 42
43
4 - 10
-6
3 * 4 * 2
24
6 / 2
3.0
2 ** 3
8
6 // 2
3
3 % 2
1
Podemos combinarlas como queramos.
Recordemos que la prioridad es PEMDAS (Paréntesis, Exponente, Multiplicación, División, Adicion, Subtracción)
1 + 2 * 3 // 4
2
1 + (2 * 3) // 4
2
(2 + 2) * (3 + 4)
28
2 ** 3 / 4
2.0
2 ** (3 / 4)
1.681792830507429
Bool¶
True + True
2
True / False
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) c:\Users\sergi\Documents\repos\python_course\tutoriales\02_operadores.ipynb Cell 33 line 1 ----> <a href='vscode-notebook-cell:/c%3A/Users/sergi/Documents/repos/python_course/tutoriales/02_operadores.ipynb#X44sZmlsZQ%3D%3D?line=0'>1</a> True / False ZeroDivisionError: division by zero
False * True
0
Secuencias (String, List, Tuple)¶
- La suma de sencuencias concatena secuencias
- secuencia * n genera una nueva secuencia replicada n veces
- El resto de operaciones da error
'hola ' + 'mundo'
'hola mundo'
'palabra ' * 3
'palabra palabra palabra '
[1] + [3]
[1, 3]
[1] * 4
[1, 1, 1, 1]
(1, ) + ('a', (1, ))
(1, 'a', (1,))
(1, [1, 2]) * 2
(1, [1, 2], 1, [1, 2])
Set¶
Solo funciona la resta como diferencia asimétrica
{1, 2} - {1, 2, 3}
set()
{1, 2, 3} - {1, 2}
{3}
Dict y None¶
Da error cualquier operación
{ 'a' : 1 } + {'a' : 1}
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) c:\Users\sergi\Documents\repos\python_course\tutoriales\02_operadores.ipynb Cell 46 line 1 ----> <a href='vscode-notebook-cell:/c%3A/Users/sergi/Documents/repos/python_course/tutoriales/02_operadores.ipynb#X63sZmlsZQ%3D%3D?line=0'>1</a> { 'a' : 1 } + {'a' : 1} TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
None + None
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) c:\Users\sergi\Documents\repos\python_course\tutoriales\02_operadores.ipynb Cell 47 line 1 ----> <a href='vscode-notebook-cell:/c%3A/Users/sergi/Documents/repos/python_course/tutoriales/02_operadores.ipynb#X64sZmlsZQ%3D%3D?line=0'>1</a> None + None TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
Ejercicios¶
- Sumar varios números en una misma sentencia
- Combinar operadores y paréntesis para formar cálculos largos
- Usar variables y operadores
Operadores bit a bit (bitwise)¶
Lo único que entienden las computadoras son 0s y 1s.
Todo está representado en binario.
Las siguientes operaciones se realizan normalmente sobre los números enteros.
Operaciones:
- AND: &
- OR: |
- XOR: ^
- NOT: ~
- SHIFT LEFT: <<
- SHIFT RIGHT: >>
AND¶
La sintaxis es int & int.
Cuando aplicamos esta operación lo que hacemos es ejecutar bit a bit la puerta lógica AND.
Solo obtenemos 1 cuando ambos valores sean 1.
AND:
- 0 & 0 -> 0
- 0 & 1 -> 0
- 1 & 0 -> 0
- 1 & 1 -> 1
"""
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
2 & 5 = 010 & 101 = 000 = 0
1 & 5 = 001 & 101 = 001 = 1
"""
2 & 5, 1 & 5
(0, 1)
OR¶
La sintaxis es int | int.
Cuando aplicamos esta operación lo que hacemos es ejecutar bit a bit la puerta lógica OR.
Cuando alguno de los valores sea 1, obtenemos 1.
OR:
- 0 | 0 -> 0
- 0 | 1 -> 1
- 1 | 0 -> 1
- 1 | 1 -> 1
"""
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
2 | 5 = 010 | 101 = 111 = 7
1 | 5 = 001 | 101 = 101 = 5
"""
2 | 5, 1 | 5
(7, 5)
XOR¶
La sintaxis es int ^ int.
Cuando aplicamos esta operación lo que hacemos es ejecutar bit a bit la puerta lógica XOR.
Se conoce como o exclusivo porque solo obtenemos 1 cuando los valores son distintos.
XOR:
- 0 ^ 0 -> 0
- 0 ^ 1 -> 1
- 1 ^ 0 -> 1
- 1 ^ 1 -> 0
"""
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
2 ^ 5 = 010 ^ 101 = 111 = 7
1 ^ 5 = 001 ^ 101 = 100 = 4
"""
2 ^ 5, 1 ^ 5
(7, 4)
NOT¶
La sintaxis ~int.
Cuando aplicamos esta operación lo que hacemos es ejecutar bit a bit la puerta lógica NOT.
Lo que es 1 se hace 0 y lo que es 0 se hace 1.
NOT:
- ~0 -> 1
- ~1 -> 0
"""
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
~2 = ~010 = 101 = 5
~1 = ~001 = 110 = 6
"""
~0, ~1
(-1, -2)
SHIFT LEFT¶
La sintaxis int << int.
Cuando aplicamos esta operación lo que hacemos es desplazar los bit del número n veces a la izquierda.
"""
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
1 << 1 = 001 << 1 = 010 = 2
"""
1 << 1
2
SHIFT RIGHT¶
La sintaxis int >> int.
Cuando aplicamos esta operación lo que hacemos es desplazar los bit del número n veces a la derecha.
"""
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
7 >> 1 = 111 >> 1 = 011 = 3
"""
7 >> 1
3
Ejercicios¶
- Extraer el tercer y quinto bit (a la vez) de los números 255 y 250
Operadores lógicos¶
Estas operaciones trabajan bajo el concepto de verdad y mentira. En otras palabras:
- En las operaciones aritméticas trabajamos con números y obtenemos números como resultado (Salvo en Secuencias y Sets que obtenemos Secuencias y Sets respectivamente).
- En las operaciones bit a bit trabajamos con bits y obtenemos números representados con los bits modificados como resultado.
De igual manera, en las operaciones lógicas trabajamos con Bools que representan los valores True y False y obtenemos Bools como resultado
(Salvo en el caso de AND y OR pero eso ya lo dejo como investigación para quien tenga curiosidad).
Operaciones:
- AND: and
- OR: or
- NOT: not
- IS: is
- IN: in
- EQUALS: ==
- NOT EQUALS: !=
- GREATER: >
- LESSER: <
- GREATER OR EQUALS: >=
- LESSER OR EQUALS: <=
AND¶
La sintaxis es bool and bool.
Funciona igual que vimos en las operaciones bit a bit. La diferencia es que trabajamos con bools.
AND:
- False and False -> False
- False and True -> False
- True and False -> False
- True and True -> True
False and False
False
False and True
False
True and False
False
True and True
True
OR¶
La sintaxis es bool or bool.
Funciona igual que vimos en las operaciones bit a bit. La diferencia es que trabajamos con bools.
OR:
- False or False -> False
- False or True -> True
- True or False -> True
- True or True -> True
False or False
False
False or True
True
True or False
True
True or True
True
NOT¶
La sintaxis es not bool.
Funciona igual que vimos en las operaciones bit a bit. La diferencia es que trabajamos con bools.
NOT:
- not False -> True
- not True -> False
not False
True
not True
False
IS¶
La sintaxis es data is data.
Compara si 2 datos son idénticos. Es decir, están guardados exactamente en la misma posicion de memoria.
[1, 2] is [1, 2]
False
lista_1 : list = [1, 2]
lista_2 : list = lista_1
lista_1 is lista_2
True
IN¶
La sintaxis es data in data.
Estudia si un dato está en otro dato que agrupe otros datos como los strings, lists, tuples, sets, and dicts.
'a' in 'abcdefghijklmnopqrstuvwxyz'
True
1 in [2, 3, 4]
False
En el caso de los diccionarios, se comprueba si data está entre las claves. No entre los valores.
'a' in {'a' : 1}
True
'a' in {1 : 'a'}
False
EQUALS¶
La sintaxis es data == data.
Compara si dos variables guardan el mismo valor. No comparamos si guardan el mismo valor en la misma posicion de memoria. Estamos viendo si los valores que contienen coinciden.
[1, 2] == [1, 2]
True
1 == 'a'
False
1 == 1
True
1 != 0
True
'a' != 'a'
False
GREATER¶
La sintaxis es data > data.
Compara si un dato es mayor que otro.
Nota: Se puede escribir dato1 > dato2 > dato3 en una misma sentencia.
1 > 2
False
2 > 1
True
LESSER¶
La sintaxis es data < data.
Compara si un dato es menor que otro.
Nota: Se puede escribir dato1 < dato2 < dato3 en una misma sentencia.
1 < 2
True
3 < 2
False
GREATER OR EQUALS¶
La sintaxis es data >= data.
Compara si un dato es mayor o igual que otro.
Nota: Se puede escribir dato1 >= dato2 >= dato3 en una misma sentencia.
1 >= -1
True
0 >= -1 >= -2
True
LESSER OR EQUALS¶
La sintaxis es data <= data.
Compara si un dato es menor o igual que otro.
Nota: Se puede escribir dato1 <= dato2 <= dato3 en una misma sentencia.
0 <= 1 <= 10
True
Extra¶
Se pueden combinar las operaciones <, >, <=, >= de la forma A >= B < C, ...
1 <= 2 > 0
True
Ejercicios¶
- Comparar números con listas
- Comparar strings entre sí
- Usa los operadores and, or y not con otros tipos de datos como listas, sets, ...