Tipos primitivos (Inmutables)

Aqui tenemos los tipos de datos más básicos de existentes en Python.

# Esto es un comentario inline
valor_nulo = None
numero = 42
decimal = 3.14
complejo = (5.8 + 3j)
texto = "Hola, mundo"
es_verdadero = True
datos_binarios = b"Hola"

Operadores

Aritméticos

1 + 1   # => 2
8 - 1   # => 7
10 * 2  # => 20
35 / 5  # => 7.0 # El resultado de la division siempre es un float

# división entera
5 // 3       # => 1
-5 // 3      # => -2
5.0 // 3.0   # => 1.0  # funciona tambien para coma flotante (floats)
-5.0 // 3.0  # => -2.0

# módulo o resto de la división
7 % 3   # => 1
-7 % 3  # => 2

# potencia
2 ** 3  # => 8

# prioridad con los paréntesis
1 + 3 * 2       # => 7
(1 + 3) * 2     # => 8

Lógicos

# Importante la mayuscula inicial.
True    # => Verdad
False   # => Falso

not True    # => Falso
not False   # => Verdad

True and False  # => False
False or True   # => True

# True equivale a 1 y False a 0
True + True  # => 2
True * 8     # => 8
False - 5    # => -5

# Comparaciones
0 == False   # => True
2 > True     # => True
2 == True    # => False
-5 != False  # => True

# None, 0 y valores vacios de strings/lists/dicts/tuples/sets evalúan a False.
# El resto a True
bool(0)      # => False
bool("")     # => False
bool([])     # => False
bool({})     # => False
bool(())     # => False
bool(set())  # => False
bool(4)      # => True
bool(-6)     # => True

# Conversiones de tipo y operadores logicos
bool(0)   # => False
bool(2)   # => True
0 and 2   # => 0
bool(-5)  # => True
bool(2)   # => True
-5 or 0   # => -5

# Igualdad es ==
1 == 1  # => True
2 == 1  # => False

# Diferente es !=
1 != 1  # => False
2 != 1  # => True

# Otros comparadores
1 < 10  # => True (menor estricto a)
1 > 10  # => False (mayor estricto a)
2 <= 2  # => True (menor o igual a)
2 >= 2  # => True (mayor o igual a)

# Conocer si un valor está dentro de un rango
1 < 2 and 2 < 3  # => True
2 < 3 and 3 < 2  # => False

# Pero se ve más claro si hacemos esto
1 < 2 < 3  # => True
2 < 3 < 2  # => False

# is es diferente a ==
a = [1, 2, 3, 4]    # se almacena en la variable a la lista de valores 1, 2, 3, 4.
b = a               # b apunta a a
b is a              # => True, a y b apuntan al mismo objeto
b == a              # => True, los objetos a y b son iguales en valor
b = [1, 2, 3, 4]    # se almacena en la variable b la lista de valores 1, 2, 3, 4.
b is a              # => False, a y b no apuntan al mismo objeto
b == a              # => True, los objetos a y b son iguales en valor

Operaciones sobre cadenas de texto

También se pueden realizar operaciones con cadenas de texto, aqui se explican algunas.

# cadenas de texto (str)
"Esto es una cadena de texto"
'Esto tambien'

# concatenar cadenas de texto
"Hola " + "mundo!"
"Hola " "mundo!" # Tambien es posible concatenar sin el operador +

# Acceso a caracter de una cadena (str)
"Hola mundo!"[0]        # => 'H'
"Hola mundo!"[2]        # => 'l'
"Hola mundo!"[-1]       # => '!'
"Hola mundo!"[-2]       # => 'o'

# Longitud de una cadena de texto
len("Hola mundo!")      # => 11

# f-strings
nombre = "Howl"
f"El corazón de {nombre} lo tenía Calcifer" # => El corazón de Howl lo tenía Calcifer"
f"{nombre} tiene {len(nombre)} caracteres"  # => "Howl tiene 4 caracteres"

# None también es un objeto
None
type(None)  # => <class 'NoneType'> objecto de tipo NoneType

# No usar el operador == para comparar objetos a None. Usemos is
"etc" is None   # => False
None is None    # => True