EPO Examen en Informatique MPSI - PCSI
CPGE Année scolaire : 2020-2021
Algorithme et Programmation II
__________________________________________________________________________________
Documents et appareils (téléphones portables, tablettes, ordinateurs) : non autorisés
Calculettes non programmables : autorisées pour les calculs numériques
Durée : 3 heures
Exercice 1 : QCM (10 points)
Question 1 : Soit le code suivant :
str = "something"
cpt = 0
for car in str :
cpt += 1
print(cpt)
Quelle opération permet de faire la même chose que le code ci-dessus ?
a. len(str) b. print(len(str))
c. print([Link]) d. je ne sais pas
Question 2 : Considérons un dictionnaire (notée article) représentant les informations d’un
article scientifique et définit par :
{"titre" : "Will systems biology offer new holistic paradigms to life
sciences?",
"auteur" : ["Conti","Valerio","Zbilut","Giuliani"],
"date" : 2007,
"journal" : "Syst Synth Biol.",
"pageDebut": 161,
"pageFin" : 165,
"volume" : 1,
"numero" : 4}
Parmi les codes ci-dessous, lequel permet d’afficher l’auteur « Giuliani » ?
a. print(article["auteur"])
b. print(article["auteur"][0])
a. print(article["auteur"][-1])
EPO Examen en Informatique MPSI - PCSI
CPGE Année scolaire : 2020-2021
Algorithme et Programmation II
__________________________________________________________________________________
Question 3 : Considérons un dictionnaire « d » dont on souhaiterait vérifier si celle-ci
contient une valeur particulière. Lesquelles des fonctions ci-dessous permettent de réaliser
cette tâche :
a. def find(d, val) : b. def find(d, val) :
for key in d : return val in [Link]()
if d[key] == val :
return True
return False
c. def find(d, val) : d. def find(d, val) :
for key in d : return val in [Link]()
if key == val :
return True
return False
Question 4 : Que fait la fonction suivante :
def func(text) :
d = {}
norm = [Link]().split()
for word in norm :
d[word] += 1
return d
a. Elle ne fait rien de particulier b. Elle recherche des mots dans la
variable « text »
c. Elle recherche les occurrences des mots d. Elle retourne un dictionnaire dont la
contenus dans la variable « text » clé est un mot et la valeur, le nombre
d’apparition du mot dans le texte
Question 5 : On souhaiterait écrire un programme estimant la valeur de la constante
mathématiques « e » en utilisant la formule suivante :
Laquelle des fonctions répond au mieux au problème, en supposant l’existence d’une
fonction « factoriel » ?
EPO Examen en Informatique MPSI - PCSI
CPGE Année scolaire : 2020-2021
Algorithme et Programmation II
__________________________________________________________________________________
a. def do(n) : b. def do(d, val) :
somme = 0 somme = 0
for i in range(n) : for i in range(1, n) :
somme += 1/factoriel(i) somme += 1/factoriel(i)
return somme
Question 6 : Quel est la valeur affichée à l’exécution du programme Python suivant :
ports = {"http" : 80, "imap" : 142, "stmp" : 25}
ports["ftp"] = 21
print(ports["ftp"])
a. 21 b. Key not found
c. {"ftp" : 21} d. 3
Question 7 : Quelle expression Python permet d’accéder au numéro de téléphone de
Tournesol, sachant que le répertoire a été définie par l’affectation suivante :
repertoire = [{"nom" : "Dupont", "tel" : "5234"}, {"nom" :
"Tournesol", "tel" : "5248"}, {"nom" : "Dupond", "tel" : "3452"}]
a. repertoire[1]["tel"] b. repertoire["Tournesol"]
c. repertoire["tel"][1]
Question 8 : Soit la fonction suivante
Il s’agit :
a. d’une fonction récursive b. d’une fonction simple
c. d’une procédure
EPO Examen en Informatique MPSI - PCSI
CPGE Année scolaire : 2020-2021
Algorithme et Programmation II
__________________________________________________________________________________
La valeur retournée par la fonction f lorsque x = 4 est :
a. 3 b. 4
c. 5 d. 6
Question 9 : Soit un fichier nommé « [Link] » contenant des données relatives aux noms de
famille des étudiants. Chaque ligne correspond à un nom. Lesquelles parmi les codes
suivants permettent d’extraire tous les noms :
a. def charger() : b. def charger() :
fid = open("[Link]", "w") fid = open("[Link]", "r")
data = [Link]().split("\n") data = [Link]().split("\n")
return data [Link]()
return data
c. def charger() : d. def charger() :
with open("[Link]", "r")as fid with open("[Link]", "r") :
data = [Link]().split("\n") data = [Link]().split("\n")
return data return data
Exercice 2 : Traduction d’algorithme en Python (5 points)
On désire implémenter la méthode de Tri rapide. Son l’algorithme est le suivant :
Traduire le code en Python
EPO Examen en Informatique MPSI - PCSI
CPGE Année scolaire : 2020-2021
Algorithme et Programmation II
__________________________________________________________________________________
Exercice 3 : Python (5 points)
On souhaiterait gérer la moyenne générale des notes de chaque étudiant en 1ère année des
CPGE. Pour cela, on considère un dictionnaire « d » dont la clé correspond à l’identifiant
(chaine de caractère) de l’étudiant et la valeur, la moyenne générale.
Exemple : d = {‘01044’ : 15.5, ‘01045’ : 10, ‘01046’ : 18}
Ecrire les fonctions suivantes en Python (elles prennent en paramètre un dictionnaire « d ») :
• « moyenne(d) » : elle retourne la moyenne des valeurs du dictionnaire
• « MinMax(d) » : elle retourne la plus faible et la plus forte moyenne
• « moyenneGeo(d) » : elle retourne la moyenne géométrique des notes. La formule est
la suivante : : 𝑚𝑜𝑦𝐺 = 𝑛√∏𝑛𝑖=1 𝑥𝑖 , ou les xi correspondent aux moyennes générales de
chaque étudiant
• « admis(d, seuil) » : elle affiche les numéros étudiants de tous les étudiants ayant
une moyenne générale supérieure à la valeur de « seuil »
• « ecart_type(d) » : elle retourne l’écart-type des moyennes générales. La formule
1
est la suivante : 𝜎 = √𝑛 ∑𝑛−1
𝑖=0 (𝑥𝑖 − 𝑥̅ ) , ou 𝑥̅ correspond à la moyenne des valeurs du
2
dictionnaire