| 223 | 234 |
|---|---|
@0 Préparer une présentation orale résumant 2 à 3 notions abordées lors de la dernière séance de cours :

@1 Sur le site d’entrainement France IOI effectuer précisément ces 3 étapes :
@2 Effectuer les activités listées ci-dessous, SAUF celles qui sont rayées, sur le Chapitre 1 – Affichage de texte, suite d'instructions. Certaines corrections sont disponibles ci-dessous.
Histoire et Objectifs1) Hello world
Représentation de la sortie d'un programme2) Présentation
Afficher du texte : erreurs possibles3) Plan de la montagne
4) Dans le fourréPas de correction pour les validations ...
Mouvements : nécessité du module5) Empilement de cylindresSoumissions, conseils et forum d'entraide6) Recette secrète@3 Sur le Chapitre 2 – Répétitions d'instructions, effectuer les activités listées ci-dessous, SAUF celles qui sont rayées. Certaines corrections sont disponibles ci-dessous.
Histoire et ObjectifsPunitionVotre programme doit écrire 135 fois la phrase : “Je dois respecter le Grand Sorcier.”, en plaçant cette phrase exactement une fois sur chaque ligne. Attention, si votre programme n’affiche pas exactement cette phrase avec les points et la majuscule là où il faut, il faudra tout recommencer.
for chaqueFois in range (135) :
print("Je dois respecter le Grand Sorcier.")
erreurs possiblesla touche tabulation2) Mathématiques de base
3) Transport d'eau
4) Le secret du Goma
Répétition : cohérence de l'indentation5) Sisyphe6) Page d'écriture7) Jeu de dames8) Mont Kailash9) VendangesPas de correction pour les validations ...
Insérer des commentaires10) Le Grand ÉvénementBien lire les correctionsAttention ! L’indentation en python n’est pas uniquement un élèment de présentation mais un élément faisant partie intégrante des structures.
Python est un langage de programmation comme C, JavaScript, PHP, Java. Son développement a commencé en 1989 par Guido van Rossum et est en évolution permanente. C’est un langage interprété de haut niveau.
Il existe 2 grandes familles de langages de programmation :
Programmer, c’est créer des programmes (suite d’instructions données à l’ordinateur) ! Un ordinateur sans programme ne sait rien faire. Il existe différents langages qui permettent de programmer un ordinateur, mais le seul directement utilisable par le processeur est le langage machine (langage de plus bas niveau composé uniquement d’une suite de 1 et de 0). Aujourd’hui (presque) plus personne ne programme en langage machine (c’est un métier d’experts).
Les informaticiens utilisent des “mots” que l’on appelle des instructions (souvent proche de l’anglais) à la place de la suite de 0 et de 1. Ces instructions, une fois écrites par le programmeur, sont « traduites » en langage machine. Un programme spécialisé assure cette traduction. Ce système de traduction s’appellera interpréteur ou bien compilateur, suivant la méthode utilisée pour effectuer la traduction.
Puisqu’il exite deux manière de traduire un langage haut-niveau et langage bas-niveau, de-mêmeDe fait, il existe de typologie deux langages, ceux interprétés et ceux compilés :
0 et de 1). Le système d’exploitation (Windows, Mac, Linux…) utilise ce code compilé directement. C’est ce qu’on appelle une application ou un logiciel.L’intérêt principal d’un langage interprété sa portabilité : il fonctionne quelle que soit la configuration de l’ordinateur qui l’excécute.
Le principal défaut est que l’exécution d’un programme interprété est souvent plus lente que le même programme écrit dans un langage compilé.
Pour programmer en Python ou en tout autre langage de “haut-niveau”, il faut disposer d’un environnement de travail dédié à cela. C’est ce qu’on appelle un Environnement Developpement Intégré ou IDL (Integrate DeveLopment Environment).
Il existe des IDE est installés sur l’odinateur de travail comme , l’IDE standard de Python mais aussi l’IDE EduPython, l’IDE PyCharm ou encore l’IDE ThonnyPython … Mais il existe également de IDE Python en ligne sur INternet comme Repl.it, Trinket…
A l’intérieur de chacun de ces différents IDE il est possible de programmer en Python de deux manière différentes et complémentaires :
L’éditeur ressemble à une page blanche avec des numéros de lignes sur la gauche pour mieux se repérer.
La console est un espace vide souvent plus petit que l’éditeur, souvent juste à coté et dont les numéros de lignes sont remplacés à gauche par les symboles >>>, qui signifient "j’attends tes instructions cher humain !!!"
@4 A l’aide de la console de l’IDE ThonnyPython, UNIQUEMENT, exécuter les commandes données en exemple ci-dessous.
>>> print("Bonjour")
Bonjour
>>> 10 // 3
3
>>> 10%3
1
>>> 9.5 + 2
11.5
>>> 3.11 + 2.08
5.1899999999999995
@5 Sur le Chapitre 3 – Calculs et découverte des variables, effectuer les activités listées ci-dessous, SAUF celles qui sont rayées. Certaines corrections sont disponibles ci-dessous.
1) Réponds !2) L'éclipse3) Bonbons pour tout le monde !4) L'algoréathlon ⇒ stocker le résultat d’un calcul pour le réutiliser
distance = 2 + 34 + 6
print(distance, end = " ")
print(distance * 2, end = " ")
print(distance * 3, end = " ")
Nom d'une variable5) Cour de récréation ⇒ utiliser une variable dans des opérations
longueur = 5 * 17 + 2 * 7 + 1 * 5 + 2 * 2
print(longueur * longueur)
print(4 * longueur)
6) Une partie de cache-cache ⇒ afficher les entiers de 1 à 100
nombre = 1
for decompte in range(100):
print(nombre)
nombre = nombre + 1
print("J'arrive !")
Variables : suppléments7) Progresser par l'erreur ⇒ vérifier des programmes utilisant des variables
8) Décollage de fusée ⇒ compter de 100 à 0
9) Invasion de batraciens ⇒ calculer une puissance avec une boucle
10) Kermesse ⇒ calculer les sommes intermédiaires des premiers entiers
Mettre à profit les identifiants11) Course avec les enfants ⇒ utiliser un compteur d’itérations d’une bouclePas de correction pour les validations ...
12) Construction d'une pyramide ⇒ sommer les cubes des entiers impairsPas de correction pour les validations ...
13) Table de multiplicationSuivre l'évolution des variables d'un programme@6 A l’aide de la console de l’IDE ThonnyPython, UNIQUEMENT, exécuter les commandes données en exemple ci-dessous.
>>>mon_age = 16
mon_age
16
>>> mon_nouvel_age = mon_age + 1
>>> mon_nouvel_age
17
nom_de_variable = valeur.>>>mon_age = 21
int (integer = nombres entiers),float (floating = nombres décimaux),str (string = chaîne de caractères), etc.>>> a = 3
>>> type(a)
<class 'int'>
>>> b = 3.1
>>> type(b)
<class 'float'>
>>> c = "Bonjour"
>>> type(c)
<class 'str'>
print() “tape” tout simplement le nom de la variable à afficher dans la console.>>> a = 3
>>> print(a)
3
>>> a
3
>>> a = a + 3
>>> b = a - 2
>>> print("a =", a, "et b =", b)
a = 6 et b = 4
Définition :
Une variable est une association entre un nom (un identifiant) et une valeur (d’un certain type).
Par analogie, on peut assimiler une variable à une boîte ou un tiroir portant un nom, une étiquette (son identifiant) et contenant un nombre, une lettre, une phrase … (c’est sa valeur, son contenu)
Exemple : La représentation d’une variable qui a pour nom ma_variable, est de type floatet a pour valeur 8.0.

