Sujet n°40
Sujet original
Pour télécharger l'énoncé original, cliquer ici.
Exercice n°1
Écrire une fonction recherche()
qui prend en paramètres elt
un nombre
et tab
un tableau de nombres, et qui renvoie le tableau des indices de elt
dans tab
si elt
est dans tab
et le tableau vide []
sinon.
Exemples
| >>> recherche(3, [3, 2, 1, 3, 2, 1])
[0, 3]
>>> recherche(4, [1, 2, 3])
[]
|
Une solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | def recherche(elt, tab):
"""
elt - int ou float, un nombre
tab - list, tableau de nombres
Sortie: list - tableau des indices de elt dans tab.
"""
result = []
for i in range(len(tab)):
if tab[i] == elt:
result.append(i)
return result
if __name__ == '__main__':
# Exemples de l'énoncé
print(recherche(3, [3, 2, 1, 3, 2, 1]) == [0, 3])
print(recherche(4, [1, 2, 3]) == [])
# Nouvel exemple
print(recherche(1, [1, 1, 1, 1, 1, 1, 1, 1]) == [0, 1, 2, 3, 4, 5, 6, 7])
print(recherche(4, [3, 2, 1, 4, 2, 1]) == [3])
|
Exercice n°2
Un professeur de NSI décide de gérer les résultats de sa classe sous la
forme d’un dictionnaire :
- les clefs sont les noms des élèves ;
- les valeurs sont des dictionnaires dont les clefs sont les types d’épreuves
et les valeurs sont les notes obtenues associées à leurs coefficients.
Exemple
L’élève de nom « Durand » a obtenu au DS2 la note de 8 avec un coefficient 4 :
1
2
3
4
5
6
7
8
9
10
11
12 | resultats = {'Dupont': {'DS1' : [15.5, 4],
'DM1' : [14.5, 1],
'DS2' : [13, 4],
'PROJET1' : [16, 3],
'DS3' : [14, 4] },
'Durand': {'DS1' : [6 , 4],
'DM1' : [14.5, 1],
'DS2' : [8, 4],
'PROJET1' : [9, 3],
'IE1' : [7, 2],
'DS3' : [8, 4],
'DS4' : [15, 4]} }
|
Le professeur crée une fonction moyenne()
qui prend en paramètre le nom
d’un de ces élèves et lui renvoie sa moyenne arrondie au dixième.
Compléter le code du professeur ci-dessous :
1
2
3
4
5
6
7
8
9
10
11
12 | def moyenne(nom):
if nom in ...:
notes = resultats[nom]
total_points = ...
total_coefficients = ...
for ... in notes.values():
note , coefficient = valeurs
total_points = total_points + ... * coefficient
total_coefficients = ... + coefficient
return round( ... / total_coefficients , 1 )
else:
return -1
|
Commentaire sur le code original
-
Pour télécharger l'original du fichier à compléter,
cliquer ici.
-
Compliqué ici d'ajouter un exemple pertinent qui permette de vérifier
la bonne exécution de ce programme.
-
Le code fait appel à la fonction round()
dont le rôle n'est pas
explicité.
N'oubliez pas que vous pouvez taper l'instruction :
pour obtenir la documentation de cette fonction.
Une réponse
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 | resultats = {'Dupont':{'DS1' : [15.5, 4],
'DM1' : [14.5, 1],
'DS2' : [13, 4],
'PROJET1' : [16, 3],
'DS3' : [14, 4] },
'Durand':{'DS1' : [6 , 4],
'DM1' : [14.5, 1],
'DS2' : [8, 4],
'PROJET1' : [9, 3],
'IE1' : [7, 2],
'DS3' : [8, 4],
'DS4' : [15, 4]}}
def moyenne(nom):
if nom in resultats.keys():
notes = resultats[nom]
total_points = 0
total_coefficients = 0
for valeurs in notes.values():
note , coefficient = valeurs
total_points = total_points + note * coefficient
total_coefficients = total_coefficients + coefficient
return round( total_points / total_coefficients , 1 )
else:
return -1
if __name__ == '__main__':
print(moyenne('Dupont') == 14.5)
print(moyenne('Durand') == 9.2)
print(moyenne('Duval') == -1)
|