0. Avant -propos

Cette page sert à acquérir ou consolider les bases de programmation du programme deseconde. On cherche ici à affermir un socle sur lequel vous pourrez réussir en Python au lycée. Cette page contient :

En parallèle vous devez vous inscrire sur le site "france-ioi". Ce site propose un entraînement au langage python( et d'autres) sous la forme d'un parcours. Demandez à votre professeur la démarche pour rejoindre votre groupe.

Lien vers france-IOI

Outils

Pour l'ensemble de ce travail, utilisez le logiciel Edupython.

Dans le cas où Edupython ne marcherait pas sur vos machines, vous pouvez réaliser l'ensemble des exercices ici :

Affectation en Python

En programmation, nous avons besoin de stocker des éléments , de les mettre en mémoire. Pour cela , on procède à l'affectation d'une variable par une donnée.

En Python, l' affectation se réalise avec l'opérateur =

le script :

a=5
met en mémoire l'entier 5 dans la variable a

a="easy"
met en mémoire la chaine de caractères "easy" dans la variable a

Que vaut a à la fin de ce script :

a=1
b=-1
a=a*b
a=a+b
			

Un exercice de renforcement, reprenant les mêmes compétences est dispoible directement en cliquant ci-dessous :

exercice de renforcement

Un exercice plus compliqué utilisant l'affectation :

Hervé Trézène aimerait avoir un algorithme permettant de permuter les nombres stockés dans deux variables $a$ et $b$. Pour simplifier, on suppose que la variable $a$ stocke le nombre 8, tandis que la variable $b$ stocke le nombre -3.

visualisation des boîtes
  1. Yves Aladaire propose l'algorithme suivant :

    # ceci est un commentaire (il commence par le symbole dièse #) : 
    # il n'est pas pris en compte par l'interpréteur, il n'est lu que par le programmeur et l'utilisateur : vous.
    # mémorisation des valeurs initiales :
    a=8
    b=-3
    # programme proposé par Yves pour la permutation du contenu :
    a=b
    b=a
                             
    1. Compléter sur une feuille la table d'exécution commencée ci-dessous, sans prendre en compte les lignes de commentaires :

      ligne numéro valeur stockée dans la variable $a$ valeur stockée dans la variable $b$
      4 8 rien
      ... ... ...
      ... ... ...
      ... ... ...
    2. Est-ce le programme proposé par Yves permet d'échanger les valeurs stockées dans les varaibles $a$ et de $b$ ?

  2. Amin Bhar propose l'algorithme suivant :

    # mémorisation des valeurs initiales :
    a=8
    b=-3
    # programme proposé par Roger pour la permutation du contenu :
    b=a
    a=b
                        
    1. Compléter sur une feuille la table d'exécution commencée ci-dessous, sans prendre en compte les lignes de commentaires :

      ligne numéro valeur stockée dans la variable $a$ valeur stockée dans la variable $b$
      ... ... ...
      ... ... ...
      ... ... ...
      ... ... ...
    2. Est-ce le programme proposé par Amine permet d'échanger les valeurs stockées dans les variables $a$ et de $b$ ?

  3. Proposer un programme qui permet d'échanger les valeurs stockées dans les variables $a$ et de $b$ ?

    Comme tel un Thésée vous êtes le héros de Trézène, Hervé veut vous remercier pour votre aide : il sert un verre d'eau et un verre de jus de fruit, un pour lui et un pour vous,... mais il se trompe de verre ! Comment permuter le contenu de ces deux verres sans changer de verre ?

Affichage en python

Une chaîne de caractères correspond à un texte pouvant contenir différents symboles. En Python, une chaîne de caractères est le contenu délimité par "".

Pour afficher une chaine de caractères en Python on utilise la fonction print()

Testez ces différents scripts :

  1. print("Vivement les vacances !")
  2. prenom="Bob"
    print("Mon prénom est :",prenom)

Réaliser un script qui contient trois variables : prenom, nom et age et qui doit afficher :

"Bonjour je m'appelle Alphonse Dansletas, j'ai 358 ans. "

Dans le cas où vous vous appelleriez Alphonse Dansletas et que vous seriez âgé de 358 ans.

exercice de renforcement

Dialogue avec l'utilisateur

La fonction input permet d'ouvrir une boite de dialogue et de récupérer une information saisie par l'utilisateur.

L'information récupérée grâce à un input est une chaîne de caractères.

prenom=input("quel est ton prénom?")
print(prenom)
		

Ecrire un script en Python qui demande à l'utilisateur, son prénom, son nom et son âge et qui réalise un affichage comme dans l'exercice 2.

exercice de renforcement

Comme l'information récupérée grâce à un input est une chaîne de caractères, il va falloir changer le type de la variable pour permettre d'effectuer des calculs avec.

Un boulanger désire un programme qui demande à l'utilisateur le nombre de baguettes qu'il désire, qui calcule le prix total (sachant qu'une baguette coûte 1.10 €) et qui affiche le prix que l'utilisateur doit payer.

  1. Testez le script suivant :

    nombre=input("Combien de baguettes désirez-vous ?")
    prix = nombre * 1.1
    print("Vous avez à payer",prix,"euros.")
  2. Quel message d'erreur obtenez-vous ?

  3. Testez le script suivant :

    nombre=int(input("Combien de baguettes désirez-vous ?"))
    prix = nombre * 1.1
    print("Vous avez à payer",prix,"euros.")
  4. Quelle est la différence avec le code précédent de cet exemple ?

L'instruction int permet de changer certaines chaînes de caractères en un nombre entier.
L'instruction float permet de changer certaines chaînes de caractères en un flottant, c'est-à-dire un "nombre à virgule".

Vous êtes chargé.e de mettre en place une borne automatique pour régler les droits d’entrée à un parc d’attraction.
Chaque adulte doit payer 21€ pour rentrer et chaque enfant doit payer 13€. Pour cette borne, vous devez programmer sur Python un algorithme qui renvoie le prix à payer en fonction du nombre d’adultes et d’enfants du groupe.
Sachant que la variable $A$ stocke le nombre d’adultes, $E$ le nombre d’enfants et $P$ le prix à payer, proposez un tel algorithme qui demande à l'utilisateur le nombre de personnes dans chacune des catégories et qui affiche le prix total à payer.

exercice de renforcement

L'Indice de Masse Corporelle (IMC) est un indicateur chiffré utilisé en médecine. L'IMC d'une personne est donné par la formule $ IMC= \frac{masse}{taille^2}$ où la masse est en kilos et la taille en mètres.

Proposez un algorithme qui demande à l'utilisateur sa taille et sa masse puis qui affiche l'IMC de la personne.

Pensez à écrire un texte clair à destination de l'utilisateur pour qu'il sache quoi saisir.

La surface $S$ en mètre carrés de la peau d'un adulte est donnée approximativement par la formule $ \dfrac{\sqrt{L\times M}}{6}$ où $L$ est la taille de l'individu en mètres et $M$ sa masse en kilogramme.

Vous devez créer ci-dessous un programme en Python.

Votre programme doit :

Exemple de trace d'exécution apparaissant dans la partie console :

Quelle est la taille en centimètres d'un adulte ? 180
Quelle est la masse en kilogrammes du même adulte ? 81.5
La surface corporelle d'un individu de 180 centimètres et de 81.5 kg est d'environ 2.0187 m^2.

Instruction conditionnelle en Python

Les tests en Python :

Chaque utilisation de ces tests renvoie une variable qui ne peut prendre que deux valeurs booléenne : True ou False ; On parle alors de booléen.

Attention à ne pas confondre :

exécutez le code suivant pour visualiser la différence entre affectation et test d'égalité :

La structure conditionnelle "if"

En Python, voici la structure :

if condition :
	instruction(s) à effectuer dans la cas où la condition est remplie
else :
	instruction(s) à effectuer dans la cas contraire

Le bloc else n'est pas obligatoire

Vous remarquerez le symbole : très important en Python qui marque le début d'un bloc.

C'est l'indentation (=décalage) qui délimite le bloc d'instructions.

a=float(input("Entrer un nombre réel : "))
if a>=0 :
    print("Vous avez entré un nombre positif ou nul",a)
else :
    print("Vous avez entré un nombre négatif",a)

Qu'affiche le programme de l'exemple dans chacun des cas suivants :

  1. Avec a=8 ?

  2. Avec a=-6 ?

  3. Avec a=0 ?

  4. Avec a="positif" ?

exercice de renforcement

Vous pouvez tester directement le programme précédent ci-dessous. En appuyant sur la touche Next>, vous visualiserez le fait que l'interpréteur du code ne traite que l'instruction du if ou celle du else suivant si la condition est remplie ou non.

Il est possible d'imbriquer plusieurs instructions conditionnelles ensemble.

On peut détailler l'exemple précédent ainsi en trois cas distinctions par imbrications de deux instructions conditionnelles :

a=float(input("Entrer un nombre réel : "))
if a>0:
    print("Vous avez entré un nombre strictement positif",a)
else: # ici, on est dans le cas où a<= 0
    if a==0:
        print("Vous avez entré un nombre nul",a)
    else: # ici, on est dans le cas où a<=0 et a!=0 donc où a<0
        print("Vous avez entré un nombre négatif",a)
                

Il est possible de simplifier l'écriture de ces imbrication en utilisant le mot clé elif qui est la contraction de else if.

La structure elif :

if condition1 :
	instruction(s)
elif condition2 :
	instruction(s)
elif condition3 :
	instruction(s)
else :
	instruction(s)

On peut réécrire l'imbrication de l'exemple précédent ainsi :

a=float(input("Entrer un nombre : "))
if a>0 :
    print("Vous avez entré un nombre strictement positif",a)"  
elif a==0 :
    print("Vous avez entré un nombre nul",a)
else :
    print("Vous avez entré un nombre strictement négatif",a)

Écrire un programme qui :

Corrigé de cet exercice dans la vidéo accessible avec ce lien.

Un cinéma pratique trois types de tarifs pour deux personnes.

Écrire un programme qui :

Corrigé de cet exercice dans la vidéo accessible avec ce lien.

exercice de renforcement

Dans une école de rugby, il y a quatre groupes :

Le dirigeant veut qu'un enfant, accompagné de ses parents, allant sur le site Internet de l'école puisse connaître le groupe qui lui correspondrait une fois son âge saisi.

Ne sachant comment structurer le programme, il fait appel à vous afin que vous lui écriviez un programme, écrit en langage Python, qui demande l'âge de l'enfant et renvoie la catégorie une fois la saisie de l'âge effectuée.

Fonction en Python

Une fonction en informatique est un peu comme une fonction en maths. Elle prend un ensemble d'argument et renvoie quelque chose.

Définir une fonction en Python

La syntaxe pour définir une fonction en Python est celle ci :

def nomDeLaFonction(argument1,argument2...):
	instruction 1
	instruction 2
	.
	.
	.
	return retourDeLaFonction	

  1. Prenons la fonction $f:x\longmapsto x^2$.

    si vous voulez implémenter cette fonction en Python, il suffira d'écrire :

    def f(x):
    	return x**2	

    Pour calculer l'image de 1 , en mathématiques vous feriez $f(1)$ , en Python c'est pareil !

    Testez :

    f(1)
    
  2. Testez aussi le code suivant :

    def somme(a,b):
    	return a+b

Écrire une fonction multiplication(a,b) qui renvoie la multiplication de a par b.

exercice de renforcement

Dans une fonction on peut faire appelle à d'autre fonction.

Tester cette fonction :

def f(a,b):
	a=somme(a,b)
	b=multiplication(a,b)
	return somme(a,b)
			

Donner l'expression de $f$ en fonction de $a$ et de $b$.

exercice de renforcement

  1. Proposer une fonction, nommée mini2 qui prend comme arguments deux nombres entiers a et b et qui renvoie le minimum de ces deux nombres.

  2. Proposer une fonction, nommée mini4, qui :

    • prend comme arguments quatre nombres entiers a, b, c et d,

    • fait appel plusieurs fois à la fonction mini2 pour finalement trouver le minimum des quatre nombres

    • renvoie le minimum trouvé.

exercice de renforcement

Ecrire une fonction signe_prod(a,b) qui reçoit deux entiers a et b relatifs et qui renvoie True si le produit de a par b est positif et False sinon. Attention : on ne doit pas calculer le produit des deux nombres.

Boucle itérative : pour/for

Avec l'instruction range

La structure "for" avec range

Voici la structure en Python d'une boucle répétitive for avec range

for i in range(n):
	instruction 1
	instruction 2
	...
	

Dans cette boucle $i$ prendra les valeurs de 0 à $n-1$.

Toutes les instructions dans la boucle seront appliquées pour chaque valeur de $i$.

Dans cette structure, on connait à l'avance le nombre de répétitions. Dans notre cas, il est égal à $n$.

Cette boucle fait le calcul : 0+1+2+3+...+10

s=0
for i in range(11):
    s=s+i
print(s)

Vérifier que le résultat affiché correspond bien à la somme 0+1+2+3+...+10.

Vous pouvez visualiser les différentes étapes de calcul mises en oeuvre par cet algorithme ci-dessous :

Plus généralement, lors de l'instruction for i in range(m,n), où m et n sont deux entiers tels que n>m, i prend toutes les valeurs entières entre m et n-1.

Écrire une fonction somme(n) où $n$ est un entier qui renvoie la valeur de la somme $1+2+3+...+n$.

exercice de renforcement

Un village en zone périurbaine compte aujourd'hui 2300 habitants. Le village voit sa population augmenter chaque année de 120 habitants.

  1. Proposez une fonction nommée population qui prend comme argument un entier $N$ et qui renvoie la population de ce village au bout de $N$ années écoulées.

  2. Testez votre fonction avec quelques valeurs.

Correction de l'exercice en vidéo accessible par ce lien.

exercice de renforcement

Proposez un programme qui affiche tous les résultats possibles (éventuellement redondants) du produit deux nombres entiers compris entre 0 et 10.

La comète de Halley passe à proximité du Soleil tous les 76 ans. Son dernier passage a eu lieu 1986.

La comète 55P/Tempel-Tuttle pase à proximité du Soleil tous les 33 ans. Son dernier passage a eu lieu en 1998.

Proposer un algorithme qui affiche l'année de la prochaine fois où les deux comètes paseront à proximité du Soleil la même année.

  1. Proposer un code qui affiche toutes les manières possibles d’obtenir un euro avec des pièces de 2 centimes et de 5 centimes.

  2. Améliorer le code afin qu'il affiche le nombre de possibilités différentes d'obtenir ainsi un euro.

sur un objet itérable

La structure "for" avec in

Voici la structure en Python d'une boucle for avec in

for elt in iterable:
	instruction 1
	instruction 2
	...
			

Dans cette boucle, elt va parcourir les éléments de la iterable.

La iterable peut être une chaine de caractères.

Le programme ci-dessous affiche séparément chaque caractère d'une chaîne de caractères :

# -*- coding: utf-8 -*-
ch="Bonjour à tou.te.s"
for elt in ch:
    print(elt)

Vérifier que le programme .

Tester le script ci-dessus pour vérifier qu'il réalise bien à ce qui a été annoncé et modifier la chaîne de carctères avec une autre phrase (Vous pouvez aussi rajouter des nombres et des symboles).

  1. Que fait le code suivant :

    # -*- coding: utf-8 -*-
    citation="Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions."
    compteur=0
    for elt in citation:
    	if elt=="e":
    		compteur=compteur+1
    print(compteur)
    	
  2. Transformer le code pour qu'il compte le nombre de i.

exercice de renforcement

Proposer une fonction pour_perec qui remplace tous les "e" d'une phrase par un espace " ".

Boucle itérative : while

La structure while

Voici la structure en Python d'une boucle while

while condition:
	instruction 1
	instruction 2
	...

Tant que la condition est vraie les instructions du bloc sont exécutées.

Dans cette structure, on ne connait pas à l'avance le nombre de répétitions.

Deux écueils à éviter :

Une balle part d'une hauteur de 2 mètres et perd 10% de sa hauteur à chaque rebond. On cherche le nombre de rebonds pour la balle atteigne un maximum de 1,5 mètre de hauteur. Ce problème (on parle de problème de seuil) peut être traité en python par le script suivant :

hauteur = 2
rebond = 0
seuil = 1.5
while hauteur>seuil:
    rebond = rebond+1
    hauteur = hauteur*0.9
print(rebond)

Tester ce script

Vous pouvez visualiser les étapes de mise en oeuvre de ce programme en utilisant le lien suivant :

Modifier les valeurs pour que la balle démarre à une hauteur de 3 mètres et atteigne la hauteur de 2 mètres.

Une cuve d'eau à une contenance de 1000L. En moyenne la cuve d'eau se remplis de 3L d'eau par jours. Écrire une fonction remplir() qui renvoie le nombre jours qu'il faudra pour remplir la cuve.

exercice de renforcement

Arjuna souhaite travailler dans un centre d'arts martiaux quelques heures par semaine. À la suite d'un entretien, deux possibilités de salaire s'offrent à lui :

Proposer une fonction choix qui renvoie le nombre d'heures à partir duquel la proposition 1 est préférable pour Arjuna.

Pour accéder au code de la correction : lien

Lorsque l'utilisateur saisit une donnée, il peut être utile de vérifier qu'elle est conforme à ce qu'on attend de lui.

  1. Proposer un programme qui demande à l'utisateur de rentrer un nombre positif.

  2. Compléter ce programme afin de demander à l'utilisateur de saisir un nouveau nombre si le nombre entré ne correspond pas à la demande.

  3. Modifier le programme précédent pour limiter la répétition à au plus 10 demandes successives.
    Rajouter un message d'arrêt si l'utilisateur "s'obstine" à saisir un nombre strictement négatif.

Pour accéder au code de la correction : lien

Une banque propose à ses clients une carte de crédit. Chaque mois elle prélève le minimum entre 3 euros et 1% du montant des transactions effectuées par cette carte de crédit. Dans le cas, où il ne reste plus assez sur le compte pour payer les frais, elle ne prélève que le restant sur le compte.

  1. Proposer une fonction minimum qui renvoie le minimum des deux nombres entrés comme arguments.

  2. Proposer une fonction frais qui prend en paramètres deux nombres réels : la somme sur le compte et le montant des transactions effectués par carte bancaire et qui renvoie les frais bancaires qui seront prélevés.

  3. Un client impécunieux possède 5073.68€ sur son compte. Il possède une carte de crédit avec laquelle il retire chaque mois 200€. Sachant qu'il ne remet pas d'argent sur son compte, pendant combien de temps pourra-t-il prélever ainsi de l'argent sur son compte.

Pour accéder au code de la correction : lien

Votre enseignant vous exploite : il vous demande de créer un programme qui lui renverra la moyenne des notes saisies.

Pour cela, il vous donne le cahier des charges suivant :

  1. Proposer une fonction continuer qui répond au cahier des charges. Faire en sorte que la casse (=minuscule ou majuscule) ne soit pas un problème pour la saisie, par exemple en utilisant ma méthode upper.

    "mélanGes".upper() renvoie 'MÉLANGES'.

  2. Tester la fonction continuer créée.

  3. Proposer une fonction moyenne qui répond au cahier des charges. Cette fonction aura trois paramètres :

    • moy un flottant qui correspond à la moyenne pour l'instant obtenue,
    • nb_notes un entier qui correspond au nombre de notes déjà pris en compte dans la moyenne moy,
    • new_note un flottant qui correspond à la nouvelle note à prendre en compte pour la moyenne.

    Cette fonction renverra la moyenne de l'ensemble des notes saisies (en comptant aussi la dernière).

    Aide mathématique :

    On considère deux ensembles de notes A et B de moyenne respective $moy_A$ et $moy_B$ comprenant respectivement $nb_A$ et $nb_B$ notes. La moyenne des notes formant la réunion de ces deux ensembles est doné par la formule :

    $$ moyenne = \frac{moy_A \times nb_A + moy_B \times nb_B}{nb_A + nb_B}$$.
  4. Tester la fonction moyenne créée.

  5. Proposer une fonction main qui répond au cahier des charges. Cette fonction fera appel aux deux fonctions continuer et moyenne et n'aura pas de paramètre ; elle renverra la moyenne de toutes les notes successivement saisies.

  6. Tester votre programme principal, par exemple en saisissant successivement les valeurs 10, 19 et 13.

Pour accéder au code de la correction : lien

Exercices de renforcement

Sur l'affectation

Quel nombre est stcokée dans la variable $a$ à la fin de ce script :

a=5
a=2*a
b=2*a
a=a*a 
a=a-b+1
			

Pour accéder au code de la correction : lien

Sur l'affichage

Réaliser un script qui contient trois variables : prenom, nom et num_tel et qui doit afficher :

"Bonjour, je veux joindre Mélusine Hamphaïte au 0665432100 "

Dans le cas où vous vouliez joindre votre amie Mélusine Hamphaïte dont vous connaissez le numéro.

Pour accéder au code de la correction : lien

Sur la saisie

Ecrire un script en Python qui demande à l'utilisateur, le prénom, le nom et le numéro de téléphone et qui réalise un affichage comme dans l'exercice ci-dessus.

Pour accéder au code de la correction : lien

Vous êtes chargé.e de mettre en place une billeterie à un concert.
Chaque adulte doit payer 10€ pour rentrer et chaque adolescent.e de 12 à 18 ans doit payer 8€ tandis que les enfants de moins de 12 ans peuvent rentrer gratuitement. Proposez un algorithme en Pyhton qui renvoie le prix à payer en fonction du nombre d’adultes et d'adolescent.e.s et d’enfants du groupe. Sachant que la variable $M$ stocke le nombre d’adultes majeur.e.s, $A$ le nombre d'adolescent.e.s, $E$ le nombre d’enfants et $prix$ le prix à payer, proposez un tel algorithme qui demande à l'utilisateur le nombre de personnes dans chacune des catégories et qui affiche le prix total à payer.

Pour accéder au code de la correction : lien

Sur l'instruction conditionnelle

Proposer un algorithme qui :

Pour accéder au code de la correction : lien

Un théâtre pratique trois types de tarifs suivant le nombre de pièces regardées.

Écrire un programme qui :

Pour accéder au code de la correction : lien

Sur les fonctions

En vous inspirant de l'exercice sur l'IMC (cf. lien direct), proposez une fonction nommée IMC qui demande à l'utilisateur sa taille et sa masse puis qui renvoie son IMC.

Rappel :
L'IMC d'une personne est donné par la forumle $ IMC= \frac{masse}{taille^2}$ où la masse est en kilos et la taille en mètres.

Pour accéder au code de la correction : lien

Un site en ligne propose une promotion sur des téléphones portables suivant les cas suivants :

  1. Proposez une fonction promotion qui prend comme argument le prix initial et qui renvoie le prix en prenant en compte la promotion.

  2. Les frais de port de 10€ sont offerts si le montant de la commande, après promotion (mais hors frais de port) est strictement supérieur à 100€.

    Proposez une fonction payer qui :

    • demande le prix initial,

    • utilise la fonction promotion pour déterminer le prix après promotion,

    • prend en compte l'éventuelle offre des frais de port,

    • renvoie le prix final à payer.

  3. Testez votre programme avec quelques prix initiaux. Par exemple, avec 50€, 100€, 200€, 1000€, ...

Pour accéder au code de la correction : lien

On suppose que vous disposez déjà des deux fonctions mini2 et mini4 programmées dans un exercice précédent (cf. lien direct)

Proposer une fonction, nommée mini4, qui :

Pour accéder au code de la correction : lien

Sur la boucle répétitive for

Écrire une fonction somme_carree(n) où $n$ est un entier qui renvoie la valeur de $1^2+2^2+...+n^2$.

Pour accéder au code de la correction : lien

Éléonore Wouétel fait des économies. Elle a placé en début d'année 1000€ sur un compte rémunéré en banque. Elle pense que durant chacune des huit années suivantes, elle pourra déposer sur ce compte 200€.
De plus, la banque lui verse, à la fin de chaque année, 1% d'intérêt, c'est à dire qu'elle rajoute sur le compte 1% de la somme présente sur le compte en début d'année.

Proposer un algorithme qui affiche la somme qu'Élénore aura sur son compte au bout de huit années de placement.

Pour accéder au code de la correction : lien

Proposer une fonction nommée nb_voyelles qui prend en arguments une chaîne de caractères et qui renvoie le nombre de voyelles (minuscules non accentuées) de cette chaîne. Tester ensuite par exemple en exécutant nb_voyelles("Ah oui ! Vive l'été !"").

Vous pouvez utiliser le mot-clé or ; exemple : elt=='e' or elt='i' signifie que l'on teste si "elt est un 'e' ou un 'i' ".

Pour accéder au code de la correction : lien

Sur la boucle répétitive conditionnelle while

Chaque année la consommation énergétique d'un data center est estimée augmenter de 8 %.
Déterminer le nombre d'années nécessaires au doublement de la consommation énegétique de ce data center.

Le résultat ne dépend pas de la consommation énergétique actuelle de ce data center.

Pour accéder au code de la correction : lien