Lorsque vous démarrez l’interprète Python, vous disposez en fait d’une calculette, par exemple, vous pouvez taper :
20 * 601200Les 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 * 5110De 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)110Attention, en Python3 la division / est la division usuelle, qui renvoie un flottant :
48 / 59.6Rappelez-vous des opérateurs suivants qui sont très pratiques :
| code | opération |
|---|---|
// | quotient |
% | modulo |
** | puissance |
# calculer un quotient
48 // 59# modulo (le reste de la division par)
48 % 5The 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 ** 101024Vous 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 * 20100# après quoi bien sûr la variable reste inchangée
largeur * 1050Pour 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 * 1062.8318Pour les valeurs spéciales comme , 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, piEt ainsi imprimer les racines troisièmes de l’unité par la formule :
pour
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)complexChaî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)strMaintenant 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 * age24Ou 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 :
| Type | Fonction |
|---|---|
| Entier | int |
| Flottant | float |
| Complexe | complex |
| Chaîne | str |
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_nombre23456789012345# ça marche aussi avec les flottants
123_456.789_012123456.789012Entiers 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.