School 47

Python à l'attaque d'un problème mathématique

Première · Numérique & code · environ 15 min

Imagine que ton prof te demande : « Calcule la somme de tous les nombres de 1 à 1000. » À la main, c'est long et tu risques de te tromper. Avec une calculatrice, c'est fastidieux. Mais avec quelques lignes de Python, la réponse tombe en une fraction de seconde. C'est exactement ça, la puissance de la programmation : transformer un problème mathématique en un algorithme que la machine exécute pour toi.

Dans ce cours, tu vas apprendre à assembler les quatre briques essentielles : les conditions, les boucles, les fonctions et les listes.

1. Les conditions : choisir selon la situation

Une condition (if, elif, else) permet à ton programme de prendre des décisions.

n = 7
if n % 2 == 0:
 print("pair")
else:
 print("impair")

Ici n % 2 donne le reste de la division par 2. S'il vaut 0, le nombre est pair. Attention à l'indentation (les espaces au début) : c'est elle qui indique ce qui est « dans » le if.

2. Les boucles : répéter sans se fatiguer

La boucle for répète une action un nombre connu de fois.

somme = 0
for i in range(1, 1001): # i va de 1 à 1000
 somme = somme + i
print(somme) # affiche 500500
Probabilités : l'arbre Un dé à six faces représente une expérience au hasard. L'arbre des possibles part d'un point et se sépare en autant de branches que d'issues : ici six branches, une par face. Comme le dé est équilibré, chaque issue a la même probabilité, une chance sur six. une expérience ⋮ 1/6 1/6 1/6 1/6 6 issues, chacune p = 1/6
Les boucles exécutent séquentiellement chaque étape, comme les branches d'un arbre de possibilités

range(1, 1001) produit les entiers de 1 à 1000 (la borne de droite est exclue !). À chaque tour, on ajoute i à la variable somme.

La boucle while répète tant qu'une condition est vraie :

x = 100
etapes = 0
while x > 1:
 x = x / 2
 etapes = etapes + 1
print(etapes) # combien de fois diviser 100 par 2 avant d'atteindre 1

3. Les fonctions : ranger son code dans une boîte

Une fonction est un mini-programme réutilisable. On la définit avec def et on renvoie un résultat avec return.

def est_premier(n):
 if n < 2:
 return False
 for d in range(2, n):
 if n % d == 0:
 return False
 return True

print(est_premier(13)) # True
print(est_premier(15)) # False

Cette fonction teste si n est un nombre premier : elle cherche un diviseur d. Si elle en trouve un, elle renvoie False immédiatement.

4. Les listes : stocker plusieurs valeurs

Une liste contient une suite de valeurs, accessibles par leur indice (qui commence à 0).

Le diagramme en barres Un diagramme en barres. Sur l'axe horizontal, quatre catégories ; sur l'axe vertical, les valeurs. Chaque barre monte à la hauteur de son nombre : plus la barre est haute, plus la valeur est grande. AB CD
Les listes stockent des valeurs qu'on peut visualiser (comme des hauteurs de barres)
notes = [12, 15, 9, 18]
print(notes[0]) # 12
print(len(notes)) # 4
moyenne = sum(notes) / len(notes)
print(moyenne) # 13.5

On peut aussi construire une liste avec une boucle :

carres = []
for i in range(1, 6):
 carres.append(i * i)
print(carres) # [1, 4, 9, 16, 25]

À retenir

  • Une condition (if/else) fait choisir ; % donne le reste, très utile pour tester pair/impair ou divisibilité.
  • Une boucle répète : for quand on connaît le nombre de tours, while tant qu'une condition tient.
  • range(a, b) va de a à b-1 : la borne de droite est exclue.
  • Une fonction (def ... return) range un calcul réutilisable ; return renvoie le résultat.
  • Une liste stocke plusieurs valeurs ; indices à partir de 0, len, sum, append sont tes alliés.

Corrections

Exercice 1.

def cube(x):
 return x ** 3

** est l'opérateur puissance : x ** 3 = x×x×x. On utilise return pour renvoyer la valeur.

Exercice 2.

somme = 0
for i in range(1, 21):
 if i % 2 == 0:
 somme = somme + i
print(somme) # 110

On parcourt 1 à 20, et la condition i % 2 == 0 ne garde que les pairs. Total : 2+4+…+20 = 110.

Exercice 3.

temps = [18, 22, 19, 25, 21]
maxi = temps[0]
for t in temps:
 if t > maxi:
 maxi = t
print(maxi) # 25

On part de la première valeur, puis on remplace maxi chaque fois qu'on trouve plus grand.