📝 Examen intra
- Directives
- Exercices supplémentaires
Durée de l'examen : 120 minutes
L'examen comporte 2 volets
🔒 Volet 1 : Partie papier (sans ordinateur)
📄 2 questions :
🔹Trace d'un programme avec appel de fonction, structures répétitives et conditionnelles (2 points)
🔹Écrire du code pour résoudre un problème** (2 points)
✅ Une fois terminé :
🔹Remettez votre copie à l'enseignant.
🔹L'enseignant déverrouillera votre ordinateur pour accéder au volet 2.
💻 Volet 2 : Partie sur ordinateur
🧠 4 questions :
🔸 Conditions (2 points)
🔸 Boucles (2 points)
🔸 Création de fonctions (2 points)
🔸 Combinaison de toutes les notions (2 points)
🕵️♂️ Vous devez identifier par vous-même les notions nécessaires à chaque question.
🚫 Restrictions techniques
- 🌐 Internet désactivé
- ❌ Aucune question ne recevra de réponse pendant l'examen, sauf en cas de problème technique avec PyCharm.
- 📁 Le site du cours sera accessible via une copie locale
- 📹 Les vidéos YouTube des solutionnaires ne seront pas accessibles
📚 Notions exclues de l'examen
- ❌ Les fonctions suivantes :
input(),int(),float(),str() - ❌ Les exceptions (
try/except,raise) - ❌ Les graphiques (
matplotlib) - ❌ La création de module
- ❌ Les Docstrings
- ❌ Les dépôts Git
⚠️ Règles à respecter
- 🍽️ Pas de nourriture
- 🎒 Tous les sacs à l'avant
- 📵 Téléphones interdits
- 🔌 Aucun appareil électronique (doivent être fermés et rangés)
- 🧮 Pas de calculatrice, montre/lunettes intelligentes, ni implants neuronaux façon Cyberpunk 2077 🤖
- 🚫 Une fois la partie papier remise, vous ne pouvez plus y revenir
Exercices supplémentaires pour renforcer vos compétences en vue de l'examen.
🔨 Exercices de création
Pour chacun des exercices de cette section, vous devez créer des fichiers .py avec les noms indiqués.
Pour les exercices de cette section, vous pouvez consulter librement la documentation du site web du cours.
📁 Exercice - Le premier qui dépasse
Créez un fichier r08_premier_depasse.py pour votre réponse.
Une sonde enregistre des températures. Dès qu'une mesure dépasse 100 °C, on déclenche une alarme et on arrête immédiatement de lire les mesures suivantes.
mesures = [22.0, 45.5, 78.1, 99.9, 103.2, 110.0, 95.0]
Parcourez la liste avec une boucle et, dès que vous trouvez une mesure supérieure à 100, affichez sa position (i) et sa valeur, puis sortez de la boucle.
Si aucune mesure ne dépasse 100, affichez « Aucune alarme ».
Parcours d'une liste par index, for + if + break, recherche avec arrêt anticipé, position d'un élément
📁 Exercice - Afficher Fibonacci
Créez un fichier r08_fibo.py pour votre réponse.
Créez un programme affichant les 100 premiers nombres de la suite de Fibonacci.
Voici les 10 premiers nombres : 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
Dans cette suite, les nombres sont toujours la somme des 2 nombres précédents. Par exemple :
- le nombre 8 s'obtient en additionnant 3 + 5.
- le nombre 13 s'obtient en additionnant 5 + 8.
Les valeurs doivent être affichées avec print() au fur et à mesure qu'elles sont calculées.
Contraintes
- Vous n'avez droit qu'à 3 variables.
- Vous devez utilisez une boucle.
- Une va servir à contenir le nouveau nombre calculé.
- Une va servir à représenter le nombre précédent.
- Une va servir à représenter le nombre précédent du précédent.
Voici les trois variables et leurs valeurs initiales. Les deux premiers nombres (1, 1) sont affichés avant la boucle, celle-ci s'occupe des 98 suivants :
precedent_precedent = 1 # l'avant-dernier nombre de la suite
precedent = 1 # le dernier nombre de la suite
nouveau = 0 # le nombre qu'on va calculer à chaque tour
# On affiche les 2 premiers avant de démarrer la boucle
print(precedent_precedent)
print(precedent)
# La boucle calcule et affiche les 98 suivants (pour un total de 100)
for _ in range(98):
# À compléter : calcul du nouveau nombre, affichage, puis rotation des variables
...
💡 Le cœur du défi est la rotation : après avoir calculé nouveau, comment faire « glisser » les valeurs pour préparer le tour suivant?
Boucle, mise à jour de plusieurs variables (échange/rotation), nombre limité de variables
📁 Exercice - Calcul de la note finale du cours, avec la double sanction!
Créez un fichier r08_note_finale_double_sanction.py pour votre réponse.
Reprenez votre code de l'exercice r02_note_finale.py et améliorez-le en y appliquant la règle de la double sanction.
📋 Rappel — la règle de la double sanction
Pour réussir le cours, un étudiant doit obtenir un minimum de 60 % dans chacune des deux catégories suivantes :
- Les évaluations supervisées : examens et contrôles.
- Les évaluations non supervisées : travaux pratiques (TP) et devoirs.
Si l'une ou l'autre de ces moyennes est sous 60 %, la note affichée au bulletin n'est pas la note finale pondérée, mais bien la plus basse des deux moyennes.
🛠️ INSTRUCTIONS
-
Repartez du code de
r02_note_finale.py(les 4 listes parallèles et le calcul de la note finale). -
Ajoutez une cinquième liste indiquant la catégorie de chaque évaluation :
categories = ["non_supervisee", "non_supervisee", "supervisee", "supervisee", "supervisee"] -
Créez une fonction
calculer_moyenne_categorie(notes, sur, ponderations, categories, categorie_cible)qui :- parcourt les listes par index,
- additionne les notes pondérées des évaluations appartenant à
categorie_cible, - retourne cette somme ramenée sur 100 (divisée par la somme des pondérations de cette catégorie).
-
Créez une fonction
appliquer_double_sanction(note_finale, moyenne_supervisees, moyenne_non_supervisees)qui :- retourne la note finale telle quelle si les deux moyennes sont ≥ 60 %,
- retourne la plus basse des deux moyennes sinon.
-
Affichez un résumé clair incluant :
- le détail de chaque évaluation (comme dans R02),
- la note finale avant double sanction,
- la moyenne des évaluations supervisées,
- la moyenne des évaluations non supervisées,
- la note finale après double sanction,
- un message indiquant si la double sanction a été appliquée ou non.
Validez votre programme avec les 3 cas ci-dessous.
✅ Cas 1 : double sanction non déclenchée (notes = [8, 9, 90, 95, 9])
Étudiant : Nicola Tesla
TP1 (15%) : 8 / 10
TP2 (25%) : 9 / 10
Examen 1 (20%) : 90 / 100
Examen 2 (30%) : 95 / 100
Contrôles (10%) : 9 / 10
Note finale (avant double sanction) : 90.00 / 100
Moyenne évaluations supervisées : 92.50 / 100
Moyenne évaluations non supervisées : 86.25 / 100
✅ Double sanction non déclenchée.
Note finale : 90.00 / 100
✅ Cas 2 : double sanction déclenchée par les supervisées (notes = [9, 9, 40, 45, 4])
Étudiant : Nicola Tesla
TP1 (15%) : 9 / 10
TP2 (25%) : 9 / 10
Examen 1 (20%) : 40 / 100
Examen 2 (30%) : 45 / 100
Contrôles (10%) : 4 / 10
Note finale (avant double sanction) : 61.50 / 100
Moyenne évaluations supervisées : 42.50 / 100
Moyenne évaluations non supervisées : 90.00 / 100
⚠️ Double sanction déclenchée.
Note finale : 42.50 / 100
✅ Cas 3 : double sanction déclenchée par les non supervisées (notes = [2, 2, 90, 90, 9])
Étudiant : Nicola Tesla
TP1 (15%) : 2 / 10
TP2 (25%) : 2 / 10
Examen 1 (20%) : 90 / 100
Examen 2 (30%) : 90 / 100
Contrôles (10%) : 9 / 10
Note finale (avant double sanction) : 62.00 / 100
Moyenne évaluations supervisées : 90.00 / 100
Moyenne évaluations non supervisées : 20.00 / 100
⚠️ Double sanction déclenchée.
Note finale : 20.00 / 100
Structures conditionnelles (if/elif/else), définition de fonctions, paramètres avec valeur par défaut, return, listes parallèles, accès par index
📁 Exercice - Affichage d'étoiles #2 (pyramide)
Créez un fichier r08_etoile_2.py pour votre réponse.
À l'aide de boucles, faites un programme permettant d'afficher cette pyramide :
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
Mettez le code dans une fonction nommée pyramide qui prend la hauteur en paramètre.
Il faut par exemple que ces 3 appels :
pyramide(5)
pyramide(3)
pyramide(7)
produisent exactement cette sortie :
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
*
* * *
* * * * *
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * * * *
Appelez votre fonction pour générer une pyramide haute de 51 lignes.
Puis une, haute de 101 lignes!
Boucles imbriquées (for), définition de fonction, paramètre, affichage sans saut de ligne (end), gestion de l'alignement (espaces), généralisation
✏️ Exercices sur papier
Faites ces exercices d'abord sur papier (ou dans un éditeur de texte simple) et sans aucune documentation, comme à l'examen.
Vous pouvez valider votre réponse dans PyCharm à la fin — un luxe que vous n'aurez pas le jour de l'examen, d'où l'importance de vous entraîner sans lui.
🧠 Exercices de traces
Pour faire les traces des exercices suivants, consultez d'abord les recettes de trace avec fonctions, avec conditions et avec boucles.
🖨 Pour réaliser ces exercices de trace, imprimez le tableau de trace d'exécution.
Faites ces exercices d'abord sur papier (ou dans un éditeur de texte simple) et sans aucune documentation, comme à l'examen.
Vous pouvez valider votre réponse dans PyCharm à la fin — un luxe que vous n'aurez pas le jour de l'examen, d'où l'importance de vous entraîner sans lui.