Comment faire des mathématiques en Python 3 avec des opérateurs
Introduction
Les nombres sont extrêmement courants en programmation. Ils sont utilisés pour représenter des choses comme les dimensions de taille d'écran, les emplacements géographiques, l'argent et les points, le temps qui passe dans une vidéo, les positions des avatars de jeu, et les couleurs en attribuant des codes numériques.
Être capable d'effectuer efficacement des opérations mathématiques en programmation est une compétence importante à développer en raison de la fréquence à laquelle vous travaillerez avec des nombres. Bien qu'une compréhension de haut niveau des mathématiques puisse certainement vous aider à devenir un meilleur programmeur, ce n'est pas une condition préalable. Si vous n'avez pas de formation en mathématiques, essayez de considérer les mathématiques comme un outil pour accomplir ce que vous souhaitez atteindre, et comme un moyen d'améliorer votre pensée logique.
Nous travaillerons avec deux des types de données numériques les plus utilisés de Python, entiers et flottants :
- Les entiers sont des nombres entiers qui peuvent être positifs, négatifs ou 0 (…,
-1,0,1, …). - Les flottants sont des nombres réels, ils contiennent un point décimal (comme dans
9.0ou-2.25).
Ce tutoriel couvrira les opérateurs qui peuvent être utilisés avec les types de données numériques en Python.
Conditions préalables
Vous devez avoir Python 3 installé et un environnement de programmation configuré sur votre ordinateur ou serveur. Si vous n'avez pas d'environnement de programmation configuré, vous pouvez consulter les guides d'installation et de configuration pour un environnement de programmation local ou pour un environnement de programmation sur votre serveur, approprié à votre système d'exploitation (Ubuntu, CentOS, Debian, etc.).
Opérateurs
Un opérateur est un symbole ou une fonction qui indique une opération. Par exemple, en mathématiques, le signe plus ou + est l'opérateur qui indique l'addition.
En Python, nous verrons certains opérateurs familiers qui proviennent des mathématiques, mais d'autres opérateurs que nous utiliserons sont spécifiques à la programmation informatique.
Voici un tableau de référence rapide des opérateurs mathématiques en Python. Nous couvrirons toutes les opérations suivantes dans ce tutoriel.
| Opération | Ce qu'il renvoie |
|---|---|
| x + y | La somme de x et y |
| x - y | Différence de x et y |
| -x | Changé le signe de x |
| +x | Identité de x |
| x * y | Produit de x et y |
| x/y | Quotient de x et y |
| x/y | Quotient de la division entière de x et y |
| x % y | Reste de x/y |
| x ** y | x à la puissance y |
Nous couvrirons également les opérateurs d'affectation composés, y compris += et *=, qui combinent un opérateur arithmétique avec l'opérateur =.
Addition et Soustraction
En Python, les opérateurs d'addition et de soustraction fonctionnent de manière similaire à ceux des mathématiques. En fait, vous pouvez utiliser le langage de programmation Python comme une calculatrice.
Info : Pour suivre l'exemple de code dans ce tutoriel, ouvrez une interface Python interactive sur votre système local en exécutant la commande python3. Ensuite, vous pouvez copier, coller ou modifier les exemples en les ajoutant après l'invite >>>.
Examinons quelques exemples, en commençant par des entiers :
print(1 + 5)
[secondary_label Output]
6
Au lieu de passer des entiers directement dans l'instruction print, nous pouvons initialiser des variables pour représenter des valeurs entières :
a = 88
b = 103
print(a + b)
191
Parce que les entiers peuvent être des nombres à la fois positifs et négatifs (et 0 aussi), nous pouvons ajouter un nombre négatif à un nombre positif :
c = -36
d = 25
print(c + d)
-11
L'addition se comportera de manière similaire avec des flottants :
e = 5.5
f = 2.5
print(e + f)
8.0
Parce que nous avons ajouté deux nombres à virgule flottante, Python a renvoyé une valeur flottante avec une virgule décimale.
La syntaxe pour la soustraction est la même que pour l'addition, sauf que vous changerez votre opérateur du signe plus (+) au signe moins (-):
g = 75.67
h = 32
print(g - h)
43.67
Ici, nous avons soustrait un entier d'un flottant. Python renverra un flottant si au moins un des nombres impliqués dans une équation est un flottant.
Opérations arithmétiques unaires
Une expression mathématique unaire se compose d'un seul élément ou composant, et en Python, les signes plus et moins peuvent être utilisés comme un seul élément associé à une valeur pour renvoyer l'identité de la valeur (+), ou changer le signe de la valeur (-).
Bien que rarement utilisé, le signe plus indique l'identité de la valeur. Nous pouvons utiliser le signe plus avec des valeurs positives :
i = 3.3
print(+i)
3.3
Lorsque nous utilisons le signe plus avec une valeur négative, cela renverra également l'identité de cette valeur, et dans ce cas, ce serait une valeur négative :
j = -19
print(+j)
-19
Avec une valeur négative, le signe plus renvoie la même valeur négative.
Le signe moins, alternativement, change le signe d'une valeur. Donc, lorsque nous passons une valeur positive, nous trouverons que le signe moins devant la valeur renvoie une valeur négative :
i = 3.3
print(-i)
-3.3
Alternativement, lorsque nous utilisons l'opérateur unaire de signe moins avec une valeur négative, une valeur positive sera retournée :
j = -19
print(-j)
19
Les opérations arithmétiques unaires indiquées par le signe plus et le signe moins renverront soit l'identité de la valeur dans le cas de +i, soit le signe opposé de la valeur comme dans -i.
Multiplication et Division
Tout comme l'addition et la soustraction, la multiplication et la division ressembleront beaucoup à la façon dont elles apparaissent en mathématiques. Le signe que nous utiliserons en Python pour la multiplication est * et le signe que nous utiliserons pour la division est /.
Voici un exemple de multiplication en Python avec deux valeurs flottantes :
k = 100.1
l = 10.1
print(k * l)
1011.0099999999999
Lorsque vous divisez en Python 3, votre quotient sera toujours renvoyé sous forme de float, même si vous utilisez deux entiers :
m = 80
n = 5
print(m / n)
16.0
C'est l'un des principaux changements entre Python 2 et Python 3. L'approche de Python 3 fournit une réponse fractionnaire, de sorte que lorsque vous utilisez / pour diviser 11 par 2, le quotient de 5.5 sera retourné. Dans Python 2, le quotient retourné pour l'expression 11/2 est 5.
L'opérateur / de Python 2 effectue une division entière, où pour le quotient x, le nombre retourné est le plus grand entier inférieur ou égal à x. Si vous exécutez l'exemple ci-dessus de print(80/5) avec Python 2 au lieu de Python 3, vous recevrez 16 comme sortie sans la décimale.
En Python 3, vous pouvez utiliser // pour effectuer une division entière. L'expression 100/40 renverra la valeur de 2. La division entière est utile lorsque vous avez besoin qu'un quotient soit un nombre entier.
Modulo
L'opérateur % est le modulo, qui renvoie le reste plutôt que le quotient après la division. Cela est utile pour trouver des nombres qui sont des multiples du même nombre, par exemple.
Regardons le modulo en action :
o = 85
p = 15
print(o % p)
10
Pour décomposer cela, 85 divisé par 15 donne un quotient de 5 avec un reste de 10. La valeur 10 est ce qui est retourné ici car l'opérateur modulo renvoie le reste d'une expression de division.
Si nous utilisons deux flottants avec le modulo, une valeur flottante sera renvoyée pour le reste :
q = 36.0
r = 6.0
print(o % p)
0.0
Dans le cas de 36,0 divisé par 6,0, il n'y a pas de reste, donc la valeur de 0,0 est renvoyée.
Pouvoir
L'opérateur ** en Python est utilisé pour élever le nombre à gauche à la puissance de l'exposant à droite. C'est-à-dire que dans l'expression 5 ** 3, 5 est élevé à la 3ème puissance. En mathématiques, nous voyons souvent cette expression écrite comme 5³, et ce qui se passe réellement, c'est que 5 est multiplié par lui-même 3 fois. En Python, nous obtiendrions le même résultat de 125 en exécutant soit 5 ** 3 soit 5 * 5 * 5.
Regardons un exemple avec des variables :
s = 52.25
t = 7
print(s ** t)
1063173305051.292
Élever le nombre à virgule flottante 52.25 à la puissance 7 à l'aide de l'opérateur ** donne un grand nombre à virgule flottante en retour.
Priorité des opérateurs
En Python, comme en mathématiques, nous devons garder à l'esprit que les opérateurs seront évalués selon l'ordre de priorité, et non de gauche à droite ou de droite à gauche.
Si nous regardons l'expression suivante :
u = 10 + 10 * 5
Nous pouvons le lire de gauche à droite, mais rappelez-vous que la multiplication sera effectuée en premier, donc si nous appelons print(u), nous recevrons la valeur suivante :
60
C'est parce que 10 * 5 évalue à 50, et ensuite nous ajoutons 10 pour obtenir 60 comme résultat final.
Si nous voulons plutôt ajouter la valeur 10 à 10, puis multiplier cette somme par 5, nous pouvons utiliser des parenthèses comme nous le ferions en mathématiques :
u = (10 + 10) * 5
print(u)
100
Une façon de se souvenir de l'ordre des opérations est l'acronyme PEMDAS :
| Ordre | Lettre | Signifie |
|---|---|---|
| 1 | P | Parenthèses |
| 2 | E | Exposant |
| 3 | M | Multiplication |
| 4 | D | Division |
| 5 | A | Addition |
| 6 | S | Sustraction |
Vous connaissez peut-être un autre acronyme pour l'ordre des opérations, comme BEDMAS ou BODMAS. Quel que soit l'acronyme qui vous convient le mieux, essayez de le garder à l'esprit lorsque vous effectuez des opérations mathématiques en Python afin que les résultats que vous attendez soient renvoyés.
Opérateurs d'affectation
L'opérateur d'affectation le plus courant est celui que vous avez déjà utilisé : le signe égal =. L'opérateur d'affectation = assigne la valeur à droite à une variable à gauche. Par exemple, v=23 assigne la valeur de l'entier 23 à la variable v.
Lors de la programmation, il est courant d'utiliser des opérateurs d'affectation composés qui effectuent une opération sur la valeur d'une variable et assignent ensuite la nouvelle valeur résultante à cette variable. Ces opérateurs composés combinent un opérateur arithmétique avec l'opérateur =, donc pour l'addition, nous allons combiner + avec = pour obtenir l'opérateur composé +=. Examinons à quoi cela ressemble :
w = 5
w += 1
print(w)
6
Tout d'abord, nous avons défini la variable w égale à la valeur de 5, puis nous avons utilisé l'opérateur d'affectation composée += pour ajouter le bon nombre à la valeur de la variable de gauche et ensuite assigner le résultat à w.
Les opérateurs d'affectation composés sont utilisés fréquemment dans le cas des boucles for, que vous utiliserez lorsque vous voudrez répéter un processus plusieurs fois :
for x in range (0, 7):
x *= 2
print(x)
0
2
4
6
8
10
12
Avec la boucle for, nous avons pu automatiser le processus de l'opérateur *= qui multipliait la variable w par le nombre 2 puis assignait le résultat à la variable w pour la prochaine itération de la boucle for.
Python a un opérateur d'affectation composé pour chacun des opérateurs arithmétiques discutés dans ce tutoriel :
y += 1 # add then assign value
y -= 1 # subtract then assign value
y *= 2 # multiply then assign value
y /= 3 # divide then assign value
y // = 5 # floor divide then assign value
y **= 2 # increase to the power of then assign value
y %= 3 # return remainder then assign value
Les opérateurs d'affectation composés peuvent être utiles lorsque les choses doivent être augmentées ou diminuées progressivement, ou lorsque vous devez automatiser certains processus dans votre programme.
Conclusion
Ce tutoriel a couvert de nombreux opérateurs que vous utiliserez avec les types de données numériques entiers et flottants. Si vous souhaitez continuer à lire sur les nombres en Python, vous pouvez passer à la section sur les fonctions intégrées de Python 3 pour travailler avec les nombres.
Pour en savoir plus sur les autres types de données, jetez un œil à Comprendre les types de données en Python 3, et apprenez comment convertir les types de données en lisant Comment convertir des types de données en Python 3.