Fiche récapitulative générée pour impression / export PDF.

Licence 1 · Informatique L1 — Introduction à Python pour les mathématiques

Variables, types et structures de contrôle

Variables, types et structures de contrôle

### 1. Variables et affectation

En Python, une variable est un nom associé à une valeur, créée par l'opérateur d'affectation = :

> x = 5
> nom = "Alice"
> pi_approx = 3.14

Contrairement à certains langages, Python n'exige pas de déclarer le type d'une variable à l'avance : le type est déduit automatiquement de la valeur affectée (typage dynamique).

### 2. Types de base

| Type | Nom Python | Exemple |
|---|---|---|
| Entier | int | x = 5 |
| Flottant (décimal) | float | y = 3.14 |
| Booléen | bool | b = True ou b = False |
| Chaîne de caractères | str | s = "bonjour" |

La fonction type(x) renvoie le type de la variable x. On peut convertir entre types avec int(...), float(...), str(...) (ex : int("5") donne l'entier 5).

Opérateurs arithmétiques : +, -, , / (division réelle), // (division entière, quotient), % (modulo, reste de la division euclidienne), * (puissance).

> 7 // 2 donne 3
> 7 % 2 donne 1
> 2 ** 10 donne 1024

### 3. Opérateurs de comparaison et booléens

Les opérateurs de comparaison renvoient un booléen : == (égalité), != (différence), <, >, <=, >=. Les opérateurs logiques combinent des booléens : and, or, not.

> (3 < 5) and (7 > 2) donne True
> not (3 == 3) donne False

### 4. Structure conditionnelle if / elif / else

La structure conditionnelle exécute un bloc de code selon qu'une condition est vraie ou fausse :

> if condition1:
> instruction A
> elif condition2:
> instruction B
> else:
> instruction C

En Python, l'indentation (généralement 4 espaces) délimite les blocs de code — il n'y a pas d'accolades ni de mot-clé end.

Exemple résolu : déterminer le signe d'un nombre n.

> if n > 0:
> print("positif")
> elif n < 0:
> print("négatif")
> else:
> print("nul")

### 5. Boucle for

La boucle for répète un bloc pour chaque élément d'une séquence, souvent générée par range(...) :

> for i in range(5):
> print(i)

affiche 0, 1, 2, 3, 4 (range(5) génère les entiers de 00 à 44 inclus, soit 55 valeurs, en excluant la borne supérieure). range(a, b) génère les entiers de aa à b1b-1 ; range(a, b, pas) ajoute un pas.

### 6. Boucle while

La boucle while répète un bloc tant qu'une condition reste vraie :

> n = 10
> while n > 0:
> n = n - 1

Contrairement à for (nombre d'itérations souvent connu à l'avance), while convient quand le nombre de répétitions dépend d'une condition évaluée dynamiquement. Attention : une condition toujours vraie produit une boucle infinie.

Exemple résolu : calculer la somme des entiers de 11 à nn avec une boucle while.

> n = 10
> s = 0
> i = 1
> while i <= n:
> s = s + i
> i = i + 1
> print(s)

Ce programme affiche 55=10×11255 = \dfrac{10\times11}{2}, conformément à la formule de la somme arithmétique.

### 7. Résumé méthodologique

| Outil | Usage |
|---|---|
| if / elif / else | exécuter un bloc selon une condition |
| for ... in range(...) | répéter un nombre connu de fois |
| while condition: | répéter tant que la condition est vraie (nombre inconnu a priori) |

Exercices de la leçon

Exercice 1

Quel est le type de la valeur produite par 5 / 2 en Python ?

Corrigé

En Python 3, l'opérateur / effectue toujours une division réelle et renvoie un float, même si le résultat est un entier exact. 5/2 donne 2.5. Pour obtenir le quotient entier, on utilise //.

Exercice 2

Que vaut 17 % 5 ?

Corrigé

% calcule le reste de la division euclidienne : 17=3×5+217 = 3\times5+2, donc 17 % 5 vaut 22.

Exercice 3

Vrai ou faux : en Python, l'indentation du code est purement esthétique et n'a aucun effet sur l'exécution.

Corrigé

Faux. En Python, l'indentation délimite syntaxiquement les blocs de code (corps d'un if, d'une boucle, d'une fonction). Une indentation incorrecte provoque une erreur ou change le comportement du programme.

Exercice 4

Combien de valeurs génère range(3, 8) ?

Corrigé

range(a, b) génère les entiers de aa inclus à bb exclu. Ici, 3,4,5,6,73,4,5,6,7 : soit 83=58-3=5 valeurs.