Quel que soit le langage, le choix d’un nom de variable doit obéïr à plusieurs règles :
A noter : Les mots-clés réservés de Python 3 sont : and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield, False, None, True.
Exemples :
compteur, nombre_de_lettresif, 2eme_lettre, nom nom, le-prenomUne affectation est une instruction qui permet de donner une valeur à une variable, c’est-à-dire d’associer son nom à une valeur. Une affectation permet aussi de modifier cette association.
Exemple lors du déroulement du script de trois lignes ci-dessous :

Attention à la confusion : Une expression est le résultat d’un calcul effectué par un programme. Elle fournit une valeur (et donc un type) et peut être stockée dans une variable
Exemple : 3 + 5 est une expression de type entier dont la valeur est 8, alors que x = 3 + 5 est une affectation où x prend la valeur du résultat de l’expression 3 + 5
En python, la fonction type() donne le type de l’expression
>>>type(3+5)
<class `int`>
forEn langage Python comme dans beaucoup d’autres langages de haut niveau, la boucle for crée et utilise une variable pour gérer le nombre de tours de boucle.
nbTours = 3
for chaqueTour in range(nbTours) :
print("Bonjour")
ce qui produit :
Bonjour
Bonjour
Bonjour
Dans l’exemple ci-dessus, la variable chaqueTour démarre à la valeur 0 jusqu’à la valeur 2, ce qui fait bien 3 tours au final.
On peut vérifier cela en modifiant le code comme suit :
nbTours = 3
for chaqueTour in range(nbTours) :
print("Bonjour numéro : ", chaqueTour)
ce qui produit :
Bonjour numéro : 0
Bonjour numéro : 1
Bonjour numéro : 2
On peut également effectuer des calculs avec cette “variable de boucle”.
for a in range(11) :
print(a * 2)
ce qui produit :
0
2
4
6
8
10
12
14
16
18
20
France IOI ne parle pas de cette fonctionnalité au chapitre “Répétitions”, parce que les variables ne sont pas encore abordées.
Maintenant que l’on connait les variables, on peut créer des boucles beaucoup plus simples. Par exemple :
nombre = 10
for decompte in range(11) :
print(nombre)
nombre = nombre - 1
for nombre in range(11) :
print(10 - nombre)
@7 Sur le Chapitre 4 – Lecture de l'entrée, effectuer les activités listées ci-dessous, SAUF celles qui sont rayées. Certaines corrections sont disponibles ci-dessous.
Des programmes interactifs1) Récoltes
2) Retraite spirituelle
3) Âge des petits-enfants
Représentation de l'entrée d'un programmeErreur si l'on ne donne pas un entier4) Encore des punitionsLe programme doit lire un entier nbLignesfo (le nombre de lignes souhaité) puis écrire autant de fois que demandé la phrase « Je dois suivre en cours ».
nbLignes=int(input())
for chaqueLigne in range(nbLignes) :
print("Je dois suivre en cours")
5) Graduation de thermomètresUtiliser les exemples des sujets6) Jeu de calcul mentalLe chef choisit un nombre. La personne qui suit le multiplie par 2, puis la suivante multiplie le nombre obtenu par 3, celle d’encore après multiplie le résultat par 4… jusqu’à ce que les nbNombres calculs aient été effectués.
Le chef a choisi le nombre 66 pour démarrer le jeu (stocké dans la variable nbDepart). Le programme doit lire l’entier nbNombres, qui correspond à la quantité de nombres attendue par le jeu (nombre de départ inclus) ce qui correspondant donc au nombre de répétitions à effectuer. Il doit ensuite afficher tous les nombres de la partie.
nbNombres=int(input())
nbDepart=66
nbIncrement=1
for chaqueTour in range(nbNombres) :
print(nbDepart)
nbIncrement+=1
nbDepart*=nbIncrement
7) La Grande BraderiePas de correction pour les validations ...
Lecture d'entiers : autre erreur possible8) BétailLe programme doit lire 20 entiers puis afficher la somme de tous ces entiers.
totalBetes=0
for chaqueTour in range(20) :
nbBetes=int(input())
totalBetes+=nbBetes
print(totalBetes)
9) Socles pour statuesPas de correction pour les validations ...
Instructions condensées10) Le plus beau KarvaPas de correction pour les validations ...
Erreur si on lit trop de chosesPortée d'une variable@8 Sur le Chapitre 5 – Tests et conditions, effectuer les activités listées ci-dessous, SAUF celles qui sont rayées. Certaines corrections sont disponibles ci-dessous.
Des programmes interactifs1) Transport des bagages
nbBagages=int(input())
poidsBagages=int(input())
poidsTotal=nbBagages*poidsBagages
if(poidsTotal>105) :
print("Surcharge !")
2) Bornes kilométriques3) Tarifs dégressifs
heureArrivee=int(input())
prix = 10 + 5 * heureArrivee
if prix > 53:
prix = 53
print(prix)
4) Bagarre générale
supArignon=int(input())
supEvaran=int(input())
if supArignon - supEvaran > 10 :
print("La famille Arignon a un champ trop grand")
if supEvaran - supArignon > 10 :
print("La famille Evaran a un champ trop grand")
5) Tarif du bateauConditions : erreur possibleBlocs conditionels formés de plusieurs instructions6) Traversée du pont
premierDe = int(input())
secondDe = int(input())
somme = premierDe + secondDe
if somme >= 10:
print("Taxe spéciale !")
print(36)
else:
print("Taxe régulière")
print(2 * somme)
7) Concours de tir à la cordePas de correction pour les validations ...
8) Mot de passe du villagePas de correction pour les validations ...
age = 21
if age >= 18: # Si age est supérieur ou égal à 18
print("Vous êtes majeur.")
else: # Sinon (age inférieur à 18)
print("Vous êtes mineur.")
monNombre = 3
if monNombre > 2 :
print("monNombre est supérieur à 2")
else :
print("monNombre est inférieur à 2.")
if(« si »), elif (« sinon si ») et else (« sinon »).if a > 0 :
print("a est positif.")
elif a < 0 :
print("a est négatif.")
else :
print("a est nul.")
if annee % 400 == 0:
bissextile = True
elif annee % 100 == 0:
bissextile = False
elif annee % 4 == 0:
bissextile = True
else:
bissextile = False
if et elif doivent être suivis d’un test, d’une condition qu’on appelle souvent aussi un prédicat.if a > 0 :
...
elif 0 > a :
...
if age >= 18 :
majeur = True
True) soit fausses (False).majeur = False
age = 10
if age >= 18 :
majeur = True
print(majeur)
else :
majeur = False
print(majeur)
Il existe une façon plus condensée d’écrire certaines instructions conditionnelles avec de “If”:
En PHP (langage utilisé dans les serveurs Web), on peut avoir par exemple :
switch($i){
case 0 : instruction si $i =0 ; break;
case 1 : instruction si $i =1 ; break;
case 2 : instruction si $i =2 ; break;
default : instructions dans les autres cas;
}
En C, cela donne (quasiment la même chose):
switch(i){
case 0 : instruction si i =0 ; break;
case 1 : instruction si i =1 ; break;
case 2 : instruction si i =2 ; break;
default : instructions dans les autres cas;
}
Avec Python les choses sont moins condensées puisque “switch” n’existe pas mais seulement if, elif et else :
if i == 0:
instruction si i =0
elif i == 1:
instruction si i =1
elif i == 2:
instruction si i =2
else:
instructions dans les autres cas
@9 Sur le Chapitre 6 – Structures avancées, effectuer les activités listées ci-dessous, SAUF celles qui sont rayées. Certaines corrections sont disponibles ci-dessous.
Structures imbriquées1) Villes et villages
nombre_lieux = int(input()
nombre_villes = 0
for chaqueLieu in range (nombre_lieux) :
nombre_habitants = int(input())
if nombre_habitants > 10000 :
nombre_villes = nombre_villes +1
print(nombre_villes)
2) Planning de la journéePas de correction pour les validations ...
3) Étape la plus longue
nbJours = int(input())
distanceMax = 0
for chaqueJour in range(nbJours):
distance = int(input())
if distance > distanceMax:
distanceMax = distance
print(distanceMax)
4) Calcul des dénivelées
nbVariations = int(input())
totalPositif = 0
totalNegatif = 0
for chaqueVariation in range(nbVariations):
variation = int(input())
if variation > 0:
totalPositif = totalPositif + variation
else:
totalNegatif = totalNegatif - variation
print(totalPositif)
print(totalNegatif)
5) Type d'arbres
hauteur = int(input())
folioles = int(input())
if hauteur <= 8 :
if folioles <= 5 :
print("Falarion")
if hauteur <= 5 :
if folioles >= 8 :
print("Tinuviel")
if hauteur >= 10 :
if folioles >= 10 :
print("Calaelen")
if hauteur >= 12 :
if folioles <= 7 :
print("Dorthonion")
6) Tarifs de l'auberge
age = int(input())
poids = int(input())
if age < 10:
print(5)
else:
if age == 60:
print(0)
else:
if poids >= 20:
print(40)
else:
print(30)
7) Protection du village
nbMaisons = int(input())
xMin = 1000 * 1000
xMax = 0
yMin = 1000 * 1000
yMax = 0
for chaqueMaison in range(nbMaisons):
posX = int(input())
posY = int(input())
if posX < xMin:
xMin = posX
if posX > xMax:
xMax = posX
if posY < yMin:
yMin = posY
if posY > yMax:
yMax = posY
largeur = xMax - xMin
hauteur = yMax - yMin
perimetre = 2 * (largeur + hauteur)
print(perimetre)
8) Le juste prixPas de correction pour les validations ...
@10 Sur le Chapitre 7 - Conditions avancées, opérateurs booléens, effectuer les activités listées ci-dessous, SAUF celles qui sont rayées. Certaines corrections sont disponibles ci-dessous.
1) Espion étranger⇒ calculer le nombre de valeurs tombant dans un intervalle
date_debut = int(input())
date_fin = int(input())
nb_entrees = int(input())
compteur_personnes = 0
for chaqueEntree in range(nb_entrees):
date = int(input())
if date_debut <= date and date <= date_fin:
compteur_personnes = compteur_personnes + 1
print(compteur_personnes)
2) Maison de l'espion⇒ calculer le nombre de valeurs tombant dans un rectangle
x_min = int(input())
x_max = int(input())
y_min = int(input())
y_max = int(input())
nb_maisons = int(input())
compteur_maisons = 0
for chaqueMaison in range(nb_maisons):
x = int(input())
y = int(input())
if (x_min <= x) and (x <= x_max) and (y_min <= y) and (y <= y_max):
compteur_maisons = compteur_maisons + 1
print(compteur_maisons)
3) Nombre de jours dans le mois⇒ bien combiner plusieurs tests pour avoir un programme court
4) Amitié entre gardes⇒ déterminer si des intervalles 1D s’intersectent
debut_un = int(input())
fin_un = int(input())
debut_deux = int(input())
fin_deux = int(input())
if (fin_deux < debut_un) or (fin_un < debut_deux):
print("Pas amis")
else:
print("Amis")
5) Nombre de personnes à la fête⇒ calculer la valeur maximale atteinte d’un compteur augmentant et diminuant
nb_personnes = int(input())
maximum = 0
nb_presents = 0
for chaquePassage in range(nb_personnes * 2) :
numero = int(input())
if numero > 0 :
nb_presents = nb_presents + 1
if nb_presents > maximum :
maximum = nb_presents
else :
nb_presents = nb_presents - 1
print(maximum)
6) Casernes de pompiers⇒ déterminer si des rectangles à bords droits s’intersectent
Pas de correction pour les validations ...
7) Personne disparue⇒ déterminer si une valeur est présente dans une liste
numero_recherche = int(input())
taille_liste = int(input())
est_sorti = False
for elementDeLaListe in range(taille_liste) :
numero_liste = int(input())
if numero_liste == numero_recherche :
est_sorti = True
if est_sorti :
print("Sorti de la ville")
else :
print("Encore dans la ville")
8) La grande fête⇒ calculer le nombre d’intervalles intersectant un intervalle de référence
Booléens : choses à ne pas faire9) L'espion est démasqué !⇒ tester le nombre de critères vérifiés par les données lues
10) Zones de couleurs⇒ tester l’appartenance de points à des zones du plan avec des tests complexes
Pas de correction pour les validations ...
Aider les autres@11 Sur le Chapitre 8 – Répétitions conditionnées, effectuer les activités listées ci-dessous, SAUF celles qui sont rayées. Certaines corrections sont disponibles ci-dessous.
1) Département de médecine : contrôle d'une épidémie
population = int(input())
numJour = 1
nbMalades = 1
while nbMalades < population :
numJour = numJour + 1
nbMalades = nbMalades * 3
print(numJour)
Boucle infinie2) Administration : comptes annuels
totalDepenses=0
depense=0
while depense != -1 :
totalDepenses = totalDepenses + depense
depense = int(input())
print(totalDepenses)
3) Département de pédagogie : le « c'est plus, c'est moins »
secret = int(input())
essai = int(input())
nbEssais = 1
while essai != secret :
if essai < secret :
print("c'est plus")
else :
print("c'est moins")
nbEssais += 1
essai = int(input())
print("Nombre d'essais nécessaires :")
print(nbEssais)
4) Département d'architecture : construction d'une pyramide⇒ calculer la plus grande somme de carrés inférieure à un seuil
Pas de correction pour les validations ...
5) Département de chimie : mélange explosif⇒ tester la raison de sortie d’une boucle while pour effectuer une action
Pas de correction pour les validations ...
pour / for)La boucle pour / for est utilisée quand on connait le nombre de fois où l’on doit répéter une suite d’instructions.
Exemple en pseudo-code :
Pour i allant de 0 à n-1 faire :
...
les différentes instructions à répéter
...
Fin pour
En python la boucle for peut utiliser différentes structures. La plus simple est celle fonctionnant avec range. Exemple :
for i in range(n):
...
les différentes instructions à répéter
...
Ici, la première ligne précise que la suite du code va être répétée n fois en incrémentant de manière automatique la variable i de 0 à n-1.
Remarque : Dans Python, il n’y a pas de Fin_Pour : C’est en fait l’ indentation qui sert de limitateur de boucle. L’indentation suffit à comprendre quelles instructions appartiennent à la boucle et quelles instructions n’en font pas partie.
Il y a ainsi trois possibilités pour utiliser l’instruction range(), suivant le nombre de paramètres entiers saisis :
i va de 0 à n − 1 par pas de 1 (soit n répétitions)for i in range(n):
i va de m à n − 1 par pas de 1 (soit n répétitions)for i in range(m,n):
i va de m à n − 1 par pas de pas. Le pas est un entier relatif non nul, il peut donc être négatif.for i in range(m,n,pas):
Remarque :
for i in range(n): équivaut à : for i in range(0,n,1):for i in range(m,n): équivaut à : for i in range(m,n,1):for élément in séquence :.@12 A l’aide de l’éditeur de ThonnyPython, exécuter les lignes de codes ci-dessous.
message="bonjour"
for lettre in message:
print(lettre)
b
o
n
j
o
u
r
tant-que / while)La boucle répétitive conditionnelle tant-que / while est utilisée quand on ne connait pas le nombre de fois où l’on doit répéter une suite d’instructions.
Exemple de la boucle tant-que en pseudo-code :
Tant_que condition vraie
...
bloc d'instructions à répéter
...
Fin Tant_que
Exemple en python :
while condition :
...
bloc d'instructions à répéter
...
Fin Tant_que
@13 A l’aide de l’éditeur de ThonnyPython, exécuter les lignes de codes ci-dessous.
age =5
annee = 0
while age < 18:
annee = annee + 1
age = age + 1
print("il sera majeur dans",annee,"ans")
il sera majeur dans 13 ans
a = 0
b = 9
while a < 10 : # Tant-que i est strictement inférieure à 10
print(a + 1, "*", b, "=", (a + 1) * b)
a += 1 # On incrémente i de 1 à chaque tour de boucle
1 * 9 = 9
2 * 9 = 18
3 * 9 = 27
4 * 9 = 36
5 * 9 = 45
6 * 9 = 54
7 * 9 = 63
8 * 9 = 72
9 * 9 = 81
10 * 9 = 90
Remarque : Comme pour la boucle pour, avec Python, il n’y a pas de Fin_Tant_que : C’est en fait l’ indentation qui sert de limitateur de boucle. L’indentation suffit à comprendre quelles instructions appartiennent à la boucle et quelles instructions n’en font pas partie.
Fonctionnement de la boucle tant_que / while :
while ;while sont exécutées,Trois points importants à surveiller :
for, l’initialisation et l’incrémentation du compteur ne sont pas gérées automatiquement par la boucle while.False, la boucle while ne sera jamais exécutée.while ne s’arrêtera jamais.