Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Licence CC BY-NC-ND Thierry Parmentelat & Arnaud Legout Inria - UCA

Lorsque vous démarrez l’interprète Python, vous disposez en fait d’une calculette, par exemple, vous pouvez taper :

20 * 60
1200

Les règles de priorité entre les opérateurs sont habituelles, les produits et divisions sont évalués en premier, ensuite les sommes et soustractions :

2 * 30 + 10 * 5
110

De manière générale, il est recommandé de bien parenthéser ses expressions. De plus, les parenthèses facilitent la lecture d’expressions complexes.

Par exemple, il vaut mieux écrire ce qui suit, qui est équivalent mais plus lisible :

(2 * 30) + (10 * 5)
110

Attention, en Python3 la division / est la division usuelle, qui renvoie un flottant :

48 / 5
9.6

Rappelez-vous des opérateurs suivants qui sont très pratiques :

codeopération
//quotient
%modulo
**puissance
# calculer un quotient
48 // 5
9
# modulo (le reste de la division par)
48 % 5
The history saving thread hit an unexpected error (OperationalError('attempt to write a readonly database')).History will not be written to the database.
3

# puissance
2 ** 10
1024

Vous pouvez facilement faire aussi des calculs sur les complexes. Souvenez-vous seulement que la constante complexe que nous notons i en français se note j en Python, ce choix a été fait par le BDFL - alias Guido van Rossum - pour des raisons de lisibilité :

# multiplication de deux nombres complexes
(2 + 3j) * 2.5j
(-7.5+5j)

Aussi, pour entrer ce nombre complexe j, il faut toujours le faire précéder d’un nombre, donc ne pas entrer simplement j (qui serait compris comme un nom de variable, nous allons voir ça tout de suite) mais plutôt 1j ou encore 1.j, comme ceci :

1j * 1.j
(-1+0j)

Utiliser des variables

Il peut être utile de stocker un résultat qui sera utilisé plus tard, ou de définir une valeur constante. Pour cela on utilise tout simplement une affectation comme ceci :

# pour définir une variable il suffit de lui assigner une valeur
largeur = 5
# une fois la variable définie, on peut l'utiliser, ici comme un nombre
largeur * 20
100
# après quoi bien sûr la variable reste inchangée
largeur * 10
50

Pour les symboles mathématiques, on peut utiliser la même technique :

# pour définir un réel, on utilise le point au lieu d'une virgule en français
pi = 3.14159
2 * pi * 10
62.8318

Pour les valeurs spéciales comme π\pi, on peut utiliser les valeurs prédéfinies par la bibliothèque mathématique de Python. En anticipant un peu sur la notion d’importation que nous approfondirons plus tard, on peut écrire :

from math import e, pi

Et ainsi imprimer les racines troisièmes de l’unité par la formule :

rn=e2iπn3,r_n = e^{2i\pi \frac{n}{3}}, pour n{0,1,2}n\in \{0,1,2\}

n = 0
print("n=", n, "racine = ", e**((2.j*pi*n)/3))
n = 1
print("n=", n, "racine = ", e**((2.j*pi*n)/3))
n = 2
print("n=", n, "racine = ", e**((2.j*pi*n)/3))
n= 0 racine =  (1+0j)
n= 1 racine =  (-0.4999999999999998+0.8660254037844387j)
n= 2 racine =  (-0.5000000000000004-0.8660254037844384j)

Remarque : bien entendu il sera possible de faire ceci plus simplement lorsque nous aurons vu les boucles for.

Les types

Ce qui change par rapport à une calculatrice standard est le fait que les valeurs sont typées. Pour illustrer les trois types de nombres que nous avons vus jusqu’ici :

# le type entier s'appelle 'int'
type(3)
int
# le type flottant s'appelle 'float'
type(3.5)
float
# le type complexe s'appelle 'complex'
type(1j)
complex

Chaînes de caractères

On a également rapidement besoin de chaînes de caractères, on les étudiera bientôt en détail, mais en guise d’avant-goût :

chaine = "Bonjour le monde !"
print(chaine)
Bonjour le monde !

Conversions

Il est parfois nécessaire de convertir une donnée d’un type dans un autre. Par exemple on peut demander à l’utilisateur d’entrer une valeur au clavier grâce à la fonction input, comme ceci :

# à nouveau ceci n'est pas indispensable mais
# pour la production du PDF il nous faut ruser un peu...

reponse = "12"
# et à nouveau ceci n'est pas exécuté pendant 
# la production du PDF parce que c'est bloquant

reponse = input("quel est votre âge ? ")
# vous avez entré la chaîne suivante
print(reponse)
12
# ici reponse est une variable, et son contenu est de type chaîne de caractères
type(reponse)
str

Maintenant je veux faire des calculs sur votre âge, par exemple le multiplier par 2. Si je m’y prends naïvement, ça donne ceci :

# multiplier une chaîne de caractères par deux ne fait pas ce que l'on veut,
# nous verrons plus tard que ça fait une concaténation
2 * reponse
'1212'

C’est pourquoi il me faut ici d’abord convertir la (valeur de la) variable reponse en un entier, que je peux ensuite doubler (assurez-vous d’avoir bien entré ci-dessus une valeur qui correspond à un nombre entier)

# reponse est une chaine
# je la convertis en entier en appelant la fonction int()
age = int(reponse)
type(age)
int
# que je peux maintenant multiplier par 2
2 * age
24

Ou si on préfère, en une seule fois :

print("le double de votre age est", 2*int(reponse))
le double de votre age est 24

Conversions - suite

De manière plus générale, pour convertir un objet en un entier, un flottant, ou une chaîne de caractères, on peut simplement appeler une fonction built-in qui porte le même nom que le type cible :

TypeFonction
Entierint
Flottantfloat
Complexecomplex
Chaînestr

Ainsi dans l’exemple précédent, int(reponse) représente la conversion de reponse en entier.

On a illustré cette même technique dans les exemples suivants :

# dans l'autre sens, si j'ai un entier
a = 2345
# je peux facilement le traduire en chaîne de caractères
str(2345)
'2345'
# ou en complexe
complex(2345)
(2345+0j)

Nous verrons plus tard que ceci se généralise à tous les types de Python, pour convertir un objet x en un type bidule, on appelle bidule(x). On y reviendra, bien entendu.

Grands nombres

Comme les entiers sont de précision illimitée, on peut améliorer leur lisibilité en insérant des caractères _ qui sont simplement ignorés à l’exécution.

tres_grand_nombre = 23_456_789_012_345

tres_grand_nombre
23456789012345
# ça marche aussi avec les flottants
123_456.789_012
123456.789012

Entiers et bases

Les calculettes scientifiques permettent habituellement d’entrer les entiers dans d’autres bases que la base 10.

En Python, on peut aussi entrer un entier sous forme binaire comme ceci :

deux_cents = 0b11001000
print(deux_cents)
200

Ou encore sous forme octale (en base 8) comme ceci :

deux_cents = 0o310
print(deux_cents)
200

Ou enfin encore en hexadécimal (base 16) comme ceci :

deux_cents = 0xc8
print(deux_cents)
200

Pour d’autres bases, on peut utiliser la fonction de conversion int en lui passant un argument supplémentaire :

deux_cents = int('3020', 4)
print(deux_cents)
200

Fonctions mathématiques

Python fournit naturellement un ensemble très complet d’opérateurs mathématiques pour les fonctions exponentielles, trigonométriques et autres, mais leur utilisation ne nous est pas encore accessible à ce stade et nous les verrons ultérieurement.