Nombres

Les nombres sont un concept pour comparer et ordonner des éléments par une numérotation.

Numération

La numération désigne le mode de représentation des nombres.
Nous utilisons la numération occidentale, dite arabe ou indo-arabe. Elle est décimale et positionnelle.

Voici les 5 premiers nombres en numération arabe

1, 2, 3, 4, 5

en umération romaine

I, II, III, IV, V

et en numération japonaise

一、二、三、四、五

Les différents ensembles

Le système décimal utilise 10 chiffres pour représenter les nombres. Dans cette section nous allons construire des séquences de symboles qui représentent un

  • nombre naturel

  • nombre entier

  • nombre rationnel

  • nombre scientifique

digits = '0123456789'

La fonction choice du module random permet d’en sélectionner un chiffre aléatoire.

from random import choice
choice(digits)
'2'
def d():
    return choice(digits)

Voici trois digits.

d(), d(), d()
('8', '3', '3')

Nombre naturel

Un nombre naturel est représenté avec une séquence de chiffres.

def n(m):
    s = ''
    for i in range(m):
        s += d()
    return s        

Voici trois nombres naturels.

n(3), n(5), n(7)
('917', '42720', '6516585')

Nombre entier

Les nombre entiers incluent aussi les nombres négatifs. Nous utilisons les symboles

  • plus +

  • moins -

def z(m):
    sign = choice('-+')
    return  sign + n(m)    

Voici trois exemples de nombre entier.

z(2), z(3), z(5)
('-46', '-377', '-87196')

Nombre rationnel

Nombre à virgule flottante.

def q(k, m):
    return z(k) + '.' + n(m)
q(2, 3), q(1, 7), q(4, 5)
('-07.470', '+0.4390918', '-5823.33598')

Nombre scientifique

def e(k, m):
    return q(1, k-1) + 'e' + z(m)    
e(3, 1), e(2, 2), e(3, 1)
('+3.13e-8', '-6.3e+00', '+3.17e-0')

Type int

Python connait deux types de nombres

  • int

  • float

type(1), type(1.2)
(int, float)
a = z(2), z(3), z(5)
for x in a:
    print(x, '-->', int(x))
-16 --> -16
-356 --> -356
+22963 --> 22963

En Python il n’y a pas de limitation pour le nombre de positions d’un entier.

a = n(50)
int(a)
41202897292098274027477877193047814135821830647208

Nous constatons que l’addtion de 1 donne le bon résultat.

int(a) + 1
41202897292098274027477877193047814135821830647209

Type float

nombres = e(3, 1), e(2, 2), e(3, 2)
for x in nombres:
    print(x, '-->', float(x))
+5.81e-9 --> 5.81e-09
+5.7e-63 --> 5.7e-63
-6.28e-59 --> -6.28e-59

Nombres hexadécimales

Le système hexadécimal est un système de numérotation en base 16. En plus des 10 chiffres, il utilise les premiers 6 lettres de l’alphabet.

Ce système est très pratique en informatique, parce qu’il permet de représenter 4 éléments binaires avec un seul symbole hexadécimale.

Nous utilisons ici un f-string pour formater la variable i

  • {i:2} affiche la variable i avec 2 positions

  • {i:04b} affiche la variable i en binaire avec 4 positions (rambourré avec des 0)

  • {i:X} affiche la variable i en hexadécimal

for i in range(16):
    print(f'{i:2} = {i:04b} = {i:X}')
 0 = 0000 = 0
 1 = 0001 = 1
 2 = 0010 = 2
 3 = 0011 = 3
 4 = 0100 = 4
 5 = 0101 = 5
 6 = 0110 = 6
 7 = 0111 = 7
 8 = 1000 = 8
 9 = 1001 = 9
10 = 1010 = A
11 = 1011 = B
12 = 1100 = C
13 = 1101 = D
14 = 1110 = E
15 = 1111 = F

Voici les dernières valeurs d’un octet

for i in range(250, 256):
    print(f'{i} = {i:08b} = {i:02X}')
250 = 11111010 = FA
251 = 11111011 = FB
252 = 11111100 = FC
253 = 11111101 = FD
254 = 11111110 = FE
255 = 11111111 = FF