Analyse
Ce qu'a observé le jury
Synthèse Hadamard du rapport officiel — citations, chiffres et conseils du jury.
Présentation du sujet
Sujet d'informatique commune (MP/PC/PSI) sur la modélisation d'une situation de trafic routier. Couvre Python (booléens, listes, indices), syntaxe SQL, file de voitures et avancement, copie indépendante de listes (L2=L ne suffit pas), bornes des itérateurs.
Structure de l'épreuve
- Partie I — Q1-Q5 — Fondamentaux des booléens et listes(Q1-Q5)Niveau attendu
Q1 0 et 1 ne sont pas des valeurs booléennes. Q2 définir une fonction ≠ créer une liste (il faut l'appeler). Q3 def occupe(L,i): return L[i] (pas if/elif). Q4 raisonnement de dénombrement / récurrence inutile.…
- Partie II — Q6-Q11 — Voitures et avancement(Q6-Q11)Difficile
Q7 « True ou False » n'est pas un type. Q8 fonction renvoie une liste de booléens (pas un dessin). Q9-Q10 nouvelle liste indépendante (L2=L insuffisant), L[0:m] ne contient pas L[m], L[len(L)] n'existe pas. Q11 difficile, première case accessible.
Analyse globale du jury
« Le sujet, assez long mais d'une difficulté raisonnable, a permis un classement très efficace des candidats. Les clefs pour obtenir une note honorable sont de bien maîtriser la syntaxe de base de Python et SQL, de s'assurer que les programmes font exactement ce qui est demandé, et de proposer des programmes concis et bien présentés. Un défaut particulièrement sensible cette année a été le manque de concision des réponses et des programmes. Allez au plus simple ! Le jury demande explicitement aux candidats d'éviter de dépenser leur précieux temps d'épreuve à commenter leurs programmes. »
Top pièges sanctionnés
Q1 — 0 et 1 comme valeurs booléennes-1 pts
« Rappelons aux candidats que 0 et 1 ne sont pas des valeurs de variable booléenne. »
Q2 — définir une fonction = créer une liste-1 pts
« De nombreux candidats pensent que définir une fonction suffit à créer une liste. Ce n'est le cas que si on appelle la fonction… »
Q3 — if L[i]==True / elif L[i]==False-1 pts
« La solution la plus simple, def occupe(L,i) : return L[i] n'a été proposée que par une minorité de candidats. De très nombreux candidats proposent : if L[i]==True : return True elif L[i]==False : return False certes correcte, mais qui montre qu'il y a encore une compréhension imparfaite de la puissance du langage. »
Q5 — assert ≠ renvoyer un booléen-1 pts
« Certains utilisent volontiers assert len(L1)==len(L2) en début de programme. Cela sert au débogage d'un programme en renvoyant une exception (notion hors programme), mais ne renvoie pas un booléen comme demandé. »
Q9-Q10 — L2 = L pour copie indépendante-2 pts
« Dans ces deux questions, il fallait créer une nouvelle liste indépendante de L (L2=L ne suffisait donc pas), et faire bien attention aux indices dans les découpages de listes (non, le dernier élément de L[0:m] n'est pas L[m], et L[len(L)] n'existe pas…). »
for i in range(len(L)+1) pour parcourir L-1 pts
« Toute erreur sur ce point est sanctionnée, notamment sur les questions simples où il n'est pas acceptable de lire for i in range(len(L)+1) : pour parcourir une liste de longueur len(L). »
while à la place de if-2 pts
« Une faute grave a été vue dans un nombre appréciable de copies : l'utilisation de while à la place de if. Cette confusion est sanctionnée lourdement. »
Chapitres clés à maîtriser
Source : Rapport du jury Mines-Ponts · Info PC, session 2017 · PDF officiel ↗
Ressources
Téléchargements
Sujet officiel, corrigé Hadamard et rapport jury — tout en un endroit.
FAQ