Exercice 5

Quelle structure utiliser pour répéter un bloc tant qu'une condition reste vraie, sans connaître à l'avance le nombre d'itérations ?

Corrigé

La boucle while est adaptée quand le nombre de répétitions dépend d'une condition dynamique, contrairement à for qui itère sur une séquence de taille généralement connue.

Exercice 6

Quelle est la sortie du code suivant ?

n = -3

if n > 0:

print("positif")

elif n < 0:

print("négatif")

else:

print("nul")

Corrigé

Comme n=3<0n=-3<0, la première condition n > 0 est fausse, la deuxième n < 0 est vraie : le programme affiche négatif.

Exercice 7

Vrai ou faux : l'expression (3 < 5) and (2 > 7) s'évalue à True.

Corrigé

Faux. 3 < 5 est True, mais 2 > 7 est False. L'opérateur and exige que les deux conditions soient vraies, donc le résultat global est False.

Exercice 8

Quelle est la valeur finale de s après ce code ?

s = 0

for i in range(1, 5):

s = s + i

Corrigé

range(1,5) génère 1,2,3,41,2,3,4. La somme accumulée est 1+2+3+4=101+2+3+4=10.

Exercice 9

Que produit int("7") + 3 ?

Corrigé

int("7") convertit la chaîne "7" en entier 77. Puis 7+3=107+3=10, un entier.

Exercice 10

Écrire (en pseudo-code Python) une boucle while qui affiche les puissances de 22 inférieures à 100100 (c'est-à-dire 1,2,4,8,1, 2, 4, 8, \ldots jusqu'à la dernière strictement inférieure à 100100).

Corrigé

Une solution possible :

p = 1

while p < 100:

print(p)

p = p * 2

Ce code affiche 1,2,4,8,16,32,641, 2, 4, 8, 16, 32, 64 : dès que p atteint ou dépasse 100100 (ici 128128), la condition devient fausse et la boucle s'arrête.

Exercice 11

Quelle est la sortie de ce code ?

total = 0

i = 1

while i <= 5:

if i % 2 == 0:

total = total + i

i = i + 1

print(total)

Corrigé

On parcourt i=1,2,3,4,5i=1,2,3,4,5 et on additionne seulement les valeurs paires : 2+4=62+4=6. total vaut donc 66 à la fin.

Exercice 12

Vrai ou faux : le code suivant produit une boucle infinie.

n = 5

while n != 0:

n = n - 2

Corrigé

Vrai. La suite des valeurs de n est 5,3,1,1,3,5,3,1,-1,-3,\ldots : elle décroît de 22 en 22 à partir d'un nombre impair, donc ne passe jamais exactement par 00. La condition n != 0 reste indéfiniment vraie : boucle infinie.

Exercice 13

Combien de fois le mot print est-il exécuté dans le code suivant ?

for i in range(3):

for j in range(4):

print(i, j)

Corrigé

La boucle externe s'exécute 33 fois (i=0,1,2i=0,1,2), et pour chaque valeur de ii, la boucle interne s'exécute 44 fois (j=0,1,2,3j=0,1,2,3). Total : 3×4=123\times4=12 exécutions de print.

Exercice 14

Écrire un morceau de code Python qui compte le nombre d'entiers entre 11 et nn (inclus) divisibles par 33.

Corrigé

Une solution possible :

compteur = 0

for i in range(1, n+1):

if i % 3 == 0:

compteur = compteur + 1

On parcourt tous les entiers de 11 à nn avec range(1, n+1) (la borne n+1n+1 exclue rend nn inclus), et on incrémente compteur chaque fois que le reste de la division par 33 est nul.

Exercice 15

Que vaut total après l'exécution de ce code, et pourquoi le résultat surprend-il souvent les débutants ?

total = 0

for i in range(5):

if i == 3:

break

total = total + i

Corrigé

L'instruction break interrompt immédiatement la boucle dès que sa condition est vérifiée, avant d'exécuter le reste du corps de boucle pour cette itération. Donc pour i=0,1,2i=0,1,2, on ajoute 0,1,20,1,2 à total (total successif 0,1,30,1,3). Quand i=3i=3, le test i==3 est vrai : break est exécuté immédiatement, sans exécuter total = total + i pour i=3i=3. Le résultat final est total=0+1+2=3\text{total}=0+1+2=3. C'est une source d'erreur fréquente : on oublie que break agit avant le reste du bloc.

AlphaMath Académie · Variables, types et structures de contrôle · Informatique L1 — Introduction à Python pour les mathématiques