Les nombres et les variables

Informatique — Python, chapitre 1

Chaque encadré ci-dessous est une console. Modifiez le code, cliquez sur Exécuter, lisez le résultat. Le tout premier lancement demande une dizaine de secondes, le temps que Python arrive dans votre navigateur ; ensuite, c’est immédiat.

1.1 Ranger une valeur dans une variable

1.1.1 Le principe

Une variable est un nom qui retient une valeur.

x = 5 print(x)

Le signe = ne signifie pas « est égal à ». Il signifie « range à gauche ce qu’il y a à droite ». On écrit toujours le nom d’abord, la valeur ensuite.

NotePourquoi print ?

Python calcule en silence. print lui demande d’afficher. Sans cette commande, x = 5 ne montre rien — le rangement a bien eu lieu, mais discrètement.

C’est une différence avec MATLAB, qui affiche par défaut et qu’il faut faire taire par un point-virgule.

1.1.2 Les règles à respecter

Un nom de variable ne contient que des lettres sans accent, des chiffres et le tiret bas _.

Il ne peut pas commencer par un chiffre.

2x = 5

Vous obtenez SyntaxError: invalid syntax. Écrivez x2.

Il ne peut pas contenir d’espace.

x y = 5

Écrivez xy, ou mieux x_y.

AstuceLisez les erreurs, elles sont utiles

Python indique le type de l’erreur, puis la ligne fautive, puis pointe le caractère avec un ^. Trois informations, dans chaque message. Prenez l’habitude de les lire plutôt que de les fuir : c’est ce qui distingue quelqu’un qui progresse de quelqu’un qui bloque.

1.1.3 Majuscules et minuscules

Python distingue les deux.

x = 5 print(X)

NameError: name 'X' is not defined. Seul x existe.

1.1.4 Les mots réservés

Certains mots appartiennent au langage et ne peuvent pas servir de noms : if, for, while, def, class, return, import, True, False, None, et une quinzaine d’autres.

import keyword print(keyword.kwlist)

1.2 Les quatre opérations

a = 7 b = 3 print(a + b) # addition print(a - b) # soustraction print(a * b) # multiplication print(a / b) # division

Le symbole # ouvre un commentaire : Python ignore tout ce qui le suit sur la ligne.

1.2.1 Les deux divisions

Python distingue la division ordinaire de la division entière.

a = 7 b = 3 print(a / b) # division : donne un nombre a virgule print(a // b) # division entiere : combien de fois b tient dans a print(a % b) # reste de cette division

On obtient 2.3333..., puis 2, puis 1. La dernière opération, le modulo, sert constamment : n % 2 vaut 0 si n est pair.

AvertissementLa division par zéro arrête tout

Contrairement à MATLAB, qui répond Inf avec un simple avertissement, Python interrompt l’exécution : ZeroDivisionError. C’est plus brutal, mais plus sûr — aucun résultat faux ne circule ensuite à votre insu.

Essayez print(a / 0) pour voir le message.

1.3 Puissances et racines

L’opérateur de puissance est le double astérisque **, et non l’accent circonflexe.

print(2 ** 10) # deux puissance dix print(9 ** 0.5) # racine carree : puissance un demi print(27 ** (1/3)) # racine cubique
AvertissementLe piège de l’accent circonflexe

2 ^ 10 ne provoque aucune erreur : Python répond 8. Le symbole ^ existe, mais il désigne une opération sur les bits, sans rapport avec la puissance.

C’est le pire type de piège : un résultat faux, livré sans le moindre avertissement. Si vous venez de MATLAB ou d’Excel, ce réflexe vous jouera des tours.

1.4 Les fonctions mathématiques

Python de base ne connaît que quelques fonctions. Les autres sont dans le module math, qu’il faut charger.

import math print(math.sqrt(16)) # racine carree print(math.exp(1)) # exponentielle print(math.log(10)) # logarithme naturel print(math.log10(10)) # logarithme decimal print(math.pi) # la constante pi print(math.e) # la constante e

import math charge le module ; ensuite, chaque fonction s’appelle en la préfixant de math..

NoteCe que « importer » veut dire

Python démarre volontairement léger. Tout ce qui n’est pas indispensable vit dans des modules qu’on charge à la demande : math pour les mathématiques, random pour le hasard, statistics pour les statistiques de base.

C’est une différence de philosophie avec MATLAB, où des milliers de fonctions sont disponibles d’emblée. Python préfère charger le strict nécessaire.

Quelques fonctions sont disponibles sans rien importer :

print(abs(-4)) # valeur absolue print(round(3.14159, 2)) # arrondi a deux decimales print(max(3, 9, 2)) # le plus grand print(min(3, 9, 2)) # le plus petit

1.5 Les types

Toute valeur appartient à un type, et le type détermine ce qu’on peut en faire.

print(type(5)) # entier print(type(5.0)) # nombre a virgule print(type("cinq")) # texte print(type(True)) # booleen : vrai ou faux

Vous lisez int, float, str et bool — pour integer, floating point, string et boolean.

1.5.1 L’erreur de type

print("3" + 4)

TypeError: can only concatenate str (not "int") to str. Le "3" entre guillemets est du texte, pas un nombre. Python refuse d’additionner un mot et un chiffre.

1.5.2 Convertir

print(int("3") + 4) # texte converti en entier print(str(3) + "4") # entier converti en texte : les deux se collent print(float("2.5") * 2) # texte converti en nombre a virgule

Notez la deuxième ligne : "3" + "4" donne "34". Avec du texte, le + ne calcule pas, il colle.

1.6 Deux surprises à connaître

1.6.1 Les nombres à virgule sont approchés

print(0.1 + 0.2) print(0.1 + 0.2 == 0.3)

Vous obtenez 0.30000000000000004, puis False.

ImportantCe n’est pas un défaut de Python

Un ordinateur stocke les nombres à virgule en base 2, où 0.1 n’a pas d’écriture exacte — comme 1/3 n’en a pas en base 10. Une infime erreur subsiste, et se propage.

Conséquence pratique : ne testez jamais l’égalité de deux nombres à virgule. Vérifiez plutôt que leur écart est négligeable, par abs(a - b) < 1e-9. Cela vaut dans tous les langages, MATLAB et R compris.

1.6.2 Le double signe égal

x = 5 # on range 5 dans x print(x == 5) # on demande si x vaut 5 print(x == 3)

= affecte, == compare et répond True ou False. Les confondre est l’erreur la plus fréquente des premières semaines.

À vous

Rangez 12 dans u et 5 dans v. Affichez leur somme, le quotient entier, le reste, u puissance v, et la racine carrée de u.

import math u = 12 v = 5 # a completer
print(u + v)          # 17
print(u // v)         # 2
print(u % v)          # 2
print(u ** v)         # 248832
print(math.sqrt(u))   # 3.4641016151377544

Remarquez u ** v et non u ^ v : le second donnerait 9, silencieusement faux.

Ce qu’il faut retenir

Écriture Effet
x = 5 ranger 5 dans x
print(x) afficher — Python ne montre rien sans cela
# commentaire, ignoré
+ - * / les quatre opérations
// et % division entière et reste
** puissance — jamais ^
import math charger les fonctions mathématiques
type(x) connaître le type d’une valeur
int(), float(), str() convertir d’un type à l’autre
== comparer, à ne pas confondre avec =

Le chapitre suivant traite du texte : assembler des mots, les découper, les mettre en forme.