Aller au contenu

ArithmĂ©tique et variables⚓

ArithmĂ©tique⚓

Opérations mathématiques

Les opérations mathématiques de base s'écrivent ainsi en Python :

En math En Python
\(x+y\) x + y
\(x-y\) x - y
\(x\times y\) x * y
\(x:y\) x / y
\(x^2\) x**2
\(x^3\) x**3
\(x^y\) x**y

Python respecte les priorités de calcul.

Par exemple, l'expression \(\dfrac{5\times(7-4)}{2}\) s'Ă©crit (5 * (7-4)) / 2.

>>> (5 * (7-4)) / 2
7.5
>>> (3 + 4 + 5 + 6)**2
324
Nombre décimaux

En Python, les nombres décimaux s'écrivent avec un "." à la place de la virgule. Dans l'exemple précédent le premier résultat est décimal.

Python distingue les nombres entiers et décimaux. Ainsi, 2.0 est un nombre décimal, alors que 2 est entier.

Exercice 3

Traduire en Python les expressions suivantes et déterminer leur valeur. Vous pouvez utiliser le terminal situé en dessous.

  • \(3^2+2^3\)
  • \(\dfrac53\times\dfrac92+12\)
  • \(\left(\dfrac{36}{25}\right)^2\)

Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)

Solutions
  • \(3^2+2^3 = 17\). L'expression s'Ă©crit 3**2 + 2**3 en Python.
  • \(\dfrac53\times\dfrac92+12=19,5\). L'expression s'Ă©crit 5/3 * 9/2 + 12 en Python. Les espaces n'ont pas d'importances sur les prioritĂ©s mais servent surtout Ă  apporter de la lisibilitĂ©. On pouvait aussi Ă©crire (5/3) * (9/2) + 12.
  • \(\left(\dfrac{36}{25}\right)^2 = 2,0736\). L'expression s'Ă©crit (36 / 25)**2 en Python.
Expressions et espaces

Dans les exemples précédents, on peut remarquer qu'il y a parfois des espaces dans les expressions et parfois non. Ces espaces sont optionnels. Pour Python, les expressions suivantes sont équivalentes et ne font aucune différence pour l'interpréteur :

  • 2 + 3 * 4
  • 2+3*4
  • 2 + 3*4
  • 2+3 * 4
  • 2     +    3 *           4

Les espaces sont vraiment lĂ  pour le lecteur humain et n'indiquent en rien les prioritĂ©s de calcul pour Python. En particulier, 2 + 3*4 et 2+3 * 4 donnent bien le mĂȘme rĂ©sultat.

Dans la pratique, on met un espace avant et aprÚs chaque opérateur (+, -, ...) mais qu'en cas de priorité différentes, on ne mettra pas d'espaces autour des opérateurs les plus prioritaires. C'est pourquoi, on préférera 2 + 3*4 aux autres écritures.

PEP 8

Les recommandations de rédaction en Python sont regroupées dans un document (en anglais) appelé PEP 8.

En particulier, la partie sur les expressions se trouve ici.

Dans la pratique, on essaie de respecter au mieux la PEP 8, mais ce n'est pas une obligation.

Division euclidienne

Pour faire une division euclidienne, c'est-Ă -dire la division sur les nombres entiers, il faut Ă©crire x // y pour le quotient et x % y pour le reste.

Le reste de la division euclidienne, aussi appelé modulo est trÚs utilisé en programmation.

>>> 17 / 5  # Division sur les réels
3.4
>>> 17 // 5  # Quotient de la division euclidienne
3
>>> 17 % 5  # Reste de la division euclidienne
2
NSI et mathématiques

Pour ceux qui auraient un doute, je vous rassure, NSI n'est pas un enseignement mathématique, mais bien un enseignement scientifique. Et comme toutes les sciences, l'informatique repose beaucoup sur les mathématiques. Néanmoins, les calculs que nous venons de faire n'ont que pour but d'illustrer le fonctionnement de Python. Nous n'aurons d'ailleurs probablement plus jamais des calculs aussi complexes que ceux de l'exercice 3 à écrire.

Plus gĂ©nĂ©ralement, une bonne connaissance des mathĂ©matiques peut ĂȘtre un avantage pour un programmeur, tout comme une bonne connaissance de la programmation peut ĂȘtre un vrai plus pour un mathĂ©maticien. Mais pour rĂ©ussir en NSI, il faut juste savoir traduire les formules de base en Python et pas vraiment trouver les formules mathĂ©matiques permettant de rĂ©soudre le problĂšme.

On rappelle que les ordinateurs s'appellent computers en anglais, ce qui veut litĂ©rallement dire calculateurs. Faire de l'informatique c'est donc faire des calculs, d'une maniĂšre ou d'une autre. Et mĂȘme en français, ordinateur vient de ordre. Et nous verrons plus tard que mettre des donnĂ©es dans l'ordre est une opĂ©ration trĂšs importante en informatique. LĂ  aussi, les mathĂ©matiques ne sont pas trĂšs loin.

Variables⚓

Affecter une valeur Ă  une variable

Faire un calcul, c'est bien, mais faire quelque chose avec le résultat c'est mieux.

