Licence CC BY-NC-ND, Thierry Parmentelat & Arnaud Legout

from IPython.display import HTML
HTML(filename="_static/style.html")

les nombres#

les types de base pour les nombres sont:int, float, complex, bool

les entiers#

  • les int ont une précision illimitée

    • Python peut calculer nativement

92857234957203457234572203957 * 948572349572039457029347529347
88081805538117400166084413860573792922096998567618527026079

ceux qui ont eu à faire ça en C apprécieront

nombres : division#

les opérations usuelles ne posent pas de souci, c’est bien sûr + - * avec ( et )
mais la division mérite quelques mots:

# division exacte/flottante
8 / 5
1.6
# division entière (quotient)
8 // 5
1
# reste div. entière
8 % 5
3

nombres : opérateurs#

# bcp d'autres opérations disponibles
# et notamment:

2 ** 32         # puissance
4294967296
# tous les opérateurs peuvent être utilisés
# pour faire un effet de bord comme ceci

x = 10
x += 2
x
12

conversions#

int(234.5)      # cast float ➔ int
234

à retenir !

un type en Python est aussi une usine à objets,
il peut être utilisé comme une fonction
ici l’appel int(234.5) consiste à appeler le type int
pour fabriquer un objet, de type int donc, à partir de la valeur 234.5

moins crucial

il existe aussi des fonctions floor() et ceil() dans le module math
toutefois la méthode ci-dessus est plus générale, elle s’applique à tous les types en Python

nombres complexes#

# pour écrire un complexe
# il faut utiliser j et non pas i

1j * 1j
(-1+0j)
a = 3 + 4j

# partie réelle
a.real
3.0
# partie imaginaire
a.imag          
4.0

les attributs, encore..

remarquez qu’ici à nouveau, le terme a.real consiste à rechercher l’attribut real dans l’objet (désigné par) a

le module math#

# pour anticiper un peu
# sur les listes...
# ici on veut les 6 derniers
# symboles dans le module math

import math

dir(math)[-6:]
['sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
math.tau
6.283185307179586
math.sin(math.pi)
1.2246467991473532e-16

exo: entrainez-vous à chercher dans google

entraînez vous à trouver rapidement la doc de ce module dans google en cherchant par exemple “python module math

https://www.google.com/search?q=python+module+math

décortiquons un peu

après l’import, la variable math désigne donc un objet de type module
et à nouveau, l’écriture math.tau consiste à rechercher l’attribut tau dans cet objet module
et pareil exactement pour math.sin, qui désigne … un objet fonction

booléens#

# il y a aussi le type booléen

10 <= 12
True
# avec comme valeurs True et False

10 >= 12
False
# True c'est presque exactement 1

True == 1
True
# et False presque exactement 0

False == 0
True
# mais pas tout à fait quand même

type(True)
bool
# alors que

type(1)
int

opérateurs sur les booléens#

# tout simplement avec les mots-clé and, or, et not

x = 10

(8 <= x) and (x <= 12)
True
# cela dit dans ce cas-là on peut écrire
# de manière plus simple

8 <= x <= 12
True
# pour tester l'égalité (on en a déjà parlé)

x == 10
True
# pour tester l'inégalité

x != 10
False

opérateurs is et in#

  • is permet de savoir si deux objets sont le même objet - c’est-à-dire correspondent à la même adresse en mémoire

  • in permet de savoir si un objet fait partie d’un autre objet

avec ces deux opérateurs, le not permet des syntaxes plutôt lisibles

  • x is not y

  • x not in y

voyons cela sur un exemple vous vous souvenez de l’exemple avec les deux objets liste ?

# ici on crée deux objets liste distincts

# le premier (avec deux références)
a = b = [1, 2]
# le deuxième
c = [1, 2]
%load_ext ipythontutor
%%ipythontutor curInstr=2

a = b = [1, 2]
c = [1, 2]