Sujet n°42
Sujet original
Pour télécharger l'énoncé original, cliquer ici.
Exercice n°1☘
Écrire une fonction tri_selection()
qui prend en paramètre une liste tab
de nombres entiers, et qui renvoie la liste triée par ordre croissant.
Il est demandé de ne pas créer de nouvelle liste mais de modifier celle fournie.
On utilisera l’algorithme suivant :
-
on recherche le plus petit élément de la liste, en la parcourant du rang 0 au dernier rang, et on l'échange avec l'élément d'indice
0
; -
on recherche ensuite le plus petit élément de la liste restreinte du rang 1 au dernier rang, et on l'échange avec l'élément d'indice 1 ;
-
on continue de cette façon jusqu'à ce que la liste soit entièrement triée
Commentaires
- Ici, le mot « liste » est à comprendre dans le sens « liste Python » (c'est-à-dire tableau) plutôt que dans le sens du type abstrait de données liste étudié en Terminale.
- On peut s'interroger sur le fait de demander de modifier le tableau fourni (par effet de bord) s'il faut ensuite le renvoyer...
Exemple
>>> tri_selection([1, 52, 6, -9, 12])
[-9, 1, 6, 12, 52]
Une solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Exercice n°2☘
Le jeu du « plus ou moins » consiste à deviner un nombre entier choisi entre 1 et 99.
Un élève de NSI décide de le coder en langage Python de la manière suivante :
-
le programme génère un nombre entier aléatoire compris entre 1 et 99 ;
-
si la proposition de l’utilisateur est plus petite que le nombre cherché, l’utilisateur en est averti. Il peut alors en tester un autre ;
-
si la proposition de l’utilisateur est plus grande que le nombre cherché, l’utilisateur en est averti. Il peut alors en tester un autre ;
-
si l’utilisateur trouve le bon nombre en 10 essais ou moins, il gagne ;
-
si l’utilisateur a fait plus de 10 essais sans trouver le bon nombre, il perd.
La fonction randint
du module random
est utilisée.
Si a
et b
sont des entiers, randint(a, b)
renvoie un nombre entier compris entre a
et b
.
Compléter le code ci-dessous et le tester.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Commentaire sur le code original
-
Pour télécharger l'original du fichier à compléter, cliquer ici.
-
Un programme rempli de
input()
et deprint()
, ce n'est clairement pas dans l'esprit des instructions officielles. De plus, sans exemple, comment tester son travail correctement ?
Une réponse
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|