Aller au contenu

Ep 42

▶ TĂ©lĂ©charger le sujet en pdf.

EXERCICE 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.
RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def tripy-undselection(tab):bksl-nl for i in range(len(tab)-1):bksl-nl indicepy-undmin = ibksl-nl for j in range(i+1, len(tab)):bksl-nl if tab[j] < tab[indicepy-undmin]:bksl-nl indicepy-undmin = jbksl-nl tab[i], tab[indicepy-undmin] = tab[indicepy-undmin], tab[i]bksl-nl return tabbksl-nlbksl-nl



Exemple :

🐍 Script Python
>>> tri_selection([1, 52, 6, -9, 12])
[-9, 1, 6, 12, 52]

EXERCICE 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 est utilisée.

Si a et b sont des entiers tels que a <= b, randint(a,b) renvoie un nombre entier compris entre a et b.

Compléter le code ci-dessous et le tester :

RĂ©ponse

Complétez le code ci-dessous

###
from random import randintbksl-nlbksl-nldef pluspy-undoupy-undmoins():bksl-nl nbpy-undmystere = randint(1,...)bksl-nl nbpy-undtest = int(input("Proposez un nombre entre 1 et 99 : "))bksl-nl compteur = ...bksl-nlbksl-nl while nbpy-undmystere != ... and compteur < ... :bksl-nl compteur = compteur + ...bksl-nl if nbpy-undmystere ... nbpy-undtest:bksl-nl nbpy-undtest = int(input("Trop petit ! Testez encore : "))bksl-nl else:bksl-nl nbpy-undtest = int(input("Trop grand ! Testez encore : "))bksl-nlbksl-nl if nbpy-undmystere == nbpy-undtest:bksl-nl print ("Bravo ! Le nombre Ă©tait ",...)bksl-nl print("Nombre d'essais: ",...)bksl-nl else:bksl-nl print ("Perdu ! Le nombre Ă©tait ",...)bksl-nlbksl-nl



Solution

###
from random import randintbksl-nlbksl-nldef pluspy-undoupy-undmoins():bksl-nl nbpy-undmystere = randint(1,99)bksl-nl nbpy-undtest = int(input('Proposez un nombre entre 1 et 99 : '))bksl-nl compteur = 1bksl-nlbksl-nl while nbpy-undmystere != nbpy-undtest and compteur < 10 :bksl-nl compteur = compteur + 1bksl-nl if nbpy-undmystere > nbpy-undtest:bksl-nl nbpy-undtest = int(input('Trop petit ! Testez encore : '))bksl-nl else:bksl-nl nbpy-undtest = int(input('Trop grand ! Testez encore : '))bksl-nlbksl-nl if nbpy-undmystere == nbpy-undtest:bksl-nl print ('Bravo ! Le nombre Ă©tait ', nbpy-undmystere)bksl-nl print('Nombre d essais: ', compteur)bksl-nl else:bksl-nl print ('Perdu ! Le nombre Ă©tait ', nbpy-undmystere)bksl-nlbksl-nl