Pour pouvoir exploiter les rĂ©sultats calculĂ©s, on peut les garder en mĂ©moire. Afin de pouvoir utiliser cette valeur, il faut donner un nom Ă  l'endroit oĂč il se trouve en mĂ©moire. On appelle cela une variable. Lorsqu'on associe une valeur Ă  une variable, on dit qu'on affecte cette valeur Ă  la variable. Pour faire une affectation, il suffit d'Ă©crire : variable = expression.

>>> une_variable = 0
>>> UneAutreVariable = "Bonjour"
>>> _une_3eme = 7
>>> _4_fois_3 = 12

Là aussi, les espaces autour de = sont optionnels mais conseillés pour plus de lisibilité.

Syntaxe des noms de variables

On ne peut pas Ă©crire n'importe quoi pour le nom d'une variable. En Python, ce nom doit respecter les rĂšgles suivantes :

  • commencer par une lettre ou un _ ;
  • contenir des lettres, des chiffres et des _.
Exercice 4

Parmi les noms suivants, déterminer ceux qui sont des noms valides de variables en Python.

  • variable
  • une variable
  • apollo13
  • _
  • N_S_I
  • 2fois3
  • vOITure
  • ✅ variable
  • ❌ une variable : Il y a un espace, ce qui est interdit.
  • ✅ apollo13
  • ✅ _ : On l'appelle la variable anonyme. Elle est utilisĂ©e dans certains cas particuliers oĂč sa valeur n'a pas d'importance.
  • ✅ N_S_I
  • ❌ 2fois3 : Une variable ne peut pas commencer par un chiffre.
  • ✅ vOITure
Utilisation d'une variable

Pour obtenir la valeur d’une variable il faut juste taper son nom dans le terminal. On peut aussi utiliser la fonction print :

>>> a = 1
>>> a
1
>>> print(a)
1

Une fois la variable affectĂ©e, on peut l’utiliser dans des opĂ©rations.

>>> a + 2
3
>>> b = a + 1
>>> b
2

Il est aussi possible de modifier la valeur d’une variable.

>>> a = 5
>>> a
5
>>> b
2

On remarque que la valeur de b n’a pas Ă©tĂ© modifiĂ©e. Une fois qu’une variable est affectĂ©e, sa valeur ne dĂ©pend plus des variables utilisĂ©es dans l’expression de l’affectation.

On peut Ă©galement obtenir la valeurs de plusieurs variables en mĂȘme temps en les sĂ©parant par des virgules ou en utilisant une nouvelle fois la fonction print :

>>> a, b
(5, 2)
>>> print(a, b)
5 2
Utiliser la valeur précédente d'une variable pour calculer sa nouvelle valeur

On peut utiliser la valeur actuelle d’une variable pour lui en donner une nouvelle.

>>> a = 5
>>> a = a + 1
>>> a
6
>>> a = a + 1
>>> a
7

Il faut donc bien penser que la partie de droite de l'affectation est évaluée avant de faire l'affectation. AprÚs la premiÚre affectation a vaut 5. Pour la deuxiÚme affectation, l'interpréteur commence par calculer a+1, qui vaut 6, et l'affecte ensuite à a qui vaut donc 6.

Affectations et opérations simultanées

Pour ajouter une valeur à une variable, il est possible d’utiliser l'instruction variable += expression. Cela correspond à variable = variable + expression.

>>> score = 0
>>> score += 10
>>> score
10
>>> score += 20
>>> score
30

De la mĂȘme maniĂšre, on peut aussi Ă©crire :

  • variable -= expression
  • variable ∗= expression
  • variable /= expression
  • variable //= expression
  • variable %= expression

Attention, ces opérations nuisent souvent à la lisibilité du programme. Il vaut mieux se contenter de += et éventuellement de -= lorsqu'on ajoute ou retranche une constante.

Exercice 5

On considĂšre le programme suivant :

###(DĂ©s-)Active le code aprĂšs la ligne # Tests (insensible Ă  la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Évaluations restantes : ∞/∞

  1. Déterminer la valeur de secret aprÚs l'exécution de ce programme

    Solution

    Il suffit de taper secret ou print(secret) dans le terminal aprÚs avoir exécuté le programme.

    On peut aussi ajouter print(secret) Ă  la fin du secret.

  2. RĂ©Ă©crire ce programme pour qu'il n'utilise que des affectations simples.

    C'est-Ă -dire qu'il faut remplacer toutes les affectations comme //=, +=... par des affectation simples : secret = ....

    Par exemple, cela reviendrait Ă  remplacer a += 3 par a = a + 3.

    Solution
    public = 2695
    secret = public**2
    secret = secret // 135
    secret = secret - 65
    secret = secret % 53
    secret = secret + 126
    
Variables et casse

Les noms en Python sont sensibles à la casse. Cela veut dire que Python fait la différence entre majuscule et minuscule. Ainsi nom, NOM, Nom ou nOm sont considérés comme des noms différents.

Erreur de variable

Lorsqu'on se trompe sur le nom d'une variable, ou qu'on essaie d'utiliser sa valeur avant de lui en avoir affecté une, on obtient un message d'erreur : NameError: name 'varialbe_inconnue' is not defined.

Cela veut dire que le nom, ici varialbe_inconnue, ne correspond Ă  aucun nom connu par Python pour la session actuelle. En gĂ©nĂ©ral, c'est qu'on a mal Ă©crit le nom de la variable. Dans cet exemple, c'Ă©tait peut-ĂȘtre variable_inconnue que l'ont voulait Ă©crire.