Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí

Números, booleanos y algoritmos aplicados

Números

1. Tipos

a. Enteros

Un número entero es de tipo int:

>>> type(1)  
<class 'int'> 

He aquí la lista de métodos y atributos que integra:

>>> dir(int)  
['__abs__', '__add__', '__and__', '__bool__', '__ceil__',  
'__class__', '__delattr__', '__divmod__', '__doc__', '__eq__', 
'__float__', '__floor__', '__floordiv__', '__format__', '__ge__', 
'__getattribute__', '__getnewargs__', '__gt__', '__hash__',  
'__index__', '__init__', '__int__', '__invert__', '__le__',  
'__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', 
'__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', 
'__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__',  
'__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', 
'__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', 
'__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', 
'__str__', '__sub__', '__subclasshook__', '__truediv__', 
'__trunc__', '__xor__', 'as_integer_ratio','bit_length', 'conjugate', 
'denominator', 'imag', 'numerator', 'real'] 

Como ya hemos visto, todos los métodos que empiezan y terminan con dos caracteres guion bajo son métodos especiales, utilizados para el funcionamiento interno de Python, mientras que los otros son los que vamos a poder usar.

Estos métodos se aplican a los objetos en el marco de lo que está permitido por la gramática de Python. De este modo, el punto se considera como una coma, en el sentido matemático, y no como el acceso al objeto.

Para utilizar dicho acceso se utilizan los paréntesis:

>>> 1+2  
3  
>>> 1.__add__(2)  
File...

Booleanos

1. El tipo booleano

a. Clase bool

Un booleano es un valor entero:

>>> type.mro(bool) 
[<class 'bool'>, <class 'int'>, <class 'object'>] 

Los métodos y atributos son idénticos:

>>> list(set(dir(bool))-set(dir(int))) 
[] 
>>> list(set(dir(int))-set(dir(bool))) 
[] 

Todo lo que hemos visto en la sección relativa a los enteros puede aplicarse, por tanto, a las instancias de bool, incluidos los operadores e incluso las conversiones a bytes que se han visto en la sección relativa a las cadenas de caracteres:

>>> bool(42)*1 
1 
>>> bool(0)*1 
0 
>>> True.to_bytes(2, 'little') 
b'\x01\x00' 
>>> True.to_bytes(2, 'big') 
b'\x00\x01' 
>>> False.to_bytes(2, 'little') 
b'\x00\x00' 
>>> False.to_bytes(2, 'big') 
b'\x00\x00' 

El interés de estas operaciones es hacer que el booleano se parezca a un valor binario 1 o 0, que se asemeja a un valor entero.

b. Los dos objetos True y False

Esta clase es muy particular, puesto que no posee más que dos instancias, que son True y False, y que se asemejan, respectivamente, a los valores enteros 1 y 0:

>>> bool(42) 
True 
>>> bool(0) 
False 

Estas dos instancias son no mutables, no modificables...