Bibliothèque Numérique ENI :
tous nos livres & vidéos, en accès illimité 24h/24. Cliquez ici
Bibliothèque Numérique ENI :
tous nos livres & vidéos, en accès illimité 24h/24. Cliquez ici

Nombres, booléens et algorithmes appliqués

Nombres

1. Types

a. Entiers

Un nombre entier est de type int :

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

Voici la liste des méthodes et attributs qu’il intègre :

>>> 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'] 

Comme nous l’avons déjà vu, toutes les méthodes commençant et terminant par deux caractères « souligné »...

Booléens

1. Le type booléen

a. Classe bool

Un booléen est un entier :

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

Les méthodes et attributs sont identiques :

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

Tout ce qui a été vu dans la section sur les entiers s’applique donc aux instances de bool, y compris les opérateurs et même, les conversions vers les bytes vues dans le chapitre sur les chaînes de caractères :

>>> bool(42)*1 >>> bool(0)*1 >>> 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' 

L’intérêt de ces opérations est de rendre le booléen assimilable à un binaire 1 ou 0 qui est ainsi homogène à un entier.

b. Les deux objets True et False

Cette classe est très particulière, car elle ne possède que deux instances qui sont True et False et qui sont respectivement assimilables aux entiers 1 et 0 :

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

Ces deux instances sont non mutables, non modifiables, hashable et uniques :

>>> hash(True>>> hash(False>>> bool(42) is bool([34]) 
True 
>>> bool(0) is bool([]) 
True 

c. Différence entre l’opérateur d’égalité et d’identité

True et False sont deux instances uniques, donc elles ont le même identifiant, quelle que soit...